diff --git a/.changeset/abac-classification-banners.md b/.changeset/abac-classification-banners.md new file mode 100644 index 0000000000000..cf348d2467fc1 --- /dev/null +++ b/.changeset/abac-classification-banners.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': minor +--- + +Adds classification banners to ABAC-managed rooms: admins can describe US-Government-style classification markings (levels, special access programs, releasability, colors) in a new JSON setting, and matching rooms display a colored classification banner above the room header for all members. diff --git a/.changeset/all-baths-cry.md b/.changeset/all-baths-cry.md new file mode 100644 index 0000000000000..8dc92088b6b5f --- /dev/null +++ b/.changeset/all-baths-cry.md @@ -0,0 +1,8 @@ +--- +'@rocket.chat/model-typings': minor +'@rocket.chat/core-typings': minor +'@rocket.chat/models': minor +'@rocket.chat/meteor': minor +--- + +Adds `current` field to `DeviceManagementSession` type and `currentLoginToken` parameter to `aggregateSessionsByUserId`, allowing the sessions endpoint to identify and flag the caller's active session. diff --git a/.changeset/apps-engine-runtime-default-node.md b/.changeset/apps-engine-runtime-default-node.md new file mode 100644 index 0000000000000..3cdddc9415377 --- /dev/null +++ b/.changeset/apps-engine-runtime-default-node.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/apps': minor +'@rocket.chat/meteor': minor +--- + +Changes the default apps-engine runtime backend from `deno` to `node`. The previous behavior can be restored by setting the environment variable `APPS_ENGINE_RUNTIME_BACKEND='deno'` diff --git a/.changeset/atomic-model-operations.md b/.changeset/atomic-model-operations.md new file mode 100644 index 0000000000000..4e05f12719360 --- /dev/null +++ b/.changeset/atomic-model-operations.md @@ -0,0 +1,8 @@ +--- +'@rocket.chat/meteor': patch +'@rocket.chat/core-typings': patch +'@rocket.chat/model-typings': patch +'@rocket.chat/models': patch +--- + +Fixes race conditions in several check-then-write database flows by collapsing them into single atomic operations: CAS login tokens can no longer be consumed by two concurrent logins, revoking a room invite no longer emits duplicate removal notifications, and deleting an integration now enforces the creator-only permission scope in the delete itself diff --git a/.changeset/better-results-press.md b/.changeset/better-results-press.md new file mode 100644 index 0000000000000..c4e2d5b7d97ba --- /dev/null +++ b/.changeset/better-results-press.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": major +--- + +Removes `/ufs` legacy endpoint for downloading files diff --git a/.changeset/block-fallback-rendering.md b/.changeset/block-fallback-rendering.md new file mode 100644 index 0000000000000..4b6ef1733355d --- /dev/null +++ b/.changeset/block-fallback-rendering.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/gazzodown": patch +--- + +Degrades blocks without a dedicated renderer to their raw markup instead of dropping them. When a block carries a `fallback` `[start, end]` offset span, `Markup`/`PreviewMarkup` slice the original message source (passed via the new optional `source` prop) and render that text. This avoids duplicating the markup into the AST while keeping unsupported blocks visible. diff --git a/.changeset/breezy-moons-search.md b/.changeset/breezy-moons-search.md new file mode 100644 index 0000000000000..b73abc9211ff8 --- /dev/null +++ b/.changeset/breezy-moons-search.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes own account showing twice in navbar room search when searching by username diff --git a/.changeset/breezy-parts-kiss.md b/.changeset/breezy-parts-kiss.md new file mode 100644 index 0000000000000..a9c5144e3ea95 --- /dev/null +++ b/.changeset/breezy-parts-kiss.md @@ -0,0 +1,32 @@ +--- +'@rocket.chat/web-ui-registration': minor +'@rocket.chat/model-typings': minor +'@rocket.chat/core-typings': minor +'@rocket.chat/rest-typings': minor +'@rocket.chat/passport-x': minor +'@rocket.chat/desktop-api': minor +'@rocket.chat/models': minor +'@rocket.chat/i18n': minor +'@rocket.chat/meteor': minor +--- + +## Phishing-Resistant Multi-Factor Authentication + +Introduces a more secure and reliable server-side OAuth authentication flow. + +### What’s New + +- **Improved OAuth login security** + OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. + +- **Built-in CSRF, state validation, and PKCE protection** + OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. + +- **Improved two-step verification with OAuth logins** + Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. + +- **Improved mobile & desktop app login** + Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. + +- **A new setting to enable/disable new OAuth Flow** + Enable this new setting `Accounts_OAuth_Use_Modern_Flow` to use all of the above mentioned features. diff --git a/.changeset/bump-patch-1784768845125.md b/.changeset/bump-patch-1784768845125.md new file mode 100644 index 0000000000000..e1eaa7980afb1 --- /dev/null +++ b/.changeset/bump-patch-1784768845125.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/bump-patch-1784771780188.md b/.changeset/bump-patch-1784771780188.md new file mode 100644 index 0000000000000..e1eaa7980afb1 --- /dev/null +++ b/.changeset/bump-patch-1784771780188.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/bump-patch-1785461760418.md b/.changeset/bump-patch-1785461760418.md new file mode 100644 index 0000000000000..e1eaa7980afb1 --- /dev/null +++ b/.changeset/bump-patch-1785461760418.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/bump-patch-1785760239936.md b/.changeset/bump-patch-1785760239936.md new file mode 100644 index 0000000000000..e1eaa7980afb1 --- /dev/null +++ b/.changeset/bump-patch-1785760239936.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/code-fence-trailing-backtick.md b/.changeset/code-fence-trailing-backtick.md new file mode 100644 index 0000000000000..4101b46273bcd --- /dev/null +++ b/.changeset/code-fence-trailing-backtick.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/message-parser": patch +--- + +Fixes code fences failing to render when a line inside them ends with an inline-code backtick (e.g. `` - **Node**: `22.22.3` ``). A trailing backtick immediately before a line break could not be consumed as content, causing the whole ```` ``` ```` block to fall back to markdown parsing and split apart. Trailing 1-2 backticks before a line end (or EOF) are now treated as code content. diff --git a/.changeset/ddp-migrate-batch5-totp-caller.md b/.changeset/ddp-migrate-batch5-totp-caller.md new file mode 100644 index 0000000000000..8d72c63d6a706 --- /dev/null +++ b/.changeset/ddp-migrate-batch5-totp-caller.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Migrates the `TwoFactorTOTP` account settings page from the five `2fa:*` DDP methods to the new TOTP REST endpoints. DDP methods stay registered for external SDK/mobile clients with deprecation logs pointing at the new routes until 9.0.0. diff --git a/.changeset/ddp-migrate-batch6-audit-callers.md b/.changeset/ddp-migrate-batch6-audit-callers.md new file mode 100644 index 0000000000000..3b07e86cf51ec --- /dev/null +++ b/.changeset/ddp-migrate-batch6-audit-callers.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Migrated the audit panel (`AuditLogTable`, `useAuditMutation`) from the three `auditGet*` DDP methods to the new `/v1/audit.*` REST endpoints. DDP methods stay registered with deprecation logs pointing at the new routes until 9.0.0. diff --git a/.changeset/ddp-migrate-batch7-oauth-caller.md b/.changeset/ddp-migrate-batch7-oauth-caller.md new file mode 100644 index 0000000000000..c2e717a7c9c2e --- /dev/null +++ b/.changeset/ddp-migrate-batch7-oauth-caller.md @@ -0,0 +1,11 @@ +--- +'@rocket.chat/meteor': patch +--- + +Migrates the Admin → OAuth services group page from `useMethod` (DDP) to `useEndpoint` (REST): + +- `addOAuthService` → existing `POST /v1/settings.addCustomOAuth` +- `removeOAuthService` → new `POST /v1/settings.removeCustomOAuth` +- `refreshOAuthService` → new `POST /v1/settings.refreshOAuthServices` + +DDP methods stay registered with deprecation logs pointing at the new routes until 9.0.0. diff --git a/.changeset/ddp-migrate-readthreads-pushtest.md b/.changeset/ddp-migrate-readthreads-pushtest.md new file mode 100644 index 0000000000000..629da29dadd8d --- /dev/null +++ b/.changeset/ddp-migrate-readthreads-pushtest.md @@ -0,0 +1,7 @@ +--- +'@rocket.chat/meteor': patch +--- + +Migrated the last two thread-read call sites (`ThreadChat`, `useThreadMessagesQuery`) from the `readThreads` DDP method to `POST /v1/chat.readThread`, and pointed the admin "send a test push to my user" setting at `POST /v1/push.test` instead of the `push_test` DDP method. Both DDP methods stay registered with deprecation logs pointing at the new routes until 9.0.0. + +`POST /v1/push.test` now also returns the `message` translation key and its `params`, matching what the DDP method returned, so the admin setting still reports how many devices the test reached. diff --git a/.changeset/deep-ways-poke.md b/.changeset/deep-ways-poke.md new file mode 100644 index 0000000000000..918b70379880e --- /dev/null +++ b/.changeset/deep-ways-poke.md @@ -0,0 +1,7 @@ +--- +'@rocket.chat/core-typings': patch +'@rocket.chat/models': patch +'@rocket.chat/meteor': patch +--- + +Fixes the Slack importer storing shared files as raw URLs in the message body. Imported file messages now stay hidden until "Download Pending Files" button fetches them, then display as native attachments with image previews. Failed downloads (e.g. invalidated export links) are no longer silently saved as the file's content — they are counted as errors and can be retried. diff --git a/.changeset/desktop-set-user-roles.md b/.changeset/desktop-set-user-roles.md new file mode 100644 index 0000000000000..369f18c00b4de --- /dev/null +++ b/.changeset/desktop-set-user-roles.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/desktop-api': minor +'@rocket.chat/meteor': patch +--- + +Added a `setUserRoles` bridge method to the desktop API and pushed the logged-in user's roles to the desktop app. This lets the desktop client restrict supportedVersions messages (such as version-expiration warnings) to specific roles like admins, instead of showing them to every user. The push is reactive to role changes; desktop builds without the bridge method fall back to their own role lookup. diff --git a/.changeset/emoji-zwj-tag-sequences.md b/.changeset/emoji-zwj-tag-sequences.md new file mode 100644 index 0000000000000..e649ef534bd12 --- /dev/null +++ b/.changeset/emoji-zwj-tag-sequences.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/message-parser': patch +--- + +Fixes an issue in which some combined emojis like 😶‍🌫️, 😮‍💨 and 😵‍💫 were being displayed as two separate emojis, and the flags of some countries like England 🏴󠁧󠁢󠁥󠁮󠁧󠁿, Scotland 🏴󠁧󠁢󠁳󠁣󠁴󠁿 and Wales 🏴󠁧󠁢󠁷󠁬󠁳󠁿 were being displayed as a plain black flag diff --git a/.changeset/empty-boxes-cross.md b/.changeset/empty-boxes-cross.md new file mode 100644 index 0000000000000..532d9a9e287cc --- /dev/null +++ b/.changeset/empty-boxes-cross.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes engagement dashboard loading unnecessary data into memory on startup diff --git a/.changeset/empty-garlics-reply.md b/.changeset/empty-garlics-reply.md new file mode 100644 index 0000000000000..6233cf9bf525e --- /dev/null +++ b/.changeset/empty-garlics-reply.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/core-typings': patch +'@rocket.chat/meteor': patch +--- + +Fixes the password policy allowing a maximum length lower than the minimum length to be saved — a combination that made it impossible to set any valid password. The server now rejects such configurations when password policy settings are saved and shows an error explaining the constraint. diff --git a/.changeset/fancy-days-knock.md b/.changeset/fancy-days-knock.md new file mode 100644 index 0000000000000..eacb88108a0f7 --- /dev/null +++ b/.changeset/fancy-days-knock.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) diff --git a/.changeset/fancy-deserts-mate.md b/.changeset/fancy-deserts-mate.md new file mode 100644 index 0000000000000..7f400fd7cfcca --- /dev/null +++ b/.changeset/fancy-deserts-mate.md @@ -0,0 +1,10 @@ +--- +'@rocket.chat/core-services': minor +'@rocket.chat/rest-typings': minor +'@rocket.chat/ai-search': minor +'@rocket.chat/ui-client': minor +'@rocket.chat/i18n': minor +'@rocket.chat/meteor': minor +--- + +Adds AI Search with semantic message results, optional OpenAI-compatible answers, and AI Center configuration. diff --git a/.changeset/fifty-candies-heal.md b/.changeset/fifty-candies-heal.md new file mode 100644 index 0000000000000..a67e4d5f376e5 --- /dev/null +++ b/.changeset/fifty-candies-heal.md @@ -0,0 +1,7 @@ +--- +'@rocket.chat/meteor': patch +--- + +fix: Buttons from emoji picker misbehaving on clicks + +An infinite render loop was preventing proper behavior when clicking on the emoji picker buttons. It was fixed by removing the unnecessary state update that was causing the loop and replacing multiple fires of the same mouseover event (when a mouseenter event was the right one to use). There is a chance this pre-existing bug was hidden by React 18's event delegation. diff --git a/.changeset/fifty-turkeys-judge.md b/.changeset/fifty-turkeys-judge.md new file mode 100644 index 0000000000000..627df671d172d --- /dev/null +++ b/.changeset/fifty-turkeys-judge.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/eslint-config': minor +--- + +Upgrades ESLint to v10 and bumps plugins diff --git a/.changeset/fips-mode-support.md b/.changeset/fips-mode-support.md new file mode 100644 index 0000000000000..56c45fc870e88 --- /dev/null +++ b/.changeset/fips-mode-support.md @@ -0,0 +1,13 @@ +--- +'@rocket.chat/meteor': minor +'@rocket.chat/core-typings': minor +'@rocket.chat/federation-matrix': minor +'@rocket.chat/account-service': minor +'@rocket.chat/authorization-service': minor +'@rocket.chat/ddp-streamer': minor +'@rocket.chat/omnichannel-transcript': minor +'@rocket.chat/presence-service': minor +'@rocket.chat/queue-worker': minor +--- + +Adds support for running Rocket.Chat in FIPS mode. The monolith and all microservices (ddp-streamer, account-service, authorization-service, presence-service, queue-worker, omnichannel-transcript) can now enforce FIPS-compliant cryptography via Node.js/OpenSSL FIPS, with dedicated FIPS Docker images. Running in FIPS mode requires a license including the new `fips` module, and FIPS status is now reported in server logs and statistics. diff --git a/.changeset/fix-business-hour-agents-availability.md b/.changeset/fix-business-hour-agents-availability.md new file mode 100644 index 0000000000000..ce800f8acaabe --- /dev/null +++ b/.changeset/fix-business-hour-agents-availability.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes agents' business-hour availability not being updated when they are removed from a department linked to a business hour while multiple business hours are enabled. The recomputation step always failed, leaving removed agents available (or unavailable) according to a business hour that no longer applied to them — and, on deployments running with `EXIT_UNHANDLEDPROMISEREJECTION` (or in development/test mode), the unhandled rejection crashed the server process. diff --git a/.changeset/fix-business-hour-dst-department-unlink.md b/.changeset/fix-business-hour-dst-department-unlink.md new file mode 100644 index 0000000000000..b5eb7acbfe962 --- /dev/null +++ b/.changeset/fix-business-hour-dst-department-unlink.md @@ -0,0 +1,7 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes multiple business hours losing their linked departments after a daylight saving time change or a server restart. The automatic timezone adjustment re-saved business hours without their department associations, causing business hours configured with timezones to silently stop applying to agents. + +Also fixes agents keeping a business hour's availability after their department was removed from it: saving a business hour with a smaller department list unlinked the departments but never cleared the business hour from the removed departments' agents. diff --git a/.changeset/fix-deno-runtime-symlink.md b/.changeset/fix-deno-runtime-symlink.md new file mode 100644 index 0000000000000..b59e781c3c4ea --- /dev/null +++ b/.changeset/fix-deno-runtime-symlink.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/apps': patch +--- + +Fixes an issue that would cause apps to fail with 'Module not found' errors in some cases diff --git a/.changeset/fix-license-env-precedence.md b/.changeset/fix-license-env-precedence.md new file mode 100644 index 0000000000000..c2cc0f1ee51c9 --- /dev/null +++ b/.changeset/fix-license-env-precedence.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/meteor': patch +'@rocket.chat/license': patch +--- + +Fixes the license provided via the `ROCKETCHAT_LICENSE` environment variable not being applied when it is newer than the one persisted in the workspace. diff --git a/.changeset/forty-stars-bathe.md b/.changeset/forty-stars-bathe.md new file mode 100644 index 0000000000000..00f21597c8a50 --- /dev/null +++ b/.changeset/forty-stars-bathe.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes error message being shown when logging out current device via Device Management despite successful logout. diff --git a/.changeset/four-tigers-clap.md b/.changeset/four-tigers-clap.md new file mode 100644 index 0000000000000..aa6555d3a0d6c --- /dev/null +++ b/.changeset/four-tigers-clap.md @@ -0,0 +1,7 @@ +--- +'@rocket.chat/models': patch +'@rocket.chat/model-typings': patch +'@rocket.chat/meteor': patch +--- + +Fixes a race condition that left messages permanently undecryptable ("incorrect encryption key") in rooms created with encryption enabled. When several members opened such a room at the same time, each client could independently generate and distribute a different group key. Establishing the room key is now atomic (first-write-wins) on the server, and a client that loses the race discards its locally generated key and adopts the established one instead of encrypting with a divergent key. diff --git a/.changeset/fruity-items-fix.md b/.changeset/fruity-items-fix.md new file mode 100644 index 0000000000000..dd9b9d290b81a --- /dev/null +++ b/.changeset/fruity-items-fix.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/apps': minor +'@rocket.chat/meteor': minor +--- + +Adds an alternative runtime runner for apps. It can be enabled via environment variable `APPS_ENGINE_RUNTIME_BACKEND='node'` diff --git a/.changeset/funny-wings-sell.md b/.changeset/funny-wings-sell.md new file mode 100644 index 0000000000000..539df3d0e822d --- /dev/null +++ b/.changeset/funny-wings-sell.md @@ -0,0 +1,10 @@ +--- +'@rocket.chat/model-typings': minor +'@rocket.chat/core-typings': minor +'@rocket.chat/ui-client': minor +'@rocket.chat/models': minor +'@rocket.chat/i18n': minor +'@rocket.chat/meteor': minor +--- + +Replaces the "Drafts in sidebar" feature preview with an always-on draft indicator. Thread-composer drafts are also persisted per thread and indicated in the thread list diff --git a/.changeset/gentle-cats-change.md b/.changeset/gentle-cats-change.md new file mode 100644 index 0000000000000..da4f32ad30a64 --- /dev/null +++ b/.changeset/gentle-cats-change.md @@ -0,0 +1,8 @@ +--- +'@rocket.chat/meteor': patch +'@rocket.chat/core-typings': patch +'@rocket.chat/model-typings': patch +'@rocket.chat/models': patch +--- + +Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) diff --git a/.changeset/hungry-snakes-help.md b/.changeset/hungry-snakes-help.md new file mode 100644 index 0000000000000..37801272733a9 --- /dev/null +++ b/.changeset/hungry-snakes-help.md @@ -0,0 +1,7 @@ +--- +"@rocket.chat/i18n": minor +"@rocket.chat/media-signaling": minor +"@rocket.chat/ui-voip": minor +--- + +Removes voice calling microphone requirement for starting a successful call, allowing users to join as "listen-only". diff --git a/.changeset/integration-scripts-no-babel.md b/.changeset/integration-scripts-no-babel.md new file mode 100644 index 0000000000000..0e962b99bd059 --- /dev/null +++ b/.changeset/integration-scripts-no-babel.md @@ -0,0 +1,13 @@ +--- +'@rocket.chat/meteor': major +--- + +**Breaking:** Stopped transpiling webhook integration scripts with Babel. Scripts now run as-is inside `isolated-vm` (modern V8). + +Class method bodies are now in strict mode per the ES2015 spec. Scripts that relied on sloppy-mode behaviors provided by the previous Babel transpilation must be updated: + +- **Implicit globals** — `msg = buildMessage(...)` inside a class method now throws `ReferenceError`. Add `let`, `const`, or `var`. +- **`this` in nested regular functions** — `function helper() { this.JSON.stringify(...) }` now has `this === undefined` instead of `globalThis`. Use arrow functions or pass the dependency explicitly. +- **`arguments.callee`** — Throws `TypeError`. Use a named function expression instead. +- **Octal literals** — `0777` is now a `SyntaxError`. Use `0o777`. +- **Duplicate parameter names** — `function(a, a) {}` is now a `SyntaxError`. diff --git a/.changeset/json-setting-validation-feedback.md b/.changeset/json-setting-validation-feedback.md new file mode 100644 index 0000000000000..acbf24c507007 --- /dev/null +++ b/.changeset/json-setting-validation-feedback.md @@ -0,0 +1,6 @@ +--- +"@rocket.chat/meteor": minor +"@rocket.chat/i18n": minor +--- + +Adds inline JSON validation feedback to admin settings that hold JSON (`code: application/json`), showing an error in the editor and blocking save while the value is malformed diff --git a/.changeset/ldap-channel-sync-removal-abort.md b/.changeset/ldap-channel-sync-removal-abort.md new file mode 100644 index 0000000000000..36b86b01bd171 --- /dev/null +++ b/.changeset/ldap-channel-sync-removal-abort.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes LDAP channel sync aborting the entire add/removal pass when a mapped channel could not be resolved, which prevented users from being removed from channels when "Auto Remove Users from Channels" was enabled. diff --git a/.changeset/ldap-merge-email-lookup.md b/.changeset/ldap-merge-email-lookup.md new file mode 100644 index 0000000000000..58f788eb95e70 --- /dev/null +++ b/.changeset/ldap-merge-email-lookup.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/models': patch +'@rocket.chat/meteor': patch +--- + +Fixes LDAP sync failing to merge an existing user matched by email, which caused a `Username already exists` error when the user's username differed from the directory. diff --git a/.changeset/ldap-sync-crash-invalid-filter.md b/.changeset/ldap-sync-crash-invalid-filter.md new file mode 100644 index 0000000000000..cecdbba85e822 --- /dev/null +++ b/.changeset/ldap-sync-crash-invalid-filter.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes the server crashing during LDAP login or sync when the configured search settings produce an invalid LDAP filter (for example, an empty User Search Field). The operation now fails gracefully with a logged error instead of terminating the process. diff --git a/.changeset/license-validate-preview.md b/.changeset/license-validate-preview.md new file mode 100644 index 0000000000000..e3dd66c0eab86 --- /dev/null +++ b/.changeset/license-validate-preview.md @@ -0,0 +1,7 @@ +--- +'@rocket.chat/license': minor +'@rocket.chat/rest-typings': minor +'@rocket.chat/meteor': minor +--- + +Adds a new `licenses.validate` REST endpoint that validates a Rocket.Chat license (V2 or V3 JWT) against the current workspace without applying it, so a license can be previewed before it is applied from the UI. A valid license responds with success; an invalid one responds with the validation behaviors that rejected it. diff --git a/.changeset/light-geckos-start.md b/.changeset/light-geckos-start.md new file mode 100644 index 0000000000000..4730b2b67b0d0 --- /dev/null +++ b/.changeset/light-geckos-start.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Disables more actions on message composer during public channel preview. diff --git a/.changeset/livechat-forward-ul-message.md b/.changeset/livechat-forward-ul-message.md new file mode 100644 index 0000000000000..afe2bee7c0222 --- /dev/null +++ b/.changeset/livechat-forward-ul-message.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes an issue where the "user left" system message could be added to an Omnichannel conversation only after the forwarding process had already finished, causing it to appear out of order in the conversation history diff --git a/.changeset/lucky-donkeys-listen.md b/.changeset/lucky-donkeys-listen.md new file mode 100644 index 0000000000000..66fb1a4b2b904 --- /dev/null +++ b/.changeset/lucky-donkeys-listen.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes audio attachments not being seekable using the progress slider diff --git a/.changeset/message-content-body-source.md b/.changeset/message-content-body-source.md new file mode 100644 index 0000000000000..439b1a1d6ada2 --- /dev/null +++ b/.changeset/message-content-body-source.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +Passes the original message text to the message renderer so blocks without a dedicated renderer (e.g. tables on clients that don't render them yet) can degrade to their raw markup via the parser's `fallback` source offsets, instead of disappearing. diff --git a/.changeset/moody-eggs-juggle.md b/.changeset/moody-eggs-juggle.md new file mode 100644 index 0000000000000..1324f520d0d2c --- /dev/null +++ b/.changeset/moody-eggs-juggle.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes an issue where the cursor jumped to the wrong position after inserting a mention at the start or middle of a message. diff --git a/.changeset/nice-fans-cover.md b/.changeset/nice-fans-cover.md new file mode 100644 index 0000000000000..8ac90e87c5a87 --- /dev/null +++ b/.changeset/nice-fans-cover.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": minor +--- + +Replaces proprietary emojis with native (unicode) emojis and increases available emoji set diff --git a/.changeset/offline-license-no-egress.md b/.changeset/offline-license-no-egress.md new file mode 100644 index 0000000000000..43b8259ea417f --- /dev/null +++ b/.changeset/offline-license-no-egress.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/meteor': minor +'@rocket.chat/license': minor +--- + +Adds support for the `offline` license flag, suppressing every outbound connection to Rocket.Chat Cloud services and the Push Gateway at its source, so air-gapped workspaces never initiate calls that would violate their security compliance. diff --git a/.changeset/old-bats-sniff.md b/.changeset/old-bats-sniff.md new file mode 100644 index 0000000000000..56d55d7b08f99 --- /dev/null +++ b/.changeset/old-bats-sniff.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/apps-engine': patch +'@rocket.chat/meteor': patch +--- + +Fixes wrong FederationLookup type assigned to IUser in apps. The correct data is there, but the type does not represent it. diff --git a/.changeset/olive-nails-fix.md b/.changeset/olive-nails-fix.md new file mode 100644 index 0000000000000..7a4cf2c364f76 --- /dev/null +++ b/.changeset/olive-nails-fix.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Enables keyboard activation for Display menu radio buttons and checkboxes diff --git a/.changeset/omnichannel-contact-center-date-relative-time.md b/.changeset/omnichannel-contact-center-date-relative-time.md new file mode 100644 index 0000000000000..3da10de7b1caf --- /dev/null +++ b/.changeset/omnichannel-contact-center-date-relative-time.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Changes the date columns in the Omnichannel Contact Center to show both the formatted date and the relative time: the **Last Chat** column in the contacts list, and the **Started at** and **Last Message** columns in the chats list diff --git a/.changeset/parser-horizontal-rule.md b/.changeset/parser-horizontal-rule.md new file mode 100644 index 0000000000000..366209c9b7788 --- /dev/null +++ b/.changeset/parser-horizontal-rule.md @@ -0,0 +1,6 @@ +--- +"@rocket.chat/message-parser": minor +"@rocket.chat/gazzodown": minor +--- + +Adds support for horizontal rules (thematic breaks) in the message parser. A line of 3 or more contiguous dashes (`---`, with nothing else on the line) is parsed into a new `HORIZONTAL_RULE` block node and rendered with Fuselage's `Divider`. The node carries an optional `fallback` — a `[start, end]` offset span into the original source — so renderers without horizontal-rule support can slice the source to show the raw markup instead of dropping it, without duplicating the text into the AST. Only `-` is accepted: CommonMark also allows `*` and `_`, but those collide with emphasis and with censored words (bad-words masks a term as a run of `*`), so a bare `***` / `_______` line stays text/emphasis instead of becoming a divider. diff --git a/.changeset/persistent-audio-player.md b/.changeset/persistent-audio-player.md new file mode 100644 index 0000000000000..15d68178c43ac --- /dev/null +++ b/.changeset/persistent-audio-player.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/meteor': minor +'@rocket.chat/i18n': minor +--- + +Added a persistent audio player. Playing an audio attachment now continues across room navigation: the audio keeps playing when you switch or close the conversation, and a "Now playing" card appears at the top of the sidebar with play/pause, seek, playback speed (1x/1.5x/2x), and a shortcut back to the originating conversation. diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000000000..0fb283018ab67 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,148 @@ +{ + "mode": "pre", + "tag": "rc", + "initialVersions": { + "@rocket.chat/meteor": "8.7.0-develop", + "rocketchat-services": "2.0.49", + "@rocket.chat/uikit-playground": "0.7.14", + "@rocket.chat/account-service": "0.4.58", + "@rocket.chat/authorization-service": "0.6.2", + "@rocket.chat/ddp-streamer": "0.3.58", + "@rocket.chat/omnichannel-transcript": "0.4.58", + "@rocket.chat/presence-service": "0.5.0", + "@rocket.chat/queue-worker": "0.4.58", + "@rocket.chat/abac": "0.3.0", + "@rocket.chat/federation-matrix": "0.1.6", + "@rocket.chat/license": "1.1.16", + "@rocket.chat/media-calls": "0.5.1", + "@rocket.chat/network-broker": "0.2.37", + "@rocket.chat/omni-core-ee": "0.0.23", + "@rocket.chat/omnichannel-services": "0.3.55", + "@rocket.chat/pdf-worker": "0.3.35", + "@rocket.chat/presence": "0.3.0", + "@rocket.chat/account-utils": "0.0.3", + "@rocket.chat/agenda": "0.1.1", + "@rocket.chat/ai-search": "0.1.0", + "@rocket.chat/api-client": "0.2.56", + "@rocket.chat/apps": "0.7.1", + "@rocket.chat/apps-engine": "1.64.0", + "@rocket.chat/base64": "1.0.14", + "@rocket.chat/cas-validate": "0.0.4", + "@rocket.chat/core-services": "0.14.2", + "@rocket.chat/core-typings": "8.7.0-develop", + "@rocket.chat/cron": "0.1.58", + "@rocket.chat/ddp-client": "1.1.1", + "@rocket.chat/desktop-api": "1.2.0", + "@rocket.chat/eslint-config": "0.8.0", + "@rocket.chat/favicon": "0.0.5", + "@rocket.chat/fuselage-ui-kit": "32.0.0", + "@rocket.chat/gazzodown": "32.0.0", + "@rocket.chat/http-router": "7.9.23", + "@rocket.chat/i18n": "3.2.0", + "@rocket.chat/instance-status": "0.1.58", + "@rocket.chat/jest-presets": "0.0.2", + "@rocket.chat/jwt": "0.2.1", + "@rocket.chat/livechat": "2.1.5", + "@rocket.chat/logger": "1.0.1", + "@rocket.chat/media-signaling": "1.1.0", + "@rocket.chat/message-parser": "0.31.36", + "@rocket.chat/message-types": "0.1.1", + "@rocket.chat/mock-providers": "0.4.18", + "@rocket.chat/model-typings": "2.3.1", + "@rocket.chat/models": "2.3.1", + "@rocket.chat/mongo-adapter": "0.0.3", + "@rocket.chat/poplib": "0.0.3", + "@rocket.chat/omni-core": "0.1.2", + "@rocket.chat/passport-x": "0.0.1", + "@rocket.chat/password-policies": "0.1.1", + "@rocket.chat/patch-injection": "0.0.2", + "@rocket.chat/peggy-loader": "0.31.28", + "@rocket.chat/random": "1.2.3", + "@rocket.chat/release-action": "2.2.4", + "@rocket.chat/release-changelog": "0.1.1", + "@rocket.chat/rest-typings": "8.7.0-develop", + "@rocket.chat/server-cloud-communication": "0.0.3", + "@rocket.chat/server-fetch": "0.2.2", + "@rocket.chat/sha256": "1.0.13", + "@rocket.chat/storybook-config": "0.0.3", + "@rocket.chat/tools": "0.3.0", + "@rocket.chat/tracing": "0.0.2", + "@rocket.chat/tsconfig": "0.0.0", + "@rocket.chat/ui-avatar": "28.0.0", + "@rocket.chat/ui-client": "32.0.0", + "@rocket.chat/ui-composer": "3.0.0", + "@rocket.chat/ui-contexts": "32.0.0", + "@rocket.chat/ui-kit": "1.1.0", + "@rocket.chat/ui-video-conf": "32.0.0", + "@rocket.chat/ui-voip": "22.0.0", + "@rocket.chat/web-ui-registration": "32.0.0" + }, + "changesets": [ + "all-baths-cry", + "atomic-model-operations", + "block-fallback-rendering", + "breezy-moons-search", + "breezy-parts-kiss", + "bump-patch-1784768845125", + "bump-patch-1784771780188", + "bump-patch-1785461760418", + "bump-patch-1785760239936", + "code-fence-trailing-backtick", + "deep-ways-poke", + "desktop-set-user-roles", + "emoji-zwj-tag-sequences", + "empty-boxes-cross", + "empty-garlics-reply", + "fancy-days-knock", + "fancy-deserts-mate", + "fifty-candies-heal", + "fips-mode-support", + "fix-business-hour-agents-availability", + "fix-business-hour-dst-department-unlink", + "fix-deno-runtime-symlink", + "fix-license-env-precedence", + "forty-stars-bathe", + "four-tigers-clap", + "fruity-items-fix", + "gentle-cats-change", + "json-setting-validation-feedback", + "ldap-channel-sync-removal-abort", + "ldap-merge-email-lookup", + "ldap-sync-crash-invalid-filter", + "license-validate-preview", + "light-geckos-start", + "livechat-forward-ul-message", + "lucky-donkeys-listen", + "message-content-body-source", + "moody-eggs-juggle", + "nice-fans-cover", + "offline-license-no-egress", + "old-bats-sniff", + "olive-nails-fix", + "omnichannel-contact-center-date-relative-time", + "parser-horizontal-rule", + "persistent-audio-player", + "push-reenable-crash", + "quiet-lizards-jump", + "quiet-teams-guard", + "ready-taxis-join", + "rest-batch4-logout-cleanup", + "rest-cloud-connect-workspace", + "rest-integrations-history-clear-replay", + "rest-permissions-add-remove-role", + "rest-users-setavatar-service", + "rest-users-verify-email", + "saml-slo-relaystate", + "setup-wizard-env-override-upgrade", + "shaggy-pets-return", + "shy-actors-draw", + "silver-cars-kneel", + "spotlight-perf", + "strict-find-options", + "swift-ants-appear", + "tame-tables-render", + "tidy-snails-smile", + "timestamp-fallback-offsets", + "voip-provider-app-remount" + ] +} diff --git a/.changeset/push-reenable-crash.md b/.changeset/push-reenable-crash.md new file mode 100644 index 0000000000000..28c67860a2598 --- /dev/null +++ b/.changeset/push-reenable-crash.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes a server crash when re-enabling the "Enable Push" setting after it was disabled. Push notifications are now fully reconfigured on re-enable, so settings changed while push was disabled are picked up as well. diff --git a/.changeset/quiet-lizards-jump.md b/.changeset/quiet-lizards-jump.md new file mode 100644 index 0000000000000..f9858cac0d1f9 --- /dev/null +++ b/.changeset/quiet-lizards-jump.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Ensures the `users.CreateToken` endpoint checks for the `user-generate-access-token` permission when generating a login token for another user diff --git a/.changeset/quiet-teams-guard.md b/.changeset/quiet-teams-guard.md new file mode 100644 index 0000000000000..ac9a8af178b0a --- /dev/null +++ b/.changeset/quiet-teams-guard.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Ensures room permission checks are applied consistently regardless of how the room is identified when converting a channel to a team or creating a team from an existing room diff --git a/.changeset/ready-taxis-join.md b/.changeset/ready-taxis-join.md new file mode 100644 index 0000000000000..cc8fcdb1db16c --- /dev/null +++ b/.changeset/ready-taxis-join.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Restores Away as a selectable preset in the quick status menu, custom status modal, and account profile page. diff --git a/.changeset/remove-webdav-integration.md b/.changeset/remove-webdav-integration.md new file mode 100644 index 0000000000000..f7afb3f115ee6 --- /dev/null +++ b/.changeset/remove-webdav-integration.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': major +--- + +Removes the WebDAV integration. All WebDAV accounts, settings, and file-picker functionality have been removed, and existing WebDAV settings are cleared from the database on upgrade diff --git a/.changeset/rest-audit-endpoints.md b/.changeset/rest-audit-endpoints.md new file mode 100644 index 0000000000000..dc64357f81509 --- /dev/null +++ b/.changeset/rest-audit-endpoints.md @@ -0,0 +1,11 @@ +--- +'@rocket.chat/meteor': minor +--- + +Added three new REST endpoints under `/v1/audit.*` (EE-only, requires the `auditing` license) covering the audit flows that previously only existed as DDP methods: + +- `GET /v1/audit.auditions?startDate=&endDate=` → `{ auditions: IAuditLog[] }` (replaces `auditGetAuditions`, `can-audit-log`) +- `POST /v1/audit.messages` body `{ rid?, startDate, endDate, users, msg, type, visitor?, agent? }` → `{ messages: IMessage[] }` (replaces `auditGetMessages`, `can-audit`) +- `POST /v1/audit.omnichannelMessages` body `{ startDate, endDate, users, msg, type, visitor?, agent? }` → `{ messages: IMessage[] }` (replaces `auditGetOmnichannelMessages`, `can-audit`) + +Each endpoint is rate-limited at 10 requests / 60s (matching the DDP `DDPRateLimiter` rules) and writes the same `AuditLog` entry the DDP methods produced. Dates are serialized as ISO strings on the wire. The DDP methods remain registered with deprecation logs pointing at the new routes until 9.0.0. diff --git a/.changeset/rest-batch4-logout-cleanup.md b/.changeset/rest-batch4-logout-cleanup.md new file mode 100644 index 0000000000000..3382f4b694321 --- /dev/null +++ b/.changeset/rest-batch4-logout-cleanup.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': minor +--- + +Deprecates the `logoutCleanUp` DDP method and stops the client from calling it. The post-logout side effects (`afterLogoutCleanUpCallback` + `Apps.IPostUserLoggedOut`) now run server-side via a new `Accounts.onLogout` handler and from `POST /v1/users.logout`, so both DDP and REST logout paths fire them without a client round-trip. The DDP method keeps its original implementation and registration with a deprecation log pointing at `/v1/users.logout` until 9.0.0. diff --git a/.changeset/rest-chat-read-thread.md b/.changeset/rest-chat-read-thread.md new file mode 100644 index 0000000000000..efd80900d89bf --- /dev/null +++ b/.changeset/rest-chat-read-thread.md @@ -0,0 +1,7 @@ +--- +'@rocket.chat/meteor': minor +--- + +Added `POST /v1/chat.readThread` body `{ tmid }`, which marks a single thread as read for the caller — clearing the thread from the subscription's unread list and running the `beforeReadMessages` / `afterReadMessages` callbacks. It replaces the `readThreads` DDP method, which stays registered with a deprecation log pointing at the new route until 9.0.0. + +`POST /v1/subscriptions.read` does not cover this: it takes `{ rid, readThreads? }` and operates on the whole room, with no way to address one thread. diff --git a/.changeset/rest-cloud-connect-workspace.md b/.changeset/rest-cloud-connect-workspace.md new file mode 100644 index 0000000000000..63f5ac3751f7a --- /dev/null +++ b/.changeset/rest-cloud-connect-workspace.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/rest-typings': minor +'@rocket.chat/meteor': minor +--- + +Added `POST /v1/cloud.connectWorkspace` (replaces the deprecated `cloud:connectWorkspace` DDP method). Body is `{ token }`; auth-gated with `manage-cloud` permission. The legacy DDP method remains registered with a deprecation log pointing at the new route. diff --git a/.changeset/rest-integrations-history-clear-replay.md b/.changeset/rest-integrations-history-clear-replay.md new file mode 100644 index 0000000000000..4c71e723add01 --- /dev/null +++ b/.changeset/rest-integrations-history-clear-replay.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/rest-typings': minor +'@rocket.chat/meteor': minor +--- + +Added `POST /v1/integrations.clearHistory` and `POST /v1/integrations.replayOutgoing` (replace the deprecated `clearIntegrationHistory` and `replayOutgoingIntegration` DDP methods). Bodies `{ integrationId }` and `{ integrationId, historyId }` respectively. Permissions (`manage-outgoing-integrations` or `manage-own-outgoing-integrations`) are enforced the same way the DDP methods did. Legacy DDP methods remain registered with deprecation logs pointing at the new routes. diff --git a/.changeset/rest-logout-session-cleanup.md b/.changeset/rest-logout-session-cleanup.md new file mode 100644 index 0000000000000..f2f4338311629 --- /dev/null +++ b/.changeset/rest-logout-session-cleanup.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Marks the user session as logged out in the Sessions collection when logging out via `POST /v1/logout`. Previously the session cleanup relied on an indirect chain through `watch.users` → `Accounts.onLogout` that could be broken by a race condition, leaving orphaned sessions visible in Device Manager. diff --git a/.changeset/rest-permissions-add-remove-role.md b/.changeset/rest-permissions-add-remove-role.md new file mode 100644 index 0000000000000..f4a6b916a2724 --- /dev/null +++ b/.changeset/rest-permissions-add-remove-role.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/rest-typings': minor +'@rocket.chat/meteor': minor +--- + +Added `POST /v1/permissions.addRole` and `POST /v1/permissions.removeRole` (replace the deprecated `authorization:addPermissionToRole` and `authorization:removeRoleFromPermission` DDP methods). Body is `{ permissionId, role }` on both. The same per-user permission checks (`access-permissions`, `access-setting-permissions`) the DDP methods enforced are reused. Legacy DDP methods remain registered with deprecation logs pointing at the new routes. diff --git a/.changeset/rest-settings-oauth-admin.md b/.changeset/rest-settings-oauth-admin.md new file mode 100644 index 0000000000000..d0767610b19d0 --- /dev/null +++ b/.changeset/rest-settings-oauth-admin.md @@ -0,0 +1,11 @@ +--- +'@rocket.chat/rest-typings': minor +'@rocket.chat/meteor': minor +--- + +Adds two new REST endpoints completing the Custom OAuth admin surface: + +- `POST /v1/settings.removeCustomOAuth` body `{ name }` → removes all `Accounts_OAuth_Custom--*` setting documents (replaces the deprecated `removeOAuthService` DDP method). +- `POST /v1/settings.refreshOAuthServices` (no body) → re-reads ServiceConfiguration entries from settings (replaces the deprecated `refreshOAuthService` DDP method). + +Both endpoints reuse the `add-oauth-service` permission and `twoFactorRequired` gates that the DDP methods already enforced. `addOAuthService` was already covered by the existing `POST /v1/settings.addCustomOAuth` — its DDP method now also logs a deprecation. The three legacy DDP methods remain registered until 9.0.0. diff --git a/.changeset/rest-users-setavatar-service.md b/.changeset/rest-users-setavatar-service.md new file mode 100644 index 0000000000000..7d4ef483f395f --- /dev/null +++ b/.changeset/rest-users-setavatar-service.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': minor +--- + +Extended `POST /v1/users.setAvatar` to accept an optional `service` multipart field. When provided, the value is stored as the user's `avatarOrigin`, matching what the deprecated `setAvatarFromService` DDP method did. The legacy DDP method remains registered with a deprecation log pointing at the new route. diff --git a/.changeset/rest-users-totp.md b/.changeset/rest-users-totp.md new file mode 100644 index 0000000000000..5c6187caa81eb --- /dev/null +++ b/.changeset/rest-users-totp.md @@ -0,0 +1,16 @@ +--- +'@rocket.chat/rest-typings': minor +'@rocket.chat/meteor': minor +--- + +Adds five new REST endpoints covering the TOTP 2FA flows that previously only existed as DDP methods: + +- `POST /v1/users.enableTotp` → `{ secret, url }` (replaces `2fa:enable`) +- `POST /v1/users.disableTotp` body `{ code }` → `{ disabled }` (replaces `2fa:disable`) +- `POST /v1/users.validateTotp` body `{ code }` → `{ codes }` (replaces `2fa:validateTempToken`; also rotates non-PAT login tokens server-side) +- `POST /v1/users.regenerateTotpCodes` body `{ code }` → `{ codes }` (replaces `2fa:regenerateCodes`) +- `GET /v1/users.totpCodesRemaining` → `{ remaining }` (replaces `2fa:checkCodesRemaining`) + +`users.enableTotp` and `users.validateTotp` require two-factor verification (`twoFactorRequired`) so enrolling a new TOTP device confirms the account owner's identity first — closing a 2FA-enrollment bypass where a hijacked session could register an attacker-controlled TOTP without verifying the existing 2FA. All five endpoints are rate-limited. + +The legacy DDP methods stay registered with deprecation logs pointing at the new routes until 9.0.0 removes them. diff --git a/.changeset/rest-users-verify-email.md b/.changeset/rest-users-verify-email.md new file mode 100644 index 0000000000000..ffca4eac98bff --- /dev/null +++ b/.changeset/rest-users-verify-email.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/rest-typings': minor +'@rocket.chat/meteor': minor +--- + +Added `POST /v1/users.verifyEmail` (replaces the two-call DDP flow of `verifyEmail` + `afterVerifyEmail`). Body is `{ token }`; the server resolves the user, marks the email verified, and runs the anonymous→user role swap in a single request. The deprecated `afterVerifyEmail` DDP method keeps its registration with a deprecation log pointing at the new route. diff --git a/.changeset/saml-slo-relaystate.md b/.changeset/saml-slo-relaystate.md new file mode 100644 index 0000000000000..50b174a928786 --- /dev/null +++ b/.changeset/saml-slo-relaystate.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes the SAML Single Logout response so the `RelayState` matches the exact value received on the logout request, as required by the SAML specification, instead of using Rocket.Chat's own URL diff --git a/.changeset/setup-wizard-env-override-upgrade.md b/.changeset/setup-wizard-env-override-upgrade.md new file mode 100644 index 0000000000000..5b42fd6ceb472 --- /dev/null +++ b/.changeset/setup-wizard-env-override-upgrade.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes the setup wizard being forced back into the registration step on the first start after an upgrade when `OVERWRITE_SETTING_Show_Setup_Wizard=completed` is set, which affected air-gapped workspaces running offline licenses without cloud registration. diff --git a/.changeset/shaggy-hats-behave.md b/.changeset/shaggy-hats-behave.md new file mode 100644 index 0000000000000..d3b1045c1d4ac --- /dev/null +++ b/.changeset/shaggy-hats-behave.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': major +--- + +Removes deleteCustomSound Meteor method diff --git a/.changeset/shaggy-pets-return.md b/.changeset/shaggy-pets-return.md new file mode 100644 index 0000000000000..96cfa3050bc17 --- /dev/null +++ b/.changeset/shaggy-pets-return.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Adds keyboard navigation support in Room members list diff --git a/.changeset/shy-actors-draw.md b/.changeset/shy-actors-draw.md new file mode 100644 index 0000000000000..c2dbc530dba55 --- /dev/null +++ b/.changeset/shy-actors-draw.md @@ -0,0 +1,6 @@ +--- +"@rocket.chat/meteor": patch +"@rocket.chat/core-typings": patch +--- + +Returns `custom fields` on admin rooms detail view diff --git a/.changeset/silver-cars-kneel.md b/.changeset/silver-cars-kneel.md new file mode 100644 index 0000000000000..13a3c43ef087b --- /dev/null +++ b/.changeset/silver-cars-kneel.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/i18n': minor +'@rocket.chat/meteor': minor +--- + +Adds a manage license flow to the subscription admin page, allowing license verification before applying it and an option to remove the license. Note: From this point license management should be made in subscription page instead of the Enterprise settings page. diff --git a/.changeset/sparkly-regions-drive.md b/.changeset/sparkly-regions-drive.md new file mode 100644 index 0000000000000..66c8312d90c94 --- /dev/null +++ b/.changeset/sparkly-regions-drive.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/message-types': patch +'@rocket.chat/meteor': patch +--- + +Fixes an issue where deleted thread messages display as empty in thread context diff --git a/.changeset/spotlight-perf.md b/.changeset/spotlight-perf.md new file mode 100644 index 0000000000000..330443ed00493 --- /dev/null +++ b/.changeset/spotlight-perf.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/meteor': patch +'@rocket.chat/models': patch +--- + +Improved `/v1/spotlight` search performance: results return faster, and room searches now read from secondary database replicas when available, reducing load on the primary. diff --git a/.changeset/stale-meals-check.md b/.changeset/stale-meals-check.md new file mode 100644 index 0000000000000..650848aa1bb5e --- /dev/null +++ b/.changeset/stale-meals-check.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': major +--- + +Removes insertOrUpdateSound and uploadCustomSound Meteor methods diff --git a/.changeset/strict-find-options.md b/.changeset/strict-find-options.md new file mode 100644 index 0000000000000..97e5552c67a61 --- /dev/null +++ b/.changeset/strict-find-options.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/meteor': patch +'@rocket.chat/model-typings': patch +--- + +Fixes broken pagination on `rooms.bannedUsers` and on omnichannel department listing endpoints, which ignored the `offset` parameter and always returned results from the first page. Also reduces payload over-fetching on several endpoints that unintentionally loaded full documents (`rooms.hide`, private group lookups, direct email replies, omnichannel auto-transfer), and removes the permissive model query typings that allowed these invalid find options to compile unnoticed. diff --git a/.changeset/swift-ants-appear.md b/.changeset/swift-ants-appear.md new file mode 100644 index 0000000000000..f60a41dd957ae --- /dev/null +++ b/.changeset/swift-ants-appear.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes dates showing one day earlier for users in negative UTC-offset timezones diff --git a/.changeset/tags-save-updatedat.md b/.changeset/tags-save-updatedat.md new file mode 100644 index 0000000000000..49f0df776542d --- /dev/null +++ b/.changeset/tags-save-updatedat.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +Fixed saving a livechat tag failing with "Invalid response" — the model mutated its return value with `_updatedAt`, which the endpoint response schema rejects diff --git a/.changeset/tame-tables-render.md b/.changeset/tame-tables-render.md new file mode 100644 index 0000000000000..b72369d084616 --- /dev/null +++ b/.changeset/tame-tables-render.md @@ -0,0 +1,10 @@ +--- +"@rocket.chat/message-parser": minor +"@rocket.chat/gazzodown": minor +--- + +Adds GFM-style table support to the message parser and renders it in gazzodown. + +Parser: tables require a leading and trailing pipe on every row, support column alignment via the delimiter row (`:---`, `:--:`, `---:`), and allow inline markup inside cells (a literal pipe must be escaped as `\|`). New `TABLE`, `TABLE_ROW`, and `TABLE_CELL` AST nodes are emitted. The `TABLE` node also carries an optional `fallback` — a `[start, end]` offset span into the original source — so renderers without table support can slice the source to show the raw markup instead of dropping it, without duplicating the text into the AST. + +Rendering: gazzodown renders these tables using Fuselage's `Table` components with per-column alignment, and shows a compact single-row preview of the table header in message previews. diff --git a/.changeset/tidy-snails-smile.md b/.changeset/tidy-snails-smile.md new file mode 100644 index 0000000000000..546ec86bd8e63 --- /dev/null +++ b/.changeset/tidy-snails-smile.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/apps": patch +--- + +Fixes app startup failing with EACCES errors in docker deployments running with specified UIDs diff --git a/.changeset/timestamp-fallback-offsets.md b/.changeset/timestamp-fallback-offsets.md new file mode 100644 index 0000000000000..59bf60364fbff --- /dev/null +++ b/.changeset/timestamp-fallback-offsets.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/message-parser": minor +--- + +Normalizes the `Timestamp` node's `fallback` to the same `[start, end]` source-offset span used by other blocks, instead of a reconstructed plain-text node. The type still allows the previous `Plain` form so already-persisted data keeps type-checking and is safely ignored at render time. diff --git a/.changeset/voip-provider-app-remount.md b/.changeset/voip-provider-app-remount.md new file mode 100644 index 0000000000000..d1081143b9e66 --- /dev/null +++ b/.changeset/voip-provider-app-remount.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/ui-voip': patch +'@rocket.chat/meteor': patch +--- + +Fixes an issue where the whole app remounts when VoIP availability changes \ No newline at end of file diff --git a/.changeset/wet-turtles-fix.md b/.changeset/wet-turtles-fix.md new file mode 100644 index 0000000000000..647a5ae3cd117 --- /dev/null +++ b/.changeset/wet-turtles-fix.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes reaction list modal showing blank entries (mobile) or usernames (web) instead of real names when `UI_Use_Real_Name` is enabled. The broadcast pipeline now enriches reactions with display names via batch query. diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 699185914302b..dfdf2c04e0810 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1,6 @@ /packages/* @RocketChat/Architecture /packages/apps-engine/ @RocketChat/apps +/packages/apps/ @RocketChat/apps /packages/core-typings/ @RocketChat/Architecture /packages/rest-typings/ @RocketChat/Architecture @RocketChat/backend /packages/ui-contexts/ @RocketChat/frontend @@ -12,23 +13,30 @@ /apps/meteor/tests/e2e @RocketChat/frontend /apps/meteor/tests/end-to-end @RocketChat/backend /apps/meteor/tests/unit/app @RocketChat/backend -/apps/meteor/tests/unit/app/ui-utils @RocketChat/frontend /apps/meteor/tests/unit/client @RocketChat/frontend /apps/meteor/tests/unit/server @RocketChat/backend /apps/meteor/app/apps/ @RocketChat/apps /apps/meteor/app/livechat @RocketChat/omnichannel -/apps/meteor/app/sms @RocketChat/omnichannel -/apps/meteor/app/api @RocketChat/backend -/apps/meteor/app/federation @RocketChat/backend /apps/meteor/app/file-upload @RocketChat/backend /apps/meteor/app/integrations @RocketChat/backend /apps/meteor/server @RocketChat/backend +/apps/meteor/server/lib/omnichannel @RocketChat/omnichannel +/apps/meteor/server/hooks/omnichannel @RocketChat/omnichannel +/apps/meteor/server/api/v1/omnichannel @RocketChat/omnichannel +/apps/meteor/server/meteor-methods/omnichannel @RocketChat/omnichannel /packages/models @RocketChat/Architecture apps/meteor/server/startup/migrations @RocketChat/Architecture /apps/meteor/packages/rocketchat-livechat @RocketChat/omnichannel /apps/meteor/server/features/EmailInbox @RocketChat/omnichannel -/apps/meteor/ee/app/canned-responses @RocketChat/omnichannel -/apps/meteor/ee/app/livechat @RocketChat/omnichannel -/apps/meteor/ee/app/livechat-enterprise @RocketChat/omnichannel +/apps/meteor/ee/server/apps/ @RocketChat/apps +/apps/meteor/ee/tests/unit/server/apps/ @RocketChat/apps +/apps/meteor/ee/server/lib/canned-responses @RocketChat/omnichannel +/apps/meteor/ee/server/hooks/canned-responses @RocketChat/omnichannel +/apps/meteor/ee/server/api/v1/canned-responses.ts @RocketChat/omnichannel +/apps/meteor/ee/server/lib/omnichannel @RocketChat/omnichannel +/apps/meteor/ee/server/hooks/omnichannel @RocketChat/omnichannel +/apps/meteor/ee/server/api/v1/omnichannel @RocketChat/omnichannel +/apps/meteor/ee/server/meteor-methods/saveCannedResponse.ts @RocketChat/omnichannel +/apps/meteor/ee/server/meteor-methods/removeCannedResponse.ts @RocketChat/omnichannel /apps/meteor/client/omnichannel @RocketChat/omnichannel /apps/meteor/client/components/omnichannel @RocketChat/omnichannel diff --git a/.github/actions/build-docker/action.yml b/.github/actions/build-docker/action.yml index 2d7b1fa736a18..827264b4a6434 100644 --- a/.github/actions/build-docker/action.yml +++ b/.github/actions/build-docker/action.yml @@ -8,6 +8,12 @@ inputs: CR_PAT: required: true description: 'GitHub Container Registry Personal Access Token' + DOCKER_USER: + required: false + description: 'DockerHub username (required for FIPS builds to pull private base image)' + DOCKER_PASS: + required: false + description: 'DockerHub password (required for FIPS builds to pull private base image)' deno-version: required: true description: 'Deno version' @@ -28,7 +34,7 @@ inputs: default: 'true' type: required: false - description: 'production or coverage' + description: 'production, coverage, or fips' default: 'coverage' runs: @@ -43,11 +49,19 @@ runs: username: ${{ inputs.CR_USER }} password: ${{ inputs.CR_PAT }} + - name: Login to DockerHub + # FIPS base image (rocketchat/dhi-node) lives in a private DockerHub repo and requires auth to pull. + if: inputs.type == 'fips' && (github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.event_name == 'merge_group' || github.ref == 'refs/heads/develop') + uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 + with: + username: ${{ inputs.DOCKER_USER }} + password: ${{ inputs.DOCKER_PASS }} + - name: Restore meteor build if: inputs.service == 'rocketchat' uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: - name: build-${{ inputs.type }} + name: build-${{ inputs.type == 'fips' && ((github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production') || inputs.type }} path: /tmp/build - name: Unpack meteor build @@ -70,6 +84,33 @@ runs: } } + # Microservice images build from a pruned, self-contained context (out/) + # produced by `turbo prune`, instead of a hand-maintained list of COPY lines. + # The rocketchat (Meteor) image is a prebuilt bundle and is staged separately above. + - name: Stage service build context + if: inputs.service != 'rocketchat' + shell: bash + env: + INPUT_SERVICE: ${{ inputs.service }} + run: | + set -o xtrace + + # The Docker SERVICE arg (folder under ee/apps) lives in the compose build args; + # the compose service name (INPUT_SERVICE) can differ (e.g. ddp-streamer-service). + SERVICE_DIR=$(docker compose -f docker-compose-ci.yml config --format json 2>/dev/null | jq -r --arg s "$INPUT_SERVICE" '.services[$s].build.args.SERVICE') + PKG_NAME=$(node -p "require('./ee/apps/${SERVICE_DIR}/package.json').name") + TURBO_VERSION=$(node -p "require('./package.json').devDependencies.turbo") + + rm -rf "out/${SERVICE_DIR}" + + # `turbo prune` derives the exact workspace dependency closure for the service — no + # hand-maintained list. --use-gitignore=false also captures the gitignored build output + # we need (dist/, generated definition/), at the cost of dragging in node_modules/.turbo, + # which we strip below; `yarn workspaces focus --production` rebuilds node_modules in-image. + npx -y "turbo@${TURBO_VERSION}" prune "$PKG_NAME" --skip-infer --use-gitignore=false --out-dir "out/${SERVICE_DIR}" + + find "out/${SERVICE_DIR}" \( -name node_modules -o -name .turbo \) -type d -prune -exec rm -rf {} + + - name: Build Docker images shell: bash env: @@ -85,6 +126,10 @@ runs: GITHUB_REF: ${{ github.ref }} run: | set -o xtrace + compose_fips_override='' + if [[ "$INPUT_TYPE" == 'fips' ]]; then + compose_fips_override='-f docker-compose-ci.fips.yml' + fi # Removes unnecessary swc cores and sharp binaries to reduce image size swc_arch='x64' @@ -109,10 +154,10 @@ runs: fi # Get image name from docker-compose-ci.yml since rocketchat image is different from service name (rocket.chat) - IMAGE=$(docker compose -f docker-compose-ci.yml config --format json 2>/dev/null | jq -r --arg s "$INPUT_SERVICE" '.services[$s].image') + IMAGE=$(docker compose -f docker-compose-ci.yml $compose_fips_override config --format json 2>/dev/null | jq -r --arg s "$INPUT_SERVICE" '.services[$s].image') docker buildx bake \ - -f docker-compose-ci.yml \ + -f docker-compose-ci.yml $compose_fips_override \ ${LOAD_OR_PUSH} \ --allow=fs.read=/tmp/build \ --set "*.tags+=${IMAGE}-gha-run-${GITHUB_RUN_ID}" \ @@ -133,6 +178,8 @@ runs: SERVICE_SUFFIX='' if [[ "$INPUT_SERVICE" == 'rocketchat' && "$INPUT_TYPE" == 'coverage' ]] && [[ "$GITHUB_EVENT_NAME" == 'release' || "$GITHUB_REF" == 'refs/heads/develop' ]]; then SERVICE_SUFFIX='-cov' + elif [[ "$INPUT_TYPE" == 'fips' ]]; then + SERVICE_SUFFIX='-fips' fi mkdir -p "/tmp/manifests/${INPUT_SERVICE}${SERVICE_SUFFIX}/${INPUT_ARCH}" @@ -160,9 +207,13 @@ runs: TYPE: ${{ inputs.type }} run: | set -o xtrace + compose_fips_override='' + if [[ "$TYPE" == 'fips' ]]; then + compose_fips_override='-f docker-compose-ci.fips.yml' + fi # Get image name from docker-compose-ci.yml - IMAGE=$(docker compose -f docker-compose-ci.yml config --format json 2>/dev/null | jq -r --arg s "$SERVICE" '.services[$s].image') + IMAGE=$(docker compose -f docker-compose-ci.yml $compose_fips_override config --format json 2>/dev/null | jq -r --arg s "$SERVICE" '.services[$s].image') # Create directory for image archives mkdir -p /tmp/docker-images diff --git a/.github/actions/docker-image-size-tracker/action.yml b/.github/actions/docker-image-size-tracker/action.yml index b2ce2339435e4..31d887ce40223 100644 --- a/.github/actions/docker-image-size-tracker/action.yml +++ b/.github/actions/docker-image-size-tracker/action.yml @@ -89,10 +89,11 @@ runs: # Read only the specified platform architecture manifest_file="$service_dir/$PLATFORM/manifest.json" if [[ -f "$manifest_file" ]]; then - # Docker manifest inspect -v returns SchemaV2Manifest with sizes - # Extract config size and layer sizes - config_size=$(jq -r '.SchemaV2Manifest.config.size // 0' "$manifest_file") - layers_size=$(jq '[.SchemaV2Manifest.layers[]?.size // 0] | add // 0' "$manifest_file") + # docker manifest inspect -v puts the manifest under SchemaV2Manifest + # (Docker schema2 images) or OCIManifest (OCI images, which buildx + # produces by default). Coalesce so both formats are read. + config_size=$(jq -r '(.SchemaV2Manifest // .OCIManifest).config.size // 0' "$manifest_file") + layers_size=$(jq '[(.SchemaV2Manifest // .OCIManifest).layers[]?.size // 0] | add // 0' "$manifest_file") size=$((config_size + layers_size)) echo " → Found $manifest_file: $size bytes (config: $config_size, layers: $layers_size)" diff --git a/.github/actions/update-version-durability/package-lock.json b/.github/actions/update-version-durability/package-lock.json index c48e783a33d09..58a93a402ac1c 100644 --- a/.github/actions/update-version-durability/package-lock.json +++ b/.github/actions/update-version-durability/package-lock.json @@ -12,7 +12,7 @@ "@actions/core": "^1.10.1", "@octokit/rest": "^21.0.0", "@xmldom/xmldom": "^0.8.13", - "axios": "^1.16.0", + "axios": "^1.18.0", "beauty-html": "^1.3.1", "colors": "^1.4.0", "diff": "^5.1.0", @@ -53,14 +53,6 @@ "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", "license": "MIT" }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@octokit/auth-token": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", @@ -237,9 +229,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", - "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz", + "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==", "license": "MIT", "dependencies": { "follow-redirects": "^1.16.0", @@ -612,15 +604,12 @@ } }, "node_modules/undici": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", - "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.27.0.tgz", + "integrity": "sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==", "license": "MIT", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, "engines": { - "node": ">=14.0" + "node": ">=18.17" } }, "node_modules/universal-user-agent": { diff --git a/.github/actions/update-version-durability/package.json b/.github/actions/update-version-durability/package.json index b7483014396c9..cd13c200d143c 100644 --- a/.github/actions/update-version-durability/package.json +++ b/.github/actions/update-version-durability/package.json @@ -11,11 +11,14 @@ "dependencies": { "@actions/core": "^1.10.1", "@octokit/rest": "^21.0.0", - "axios": "^1.16.0", + "axios": "^1.18.0", "beauty-html": "^1.3.1", "colors": "^1.4.0", "diff": "^5.1.0", "semver": "^7.5.4", "@xmldom/xmldom": "^0.8.13" + }, + "overrides": { + "undici": "6.27.0" } } diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7b7e7e3ba392c..cb8b695ddbc15 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -23,3 +23,8 @@ updates: directory: '/' schedule: interval: 'daily' + groups: + # CodeQL steps must all run the same version, so they have to be bumped together + codeql-action: + patterns: + - 'github/codeql-action*' diff --git a/.github/workflows/auto-close-duplicates.yml b/.github/workflows/auto-close-duplicates.yml index 73f43e3465177..98be4313dc326 100644 --- a/.github/workflows/auto-close-duplicates.yml +++ b/.github/workflows/auto-close-duplicates.yml @@ -5,6 +5,8 @@ on: - cron: '0 9 * * *' workflow_dispatch: +permissions: {} + jobs: auto-close-duplicates: runs-on: ubuntu-latest @@ -15,7 +17,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup Bun uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 diff --git a/.github/workflows/ci-code-check.yml b/.github/workflows/ci-code-check.yml index 21ff95c641948..e6bc0bc11f7ad 100644 --- a/.github/workflows/ci-code-check.yml +++ b/.github/workflows/ci-code-check.yml @@ -13,9 +13,13 @@ on: env: TOOL_NODE_FLAGS: ${{ vars.TOOL_NODE_FLAGS }} +permissions: {} + jobs: code-check: runs-on: ubuntu-24.04-arm + permissions: + contents: read name: ${{ matrix.check == 'ts' && 'TypeScript' || 'Code Lint' }} @@ -30,7 +34,7 @@ jobs: with: swap-size-gb: 4 - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup NodeJS uses: ./.github/actions/setup-node @@ -41,14 +45,14 @@ jobs: install: true NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - uses: rharkor/caching-for-turbo@5d14fba18e450c09393333cfd4242e8b3cb455a6 # v2.4.2 + - uses: rharkor/caching-for-turbo@2238fae6eb9a9936f92356f54cb3660200d105e7 # v2.5.1 - uses: ./.github/actions/restore-packages - name: Restore TypeScript incremental cache id: restore-typecheck if: matrix.check == 'ts' - uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ./apps/meteor/tsconfig.typecheck.tsbuildinfo key: typecheck-cache-${{ runner.os }}-${{ hashFiles('yarn.lock') }} @@ -89,7 +93,7 @@ jobs: - name: Save TypeScript incremental cache if: matrix.check == 'ts' && github.ref == 'refs/heads/develop' && github.event_name == 'push' - uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ./apps/meteor/tsconfig.typecheck.tsbuildinfo key: typecheck-cache-${{ runner.os }}-${{ hashFiles('yarn.lock') }} @@ -97,7 +101,7 @@ jobs: - name: Restore ESLint cache id: restore-eslint if: matrix.check == 'lint' - uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ./apps/meteor/.eslintcache key: eslintcache-${{ runner.os }}-${{ hashFiles('yarn.lock') }} @@ -118,7 +122,7 @@ jobs: - name: Save ESLint cache if: matrix.check == 'lint' && github.ref == 'refs/heads/develop' && github.event_name == 'push' - uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ./apps/meteor/.eslintcache key: eslintcache-${{ runner.os }}-${{ hashFiles('yarn.lock') }} diff --git a/.github/workflows/ci-deploy-gh-pages.yml b/.github/workflows/ci-deploy-gh-pages.yml index e1b8b81517da6..1d243eab2c9c8 100644 --- a/.github/workflows/ci-deploy-gh-pages.yml +++ b/.github/workflows/ci-deploy-gh-pages.yml @@ -7,12 +7,17 @@ on: - main - master - develop + +permissions: {} + jobs: deploy-preview: runs-on: ubuntu-24.04-arm + permissions: + contents: write steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - uses: rharkor/caching-for-turbo@5d14fba18e450c09393333cfd4242e8b3cb455a6 # v2.4.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: rharkor/caching-for-turbo@2238fae6eb9a9936f92356f54cb3660200d105e7 # v2.5.1 - name: Setup NodeJS uses: ./.github/actions/setup-node diff --git a/.github/workflows/ci-test-e2e.yml b/.github/workflows/ci-test-e2e.yml index c8421db957b60..28f228241b5f3 100644 --- a/.github/workflows/ci-test-e2e.yml +++ b/.github/workflows/ci-test-e2e.yml @@ -26,6 +26,10 @@ on: release: required: true type: string + fips: + default: false + required: false + type: boolean shard: default: '[1]' required: false @@ -68,9 +72,14 @@ env: LOWERCASE_REPOSITORY: ${{ inputs.lowercase-repo }} DOCKER_TAG: ${{ inputs.gh-docker-tag }}-amd64 +permissions: {} + jobs: test: runs-on: ubuntu-24.04 + permissions: + actions: read + contents: read env: # if building for production on develop branch or release, add suffix for coverage images @@ -108,13 +117,13 @@ jobs: - name: Login to GitHub Container Registry if: (github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop') && github.actor != 'dependabot[bot]' - uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 + uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 with: registry: ghcr.io username: ${{ secrets.CR_USER }} password: ${{ secrets.CR_PAT }} - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup NodeJS uses: ./.github/actions/setup-node @@ -125,7 +134,7 @@ jobs: install: true NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - uses: rharkor/caching-for-turbo@5d14fba18e450c09393333cfd4242e8b3cb455a6 # v2.4.2 + - uses: rharkor/caching-for-turbo@2238fae6eb9a9936f92356f54cb3660200d105e7 # v2.5.1 - uses: ./.github/actions/restore-packages @@ -134,7 +143,7 @@ jobs: uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 if: github.event.pull_request.head.repo.full_name != github.repository && github.event_name != 'release' && github.ref != 'refs/heads/develop' with: - pattern: ${{ inputs.release == 'ce' && 'docker-image-rocketchat-amd64-coverage' || 'docker-image-*-amd64-coverage' }} + pattern: ${{ inputs.release == 'ce' && 'docker-image-rocketchat-amd64-coverage' || (inputs.fips && 'docker-image-*-amd64-fips' || 'docker-image-*-amd64-coverage') }} path: /tmp/docker-images merge-multiple: true @@ -162,7 +171,7 @@ jobs: run: echo "DEBUG_LOG_LEVEL=2" >> "$GITHUB_ENV" - name: Start httpbin container and wait for it to be ready - if: inputs.type == 'api' || inputs.type == 'api-livechat' + if: startsWith(inputs.type, 'api') run: | docker compose -f docker-compose-ci.yml up -d httpbin @@ -181,10 +190,15 @@ jobs: # behavior on (rate-limiter bypass, short cache TTLs) while letting # the deprecation logger log without throwing. Other suites use the # docker-compose default of TEST_MODE='true'. - TEST_MODE: ${{ (inputs.type == 'api' || inputs.type == 'api-livechat') && 'api' || 'true' }} + TEST_MODE: ${{ startsWith(inputs.type, 'api') && 'api' || 'true' }} + TEST_TYPE: ${{ inputs.type }} run: | - # when we are testing CE, we only need to start the rocketchat container - DEBUG_LOG_LEVEL=${DEBUG_LOG_LEVEL:-0} docker compose -f docker-compose-ci.yml up -d rocketchat --wait + # when we are testing CE, we only need to start the rocketchat container (plus mock-server for the api suite) + services=(rocketchat) + if [ "$TEST_TYPE" == "api" ]; then + services+=(mock-server) + fi + DEBUG_LOG_LEVEL=${DEBUG_LOG_LEVEL:-0} docker compose -f docker-compose-ci.yml up -d "${services[@]}" --wait - name: Start containers for EE if: inputs.release == 'ee' @@ -192,9 +206,12 @@ jobs: ENTERPRISE_LICENSE: ${{ inputs.enterprise-license }} TRANSPORTER: ${{ inputs.transporter }} COMPOSE_PROFILES: ${{ inputs.type == 'api' && 'api' || '' }} - TEST_MODE: ${{ (inputs.type == 'api' || inputs.type == 'api-livechat') && 'api' || 'true' }} + TEST_MODE: ${{ startsWith(inputs.type, 'api') && 'api' || 'true' }} + APPS_ENGINE_RUNTIME_BACKEND: ${{ inputs.type == 'api-apps-deno' && 'deno' || '' }} + FIPS_OVERRIDE: ${{ inputs.fips && '-f docker-compose-ci.fips.yml' || '' }} run: | - DEBUG_LOG_LEVEL=${DEBUG_LOG_LEVEL:-0} docker compose -f docker-compose-ci.yml up -d --wait + read -r -a fips_override <<< "$FIPS_OVERRIDE" + DEBUG_LOG_LEVEL=${DEBUG_LOG_LEVEL:-0} docker compose -f docker-compose-ci.yml "${fips_override[@]}" up -d --wait - uses: ./.github/actions/setup-playwright if: inputs.type == 'ui' @@ -229,6 +246,23 @@ jobs: ls -la "$COVERAGE_DIR" exit "${s:-0}" + # This step should be temporary, only here until we remove the deno-runtime + - name: E2E Test API (apps + deno-runtime) + if: (inputs.type == 'api-apps-deno' && inputs.release == 'ee') + working-directory: ./apps/meteor + env: + WEBHOOK_TEST_URL: 'http://httpbin' + IS_EE: 'true' + run: | + set -o xtrace + + npm run testapi:apps || s=$? + + docker compose -f ../../docker-compose-ci.yml stop + + ls -la "$COVERAGE_DIR" + exit "${s:-0}" + - name: E2E Test API (Livechat) if: inputs.type == 'api-livechat' working-directory: ./apps/meteor @@ -285,7 +319,7 @@ jobs: if: inputs.type == 'ui' && always() uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - name: playwright-test-trace-${{ inputs.release }}-${{ matrix.mongodb-version }}-${{ matrix.shard }} + name: playwright-test-trace-${{ inputs.release }}${{ inputs.fips && '-fips' || '' }}-${{ matrix.mongodb-version }}-${{ matrix.shard }} path: ./apps/meteor/tests/e2e/.playwright* include-hidden-files: true @@ -297,6 +331,10 @@ jobs: if: failure() run: docker compose -f docker-compose-ci.yml logs mongo + - name: Show traefik logs if E2E test failed + if: failure() + run: docker compose -f docker-compose-ci.yml logs traefik + - name: Store coverage if: inputs.coverage == matrix.mongodb-version uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 diff --git a/.github/workflows/ci-test-storybook.yml b/.github/workflows/ci-test-storybook.yml index 9c7732f88a48d..ea538ebd17440 100644 --- a/.github/workflows/ci-test-storybook.yml +++ b/.github/workflows/ci-test-storybook.yml @@ -19,14 +19,18 @@ on: env: TOOL_NODE_FLAGS: ${{ vars.TOOL_NODE_FLAGS }} +permissions: {} + jobs: test: runs-on: ubuntu-24.04-arm + permissions: + contents: read name: Test Storybook steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup NodeJS uses: ./.github/actions/setup-node @@ -37,7 +41,7 @@ jobs: install: true NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - uses: rharkor/caching-for-turbo@5d14fba18e450c09393333cfd4242e8b3cb455a6 # v2.4.2 + - uses: rharkor/caching-for-turbo@2238fae6eb9a9936f92356f54cb3660200d105e7 # v2.5.1 - uses: ./.github/actions/restore-packages @@ -48,8 +52,11 @@ jobs: env: STORYBOOK_DISABLE_TELEMETRY: 1 - - uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1 + - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: flags: unit verbose: true token: ${{ secrets.CODECOV_TOKEN }} + # tests don't re-run on the develop push, so the merge queue run (same SHA + # that lands on develop) provides the develop coverage baseline + override_branch: ${{ github.event_name == 'merge_group' && github.event.merge_group.base_ref == 'refs/heads/develop' && 'develop' || '' }} diff --git a/.github/workflows/ci-test-unit.yml b/.github/workflows/ci-test-unit.yml index a13e1fe4834cd..2b33f819d1487 100644 --- a/.github/workflows/ci-test-unit.yml +++ b/.github/workflows/ci-test-unit.yml @@ -23,14 +23,18 @@ env: TOOL_NODE_FLAGS: ${{ vars.TOOL_NODE_FLAGS }} ENTERPRISE_LICENSE: ${{ inputs.enterprise-license }} +permissions: {} + jobs: test: runs-on: ubuntu-24.04-arm + permissions: + contents: read name: Unit Tests steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup NodeJS uses: ./.github/actions/setup-node @@ -41,15 +45,18 @@ jobs: install: true NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - uses: rharkor/caching-for-turbo@5d14fba18e450c09393333cfd4242e8b3cb455a6 # v2.4.2 + - uses: rharkor/caching-for-turbo@2238fae6eb9a9936f92356f54cb3660200d105e7 # v2.5.1 - uses: ./.github/actions/restore-packages - name: Unit Test run: yarn testunit --concurrency=1 - - uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1 + - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: flags: unit verbose: true token: ${{ secrets.CODECOV_TOKEN }} + # tests don't re-run on the develop push, so the merge queue run (same SHA + # that lands on develop) provides the develop coverage baseline + override_branch: ${{ github.event_name == 'merge_group' && github.event.merge_group.base_ref == 'refs/heads/develop' && 'develop' || '' }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 77939861d1a42..d045ebbbdf3cd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,16 +16,25 @@ on: - '**.md' concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + # merge_group runs group by the merge-group ref so a recreated group cancels the stale run; + # push/release runs group by run_id on purpose (never cancel a deploy in progress) + group: ${{ github.workflow }}-${{ github.head_ref || (github.event_name == 'merge_group' && github.ref) || github.run_id }} cancel-in-progress: true env: TOOL_NODE_FLAGS: ${{ vars.TOOL_NODE_FLAGS }} +permissions: + contents: read + actions: read + jobs: release-versions: name: ⚙️ Variables Setup runs-on: ubuntu-24.04-arm + permissions: + contents: read + pull-requests: read outputs: release: ${{ steps.by-tag.outputs.release }} latest-release: ${{ steps.latest.outputs.latest-release }} @@ -51,7 +60,7 @@ jobs: echo "github.event_name: ${{ github.event_name }}" cat "$GITHUB_EVENT_PATH" - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 # with: # sparse-checkout: | # package.json @@ -144,12 +153,45 @@ jobs: echo "actions-changed=true" >> "$GITHUB_OUTPUT" fi + test-guard: + name: ⚙️ Test Guard + runs-on: ubuntu-24.04-arm + permissions: + checks: read + outputs: + skip-tests: ${{ steps.check.outputs.skip-tests }} + steps: + # Commits only reach develop through the merge queue, where the full test + # suite already ran on this exact SHA — skip re-running it on the push event. + # Direct pushes (admin/revert) have no successful "Tests Done" check, so they + # still get the full suite. continue-on-error keeps this fail-open: if the + # API call fails, tests run. + - name: Check if this commit already passed tests + id: check + if: github.event_name == 'push' + continue-on-error: true + env: + GH_TOKEN: ${{ github.token }} + run: | + # --paginate applies the jq filter per page, so emit names and count with + # wc -l to get a single integer across pages + passed=$(gh api "repos/${{ github.repository }}/commits/${{ github.sha }}/check-runs" --paginate \ + --jq '.check_runs[] | select(.name == "✅ Tests Done" and .conclusion == "success") | .name' | wc -l) + + if [[ "$passed" -gt 0 ]]; then + echo "Tests already passed for ${{ github.sha }} in the merge queue, skipping test jobs" + echo "skip-tests=true" >> "$GITHUB_OUTPUT" + else + echo "skip-tests=false" >> "$GITHUB_OUTPUT" + fi + notify-draft-services: name: 🚀 Notify external services - draft runs-on: ubuntu-24.04-arm needs: [release-versions] + if: github.event_name == 'release' steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: sparse-checkout: | package.json @@ -188,11 +230,11 @@ jobs: packages-build: name: 📦 Build Packages - needs: [release-versions, notify-draft-services] + needs: [release-versions] runs-on: ubuntu-24.04-arm steps: - name: Cache build - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 id: packages-cache-build with: path: | @@ -213,7 +255,7 @@ jobs: with: swap-size-gb: 4 - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 if: steps.packages-cache-build.outputs.cache-hit != 'true' - name: Setup NodeJS @@ -238,7 +280,7 @@ jobs: } >> "$GITHUB_STEP_SUMMARY" - name: Cache vite - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 if: steps.packages-cache-build.outputs.cache-hit != 'true' with: path: ./node_modules/.vite @@ -246,7 +288,7 @@ jobs: restore-keys: | vite-local-cache-${{ runner.arch }}-${{ runner.os }}- - - uses: rharkor/caching-for-turbo@5d14fba18e450c09393333cfd4242e8b3cb455a6 # v2.4.2 + - uses: rharkor/caching-for-turbo@2238fae6eb9a9936f92356f54cb3660200d105e7 # v2.5.1 if: steps.packages-cache-build.outputs.cache-hit != 'true' - name: Build Rocket.Chat Packages @@ -289,7 +331,7 @@ jobs: - type: ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'production' || '' }} steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: ./.github/actions/meteor-build with: @@ -318,10 +360,12 @@ jobs: [rocketchat], ] type: - # if running in a PR build with coverage - ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }} + - fips + exclude: + - arch: arm64 + type: fips include: - # if not, build with coverage for tests - arch: amd64 service: [rocketchat] type: coverage @@ -330,7 +374,7 @@ jobs: type: coverage steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: ./.github/actions/restore-packages @@ -344,6 +388,8 @@ jobs: with: CR_USER: ${{ secrets.CR_USER }} CR_PAT: ${{ secrets.CR_PAT }} + DOCKER_USER: ${{ secrets.DOCKER_USER }} + DOCKER_PASS: ${{ secrets.DOCKER_PASS }} deno-version: ${{ needs.release-versions.outputs.deno-version }} arch: ${{ matrix.arch }} service: ${{ matrix.service[0] }} @@ -358,6 +404,8 @@ jobs: with: CR_USER: ${{ secrets.CR_USER }} CR_PAT: ${{ secrets.CR_PAT }} + DOCKER_USER: ${{ secrets.DOCKER_USER }} + DOCKER_PASS: ${{ secrets.DOCKER_PASS }} deno-version: ${{ needs.release-versions.outputs.deno-version }} arch: ${{ matrix.arch }} service: ${{ matrix.service[1] }} @@ -373,6 +421,8 @@ jobs: with: CR_USER: ${{ secrets.CR_USER }} CR_PAT: ${{ secrets.CR_PAT }} + DOCKER_USER: ${{ secrets.DOCKER_USER }} + DOCKER_PASS: ${{ secrets.DOCKER_PASS }} deno-version: ${{ needs.release-versions.outputs.deno-version }} arch: ${{ matrix.arch }} service: ${{ matrix.service[2] }} @@ -388,6 +438,8 @@ jobs: with: CR_USER: ${{ secrets.CR_USER }} CR_PAT: ${{ secrets.CR_PAT }} + DOCKER_USER: ${{ secrets.DOCKER_USER }} + DOCKER_PASS: ${{ secrets.DOCKER_PASS }} deno-version: ${{ needs.release-versions.outputs.deno-version }} arch: ${{ matrix.arch }} service: ${{ matrix.service[3] }} @@ -405,17 +457,18 @@ jobs: LOWERCASE_REPOSITORY: ${{ needs.release-versions.outputs.lowercase-repo }} steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 if: github.actor != 'dependabot[bot]' && (github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop') with: sparse-checkout: | docker-compose-ci.yml + docker-compose-ci.fips.yml sparse-checkout-cone-mode: false ref: ${{ github.ref }} - name: Login to GitHub Container Registry if: github.actor != 'dependabot[bot]' && (github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop') - uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 + uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 with: registry: ghcr.io username: ${{ secrets.CR_USER }} @@ -452,6 +505,9 @@ jobs: # Get image name from docker-compose-ci.yml since rocketchat image is different from service name (rocket.chat) if [ "$service" == "rocketchat-cov" ]; then IMAGE=$(docker compose -f docker-compose-ci.yml config --format json 2>/dev/null | jq -r --arg s "rocketchat" '.services[$s].image')-cov + elif [[ "$service" == *"-fips" ]]; then + base_service="${service%-fips}" + IMAGE=$(docker compose -f docker-compose-ci.yml config --format json 2>/dev/null | jq -r --arg s "$base_service" '.services[$s].image')-fips else IMAGE=$(docker compose -f docker-compose-ci.yml config --format json 2>/dev/null | jq -r --arg s "$service" '.services[$s].image') fi @@ -476,7 +532,7 @@ jobs: contents: write steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Track Docker image sizes uses: ./.github/actions/docker-image-size-tracker @@ -498,7 +554,7 @@ jobs: env: ACTIONLINT_VERSION: 1.7.12 steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Get actionlint shell: bash @@ -516,8 +572,11 @@ jobs: ./actionlint -color + # gating `checks` also skips every e2e test job (they all `need` it); + # test-storybook and test-unit don't, so they carry the same gate below checks: - needs: [release-versions, packages-build] + needs: [release-versions, packages-build, test-guard] + if: needs.test-guard.outputs.skip-tests != 'true' name: 🔎 Code Check uses: ./.github/workflows/ci-code-check.yml @@ -527,7 +586,8 @@ jobs: test-storybook: name: 🔨 Test Storybook - needs: [packages-build, release-versions] + needs: [packages-build, release-versions, test-guard] + if: needs.test-guard.outputs.skip-tests != 'true' uses: ./.github/workflows/ci-test-storybook.yml with: @@ -538,7 +598,8 @@ jobs: test-unit: name: 🔨 Test Unit - needs: [packages-build, release-versions] + needs: [packages-build, release-versions, test-guard] + if: needs.test-guard.outputs.skip-tests != 'true' uses: ./.github/workflows/ci-test-unit.yml with: @@ -598,7 +659,7 @@ jobs: deno-version: ${{ needs.release-versions.outputs.deno-version }} lowercase-repo: ${{ needs.release-versions.outputs.lowercase-repo }} gh-docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }} - retries: ${{ (github.event_name == 'release' || github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master') && 2 || 0 }} + retries: ${{ (github.event_name == 'release' || github.event_name == 'merge_group' || github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master') && 2 || 0 }} secrets: CR_USER: ${{ secrets.CR_USER }} CR_PAT: ${{ secrets.CR_PAT }} @@ -650,6 +711,27 @@ jobs: CR_PAT: ${{ secrets.CR_PAT }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + test-api-apps-deno-ee: + name: 🔨 Test API Apps (deno-runtime - EE) + needs: [checks, build-gh-docker-publish, release-versions] + + uses: ./.github/workflows/ci-test-e2e.yml + with: + type: api-apps-deno + release: ee + transporter: 'nats://nats:4222' + enterprise-license: ${{ needs.release-versions.outputs.enterprise-license }} + mongodb-version: "['8.0']" + coverage: '8.0' + node-version: ${{ needs.release-versions.outputs.node-version }} + deno-version: ${{ needs.release-versions.outputs.deno-version }} + lowercase-repo: ${{ needs.release-versions.outputs.lowercase-repo }} + gh-docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }} + secrets: + CR_USER: ${{ secrets.CR_USER }} + CR_PAT: ${{ secrets.CR_PAT }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + test-ui-ee: name: 🔨 Test UI (EE) needs: [checks, build-gh-docker-publish, release-versions] @@ -668,7 +750,7 @@ jobs: deno-version: ${{ needs.release-versions.outputs.deno-version }} lowercase-repo: ${{ needs.release-versions.outputs.lowercase-repo }} gh-docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }} - retries: ${{ (github.event_name == 'release' || github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master') && 2 || 0 }} + retries: ${{ (github.event_name == 'release' || github.event_name == 'merge_group' || github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master') && 2 || 0 }} secrets: CR_USER: ${{ secrets.CR_USER }} CR_PAT: ${{ secrets.CR_PAT }} @@ -679,13 +761,83 @@ jobs: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} REPORTER_JIRA_ROCKETCHAT_API_KEY: ${{ secrets.REPORTER_JIRA_ROCKETCHAT_API_KEY }} + test-api-fips: + name: 🔨 Test API (FIPS) + needs: [checks, build-gh-docker-publish, release-versions] + + uses: ./.github/workflows/ci-test-e2e.yml + with: + type: api + release: ee + fips: true + transporter: 'nats://nats:4222' + enterprise-license: ${{ needs.release-versions.outputs.enterprise-license }} + mongodb-version: "['8.0']" + node-version: ${{ needs.release-versions.outputs.node-version }} + deno-version: ${{ needs.release-versions.outputs.deno-version }} + lowercase-repo: ${{ needs.release-versions.outputs.lowercase-repo }} + gh-docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }} + secrets: + CR_USER: ${{ secrets.CR_USER }} + CR_PAT: ${{ secrets.CR_PAT }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + test-api-livechat-fips: + name: 🔨 Test API Livechat (FIPS) + needs: [checks, build-gh-docker-publish, release-versions] + + uses: ./.github/workflows/ci-test-e2e.yml + with: + type: api-livechat + release: ee + fips: true + transporter: 'nats://nats:4222' + enterprise-license: ${{ needs.release-versions.outputs.enterprise-license }} + mongodb-version: "['8.0']" + node-version: ${{ needs.release-versions.outputs.node-version }} + deno-version: ${{ needs.release-versions.outputs.deno-version }} + lowercase-repo: ${{ needs.release-versions.outputs.lowercase-repo }} + gh-docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }} + secrets: + CR_USER: ${{ secrets.CR_USER }} + CR_PAT: ${{ secrets.CR_PAT }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + test-ui-fips: + name: 🔨 Test UI (FIPS) + if: contains(github.event.pull_request.labels.*.name, 'fips') + needs: [checks, build-gh-docker-publish, release-versions] + uses: ./.github/workflows/ci-test-e2e.yml + with: + type: ui + release: ee + fips: true + transporter: 'nats://nats:4222' + enterprise-license: ${{ needs.release-versions.outputs.enterprise-license }} + shard: '[1, 2, 3, 4, 5]' + total-shard: 5 + mongodb-version: "['8.0']" + node-version: ${{ needs.release-versions.outputs.node-version }} + deno-version: ${{ needs.release-versions.outputs.deno-version }} + lowercase-repo: ${{ needs.release-versions.outputs.lowercase-repo }} + gh-docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }} + retries: ${{ (github.event_name == 'release' || github.event_name == 'merge_group' || github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master') && 2 || 0 }} + secrets: + CR_USER: ${{ secrets.CR_USER }} + CR_PAT: ${{ secrets.CR_PAT }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + QASE_API_TOKEN: ${{ secrets.QASE_API_TOKEN }} + REPORTER_ROCKETCHAT_API_KEY: ${{ secrets.REPORTER_ROCKETCHAT_API_KEY }} + REPORTER_ROCKETCHAT_URL: ${{ secrets.REPORTER_ROCKETCHAT_URL }} + REPORTER_JIRA_ROCKETCHAT_API_KEY: ${{ secrets.REPORTER_JIRA_ROCKETCHAT_API_KEY }} + test-federation-matrix: name: 🔨 Test Federation Matrix needs: [checks, build-gh-docker-publish, packages-build, release-versions] runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup NodeJS uses: ./.github/actions/setup-node @@ -695,7 +847,7 @@ jobs: cache-modules: true install: true - - uses: rharkor/caching-for-turbo@5d14fba18e450c09393333cfd4242e8b3cb455a6 # v2.4.2 + - uses: rharkor/caching-for-turbo@2238fae6eb9a9936f92356f54cb3660200d105e7 # v2.5.1 - name: Restore turbo build uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 @@ -709,7 +861,7 @@ jobs: - name: Login to GitHub Container Registry if: (github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop') && github.actor != 'dependabot[bot]' - uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 + uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 with: registry: ghcr.io username: ${{ secrets.CR_USER }} @@ -780,10 +932,10 @@ jobs: needs: [release-versions, test-api-ee, test-api-livechat-ee, test-ui-ee] steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Use Node.js - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: ${{ needs.release-versions.outputs.node-version }} @@ -809,28 +961,32 @@ jobs: include-hidden-files: true - name: Report API coverage - uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1 + uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: files: /tmp/coverage_report/api/lcov.info working-directory: . flags: e2e-api verbose: true token: ${{ secrets.CODECOV_TOKEN }} + # tests don't re-run on the develop push, so the merge queue run (same SHA + # that lands on develop) provides the develop coverage baseline + override_branch: ${{ github.event_name == 'merge_group' && github.event.merge_group.base_ref == 'refs/heads/develop' && 'develop' || '' }} - name: Report UI coverage - uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1 + uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: files: /tmp/coverage_report/ui/lcov.info working-directory: . flags: e2e verbose: true token: ${{ secrets.CODECOV_TOKEN }} + override_branch: ${{ github.event_name == 'merge_group' && github.event.merge_group.base_ref == 'refs/heads/develop' && 'develop' || '' }} tests-done: name: ✅ Tests Done runs-on: ubuntu-24.04-arm - needs: [checks, test-unit, test-api, test-ui, test-api-ee, test-ui-ee, test-api-livechat, test-api-livechat-ee, test-federation-matrix] - if: always() + needs: [test-guard, checks, test-unit, test-api, test-ui, test-api-ee, test-ui-ee, test-api-livechat, test-api-livechat-ee, test-api-apps-deno-ee, test-api-fips, test-api-livechat-fips, test-ui-fips, test-federation-matrix] + if: always() && needs.test-guard.outputs.skip-tests != 'true' steps: - name: Test finish aggregation run: | @@ -866,6 +1022,22 @@ jobs: exit 1 fi + if [[ '${{ needs.test-api-apps-deno-ee.result }}' != 'success' ]]; then + exit 1 + fi + + if [[ '${{ needs.test-api-fips.result }}' != 'success' ]]; then + exit 1 + fi + + if [[ '${{ needs.test-api-livechat-fips.result }}' != 'success' ]]; then + exit 1 + fi + + if [[ '${{ needs.test-ui-fips.result }}' != 'success' && '${{ needs.test-ui-fips.result }}' != 'skipped' ]]; then + exit 1 + fi + if [[ '${{ needs.test-federation-matrix.result }}' != 'success' ]]; then exit 1 fi @@ -879,7 +1051,7 @@ jobs: needs: [build-gh-docker-publish, release-versions] steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: sparse-checkout: | package.json @@ -934,21 +1106,22 @@ jobs: LOWERCASE_REPOSITORY: ${{ needs.release-versions.outputs.lowercase-repo }} steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: sparse-checkout: | docker-compose-ci.yml + docker-compose-ci.fips.yml sparse-checkout-cone-mode: false ref: ${{ github.ref }} - name: Login to DockerHub - uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 + uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry - uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 + uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 with: registry: ghcr.io username: ${{ secrets.CR_USER }} @@ -1014,28 +1187,39 @@ jobs: echo "Promoting $service" - if [[ "${service}" == 'rocketchat' ]]; then + # FIPS images publish to the same repo as their base service, distinguished by a + # '-fips' tag suffix (matching GHCR), not a separate '-fips' repository. + # Get image name from docker-compose-ci.yml since rocketchat image is different from service name (rocket.chat) + TAG_SUFFIX='' + if [[ "$service" == *"-fips" ]]; then + base_service="${service%-fips}" + TAG_SUFFIX='-fips' + SRC=$(docker compose -f docker-compose-ci.yml -f docker-compose-ci.fips.yml config --format json 2>/dev/null | jq -r --arg s "$base_service" '.services[$s].image') + else + base_service="$service" + SRC=$(docker compose -f docker-compose-ci.yml config --format json 2>/dev/null | jq -r --arg s "$service" '.services[$s].image') + fi + + if [[ "${base_service}" == 'rocketchat' ]]; then IMAGE_NAME="${{ needs.release-versions.outputs.lowercase-repo }}/rocket.chat" else - IMAGE_NAME="${{ needs.release-versions.outputs.lowercase-repo }}/${service}" + IMAGE_NAME="${{ needs.release-versions.outputs.lowercase-repo }}/${base_service}" fi - # Get image name from docker-compose-ci.yml since rocketchat image is different from service name (rocket.chat) - SRC=$(docker compose -f docker-compose-ci.yml config --format json 2>/dev/null | jq -r --arg s "${service}" '.services[$s].image') DEST_REPO="docker.io/${IMAGE_NAME}" - echo "Copying $SRC to ${DEST_REPO}:${PRIMARY}" + echo "Copying $SRC to ${DEST_REPO}:${PRIMARY}${TAG_SUFFIX}" skopeo copy --all \ "docker://${SRC}" \ - "docker://${DEST_REPO}:${PRIMARY}" + "docker://${DEST_REPO}:${PRIMARY}${TAG_SUFFIX}" # copy additional tags if (( ${#TAGS[@]} > 1 )); then for t in "${TAGS[@]:1}"; do - echo "Copying $SRC to ${DEST_REPO}:${t}" + echo "Copying $SRC to ${DEST_REPO}:${t}${TAG_SUFFIX}" skopeo copy --all \ "docker://${SRC}" \ - "docker://${DEST_REPO}:${t}" + "docker://${DEST_REPO}:${t}${TAG_SUFFIX}" done fi @@ -1048,7 +1232,7 @@ jobs: - docker-image-publish - release-versions steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: sparse-checkout: | package.json diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d2034fd0f6436..b6ce9dfe1b3a4 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -12,10 +12,14 @@ jobs: CodeQL-Build: # CodeQL runs on ubuntu-latest and windows-latest runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: # We must fetch at least the immediate parents so that if this is # a pull request then we can checkout the head. @@ -28,7 +32,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5 + uses: github/codeql-action/init@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4.37.4 # Override language selection by uncommenting this and choosing your languages with: languages: javascript @@ -36,7 +40,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5 + uses: github/codeql-action/autobuild@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4.37.4 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -50,4 +54,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5 + uses: github/codeql-action/analyze@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4.37.4 diff --git a/.github/workflows/dedupe-issues.yml b/.github/workflows/dedupe-issues.yml index fe4565001a6e5..a527333ce609f 100644 --- a/.github/workflows/dedupe-issues.yml +++ b/.github/workflows/dedupe-issues.yml @@ -10,6 +10,8 @@ on: required: true type: string +permissions: {} + jobs: dedupe-issues: runs-on: ubuntu-latest @@ -20,7 +22,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Run Claude Code slash command uses: anthropics/claude-code-base-action@e8132bc5e637a42c27763fc757faa37e1ee43b34 # v0.0.63beta diff --git a/.github/workflows/new-release.yml b/.github/workflows/new-release.yml index 415e37e3c8f57..8d822eb7a73bc 100644 --- a/.github/workflows/new-release.yml +++ b/.github/workflows/new-release.yml @@ -20,12 +20,16 @@ on: env: HUSKY: 0 +permissions: {} + jobs: new-release: runs-on: ubuntu-24.04 + permissions: + contents: read steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: ref: ${{ github.event.inputs.base-ref }} fetch-depth: 0 @@ -38,7 +42,7 @@ jobs: install: true NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - uses: rharkor/caching-for-turbo@5d14fba18e450c09393333cfd4242e8b3cb455a6 # v2.4.2 + - uses: rharkor/caching-for-turbo@2238fae6eb9a9936f92356f54cb3660200d105e7 # v2.5.1 - name: Build packages run: yarn build diff --git a/.github/workflows/pr-update-description.yml b/.github/workflows/pr-update-description.yml index 58fa2d371e213..a5339c8b4a882 100644 --- a/.github/workflows/pr-update-description.yml +++ b/.github/workflows/pr-update-description.yml @@ -7,13 +7,17 @@ on: concurrency: ${{ github.workflow }}-${{ github.ref }} +permissions: {} + jobs: update-pr: runs-on: ubuntu-24.04 if: startsWith(github.head_ref, 'release-') + permissions: + contents: read steps: - name: Checkout Repo - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 token: ${{ secrets.CI_PAT }} @@ -25,7 +29,7 @@ jobs: install: true NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - uses: rharkor/caching-for-turbo@5d14fba18e450c09393333cfd4242e8b3cb455a6 # v2.4.2 + - uses: rharkor/caching-for-turbo@2238fae6eb9a9936f92356f54cb3660200d105e7 # v2.5.1 - name: Build packages run: yarn build diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 7be1cf06211f2..902bd777f4f46 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -10,13 +10,17 @@ concurrency: ${{ github.workflow }}-${{ github.ref }} env: HUSKY: 0 +permissions: {} + jobs: release: name: Release runs-on: ubuntu-24.04 + permissions: + contents: read steps: - name: Checkout Repo - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 token: ${{ secrets.CI_PAT }} @@ -28,7 +32,7 @@ jobs: install: true NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - uses: rharkor/caching-for-turbo@5d14fba18e450c09393333cfd4242e8b3cb455a6 # v2.4.2 + - uses: rharkor/caching-for-turbo@2238fae6eb9a9936f92356f54cb3660200d105e7 # v2.5.1 - name: Build packages run: yarn build diff --git a/.github/workflows/release-candidate.yml b/.github/workflows/release-candidate.yml index a956df9f1f018..7b3e9103dbe98 100644 --- a/.github/workflows/release-candidate.yml +++ b/.github/workflows/release-candidate.yml @@ -2,11 +2,16 @@ name: Release candidate cut on: schedule: - cron: '28 21 20 * *' # run at minute 28 to avoid the chance of delay due to high load on GH + +permissions: {} + jobs: new-release: runs-on: ubuntu-24.04 + permissions: + contents: read steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: ref: ${{ github.ref_name }} fetch-depth: 0 @@ -19,7 +24,7 @@ jobs: install: true NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - uses: rharkor/caching-for-turbo@5d14fba18e450c09393333cfd4242e8b3cb455a6 # v2.4.2 + - uses: rharkor/caching-for-turbo@2238fae6eb9a9936f92356f54cb3660200d105e7 # v2.5.1 - name: Build packages run: yarn build diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index a4e06de4a534c..dd765530b3f91 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -9,7 +9,7 @@ jobs: permissions: issues: write steps: - - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0 + - uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11.0.0 with: days-before-issue-stale: 14 days-before-issue-close: 14 diff --git a/.github/workflows/todo.yml b/.github/workflows/todo.yml index e1b72eeed170b..0158eb8434546 100644 --- a/.github/workflows/todo.yml +++ b/.github/workflows/todo.yml @@ -33,7 +33,7 @@ jobs: timeout-minutes: 10 steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup Bun uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 diff --git a/.github/workflows/update-version-durability.yml b/.github/workflows/update-version-durability.yml index 11fa82711ae1e..fdafd92509986 100644 --- a/.github/workflows/update-version-durability.yml +++ b/.github/workflows/update-version-durability.yml @@ -15,15 +15,19 @@ on: D360_USER_ID: required: true +permissions: {} + jobs: update-versions: runs-on: ubuntu-24.04 + permissions: + contents: read steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Use Node.js - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: 22.22.3 diff --git a/.yarn/patches/@react-pdf-layout-npm-4.4.2-6c2e3312fa.patch b/.yarn/patches/@react-pdf-layout-npm-4.4.2-6c2e3312fa.patch deleted file mode 100644 index a8271b2de103b..0000000000000 --- a/.yarn/patches/@react-pdf-layout-npm-4.4.2-6c2e3312fa.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/lib/index.js b/lib/index.js -index c64bdf2d5f7e704a65be4e9a7116c5ee6a582701..ce6641d0b63daf7c5d3f8a1de773f290c0e9d51c 100644 ---- a/lib/index.js -+++ b/lib/index.js -@@ -2,8 +2,8 @@ import { upperFirst, capitalize, parseFloat as parseFloat$1, without, pick, comp - import * as P from '@react-pdf/primitives'; - import resolveStyle, { transformColor, flatten } from '@react-pdf/stylesheet'; - import layoutEngine, { fontSubstitution, wordHyphenation, scriptItemizer, textDecoration, justification, linebreaker, bidi, fromFragments } from '@react-pdf/textkit'; --import * as Yoga from 'yoga-layout/load'; --import { loadYoga as loadYoga$1 } from 'yoga-layout/load'; -+import * as Yoga from 'yoga-layout/dist/src/load.js'; -+import { loadYoga as loadYoga$1 } from 'yoga-layout/dist/src/load.js'; - import emojiRegex from 'emoji-regex-xs'; - import resolveImage from '@react-pdf/image'; - diff --git a/.yarn/patches/@react-pdf-layout-npm-4.6.1-b12fdb71f4.patch b/.yarn/patches/@react-pdf-layout-npm-4.6.1-b12fdb71f4.patch new file mode 100644 index 0000000000000..740c1484bde8c --- /dev/null +++ b/.yarn/patches/@react-pdf-layout-npm-4.6.1-b12fdb71f4.patch @@ -0,0 +1,24 @@ +diff --git a/lib/index.js b/lib/index.js +index b7ea5e30fddb9bdef0034c00f28bbd4f0dee584a..47f7717632bd55d3c42ebb39f1ef5a23c14cfa3a 100644 +--- a/lib/index.js ++++ b/lib/index.js +@@ -2,8 +2,8 @@ import { upperFirst, capitalize, parseFloat as parseFloat$1, without, pick, comp + import * as P from '@react-pdf/primitives'; + import resolveStyle, { transformColor, flatten } from '@react-pdf/stylesheet'; + import layoutEngine, { fontSubstitution, wordHyphenation, scriptItemizer, textDecoration, justification, linebreaker, bidi, fromFragments } from '@react-pdf/textkit'; +-import * as Yoga from 'yoga-layout/load'; +-import { loadYoga as loadYoga$1 } from 'yoga-layout/load'; ++import * as Yoga from 'yoga-layout/dist/src/load.js'; ++import { loadYoga as loadYoga$1 } from 'yoga-layout/dist/src/load.js'; + import emojiRegex from 'emoji-regex-xs'; + import resolveImage from '@react-pdf/image'; + +@@ -2998,7 +2998,7 @@ const splitPage = (page, pageNumber, fontStore, yoga) => { + const dynamicPage = resolveDynamicPage({ pageNumber }, page, fontStore, yoga); + const height = page.style.height; + const [currentChilds, nextChilds] = splitNodes(wrapArea, contentArea, dynamicPage.children); +- const relayout = (node) => ++ const relayout = (node) => + // @ts-expect-error rework pagination + relayoutPage(node, fontStore, yoga); + const currentBox = { ...page.box, height }; diff --git a/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch b/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch index 833b21fc29fff..f0d5b5da4beb9 100644 --- a/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch +++ b/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch @@ -1,8 +1,16 @@ diff --git a/lib/@types/index.d.ts b/lib/@types/index.d.ts -index f71a82f458c1432202be8d4585fc70ba94bee4a4..2ad273d1efcaaa54b0a1326ff1c15b6cfc199be3 100644 +index f71a82f458c1432202be8d4585fc70ba94bee4a4..4a6fee9f2aeac1a926d591aabab19f927d1bc3af 100644 --- a/lib/@types/index.d.ts +++ b/lib/@types/index.d.ts -@@ -101,7 +101,7 @@ declare namespace Srf { +@@ -40,6 +40,7 @@ declare namespace Srf { + stackTime: string; + calledNumber: string; + callingNumber: string; ++ callingName: string; + raw: string; + get(name: string): string; + has(name: string): boolean; +@@ -101,7 +102,7 @@ declare namespace Srf { local: { uri: string; sdp: string; }; remote: { uri: string; sdp: string; }; req: SrfRequest; @@ -11,7 +19,7 @@ index f71a82f458c1432202be8d4585fc70ba94bee4a4..2ad273d1efcaaa54b0a1326ff1c15b6c modify(sdp: string, opts?: { noAck: boolean }): Promise; modify(opts: { noAck: boolean }): Promise; modify(sdp: string, opts?: { noAck: boolean }, callback?: (err: any, msg: SrfResponse) => void): void; -@@ -119,12 +119,12 @@ declare namespace Srf { +@@ -119,12 +120,12 @@ declare namespace Srf { on(messageType: "modify", callback: (req: SrfRequest, res: SrfResponse) => void): void; once(messageType: string, callback: (msg: SrfResponse) => void): void; listeners(messageType: string): any[]; @@ -27,7 +35,7 @@ index f71a82f458c1432202be8d4585fc70ba94bee4a4..2ad273d1efcaaa54b0a1326ff1c15b6c headers?: SipMessageHeaders; } -@@ -135,6 +135,8 @@ declare namespace Srf { +@@ -135,6 +136,8 @@ declare namespace Srf { localSdp?: string; proxy?: string; auth?: { username: string; password: string; }; @@ -36,7 +44,7 @@ index f71a82f458c1432202be8d4585fc70ba94bee4a4..2ad273d1efcaaa54b0a1326ff1c15b6c } export interface CreateB2BUAOptions { -@@ -155,7 +157,7 @@ declare class Srf extends EventEmitter { +@@ -155,7 +158,7 @@ declare class Srf extends EventEmitter { constructor(); constructor(tags: string | string[]); connect(config?: Srf.SrfConfig): Promise; @@ -45,7 +53,7 @@ index f71a82f458c1432202be8d4585fc70ba94bee4a4..2ad273d1efcaaa54b0a1326ff1c15b6c use(callback: (req: Srf.SrfRequest, res: Srf.SrfResponse, next: Function) => void): void; use(messageType: string, callback: (req: Srf.SrfRequest, res: Srf.SrfResponse, next: Function) => void): void; invite(callback: (req: Srf.SrfRequest, res: Srf.SrfResponse) => void): void; -@@ -164,12 +166,12 @@ declare class Srf extends EventEmitter { +@@ -164,12 +167,12 @@ declare class Srf extends EventEmitter { proxyRequest(req: Srf.SrfRequest, destination: string | string[], opts?: Srf.ProxyRequestOptions, callback?: (err: any, results: string) => void): void; createUAS(req: Srf.SrfRequest, res: Srf.SrfResponse, opts: Srf.CreateUASOptions): Promise; createUAS(req: Srf.SrfRequest, res: Srf.SrfResponse, opts: Srf.CreateUASOptions, callback?: (err: any, dialog: Srf.Dialog) => void): this; diff --git a/.yarn/patches/eslint-plugin-react-npm-7.37.5-d03f6b6543.patch b/.yarn/patches/eslint-plugin-react-npm-7.37.5-d03f6b6543.patch new file mode 100644 index 0000000000000..3155008c8e9c5 --- /dev/null +++ b/.yarn/patches/eslint-plugin-react-npm-7.37.5-d03f6b6543.patch @@ -0,0 +1,39 @@ +diff --git a/lib/rules/forward-ref-uses-ref.js b/lib/rules/forward-ref-uses-ref.js +index 3a0b7de4c951e7ea92a9de7bac924ba95d643342..3fb493ec2be2589a6c0d3da8e060520d71cbcb6c 100644 +--- a/lib/rules/forward-ref-uses-ref.js ++++ b/lib/rules/forward-ref-uses-ref.js +@@ -57,7 +57,7 @@ module.exports = { + }, + + create(context) { +- const sourceCode = context.getSourceCode(); ++ const sourceCode = context.getSourceCode ? context.getSourceCode() : context.sourceCode; + + return { + 'FunctionExpression, ArrowFunctionExpression'(node) { +diff --git a/lib/rules/jsx-filename-extension.js b/lib/rules/jsx-filename-extension.js +index 4a2cfeede66b68255ca48bc38c0eb2f1537a785a..437f6cdc81b3a788c0c25e741956ed1832f93f79 100644 +--- a/lib/rules/jsx-filename-extension.js ++++ b/lib/rules/jsx-filename-extension.js +@@ -61,7 +61,7 @@ module.exports = { + }, + + create(context) { +- const filename = context.getFilename(); ++ const filename = context.getFilename ? context.getFilename() : context.filename; + + let jsxNode; + +diff --git a/lib/util/version.js b/lib/util/version.js +index c9dc683b7d149c5a3a941bdcbd32f657facdfbf6..3ad3df59001608bf75bd3da89557680fc944d84c 100644 +--- a/lib/util/version.js ++++ b/lib/util/version.js +@@ -28,7 +28,7 @@ function resetDetectedVersion() { + + function resolveBasedir(contextOrFilename) { + if (contextOrFilename) { +- const filename = typeof contextOrFilename === 'string' ? contextOrFilename : contextOrFilename.getFilename(); ++ const filename = typeof contextOrFilename === 'string' ? contextOrFilename : (contextOrFilename.getFilename ? contextOrFilename.getFilename() : contextOrFilename.filename); + const dirname = path.dirname(filename); + try { + if (fs.statSync(filename).isFile()) { diff --git a/.yarn/patches/file-type-npm-16.5.4-d653e66a40.patch b/.yarn/patches/file-type-npm-16.5.4-d653e66a40.patch new file mode 100644 index 0000000000000..a712347e8eea7 --- /dev/null +++ b/.yarn/patches/file-type-npm-16.5.4-d653e66a40.patch @@ -0,0 +1,23 @@ +diff --git a/core.js b/core.js +index d653e66a40..0f5d672dc4 100644 +--- a/core.js ++++ b/core.js +@@ -1074,6 +1074,7 @@ async function _fromTokenizer(tokenizer) { + await tokenizer.ignore(30); + // Search for header should be in first 1KB of file. + while (tokenizer.position + 24 < tokenizer.fileInfo.size) { ++ const previousPosition = tokenizer.position; + const header = await readHeader(); + let payload = header.size - 24; + if (_check(header.id, [0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65])) { +@@ -1101,6 +1102,10 @@ async function _fromTokenizer(tokenizer) { + } + + await tokenizer.ignore(payload); ++ ++ if (tokenizer.position <= previousPosition) { ++ break; ++ } + } + + // Default to ASF generic extension diff --git a/.yarn/patches/react-aria-npm-3.37.0-83959bd2fa.patch b/.yarn/patches/react-aria-npm-3.37.0-83959bd2fa.patch index 4cceb4611139a..bf3c5276f8ed2 100644 --- a/.yarn/patches/react-aria-npm-3.37.0-83959bd2fa.patch +++ b/.yarn/patches/react-aria-npm-3.37.0-83959bd2fa.patch @@ -1,5 +1,5 @@ diff --git a/dist/import.mjs b/dist/import.mjs -index a13ba8b37e27230ec01d4c31140127912208666c..97d6aa506f273263c2a99a9bc80731ac2c38eea6 100644 +index a13ba8b37e27230ec01d4c31140127912208666c..4208f8b7e8c3ff25b4eff8cce9017e8cfb8d3b4e 100644 --- a/dist/import.mjs +++ b/dist/import.mjs @@ -1,50 +1,14 @@ @@ -44,7 +44,7 @@ index a13ba8b37e27230ec01d4c31140127912208666c..97d6aa506f273263c2a99a9bc80731ac -export {useSearchField} from '@react-aria/searchfield'; -export {HiddenSelect, useHiddenSelect, useSelect} from '@react-aria/select'; -export {ListKeyboardDelegate} from '@react-aria/selection'; -+export {useMenu, useMenuItem, useMenuSection, useMenuTrigger} from '@react-aria/menu'; ++export {useMenu, useMenuItem, useMenuSection, useMenuTrigger, useSubmenuTrigger} from '@react-aria/menu'; +export {DismissButton, Overlay, useOverlayTrigger, usePopover} from '@react-aria/overlays'; +export {HiddenSelect, useSelect} from '@react-aria/select'; export {useSeparator} from '@react-aria/separator'; @@ -62,7 +62,7 @@ index a13ba8b37e27230ec01d4c31140127912208666c..97d6aa506f273263c2a99a9bc80731ac - +export {useDialog} from '@react-aria/dialog'; diff --git a/dist/main.js b/dist/main.js -index b6a2ce3a780a09aeb416d7330ffcf6fd0b36b218..98e720a4660bdcd0384509786d04681a8ba98886 100644 +index b6a2ce3a780a09aeb416d7330ffcf6fd0b36b218..c5e9d3e7ba3c8f1a4db5a8e2f7b9c4d6a1e3f2b5 100644 --- a/dist/main.js +++ b/dist/main.js @@ -1,172 +1,15 @@ @@ -243,7 +243,7 @@ index b6a2ce3a780a09aeb416d7330ffcf6fd0b36b218..98e720a4660bdcd0384509786d04681a +var _i18n = require("@react-aria/i18n"); exports.useNumberFormatter = _i18n.useNumberFormatter; +var _interactions = require("@react-aria/interactions"); exports.useFocus = _interactions.useFocus; exports.useFocusVisible = _interactions.useFocusVisible; exports.useFocusWithin = _interactions.useFocusWithin; exports.useHover = _interactions.useHover; exports.useInteractOutside = _interactions.useInteractOutside; exports.useKeyboard = _interactions.useKeyboard; exports.useMove = _interactions.useMove; exports.usePress = _interactions.usePress; exports.useLongPress = _interactions.useLongPress; +var _listbox = require("@react-aria/listbox"); exports.useListBox = _listbox.useListBox; exports.useListBoxSection = _listbox.useListBoxSection; exports.useOption = _listbox.useOption; -+var _menu = require("@react-aria/menu"); exports.useMenu = _menu.useMenu; exports.useMenuItem = _menu.useMenuItem; exports.useMenuSection = _menu.useMenuSection; exports.useMenuTrigger = _menu.useMenuTrigger; ++var _menu = require("@react-aria/menu"); exports.useMenu = _menu.useMenu; exports.useMenuItem = _menu.useMenuItem; exports.useMenuSection = _menu.useMenuSection; exports.useMenuTrigger = _menu.useMenuTrigger; exports.useSubmenuTrigger = _menu.useSubmenuTrigger; +var _overlays = require("@react-aria/overlays"); exports.DismissButton = _overlays.DismissButton; exports.Overlay = _overlays.Overlay; exports.useOverlayTrigger = _overlays.useOverlayTrigger; exports.usePopover = _overlays.usePopover; +var _select = require("@react-aria/select"); exports.HiddenSelect = _select.HiddenSelect; exports.useSelect = _select.useSelect; +var _separator = require("@react-aria/separator"); exports.useSeparator = _separator.useSeparator; @@ -252,7 +252,7 @@ index b6a2ce3a780a09aeb416d7330ffcf6fd0b36b218..98e720a4660bdcd0384509786d04681a +var _visuallyHidden = require("@react-aria/visually-hidden"); exports.VisuallyHidden = _visuallyHidden.VisuallyHidden; exports.useVisuallyHidden = _visuallyHidden.useVisuallyHidden; +var _dialog = require("@react-aria/dialog"); exports.useDialog = _dialog.useDialog; diff --git a/dist/module.js b/dist/module.js -index a13ba8b37e27230ec01d4c31140127912208666c..97d6aa506f273263c2a99a9bc80731ac2c38eea6 100644 +index a13ba8b37e27230ec01d4c31140127912208666c..4208f8b7e8c3ff25b4eff8cce9017e8cfb8d3b4e 100644 --- a/dist/module.js +++ b/dist/module.js @@ -1,50 +1,14 @@ @@ -297,7 +297,7 @@ index a13ba8b37e27230ec01d4c31140127912208666c..97d6aa506f273263c2a99a9bc80731ac -export {useSearchField} from '@react-aria/searchfield'; -export {HiddenSelect, useHiddenSelect, useSelect} from '@react-aria/select'; -export {ListKeyboardDelegate} from '@react-aria/selection'; -+export {useMenu, useMenuItem, useMenuSection, useMenuTrigger} from '@react-aria/menu'; ++export {useMenu, useMenuItem, useMenuSection, useMenuTrigger, useSubmenuTrigger} from '@react-aria/menu'; +export {DismissButton, Overlay, useOverlayTrigger, usePopover} from '@react-aria/overlays'; +export {HiddenSelect, useSelect} from '@react-aria/select'; export {useSeparator} from '@react-aria/separator'; diff --git a/.yarn/patches/react-stately-npm-3.17.0-264cc7a43c.patch b/.yarn/patches/react-stately-npm-3.17.0-264cc7a43c.patch deleted file mode 100644 index 53c82149f04aa..0000000000000 --- a/.yarn/patches/react-stately-npm-3.17.0-264cc7a43c.patch +++ /dev/null @@ -1,149 +0,0 @@ -diff --git a/dist/main.js b/dist/main.js -index 8e3aafa76ccbbc4491666e9593220378c3e79c18..2ed9b74c20b63fb1f9e8552d61343b26540f78d9 100644 ---- a/dist/main.js -+++ b/dist/main.js -@@ -1,98 +1,8 @@ - "use strict"; -- - exports.__esModule = true; --exports.useTreeState = exports.useTooltipTriggerState = exports.useToggleState = exports.useTabListState = exports.Cell = exports.Row = exports.Column = exports.TableBody = exports.TableHeader = exports.useTableState = exports.useMultipleSelectionState = exports.useSliderState = exports.useSelectState = exports.useSearchFieldState = exports.useRadioGroupState = exports.useOverlayTriggerState = exports.useNumberFieldState = exports.useMenuTriggerState = exports.useSingleSelectListState = exports.useListState = exports.useTreeData = exports.useListData = exports.useAsyncList = exports.useCollection = exports.Section = exports.Item = exports.useTimeFieldState = exports.useDateRangePickerState = exports.useDatePickerState = exports.useDateFieldState = exports.useComboBoxState = exports.useCheckboxGroupState = exports.useRangeCalendarState = exports.useCalendarState = void 0; -- --var _calendar = require("@react-stately/calendar"); -- --exports.useCalendarState = _calendar.useCalendarState; --exports.useRangeCalendarState = _calendar.useRangeCalendarState; -- --var _checkbox = require("@react-stately/checkbox"); -- --exports.useCheckboxGroupState = _checkbox.useCheckboxGroupState; -- --var _combobox = require("@react-stately/combobox"); -- --exports.useComboBoxState = _combobox.useComboBoxState; -- --var _datepicker = require("@react-stately/datepicker"); -- --exports.useDateFieldState = _datepicker.useDateFieldState; --exports.useDatePickerState = _datepicker.useDatePickerState; --exports.useDateRangePickerState = _datepicker.useDateRangePickerState; --exports.useTimeFieldState = _datepicker.useTimeFieldState; -- --var _collections = require("@react-stately/collections"); -- --exports.Item = _collections.Item; --exports.Section = _collections.Section; --exports.useCollection = _collections.useCollection; -- --var _data = require("@react-stately/data"); -- --exports.useAsyncList = _data.useAsyncList; --exports.useListData = _data.useListData; --exports.useTreeData = _data.useTreeData; -- --var _list = require("@react-stately/list"); -- --exports.useListState = _list.useListState; --exports.useSingleSelectListState = _list.useSingleSelectListState; -- --var _menu = require("@react-stately/menu"); -- --exports.useMenuTriggerState = _menu.useMenuTriggerState; -- --var _numberfield = require("@react-stately/numberfield"); -- --exports.useNumberFieldState = _numberfield.useNumberFieldState; -- --var _overlays = require("@react-stately/overlays"); -- --exports.useOverlayTriggerState = _overlays.useOverlayTriggerState; -- --var _radio = require("@react-stately/radio"); -- --exports.useRadioGroupState = _radio.useRadioGroupState; -- --var _searchfield = require("@react-stately/searchfield"); -- --exports.useSearchFieldState = _searchfield.useSearchFieldState; -- --var _select = require("@react-stately/select"); -- --exports.useSelectState = _select.useSelectState; -- --var _slider = require("@react-stately/slider"); -- --exports.useSliderState = _slider.useSliderState; -- --var _selection = require("@react-stately/selection"); -- --exports.useMultipleSelectionState = _selection.useMultipleSelectionState; -- --var _table = require("@react-stately/table"); -- --exports.useTableState = _table.useTableState; --exports.TableHeader = _table.TableHeader; --exports.TableBody = _table.TableBody; --exports.Column = _table.Column; --exports.Row = _table.Row; --exports.Cell = _table.Cell; -- --var _tabs = require("@react-stately/tabs"); -- --exports.useTabListState = _tabs.useTabListState; -- --var _toggle = require("@react-stately/toggle"); -- --exports.useToggleState = _toggle.useToggleState; -- --var _tooltip = require("@react-stately/tooltip"); -- --exports.useTooltipTriggerState = _tooltip.useTooltipTriggerState; -- --var _tree = require("@react-stately/tree"); -- --exports.useTreeState = _tree.useTreeState; -+var _collections = require("@react-stately/collections"); exports.Item = _collections.Item; exports.Section = _collections.Section; -+var _menu = require("@react-stately/menu"); exports.useMenuTriggerState = _menu.useMenuTriggerState; -+var _overlays = require("@react-stately/overlays"); exports.useOverlayTriggerState = _overlays.useOverlayTriggerState; -+var _select = require("@react-stately/select"); exports.useSelectState = _select.useSelectState; -+var _slider = require("@react-stately/slider"); exports.useSliderState = _slider.useSliderState; -+var _tree = require("@react-stately/tree"); exports.useTreeState = _tree.useTreeState; -diff --git a/dist/module.js b/dist/module.js -index 37bdb24af4a8310cc702b2d9c1effe6aac261424..c098533fc2bbeb6b203d4350c2dcdd6e6663afd3 100644 ---- a/dist/module.js -+++ b/dist/module.js -@@ -1,33 +1,7 @@ --/* -- * Copyright 2020 Adobe. All rights reserved. -- * This file is licensed to you under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. You may obtain a copy -- * of the License at http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software distributed under -- * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS -- * OF ANY KIND, either express or implied. See the License for the specific language -- * governing permissions and limitations under the License. -- */ -- -- --export {useCalendarState, useRangeCalendarState} from '@react-stately/calendar'; --export {useCheckboxGroupState} from '@react-stately/checkbox'; --export {useComboBoxState} from '@react-stately/combobox'; --export {useDateFieldState, useDatePickerState, useDateRangePickerState, useTimeFieldState} from '@react-stately/datepicker'; --export {Item, Section, useCollection} from '@react-stately/collections'; --export {useAsyncList, useListData, useTreeData} from '@react-stately/data'; --export {useListState, useSingleSelectListState} from '@react-stately/list'; -+// Slim barrel: only exports actually used -+export {Item, Section} from '@react-stately/collections'; - export {useMenuTriggerState} from '@react-stately/menu'; --export {useNumberFieldState} from '@react-stately/numberfield'; - export {useOverlayTriggerState} from '@react-stately/overlays'; --export {useRadioGroupState} from '@react-stately/radio'; --export {useSearchFieldState} from '@react-stately/searchfield'; - export {useSelectState} from '@react-stately/select'; - export {useSliderState} from '@react-stately/slider'; --export {useMultipleSelectionState} from '@react-stately/selection'; --export {useTableState, TableHeader, TableBody, Column, Row, Cell} from '@react-stately/table'; --export {useTabListState} from '@react-stately/tabs'; --export {useToggleState} from '@react-stately/toggle'; --export {useTooltipTriggerState} from '@react-stately/tooltip'; - export {useTreeState} from '@react-stately/tree'; diff --git a/.yarn/patches/react-stately-npm-3.35.0-f77b012b54.patch b/.yarn/patches/react-stately-npm-3.35.0-f77b012b54.patch new file mode 100644 index 0000000000000..5694c887ce9ef --- /dev/null +++ b/.yarn/patches/react-stately-npm-3.35.0-f77b012b54.patch @@ -0,0 +1,133 @@ +diff --git a/dist/main.js b/dist/main.js +index fab7548..6d19514 100644 +--- a/dist/main.js ++++ b/dist/main.js +@@ -1,78 +1,8 @@ + "use strict"; +- + exports.__esModule = true; +-exports.useTreeState = exports.useTreeData = exports.useTooltipTriggerState = exports.useToggleState = exports.useToggleGroupState = exports.useTimeFieldState = exports.useTableState = exports.useTableColumnResizeState = exports.useTabListState = exports.useSubmenuTriggerState = exports.useSliderState = exports.useSingleSelectListState = exports.useSelectState = exports.useSearchFieldState = exports.useRangeCalendarState = exports.useRadioGroupState = exports.useOverlayTriggerState = exports.useNumberFieldState = exports.useMultipleSelectionState = exports.useMenuTriggerState = exports.useListState = exports.useListData = exports.useDroppableCollectionState = exports.useDraggableCollectionState = exports.useDisclosureState = exports.useDisclosureGroupState = exports.useDateRangePickerState = exports.useDatePickerState = exports.useDateFieldState = exports.useComboBoxState = exports.useColorWheelState = exports.useColorSliderState = exports.useColorPickerState = exports.useColorFieldState = exports.useColorChannelFieldState = exports.useColorAreaState = exports.useCollection = exports.useCheckboxGroupState = exports.useCalendarState = exports.useAsyncList = exports.parseColor = exports.getColorChannels = exports.TableHeader = exports.TableBody = exports.Section = exports.Row = exports.Item = exports.FormValidationContext = exports.Column = exports.Cell = void 0; +-var _calendar = require("@react-stately/calendar"); +-exports.useCalendarState = _calendar.useCalendarState; +-exports.useRangeCalendarState = _calendar.useRangeCalendarState; +-var _checkbox = require("@react-stately/checkbox"); +-exports.useCheckboxGroupState = _checkbox.useCheckboxGroupState; +-var _color = require("@react-stately/color"); +-exports.getColorChannels = _color.getColorChannels; +-exports.parseColor = _color.parseColor; +-exports.useColorAreaState = _color.useColorAreaState; +-exports.useColorChannelFieldState = _color.useColorChannelFieldState; +-exports.useColorFieldState = _color.useColorFieldState; +-exports.useColorPickerState = _color.useColorPickerState; +-exports.useColorSliderState = _color.useColorSliderState; +-exports.useColorWheelState = _color.useColorWheelState; +-var _combobox = require("@react-stately/combobox"); +-exports.useComboBoxState = _combobox.useComboBoxState; +-var _datepicker = require("@react-stately/datepicker"); +-exports.useDateFieldState = _datepicker.useDateFieldState; +-exports.useDatePickerState = _datepicker.useDatePickerState; +-exports.useDateRangePickerState = _datepicker.useDateRangePickerState; +-exports.useTimeFieldState = _datepicker.useTimeFieldState; +-var _disclosure = require("@react-stately/disclosure"); +-exports.useDisclosureState = _disclosure.useDisclosureState; +-exports.useDisclosureGroupState = _disclosure.useDisclosureGroupState; +-var _dnd = require("@react-stately/dnd"); +-exports.useDraggableCollectionState = _dnd.useDraggableCollectionState; +-exports.useDroppableCollectionState = _dnd.useDroppableCollectionState; +-var _collections = require("@react-stately/collections"); +-exports.Item = _collections.Item; +-exports.Section = _collections.Section; +-exports.useCollection = _collections.useCollection; +-var _data = require("@react-stately/data"); +-exports.useAsyncList = _data.useAsyncList; +-exports.useListData = _data.useListData; +-exports.useTreeData = _data.useTreeData; +-var _list = require("@react-stately/list"); +-exports.useListState = _list.useListState; +-exports.useSingleSelectListState = _list.useSingleSelectListState; +-var _menu = require("@react-stately/menu"); +-exports.useMenuTriggerState = _menu.useMenuTriggerState; +-exports.useSubmenuTriggerState = _menu.useSubmenuTriggerState; +-var _numberfield = require("@react-stately/numberfield"); +-exports.useNumberFieldState = _numberfield.useNumberFieldState; +-var _overlays = require("@react-stately/overlays"); +-exports.useOverlayTriggerState = _overlays.useOverlayTriggerState; +-var _radio = require("@react-stately/radio"); +-exports.useRadioGroupState = _radio.useRadioGroupState; +-var _searchfield = require("@react-stately/searchfield"); +-exports.useSearchFieldState = _searchfield.useSearchFieldState; +-var _select = require("@react-stately/select"); +-exports.useSelectState = _select.useSelectState; +-var _slider = require("@react-stately/slider"); +-exports.useSliderState = _slider.useSliderState; +-var _selection = require("@react-stately/selection"); +-exports.useMultipleSelectionState = _selection.useMultipleSelectionState; +-var _table = require("@react-stately/table"); +-exports.useTableState = _table.useTableState; +-exports.TableHeader = _table.TableHeader; +-exports.TableBody = _table.TableBody; +-exports.Column = _table.Column; +-exports.Row = _table.Row; +-exports.Cell = _table.Cell; +-exports.useTableColumnResizeState = _table.useTableColumnResizeState; +-var _tabs = require("@react-stately/tabs"); +-exports.useTabListState = _tabs.useTabListState; +-var _toggle = require("@react-stately/toggle"); +-exports.useToggleState = _toggle.useToggleState; +-exports.useToggleGroupState = _toggle.useToggleGroupState; +-var _tooltip = require("@react-stately/tooltip"); +-exports.useTooltipTriggerState = _tooltip.useTooltipTriggerState; +-var _tree = require("@react-stately/tree"); +-exports.useTreeState = _tree.useTreeState; +-var _form = require("@react-stately/form"); +-exports.FormValidationContext = _form.FormValidationContext; ++var _collections = require("@react-stately/collections"); exports.Item = _collections.Item; exports.Section = _collections.Section; ++var _menu = require("@react-stately/menu"); exports.useMenuTriggerState = _menu.useMenuTriggerState; exports.useSubmenuTriggerState = _menu.useSubmenuTriggerState; ++var _overlays = require("@react-stately/overlays"); exports.useOverlayTriggerState = _overlays.useOverlayTriggerState; ++var _select = require("@react-stately/select"); exports.useSelectState = _select.useSelectState; ++var _slider = require("@react-stately/slider"); exports.useSliderState = _slider.useSliderState; ++var _tree = require("@react-stately/tree"); exports.useTreeState = _tree.useTreeState; +diff --git a/dist/module.js b/dist/module.js +index fe89bbc..07bbd23 100644 +--- a/dist/module.js ++++ b/dist/module.js +@@ -1,37 +1,7 @@ +-/* +- * Copyright 2020 Adobe. All rights reserved. +- * This file is licensed to you under the Apache License, Version 2.0 (the "License"); +- * you may not use this file except in compliance with the License. You may obtain a copy +- * of the License at http://www.apache.org/licenses/LICENSE-2.0 +- * +- * Unless required by applicable law or agreed to in writing, software distributed under +- * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS +- * OF ANY KIND, either express or implied. See the License for the specific language +- * governing permissions and limitations under the License. +- */ +- +- +-export {useCalendarState, useRangeCalendarState} from '@react-stately/calendar'; +-export {useCheckboxGroupState} from '@react-stately/checkbox'; +-export {getColorChannels, parseColor, useColorAreaState, useColorChannelFieldState, useColorFieldState, useColorPickerState, useColorSliderState, useColorWheelState} from '@react-stately/color'; +-export {useComboBoxState} from '@react-stately/combobox'; +-export {useDateFieldState, useDatePickerState, useDateRangePickerState, useTimeFieldState} from '@react-stately/datepicker'; +-export {useDisclosureState, useDisclosureGroupState} from '@react-stately/disclosure'; +-export {useDraggableCollectionState, useDroppableCollectionState} from '@react-stately/dnd'; +-export {Item, Section, useCollection} from '@react-stately/collections'; +-export {useAsyncList, useListData, useTreeData} from '@react-stately/data'; +-export {useListState, useSingleSelectListState} from '@react-stately/list'; ++// Slim barrel: only exports actually used ++export {Item, Section} from '@react-stately/collections'; + export {useMenuTriggerState, useSubmenuTriggerState} from '@react-stately/menu'; +-export {useNumberFieldState} from '@react-stately/numberfield'; + export {useOverlayTriggerState} from '@react-stately/overlays'; +-export {useRadioGroupState} from '@react-stately/radio'; +-export {useSearchFieldState} from '@react-stately/searchfield'; + export {useSelectState} from '@react-stately/select'; + export {useSliderState} from '@react-stately/slider'; +-export {useMultipleSelectionState} from '@react-stately/selection'; +-export {useTableState, TableHeader, TableBody, Column, Row, Cell, useTableColumnResizeState} from '@react-stately/table'; +-export {useTabListState} from '@react-stately/tabs'; +-export {useToggleState, useToggleGroupState} from '@react-stately/toggle'; +-export {useTooltipTriggerState} from '@react-stately/tooltip'; + export {useTreeState} from '@react-stately/tree'; +-export {FormValidationContext} from '@react-stately/form'; diff --git a/.yarn/releases/yarn-4.12.0.cjs b/.yarn/releases/yarn-4.12.0.cjs deleted file mode 100755 index f979d768e2b3a..0000000000000 --- a/.yarn/releases/yarn-4.12.0.cjs +++ /dev/null @@ -1,942 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable */ -//prettier-ignore -(()=>{var xGe=Object.create;var mU=Object.defineProperty;var kGe=Object.getOwnPropertyDescriptor;var QGe=Object.getOwnPropertyNames;var TGe=Object.getPrototypeOf,RGe=Object.prototype.hasOwnProperty;var Ie=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Xe=(t,e)=>()=>(t&&(e=t(t=0)),e);var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Vt=(t,e)=>{for(var r in e)mU(t,r,{get:e[r],enumerable:!0})},FGe=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of QGe(e))!RGe.call(t,a)&&a!==r&&mU(t,a,{get:()=>e[a],enumerable:!(s=kGe(e,a))||s.enumerable});return t};var ut=(t,e,r)=>(r=t!=null?xGe(TGe(t)):{},FGe(e||!t||!t.__esModule?mU(r,"default",{value:t,enumerable:!0}):r,t));var fi={};Vt(fi,{SAFE_TIME:()=>WZ,S_IFDIR:()=>JP,S_IFLNK:()=>KP,S_IFMT:()=>Mf,S_IFREG:()=>N2});var Mf,JP,N2,KP,WZ,YZ=Xe(()=>{Mf=61440,JP=16384,N2=32768,KP=40960,WZ=456789e3});var or={};Vt(or,{EBADF:()=>Mo,EBUSY:()=>NGe,EEXIST:()=>HGe,EINVAL:()=>LGe,EISDIR:()=>_Ge,ENOENT:()=>MGe,ENOSYS:()=>OGe,ENOTDIR:()=>UGe,ENOTEMPTY:()=>GGe,EOPNOTSUPP:()=>qGe,EROFS:()=>jGe,ERR_DIR_CLOSED:()=>yU});function Cc(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function NGe(t){return Cc("EBUSY",t)}function OGe(t,e){return Cc("ENOSYS",`${t}, ${e}`)}function LGe(t){return Cc("EINVAL",`invalid argument, ${t}`)}function Mo(t){return Cc("EBADF",`bad file descriptor, ${t}`)}function MGe(t){return Cc("ENOENT",`no such file or directory, ${t}`)}function UGe(t){return Cc("ENOTDIR",`not a directory, ${t}`)}function _Ge(t){return Cc("EISDIR",`illegal operation on a directory, ${t}`)}function HGe(t){return Cc("EEXIST",`file already exists, ${t}`)}function jGe(t){return Cc("EROFS",`read-only filesystem, ${t}`)}function GGe(t){return Cc("ENOTEMPTY",`directory not empty, ${t}`)}function qGe(t){return Cc("EOPNOTSUPP",`operation not supported, ${t}`)}function yU(){return Cc("ERR_DIR_CLOSED","Directory handle was closed")}var zP=Xe(()=>{});var $a={};Vt($a,{BigIntStatsEntry:()=>iE,DEFAULT_MODE:()=>CU,DirEntry:()=>EU,StatEntry:()=>nE,areStatsEqual:()=>wU,clearStats:()=>XP,convertToBigIntStats:()=>YGe,makeDefaultStats:()=>VZ,makeEmptyStats:()=>WGe});function VZ(){return new nE}function WGe(){return XP(VZ())}function XP(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):IU.types.isDate(r)&&(t[e]=new Date(0))}return t}function YGe(t){let e=new iE;for(let r in t)if(Object.hasOwn(t,r)){let s=t[r];typeof s=="number"?e[r]=BigInt(s):IU.types.isDate(s)&&(e[r]=new Date(s))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function wU(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,s=e;return!(r.atimeNs!==s.atimeNs||r.mtimeNs!==s.mtimeNs||r.ctimeNs!==s.ctimeNs||r.birthtimeNs!==s.birthtimeNs)}var IU,CU,EU,nE,iE,BU=Xe(()=>{IU=ut(Ie("util")),CU=33188,EU=class{constructor(){this.name="";this.path="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},nE=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=CU;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},iE=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(CU);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function XGe(t){let e,r;if(e=t.match(KGe))t=e[1];else if(r=t.match(zGe))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function ZGe(t){t=t.replace(/\\/g,"/");let e,r;return(e=t.match(VGe))?t=`/${e[1]}`:(r=t.match(JGe))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t}function ZP(t,e){return t===fe?KZ(e):vU(e)}var O2,vt,Er,fe,J,JZ,VGe,JGe,KGe,zGe,vU,KZ,el=Xe(()=>{O2=ut(Ie("path")),vt={root:"/",dot:".",parent:".."},Er={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml",env:".env"},fe=Object.create(O2.default),J=Object.create(O2.default.posix);fe.cwd=()=>process.cwd();J.cwd=process.platform==="win32"?()=>vU(process.cwd()):process.cwd;process.platform==="win32"&&(J.resolve=(...t)=>t.length>0&&J.isAbsolute(t[0])?O2.default.posix.resolve(...t):O2.default.posix.resolve(J.cwd(),...t));JZ=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};fe.contains=(t,e)=>JZ(fe,t,e);J.contains=(t,e)=>JZ(J,t,e);VGe=/^([a-zA-Z]:.*)$/,JGe=/^\/\/(\.\/)?(.*)$/,KGe=/^\/([a-zA-Z]:.*)$/,zGe=/^\/unc\/(\.dot\/)?(.*)$/;vU=process.platform==="win32"?ZGe:t=>t,KZ=process.platform==="win32"?XGe:t=>t;fe.fromPortablePath=KZ;fe.toPortablePath=vU});async function $P(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.indexPath,{recursive:!0});let s=[];for(let a of r)for(let n of r)s.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(s),e.indexPath}async function zZ(t,e,r,s,a){let n=t.pathUtils.normalize(e),c=r.pathUtils.normalize(s),f=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:dd,mtime:dd}:await r.lstatPromise(c);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,E]}),await SU(f,p,t,n,r,c,{...a,didParentExist:!0});for(let C of f)await C();await Promise.all(p.map(C=>C()))}async function SU(t,e,r,s,a,n,c){let f=c.didParentExist?await XZ(r,s):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=c.stableTime?{atime:dd,mtime:dd}:p,C;switch(!0){case p.isDirectory():C=await e5e(t,e,r,s,f,a,n,p,c);break;case p.isFile():C=await n5e(t,e,r,s,f,a,n,p,c);break;case p.isSymbolicLink():C=await i5e(t,e,r,s,f,a,n,p,c);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(c.linkStrategy?.type!=="HardlinkFromIndex"||!p.isFile())&&((C||f?.mtime?.getTime()!==E.getTime()||f?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(s,h,E)),C=!0),(f===null||(f.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(s,p.mode&511)),C=!0)),C}async function XZ(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function e5e(t,e,r,s,a,n,c,f,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(s,{mode:f.mode})}catch(S){if(S.code!=="EEXIST")throw S}}),h=!0);let E=await n.readdirPromise(c),C=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let S of E.sort())await SU(t,e,r,r.pathUtils.join(s,S),n,n.pathUtils.join(c,S),C)&&(h=!0);else(await Promise.all(E.map(async P=>{await SU(t,e,r,r.pathUtils.join(s,P),n,n.pathUtils.join(c,P),C)}))).some(P=>P)&&(h=!0);return h}async function t5e(t,e,r,s,a,n,c,f,p,h){let E=await n.checksumFilePromise(c,{algorithm:"sha1"}),C=420,S=f.mode&511,P=`${E}${S!==C?S.toString(8):""}`,I=r.pathUtils.join(h.indexPath,E.slice(0,2),`${P}.dat`),R;(le=>(le[le.Lock=0]="Lock",le[le.Rename=1]="Rename"))(R||={});let N=1,U=await XZ(r,I);if(a){let ie=U&&a.dev===U.dev&&a.ino===U.ino,ue=U?.mtimeMs!==$Ge;if(ie&&ue&&h.autoRepair&&(N=0,U=null),!ie)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1}let W=!U&&N===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,ee=!1;return t.push(async()=>{if(!U&&(N===0&&await r.lockPromise(I,async()=>{let ie=await n.readFilePromise(c);await r.writeFilePromise(I,ie)}),N===1&&W)){let ie=await n.readFilePromise(c);await r.writeFilePromise(W,ie);try{await r.linkPromise(W,I)}catch(ue){if(ue.code==="EEXIST")ee=!0,await r.unlinkPromise(W);else throw ue}}a||await r.linkPromise(I,s)}),e.push(async()=>{U||(await r.lutimesPromise(I,dd,dd),S!==C&&await r.chmodPromise(I,S)),W&&!ee&&await r.unlinkPromise(W)}),!1}async function r5e(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(c);await r.writeFilePromise(s,h)}),!0}async function n5e(t,e,r,s,a,n,c,f,p){return p.linkStrategy?.type==="HardlinkFromIndex"?t5e(t,e,r,s,a,n,c,f,p,p.linkStrategy):r5e(t,e,r,s,a,n,c,f,p)}async function i5e(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(ZP(r.pathUtils,await n.readlinkPromise(c)),s)}),!0}var dd,$Ge,DU=Xe(()=>{el();dd=new Date(456789e3*1e3),$Ge=dd.getTime()});function ex(t,e,r,s){let a=()=>{let n=r.shift();if(typeof n>"u")return null;let c=t.pathUtils.join(e,n);return Object.assign(t.statSync(c),{name:n,path:void 0})};return new L2(e,a,s)}var L2,ZZ=Xe(()=>{zP();L2=class{constructor(e,r,s={}){this.path=e;this.nextDirent=r;this.opts=s;this.closed=!1}throwIfClosed(){if(this.closed)throw yU()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<"u"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function $Z(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var e$,tx,t$=Xe(()=>{e$=Ie("events");BU();tx=class t extends e$.EventEmitter{constructor(r,s,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=s,this.bigint=a,this.lastStats=this.stat()}static create(r,s,a){let n=new t(r,s,a);return n.start(),n}start(){$Z(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){$Z(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let r=this.bigint?new iE:new nE;return XP(r)}}makeInterval(r){let s=setInterval(()=>{let a=this.stat(),n=this.lastStats;wU(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?s:s.unref()}registerChangeListener(r,s){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(s))}unregisterChangeListener(r){this.removeListener("change",r);let s=this.changeListeners.get(r);typeof s<"u"&&clearInterval(s),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function sE(t,e,r,s){let a,n,c,f;switch(typeof r){case"function":a=!1,n=!0,c=5007,f=r;break;default:({bigint:a=!1,persistent:n=!0,interval:c=5007}=r),f=s;break}let p=rx.get(t);typeof p>"u"&&rx.set(t,p=new Map);let h=p.get(e);return typeof h>"u"&&(h=tx.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(f,{persistent:n,interval:c}),h}function md(t,e,r){let s=rx.get(t);if(typeof s>"u")return;let a=s.get(e);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),s.delete(e)))}function yd(t){let e=rx.get(t);if(!(typeof e>"u"))for(let r of e.keys())md(t,r)}var rx,bU=Xe(()=>{t$();rx=new WeakMap});function s5e(t){let e=t.match(/\r?\n/g);if(e===null)return n$.EOL;let r=e.filter(a=>a===`\r -`).length,s=e.length-r;return r>s?`\r -`:` -`}function Ed(t,e){return e.replace(/\r?\n/g,s5e(t))}var r$,n$,mp,Uf,Id=Xe(()=>{r$=Ie("crypto"),n$=Ie("os");DU();el();mp=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let s=[e];for(;s.length>0;){let a=s.shift();if((await this.lstatPromise(a)).isDirectory()){let c=await this.readdirPromise(a);if(r)for(let f of c.sort())s.push(this.pathUtils.join(a,f));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(e,{algorithm:r="sha512"}={}){let s=await this.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,r$.createHash)(r),f=0;for(;(f=await this.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await this.closePromise(s)}}async removePromise(e,{recursive:r=!0,maxRetries:s=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(c=>this.removePromise(this.pathUtils.resolve(e,c))))}for(let n=0;n<=s;n++)try{await this.rmdirPromise(e);break}catch(c){if(c.code!=="EBUSY"&&c.code!=="ENOTEMPTY")throw c;nsetTimeout(f,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let s;try{s=this.lstatSync(e)}catch(a){if(a.code==="ENOENT")return;throw a}if(s.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{await this.mkdirPromise(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&await this.chmodPromise(f,r),s!=null)await this.utimesPromise(f,s[0],s[1]);else{let p=await this.statPromise(this.pathUtils.dirname(f));await this.utimesPromise(f,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{this.mkdirSync(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&this.chmodSync(f,r),s!=null)this.utimesSync(f,s[0],s[1]);else{let p=this.statSync(this.pathUtils.dirname(f));this.utimesSync(f,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:s=this,overwrite:a=!0,stableSort:n=!1,stableTime:c=!1,linkStrategy:f=null}={}){return await zZ(this,e,s,r,{overwrite:a,stableSort:n,stableTime:c,linkStrategy:f})}copySync(e,r,{baseFs:s=this,overwrite:a=!0}={}){let n=s.lstatSync(r),c=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=s.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),s.pathUtils.join(r,h),{baseFs:s,overwrite:a})}else if(n.isFile()){if(!c||a){c&&this.removeSync(e);let p=s.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!c||a){c&&this.removeSync(e);let p=s.readlinkSync(r);this.symlinkSync(ZP(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let f=n.mode&511;this.chmodSync(e,f)}async changeFilePromise(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,s):this.changeFileTextPromise(e,r,s)}async changeFileBufferPromise(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:s})}async changeFileTextPromise(e,r,{automaticNewlines:s,mode:a}={}){let n="";try{n=await this.readFilePromise(e,"utf8")}catch{}let c=s?Ed(n,r):r;n!==c&&await this.writeFilePromise(e,c,{mode:a})}changeFileSync(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,s):this.changeFileTextSync(e,r,s)}changeFileBufferSync(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:s})}changeFileTextSync(e,r,{automaticNewlines:s=!1,mode:a}={}){let n="";try{n=this.readFileSync(e,"utf8")}catch{}let c=s?Ed(n,r):r;n!==c&&this.writeFileSync(e,c,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(s){if(s.code==="EXDEV")await this.copyPromise(r,e),await this.removePromise(e);else throw s}}moveSync(e,r){try{this.renameSync(e,r)}catch(s){if(s.code==="EXDEV")this.copySync(r,e),this.removeSync(e);else throw s}}async lockPromise(e,r){let s=`${e}.flock`,a=1e3/60,n=Date.now(),c=null,f=async()=>{let p;try{[p]=await this.readJsonPromise(s)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;c===null;)try{c=await this.openPromise(s,"wx")}catch(p){if(p.code==="EEXIST"){if(!await f())try{await this.unlinkPromise(s);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${s})`)}else throw p}await this.writePromise(c,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(c),await this.unlinkPromise(s)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${e})`,s}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${e})`,s}}async writeJsonPromise(e,r,{compact:s=!1}={}){let a=s?0:2;return await this.writeFilePromise(e,`${JSON.stringify(r,null,a)} -`)}writeJsonSync(e,r,{compact:s=!1}={}){let a=s?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)} -`)}async preserveTimePromise(e,r){let s=await this.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await this.lutimesPromise(e,s.atime,s.mtime)}async preserveTimeSync(e,r){let s=this.lstatSync(e),a=r();typeof a<"u"&&(e=a),this.lutimesSync(e,s.atime,s.mtime)}},Uf=class extends mp{constructor(){super(J)}}});var _s,yp=Xe(()=>{Id();_s=class extends mp{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,s){return this.baseFs.openPromise(this.mapToBase(e),r,s)}openSync(e,r,s){return this.baseFs.openSync(this.mapToBase(e),r,s)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,s,a,n){return await this.baseFs.readPromise(e,r,s,a,n)}readSync(e,r,s,a,n){return this.baseFs.readSync(e,r,s,a,n)}async writePromise(e,r,s,a,n){return typeof r=="string"?await this.baseFs.writePromise(e,r,s):await this.baseFs.writePromise(e,r,s,a,n)}writeSync(e,r,s,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r,s):this.baseFs.writeSync(e,r,s,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,s){return this.baseFs.fchownPromise(e,r,s)}fchownSync(e,r,s){return this.baseFs.fchownSync(e,r,s)}async chownPromise(e,r,s){return this.baseFs.chownPromise(this.mapToBase(e),r,s)}chownSync(e,r,s){return this.baseFs.chownSync(this.mapToBase(e),r,s)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,s=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),s)}copyFileSync(e,r,s=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),s)}async appendFilePromise(e,r,s){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,s)}appendFileSync(e,r,s){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,s)}async writeFilePromise(e,r,s){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,s)}writeFileSync(e,r,s){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,s)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,s){return this.baseFs.utimesPromise(this.mapToBase(e),r,s)}utimesSync(e,r,s){return this.baseFs.utimesSync(this.mapToBase(e),r,s)}async lutimesPromise(e,r,s){return this.baseFs.lutimesPromise(this.mapToBase(e),r,s)}lutimesSync(e,r,s){return this.baseFs.lutimesSync(this.mapToBase(e),r,s)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async rmPromise(e,r){return this.baseFs.rmPromise(this.mapToBase(e),r)}rmSync(e,r){return this.baseFs.rmSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(c,a,s)}symlinkSync(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(c,a,s)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,s){return this.baseFs.watch(this.mapToBase(e),r,s)}watchFile(e,r,s){return this.baseFs.watchFile(this.mapToBase(e),r,s)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}}});var _f,i$=Xe(()=>{yp();_f=class extends _s{constructor(e,{baseFs:r,pathUtils:s}){super(s),this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}}});function s$(t){let e=t;return typeof t.path=="string"&&(e.path=fe.toPortablePath(t.path)),e}var o$,Yn,Cd=Xe(()=>{o$=ut(Ie("fs"));Id();el();Yn=class extends Uf{constructor(e=o$.default){super(),this.realFs=e}getExtractHint(){return!1}getRealPath(){return vt.root}resolve(e){return J.resolve(e)}async openPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.open(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}openSync(e,r,s){return this.realFs.openSync(fe.fromPortablePath(e),r,s)}async opendirPromise(e,r){return await new Promise((s,a)=>{typeof r<"u"?this.realFs.opendir(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.opendir(fe.fromPortablePath(e),this.makeCallback(s,a))}).then(s=>{let a=s;return Object.defineProperty(a,"path",{value:e,configurable:!0,writable:!0}),a})}opendirSync(e,r){let a=typeof r<"u"?this.realFs.opendirSync(fe.fromPortablePath(e),r):this.realFs.opendirSync(fe.fromPortablePath(e));return Object.defineProperty(a,"path",{value:e,configurable:!0,writable:!0}),a}async readPromise(e,r,s=0,a=0,n=-1){return await new Promise((c,f)=>{this.realFs.read(e,r,s,a,n,(p,h)=>{p?f(p):c(h)})})}readSync(e,r,s,a,n){return this.realFs.readSync(e,r,s,a,n)}async writePromise(e,r,s,a,n){return await new Promise((c,f)=>typeof r=="string"?this.realFs.write(e,r,s,this.makeCallback(c,f)):this.realFs.write(e,r,s,a,n,this.makeCallback(c,f)))}writeSync(e,r,s,a,n){return typeof r=="string"?this.realFs.writeSync(e,r,s):this.realFs.writeSync(e,r,s,a,n)}async closePromise(e){await new Promise((r,s)=>{this.realFs.close(e,this.makeCallback(r,s))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let s=e!==null?fe.fromPortablePath(e):e;return this.realFs.createReadStream(s,r)}createWriteStream(e,r){let s=e!==null?fe.fromPortablePath(e):e;return this.realFs.createWriteStream(s,r)}async realpathPromise(e){return await new Promise((r,s)=>{this.realFs.realpath(fe.fromPortablePath(e),{},this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}realpathSync(e){return fe.toPortablePath(this.realFs.realpathSync(fe.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(fe.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(fe.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((s,a)=>{this.realFs.access(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}existsSync(e){return this.realFs.existsSync(fe.fromPortablePath(e))}async statPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.stat(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.stat(fe.fromPortablePath(e),this.makeCallback(s,a))})}statSync(e,r){return r?this.realFs.statSync(fe.fromPortablePath(e),r):this.realFs.statSync(fe.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.fstat(e,r,this.makeCallback(s,a)):this.realFs.fstat(e,this.makeCallback(s,a))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.lstat(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.lstat(fe.fromPortablePath(e),this.makeCallback(s,a))})}lstatSync(e,r){return r?this.realFs.lstatSync(fe.fromPortablePath(e),r):this.realFs.lstatSync(fe.fromPortablePath(e))}async fchmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.fchmod(e,r,this.makeCallback(s,a))})}fchmodSync(e,r){return this.realFs.fchmodSync(e,r)}async chmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.chmod(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}chmodSync(e,r){return this.realFs.chmodSync(fe.fromPortablePath(e),r)}async fchownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.fchown(e,r,s,this.makeCallback(a,n))})}fchownSync(e,r,s){return this.realFs.fchownSync(e,r,s)}async chownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.chown(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}chownSync(e,r,s){return this.realFs.chownSync(fe.fromPortablePath(e),r,s)}async renamePromise(e,r){return await new Promise((s,a)=>{this.realFs.rename(fe.fromPortablePath(e),fe.fromPortablePath(r),this.makeCallback(s,a))})}renameSync(e,r){return this.realFs.renameSync(fe.fromPortablePath(e),fe.fromPortablePath(r))}async copyFilePromise(e,r,s=0){return await new Promise((a,n)=>{this.realFs.copyFile(fe.fromPortablePath(e),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}copyFileSync(e,r,s=0){return this.realFs.copyFileSync(fe.fromPortablePath(e),fe.fromPortablePath(r),s)}async appendFilePromise(e,r,s){return await new Promise((a,n)=>{let c=typeof e=="string"?fe.fromPortablePath(e):e;s?this.realFs.appendFile(c,r,s,this.makeCallback(a,n)):this.realFs.appendFile(c,r,this.makeCallback(a,n))})}appendFileSync(e,r,s){let a=typeof e=="string"?fe.fromPortablePath(e):e;s?this.realFs.appendFileSync(a,r,s):this.realFs.appendFileSync(a,r)}async writeFilePromise(e,r,s){return await new Promise((a,n)=>{let c=typeof e=="string"?fe.fromPortablePath(e):e;s?this.realFs.writeFile(c,r,s,this.makeCallback(a,n)):this.realFs.writeFile(c,r,this.makeCallback(a,n))})}writeFileSync(e,r,s){let a=typeof e=="string"?fe.fromPortablePath(e):e;s?this.realFs.writeFileSync(a,r,s):this.realFs.writeFileSync(a,r)}async unlinkPromise(e){return await new Promise((r,s)=>{this.realFs.unlink(fe.fromPortablePath(e),this.makeCallback(r,s))})}unlinkSync(e){return this.realFs.unlinkSync(fe.fromPortablePath(e))}async utimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.utimes(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}utimesSync(e,r,s){this.realFs.utimesSync(fe.fromPortablePath(e),r,s)}async lutimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.lutimes(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}lutimesSync(e,r,s){this.realFs.lutimesSync(fe.fromPortablePath(e),r,s)}async mkdirPromise(e,r){return await new Promise((s,a)=>{this.realFs.mkdir(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}mkdirSync(e,r){return this.realFs.mkdirSync(fe.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.rmdir(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.rmdir(fe.fromPortablePath(e),this.makeCallback(s,a))})}rmdirSync(e,r){return this.realFs.rmdirSync(fe.fromPortablePath(e),r)}async rmPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.rm(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.rm(fe.fromPortablePath(e),this.makeCallback(s,a))})}rmSync(e,r){return this.realFs.rmSync(fe.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((s,a)=>{this.realFs.link(fe.fromPortablePath(e),fe.fromPortablePath(r),this.makeCallback(s,a))})}linkSync(e,r){return this.realFs.linkSync(fe.fromPortablePath(e),fe.fromPortablePath(r))}async symlinkPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.symlink(fe.fromPortablePath(e.replace(/\/+$/,"")),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}symlinkSync(e,r,s){return this.realFs.symlinkSync(fe.fromPortablePath(e.replace(/\/+$/,"")),fe.fromPortablePath(r),s)}async readFilePromise(e,r){return await new Promise((s,a)=>{let n=typeof e=="string"?fe.fromPortablePath(e):e;this.realFs.readFile(n,r,this.makeCallback(s,a))})}readFileSync(e,r){let s=typeof e=="string"?fe.fromPortablePath(e):e;return this.realFs.readFileSync(s,r)}async readdirPromise(e,r){return await new Promise((s,a)=>{r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdir(fe.fromPortablePath(e),r,this.makeCallback(n=>s(n.map(s$)),a)):this.realFs.readdir(fe.fromPortablePath(e),r,this.makeCallback(n=>s(n.map(fe.toPortablePath)),a)):this.realFs.readdir(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.readdir(fe.fromPortablePath(e),this.makeCallback(s,a))})}readdirSync(e,r){return r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdirSync(fe.fromPortablePath(e),r).map(s$):this.realFs.readdirSync(fe.fromPortablePath(e),r).map(fe.toPortablePath):this.realFs.readdirSync(fe.fromPortablePath(e),r):this.realFs.readdirSync(fe.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,s)=>{this.realFs.readlink(fe.fromPortablePath(e),this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}readlinkSync(e){return fe.toPortablePath(this.realFs.readlinkSync(fe.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((s,a)=>{this.realFs.truncate(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}truncateSync(e,r){return this.realFs.truncateSync(fe.fromPortablePath(e),r)}async ftruncatePromise(e,r){return await new Promise((s,a)=>{this.realFs.ftruncate(e,r,this.makeCallback(s,a))})}ftruncateSync(e,r){return this.realFs.ftruncateSync(e,r)}watch(e,r,s){return this.realFs.watch(fe.fromPortablePath(e),r,s)}watchFile(e,r,s){return this.realFs.watchFile(fe.fromPortablePath(e),r,s)}unwatchFile(e,r){return this.realFs.unwatchFile(fe.fromPortablePath(e),r)}makeCallback(e,r){return(s,a)=>{s?r(s):e(a)}}}});var Sn,a$=Xe(()=>{Cd();yp();el();Sn=class extends _s{constructor(e,{baseFs:r=new Yn}={}){super(J),this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?J.normalize(e):this.baseFs.resolve(J.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}}});var l$,Hf,c$=Xe(()=>{Cd();yp();el();l$=vt.root,Hf=class extends _s{constructor(e,{baseFs:r=new Yn}={}){super(J),this.target=this.pathUtils.resolve(vt.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(vt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(l$,e));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(l$,this.pathUtils.relative(this.target,e))}}});var oE,u$=Xe(()=>{yp();oE=class extends _s{constructor(r,s){super(s);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var wd,tl,e0,f$=Xe(()=>{wd=Ie("fs");Id();Cd();bU();zP();el();tl=4278190080,e0=class extends Uf{constructor({baseFs:r=new Yn,filter:s=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:c=!0,maxAge:f=5e3,typeCheck:p=wd.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:C}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error("The magic byte must be set to a round value between 1 and 127 included");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=c?new Map:null,this.factoryPromise=E,this.factorySync=C,this.filter=s,this.getMountPoint=h,this.magic=a<<24,this.maxAge=f,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(yd(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(yd(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,s){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,s]),a}async openPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,s,a),async(n,{subPath:c})=>this.remapFd(n,await n.openPromise(c,s,a)))}openSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,s,a),(n,{subPath:c})=>this.remapFd(n,n.openSync(c,s,a)))}async opendirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,s),async(a,{subPath:n})=>await a.opendirPromise(n,s),{requireSubpath:!1})}opendirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,s),(a,{subPath:n})=>a.opendirSync(n,s),{requireSubpath:!1})}async readPromise(r,s,a,n,c){if((r&tl)!==this.magic)return await this.baseFs.readPromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Mo("read");let[p,h]=f;return await p.readPromise(h,s,a,n,c)}readSync(r,s,a,n,c){if((r&tl)!==this.magic)return this.baseFs.readSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Mo("readSync");let[p,h]=f;return p.readSync(h,s,a,n,c)}async writePromise(r,s,a,n,c){if((r&tl)!==this.magic)return typeof s=="string"?await this.baseFs.writePromise(r,s,a):await this.baseFs.writePromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Mo("write");let[p,h]=f;return typeof s=="string"?await p.writePromise(h,s,a):await p.writePromise(h,s,a,n,c)}writeSync(r,s,a,n,c){if((r&tl)!==this.magic)return typeof s=="string"?this.baseFs.writeSync(r,s,a):this.baseFs.writeSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Mo("writeSync");let[p,h]=f;return typeof s=="string"?p.writeSync(h,s,a):p.writeSync(h,s,a,n,c)}async closePromise(r){if((r&tl)!==this.magic)return await this.baseFs.closePromise(r);let s=this.fdMap.get(r);if(typeof s>"u")throw Mo("close");this.fdMap.delete(r);let[a,n]=s;return await a.closePromise(n)}closeSync(r){if((r&tl)!==this.magic)return this.baseFs.closeSync(r);let s=this.fdMap.get(r);if(typeof s>"u")throw Mo("closeSync");this.fdMap.delete(r);let[a,n]=s;return a.closeSync(n)}createReadStream(r,s){return r===null?this.baseFs.createReadStream(r,s):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,s),(a,{archivePath:n,subPath:c})=>{let f=a.createReadStream(c,s);return f.path=fe.fromPortablePath(this.pathUtils.join(n,c)),f})}createWriteStream(r,s){return r===null?this.baseFs.createWriteStream(r,s):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,s),(a,{subPath:n})=>a.createWriteStream(n,s))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=await this.baseFs.realpathPromise(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,await s.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=this.baseFs.realpathSync(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,s.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(s,{subPath:a})=>await s.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(s,{subPath:a})=>s.existsSync(a))}async accessPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,s),async(a,{subPath:n})=>await a.accessPromise(n,s))}accessSync(r,s){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,s),(a,{subPath:n})=>a.accessSync(n,s))}async statPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,s),async(a,{subPath:n})=>await a.statPromise(n,s))}statSync(r,s){return this.makeCallSync(r,()=>this.baseFs.statSync(r,s),(a,{subPath:n})=>a.statSync(n,s))}async fstatPromise(r,s){if((r&tl)!==this.magic)return this.baseFs.fstatPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("fstat");let[n,c]=a;return n.fstatPromise(c,s)}fstatSync(r,s){if((r&tl)!==this.magic)return this.baseFs.fstatSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("fstatSync");let[n,c]=a;return n.fstatSync(c,s)}async lstatPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,s),async(a,{subPath:n})=>await a.lstatPromise(n,s))}lstatSync(r,s){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,s),(a,{subPath:n})=>a.lstatSync(n,s))}async fchmodPromise(r,s){if((r&tl)!==this.magic)return this.baseFs.fchmodPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("fchmod");let[n,c]=a;return n.fchmodPromise(c,s)}fchmodSync(r,s){if((r&tl)!==this.magic)return this.baseFs.fchmodSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("fchmodSync");let[n,c]=a;return n.fchmodSync(c,s)}async chmodPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,s),async(a,{subPath:n})=>await a.chmodPromise(n,s))}chmodSync(r,s){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,s),(a,{subPath:n})=>a.chmodSync(n,s))}async fchownPromise(r,s,a){if((r&tl)!==this.magic)return this.baseFs.fchownPromise(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Mo("fchown");let[c,f]=n;return c.fchownPromise(f,s,a)}fchownSync(r,s,a){if((r&tl)!==this.magic)return this.baseFs.fchownSync(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Mo("fchownSync");let[c,f]=n;return c.fchownSync(f,s,a)}async chownPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,s,a),async(n,{subPath:c})=>await n.chownPromise(c,s,a))}chownSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,s,a),(n,{subPath:c})=>n.chownSync(c,s,a))}async renamePromise(r,s){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.renamePromise(r,s),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(a,{subPath:n})=>await this.makeCallPromise(s,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await a.renamePromise(n,f)}))}renameSync(r,s){return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.renameSync(r,s),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(a,{subPath:n})=>this.makeCallSync(s,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return a.renameSync(n,f)}))}async copyFilePromise(r,s,a=0){let n=async(c,f,p,h)=>{if(a&wd.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&wd.constants.COPYFILE_EXCL&&await this.existsPromise(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=await c.readFilePromise(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.copyFilePromise(r,s,a),async(c,{subPath:f})=>await n(this.baseFs,r,c,f)),async(c,{subPath:f})=>await this.makeCallPromise(s,async()=>await n(c,f,this.baseFs,s),async(p,{subPath:h})=>c!==p?await n(c,f,p,h):await c.copyFilePromise(f,h,a)))}copyFileSync(r,s,a=0){let n=(c,f,p,h)=>{if(a&wd.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&wd.constants.COPYFILE_EXCL&&this.existsSync(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=c.readFileSync(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.copyFileSync(r,s,a),(c,{subPath:f})=>n(this.baseFs,r,c,f)),(c,{subPath:f})=>this.makeCallSync(s,()=>n(c,f,this.baseFs,s),(p,{subPath:h})=>c!==p?n(c,f,p,h):c.copyFileSync(f,h,a)))}async appendFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,s,a),async(n,{subPath:c})=>await n.appendFilePromise(c,s,a))}appendFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,s,a),(n,{subPath:c})=>n.appendFileSync(c,s,a))}async writeFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,s,a),async(n,{subPath:c})=>await n.writeFilePromise(c,s,a))}writeFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,s,a),(n,{subPath:c})=>n.writeFileSync(c,s,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(s,{subPath:a})=>await s.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(s,{subPath:a})=>s.unlinkSync(a))}async utimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,s,a),async(n,{subPath:c})=>await n.utimesPromise(c,s,a))}utimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,s,a),(n,{subPath:c})=>n.utimesSync(c,s,a))}async lutimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,s,a),async(n,{subPath:c})=>await n.lutimesPromise(c,s,a))}lutimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,s,a),(n,{subPath:c})=>n.lutimesSync(c,s,a))}async mkdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,s),async(a,{subPath:n})=>await a.mkdirPromise(n,s))}mkdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,s),(a,{subPath:n})=>a.mkdirSync(n,s))}async rmdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,s),async(a,{subPath:n})=>await a.rmdirPromise(n,s))}rmdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,s),(a,{subPath:n})=>a.rmdirSync(n,s))}async rmPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmPromise(r,s),async(a,{subPath:n})=>await a.rmPromise(n,s))}rmSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmSync(r,s),(a,{subPath:n})=>a.rmSync(n,s))}async linkPromise(r,s){return await this.makeCallPromise(s,async()=>await this.baseFs.linkPromise(r,s),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,s){return this.makeCallSync(s,()=>this.baseFs.linkSync(r,s),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,s,a){return await this.makeCallPromise(s,async()=>await this.baseFs.symlinkPromise(r,s,a),async(n,{subPath:c})=>await n.symlinkPromise(r,c))}symlinkSync(r,s,a){return this.makeCallSync(s,()=>this.baseFs.symlinkSync(r,s,a),(n,{subPath:c})=>n.symlinkSync(r,c))}async readFilePromise(r,s){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,s),async(a,{subPath:n})=>await a.readFilePromise(n,s))}readFileSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,s),(a,{subPath:n})=>a.readFileSync(n,s))}async readdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,s),async(a,{subPath:n})=>await a.readdirPromise(n,s),{requireSubpath:!1})}readdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,s),(a,{subPath:n})=>a.readdirSync(n,s),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(s,{subPath:a})=>await s.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(s,{subPath:a})=>s.readlinkSync(a))}async truncatePromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,s),async(a,{subPath:n})=>await a.truncatePromise(n,s))}truncateSync(r,s){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,s),(a,{subPath:n})=>a.truncateSync(n,s))}async ftruncatePromise(r,s){if((r&tl)!==this.magic)return this.baseFs.ftruncatePromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("ftruncate");let[n,c]=a;return n.ftruncatePromise(c,s)}ftruncateSync(r,s){if((r&tl)!==this.magic)return this.baseFs.ftruncateSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("ftruncateSync");let[n,c]=a;return n.ftruncateSync(c,s)}watch(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,s,a),(n,{subPath:c})=>n.watch(c,s,a))}watchFile(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,s,a),()=>sE(this,r,s,a))}unwatchFile(r,s){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,s),()=>md(this,r,s))}async makeCallPromise(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return await s();let c=this.resolve(r),f=this.findMount(c);return f?n&&f.subPath==="/"?await s():await this.getMountPromise(f.archivePath,async p=>await a(p,f)):await s()}makeCallSync(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return s();let c=this.resolve(r),f=this.findMount(c);return!f||n&&f.subPath==="/"?s():this.getMountSync(f.archivePath,p=>a(p,f))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let s="";for(;;){let a=r.substring(s.length),n=this.getMountPoint(a,s);if(!n)return null;if(s=this.pathUtils.join(s,n),!this.isMount.has(s)){if(this.notMount.has(s))continue;try{if(this.typeCheck!==null&&(this.baseFs.statSync(s).mode&wd.constants.S_IFMT)!==this.typeCheck){this.notMount.add(s);continue}}catch{return null}this.isMount.add(s)}return{archivePath:s,subPath:this.pathUtils.join(vt.root,r.substring(s.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let s=Date.now(),a=s+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[c,{childFs:f,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||f.hasOpenFileHandles?.())){if(s>=p){f.saveAndClose?.(),this.mountInstances.delete(c),n-=1;continue}else if(r===null||n<=0){a=p;break}f.saveAndClose?.(),this.mountInstances.delete(c),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-s).unref())}async getMountPromise(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await s(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await s(a)}finally{a.saveAndClose?.()}}}getMountSync(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,s(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return s(a)}finally{a.saveAndClose?.()}}}}});var er,nx,A$=Xe(()=>{Id();el();er=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),nx=class t extends mp{static{this.instance=new t}constructor(){super(J)}getExtractHint(){throw er()}getRealPath(){throw er()}resolve(){throw er()}async openPromise(){throw er()}openSync(){throw er()}async opendirPromise(){throw er()}opendirSync(){throw er()}async readPromise(){throw er()}readSync(){throw er()}async writePromise(){throw er()}writeSync(){throw er()}async closePromise(){throw er()}closeSync(){throw er()}createWriteStream(){throw er()}createReadStream(){throw er()}async realpathPromise(){throw er()}realpathSync(){throw er()}async readdirPromise(){throw er()}readdirSync(){throw er()}async existsPromise(e){throw er()}existsSync(e){throw er()}async accessPromise(){throw er()}accessSync(){throw er()}async statPromise(){throw er()}statSync(){throw er()}async fstatPromise(e){throw er()}fstatSync(e){throw er()}async lstatPromise(e){throw er()}lstatSync(e){throw er()}async fchmodPromise(){throw er()}fchmodSync(){throw er()}async chmodPromise(){throw er()}chmodSync(){throw er()}async fchownPromise(){throw er()}fchownSync(){throw er()}async chownPromise(){throw er()}chownSync(){throw er()}async mkdirPromise(){throw er()}mkdirSync(){throw er()}async rmdirPromise(){throw er()}rmdirSync(){throw er()}async rmPromise(){throw er()}rmSync(){throw er()}async linkPromise(){throw er()}linkSync(){throw er()}async symlinkPromise(){throw er()}symlinkSync(){throw er()}async renamePromise(){throw er()}renameSync(){throw er()}async copyFilePromise(){throw er()}copyFileSync(){throw er()}async appendFilePromise(){throw er()}appendFileSync(){throw er()}async writeFilePromise(){throw er()}writeFileSync(){throw er()}async unlinkPromise(){throw er()}unlinkSync(){throw er()}async utimesPromise(){throw er()}utimesSync(){throw er()}async lutimesPromise(){throw er()}lutimesSync(){throw er()}async readFilePromise(){throw er()}readFileSync(){throw er()}async readlinkPromise(){throw er()}readlinkSync(){throw er()}async truncatePromise(){throw er()}truncateSync(){throw er()}async ftruncatePromise(e,r){throw er()}ftruncateSync(e,r){throw er()}watch(){throw er()}watchFile(){throw er()}unwatchFile(){throw er()}}});var t0,p$=Xe(()=>{yp();el();t0=class extends _s{constructor(e){super(fe),this.baseFs=e}mapFromBase(e){return fe.fromPortablePath(e)}mapToBase(e){return fe.toPortablePath(e)}}});var o5e,PU,a5e,uo,h$=Xe(()=>{Cd();yp();el();o5e=/^[0-9]+$/,PU=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,a5e=/^([^/]+-)?[a-f0-9]+$/,uo=class t extends _s{static makeVirtualPath(e,r,s){if(J.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!J.basename(r).match(a5e))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let n=J.relative(J.dirname(e),s).split("/"),c=0;for(;c{xU=ut(Ie("buffer")),g$=Ie("url"),d$=Ie("util");yp();el();ix=class extends _s{constructor(e){super(fe),this.baseFs=e}mapFromBase(e){return e}mapToBase(e){if(typeof e=="string")return e;if(e instanceof URL)return(0,g$.fileURLToPath)(e);if(Buffer.isBuffer(e)){let r=e.toString();if(!l5e(e,r))throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return r}throw new Error(`Unsupported path type: ${(0,d$.inspect)(e)}`)}}});var w$,Uo,Ep,r0,sx,ox,aE,Ru,Fu,y$,E$,I$,C$,M2,B$=Xe(()=>{w$=Ie("readline"),Uo=Symbol("kBaseFs"),Ep=Symbol("kFd"),r0=Symbol("kClosePromise"),sx=Symbol("kCloseResolve"),ox=Symbol("kCloseReject"),aE=Symbol("kRefs"),Ru=Symbol("kRef"),Fu=Symbol("kUnref"),M2=class{constructor(e,r){this[C$]=1;this[I$]=void 0;this[E$]=void 0;this[y$]=void 0;this[Uo]=r,this[Ep]=e}get fd(){return this[Ep]}async appendFile(e,r){try{this[Ru](this.appendFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;return await this[Uo].appendFilePromise(this.fd,e,s?{encoding:s}:void 0)}finally{this[Fu]()}}async chown(e,r){try{return this[Ru](this.chown),await this[Uo].fchownPromise(this.fd,e,r)}finally{this[Fu]()}}async chmod(e){try{return this[Ru](this.chmod),await this[Uo].fchmodPromise(this.fd,e)}finally{this[Fu]()}}createReadStream(e){return this[Uo].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Uo].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(e,r,s,a){try{this[Ru](this.read);let n,c;return ArrayBuffer.isView(e)?typeof r=="object"&&r!==null?(n=e,c=r?.offset??0,s=r?.length??n.byteLength-c,a=r?.position??null):(n=e,c=r??0,s??=0):(n=e?.buffer??Buffer.alloc(16384),c=e?.offset??0,s=e?.length??n.byteLength-c,a=e?.position??null),s===0?{bytesRead:s,buffer:n}:{bytesRead:await this[Uo].readPromise(this.fd,Buffer.isBuffer(n)?n:Buffer.from(n.buffer,n.byteOffset,n.byteLength),c,s,a),buffer:n}}finally{this[Fu]()}}async readFile(e){try{this[Ru](this.readFile);let r=(typeof e=="string"?e:e?.encoding)??void 0;return await this[Uo].readFilePromise(this.fd,r)}finally{this[Fu]()}}readLines(e){return(0,w$.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Ru](this.stat),await this[Uo].fstatPromise(this.fd,e)}finally{this[Fu]()}}async truncate(e){try{return this[Ru](this.truncate),await this[Uo].ftruncatePromise(this.fd,e)}finally{this[Fu]()}}utimes(e,r){throw new Error("Method not implemented.")}async writeFile(e,r){try{this[Ru](this.writeFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;await this[Uo].writeFilePromise(this.fd,e,s)}finally{this[Fu]()}}async write(...e){try{if(this[Ru](this.write),ArrayBuffer.isView(e[0])){let[r,s,a,n]=e;return{bytesWritten:await this[Uo].writePromise(this.fd,r,s??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,s,a]=e;return{bytesWritten:await this[Uo].writePromise(this.fd,r,s,a),buffer:r}}}finally{this[Fu]()}}async writev(e,r){try{this[Ru](this.writev);let s=0;if(typeof r<"u")for(let a of e){let n=await this.write(a,void 0,void 0,r);s+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);s+=n.bytesWritten}return{buffers:e,bytesWritten:s}}finally{this[Fu]()}}readv(e,r){throw new Error("Method not implemented.")}close(){if(this[Ep]===-1)return Promise.resolve();if(this[r0])return this[r0];if(this[aE]--,this[aE]===0){let e=this[Ep];this[Ep]=-1,this[r0]=this[Uo].closePromise(e).finally(()=>{this[r0]=void 0})}else this[r0]=new Promise((e,r)=>{this[sx]=e,this[ox]=r}).finally(()=>{this[r0]=void 0,this[ox]=void 0,this[sx]=void 0});return this[r0]}[(Uo,Ep,C$=aE,I$=r0,E$=sx,y$=ox,Ru)](e){if(this[Ep]===-1){let r=new Error("file closed");throw r.code="EBADF",r.syscall=e.name,r}this[aE]++}[Fu](){if(this[aE]--,this[aE]===0){let e=this[Ep];this[Ep]=-1,this[Uo].closePromise(e).then(this[sx],this[ox])}}}});function U2(t,e){e=new ix(e);let r=(s,a,n)=>{let c=s[a];s[a]=n,typeof c?.[lE.promisify.custom]<"u"&&(n[lE.promisify.custom]=c[lE.promisify.custom])};{r(t,"exists",(s,...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(s).then(f=>{c(f)},()=>{c(!1)})})}),r(t,"read",(...s)=>{let[a,n,c,f,p,h]=s;if(s.length<=3){let E={};s.length<3?h=s[1]:(E=s[1],h=s[2]),{buffer:n=Buffer.alloc(16384),offset:c=0,length:f=n.byteLength,position:p}=E}if(c==null&&(c=0),f|=0,f===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,c,f,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let s of v$){let a=s.replace(/Promise$/,"");if(typeof t[a]>"u")continue;let n=e[s];if(typeof n>"u")continue;r(t,a,(...f)=>{let h=typeof f[f.length-1]=="function"?f.pop():()=>{};process.nextTick(()=>{n.apply(e,f).then(E=>{h(null,E)},E=>{h(E)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",s=>{try{return e.existsSync(s)}catch{return!1}}),r(t,"readSync",(...s)=>{let[a,n,c,f,p]=s;return s.length<=3&&({offset:c=0,length:f=n.byteLength,position:p}=s[2]||{}),c==null&&(c=0),f|=0,f===0?0:(p==null&&(p=-1),e.readSync(a,n,c,f,p))});for(let s of c5e){let a=s;if(typeof t[a]>"u")continue;let n=e[s];typeof n>"u"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let s=t.promises;for(let a of v$){let n=a.replace(/Promise$/,"");if(typeof s[n]>"u")continue;let c=e[a];typeof c>"u"||a!=="open"&&r(s,n,(f,...p)=>f instanceof M2?f[n].apply(f,p):c.call(e,f,...p))}r(s,"open",async(...a)=>{let n=await e.openPromise(...a);return new M2(n,e)})}t.read[lE.promisify.custom]=async(s,a,...n)=>({bytesRead:await e.readPromise(s,a,...n),buffer:a}),t.write[lE.promisify.custom]=async(s,a,...n)=>({bytesWritten:await e.writePromise(s,a,...n),buffer:a})}function ax(t,e){let r=Object.create(t);return U2(r,e),r}var lE,c5e,v$,S$=Xe(()=>{lE=Ie("util");m$();B$();c5e=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),v$=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","rmPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"])});function D$(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${t}${e}`}function b$(){if(kU)return kU;let t=fe.toPortablePath(P$.default.tmpdir()),e=ce.realpathSync(t);return process.once("exit",()=>{ce.rmtempSync()}),kU={tmpdir:t,realTmpdir:e}}var P$,Nu,kU,ce,x$=Xe(()=>{P$=ut(Ie("os"));Cd();el();Nu=new Set,kU=null;ce=Object.assign(new Yn,{detachTemp(t){Nu.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=b$();for(;;){let s=D$("xfs-");try{this.mkdirSync(J.join(e,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=J.join(r,s);if(Nu.add(a),typeof t>"u")return a;try{return t(a)}finally{if(Nu.has(a)){Nu.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=b$();for(;;){let s=D$("xfs-");try{await this.mkdirPromise(J.join(e,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=J.join(r,s);if(Nu.add(a),typeof t>"u")return a;try{return await t(a)}finally{if(Nu.has(a)){Nu.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Nu.values()).map(async t=>{try{await ce.removePromise(t,{maxRetries:0}),Nu.delete(t)}catch{}}))},rmtempSync(){for(let t of Nu)try{ce.removeSync(t),Nu.delete(t)}catch{}}})});var _2={};Vt(_2,{AliasFS:()=>_f,BasePortableFakeFS:()=>Uf,CustomDir:()=>L2,CwdFS:()=>Sn,FakeFS:()=>mp,Filename:()=>Er,JailFS:()=>Hf,LazyFS:()=>oE,MountFS:()=>e0,NoFS:()=>nx,NodeFS:()=>Yn,PortablePath:()=>vt,PosixFS:()=>t0,ProxiedFS:()=>_s,VirtualFS:()=>uo,constants:()=>fi,errors:()=>or,extendFs:()=>ax,normalizeLineEndings:()=>Ed,npath:()=>fe,opendir:()=>ex,patchFs:()=>U2,ppath:()=>J,setupCopyIndex:()=>$P,statUtils:()=>$a,unwatchAllFiles:()=>yd,unwatchFile:()=>md,watchFile:()=>sE,xfs:()=>ce});var Dt=Xe(()=>{YZ();zP();BU();DU();ZZ();bU();Id();el();el();i$();Id();a$();c$();u$();f$();A$();Cd();p$();yp();h$();S$();x$()});var F$=_((Dkt,R$)=>{R$.exports=T$;T$.sync=f5e;var k$=Ie("fs");function u5e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var s=0;s{M$.exports=O$;O$.sync=A5e;var N$=Ie("fs");function O$(t,e,r){N$.stat(t,function(s,a){r(s,s?!1:L$(a,e))})}function A5e(t,e){return L$(N$.statSync(t),e)}function L$(t,e){return t.isFile()&&p5e(t,e)}function p5e(t,e){var r=t.mode,s=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),c=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),f=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),E=f|p,C=r&h||r&p&&a===c||r&f&&s===n||r&E&&n===0;return C}});var H$=_((xkt,_$)=>{var Pkt=Ie("fs"),lx;process.platform==="win32"||global.TESTING_WINDOWS?lx=F$():lx=U$();_$.exports=QU;QU.sync=h5e;function QU(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(s,a){QU(t,e||{},function(n,c){n?a(n):s(c)})})}lx(t,e||{},function(s,a){s&&(s.code==="EACCES"||e&&e.ignoreErrors)&&(s=null,a=!1),r(s,a)})}function h5e(t,e){try{return lx.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var J$=_((kkt,V$)=>{var cE=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",j$=Ie("path"),g5e=cE?";":":",G$=H$(),q$=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),W$=(t,e)=>{let r=e.colon||g5e,s=t.match(/\//)||cE&&t.match(/\\/)?[""]:[...cE?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],a=cE?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=cE?a.split(r):[""];return cE&&t.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:s,pathExt:n,pathExtExe:a}},Y$=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:s,pathExt:a,pathExtExe:n}=W$(t,e),c=[],f=h=>new Promise((E,C)=>{if(h===s.length)return e.all&&c.length?E(c):C(q$(t));let S=s[h],P=/^".*"$/.test(S)?S.slice(1,-1):S,I=j$.join(P,t),R=!P&&/^\.[\\\/]/.test(t)?t.slice(0,2)+I:I;E(p(R,h,0))}),p=(h,E,C)=>new Promise((S,P)=>{if(C===a.length)return S(f(E+1));let I=a[C];G$(h+I,{pathExt:n},(R,N)=>{if(!R&&N)if(e.all)c.push(h+I);else return S(h+I);return S(p(h,E,C+1))})});return r?f(0).then(h=>r(null,h),r):f(0)},d5e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:s,pathExtExe:a}=W$(t,e),n=[];for(let c=0;c{"use strict";var K$=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(s=>s.toUpperCase()==="PATH")||"Path"};TU.exports=K$;TU.exports.default=K$});var eee=_((Tkt,$$)=>{"use strict";var X$=Ie("path"),m5e=J$(),y5e=z$();function Z$(t,e){let r=t.options.env||process.env,s=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let c;try{c=m5e.sync(t.command,{path:r[y5e({env:r})],pathExt:e?X$.delimiter:void 0})}catch{}finally{n&&process.chdir(s)}return c&&(c=X$.resolve(a?t.options.cwd:"",c)),c}function E5e(t){return Z$(t)||Z$(t,!0)}$$.exports=E5e});var tee=_((Rkt,FU)=>{"use strict";var RU=/([()\][%!^"`<>&|;, *?])/g;function I5e(t){return t=t.replace(RU,"^$1"),t}function C5e(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),t=t.replace(/(?=(\\+?)?)\1$/,"$1$1"),t=`"${t}"`,t=t.replace(RU,"^$1"),e&&(t=t.replace(RU,"^$1")),t}FU.exports.command=I5e;FU.exports.argument=C5e});var nee=_((Fkt,ree)=>{"use strict";ree.exports=/^#!(.*)/});var see=_((Nkt,iee)=>{"use strict";var w5e=nee();iee.exports=(t="")=>{let e=t.match(w5e);if(!e)return null;let[r,s]=e[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?s:s?`${a} ${s}`:a}});var aee=_((Okt,oee)=>{"use strict";var NU=Ie("fs"),B5e=see();function v5e(t){let r=Buffer.alloc(150),s;try{s=NU.openSync(t,"r"),NU.readSync(s,r,0,150,0),NU.closeSync(s)}catch{}return B5e(r.toString())}oee.exports=v5e});var fee=_((Lkt,uee)=>{"use strict";var S5e=Ie("path"),lee=eee(),cee=tee(),D5e=aee(),b5e=process.platform==="win32",P5e=/\.(?:com|exe)$/i,x5e=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function k5e(t){t.file=lee(t);let e=t.file&&D5e(t.file);return e?(t.args.unshift(t.file),t.command=e,lee(t)):t.file}function Q5e(t){if(!b5e)return t;let e=k5e(t),r=!P5e.test(e);if(t.options.forceShell||r){let s=x5e.test(e);t.command=S5e.normalize(t.command),t.command=cee.command(t.command),t.args=t.args.map(n=>cee.argument(n,s));let a=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${a}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function T5e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let s={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?s:Q5e(s)}uee.exports=T5e});var hee=_((Mkt,pee)=>{"use strict";var OU=process.platform==="win32";function LU(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function R5e(t,e){if(!OU)return;let r=t.emit;t.emit=function(s,a){if(s==="exit"){let n=Aee(a,e);if(n)return r.call(t,"error",n)}return r.apply(t,arguments)}}function Aee(t,e){return OU&&t===1&&!e.file?LU(e.original,"spawn"):null}function F5e(t,e){return OU&&t===1&&!e.file?LU(e.original,"spawnSync"):null}pee.exports={hookChildProcess:R5e,verifyENOENT:Aee,verifyENOENTSync:F5e,notFoundError:LU}});var _U=_((Ukt,uE)=>{"use strict";var gee=Ie("child_process"),MU=fee(),UU=hee();function dee(t,e,r){let s=MU(t,e,r),a=gee.spawn(s.command,s.args,s.options);return UU.hookChildProcess(a,s),a}function N5e(t,e,r){let s=MU(t,e,r),a=gee.spawnSync(s.command,s.args,s.options);return a.error=a.error||UU.verifyENOENTSync(a.status,s),a}uE.exports=dee;uE.exports.spawn=dee;uE.exports.sync=N5e;uE.exports._parse=MU;uE.exports._enoent=UU});var yee=_((_kt,mee)=>{"use strict";function O5e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Bd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Bd)}O5e(Bd,Error);Bd.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C>",b=ur(">>",!1),y=">&",F=ur(">&",!1),z=">",X=ur(">",!1),$="<<<",oe=ur("<<<",!1),xe="<&",Te=ur("<&",!1),lt="<",Ct=ur("<",!1),qt=function(O){return{type:"argument",segments:[].concat(...O)}},ir=function(O){return O},Pt="$'",gn=ur("$'",!1),Pr="'",Ir=ur("'",!1),Or=function(O){return[{type:"text",text:O}]},on='""',ai=ur('""',!1),Io=function(){return{type:"text",text:""}},rs='"',$s=ur('"',!1),Co=function(O){return O},ji=function(O){return{type:"arithmetic",arithmetic:O,quoted:!0}},eo=function(O){return{type:"shell",shell:O,quoted:!0}},wo=function(O){return{type:"variable",...O,quoted:!0}},QA=function(O){return{type:"text",text:O}},Af=function(O){return{type:"arithmetic",arithmetic:O,quoted:!1}},dh=function(O){return{type:"shell",shell:O,quoted:!1}},mh=function(O){return{type:"variable",...O,quoted:!1}},to=function(O){return{type:"glob",pattern:O}},jn=/^[^']/,Ts=zi(["'"],!0,!1),ro=function(O){return O.join("")},ou=/^[^$"]/,au=zi(["$",'"'],!0,!1),lu=`\\ -`,TA=ur(`\\ -`,!1),RA=function(){return""},oa="\\",aa=ur("\\",!1),FA=/^[\\$"`]/,gr=zi(["\\","$",'"',"`"],!1,!1),Bo=function(O){return O},Me="\\a",cu=ur("\\a",!1),Cr=function(){return"a"},pf="\\b",NA=ur("\\b",!1),OA=function(){return"\b"},uu=/^[Ee]/,fu=zi(["E","e"],!1,!1),oc=function(){return"\x1B"},ve="\\f",Nt=ur("\\f",!1),ac=function(){return"\f"},Oi="\\n",no=ur("\\n",!1),Rt=function(){return` -`},xn="\\r",la=ur("\\r",!1),Gi=function(){return"\r"},Li="\\t",Na=ur("\\t",!1),dn=function(){return" "},Kn="\\v",Au=ur("\\v",!1),yh=function(){return"\v"},Oa=/^[\\'"?]/,La=zi(["\\","'",'"',"?"],!1,!1),Ma=function(O){return String.fromCharCode(parseInt(O,16))},$e="\\x",Ua=ur("\\x",!1),hf="\\u",lc=ur("\\u",!1),wn="\\U",ca=ur("\\U",!1),LA=function(O){return String.fromCodePoint(parseInt(O,16))},MA=/^[0-7]/,ua=zi([["0","7"]],!1,!1),Bl=/^[0-9a-fA-f]/,Mt=zi([["0","9"],["a","f"],["A","f"]],!1,!1),kn=yf(),fa="{}",Ha=ur("{}",!1),ns=function(){return"{}"},cc="-",pu=ur("-",!1),uc="+",ja=ur("+",!1),Mi=".",Is=ur(".",!1),vl=function(O,K,re){return{type:"number",value:(O==="-"?-1:1)*parseFloat(K.join("")+"."+re.join(""))}},gf=function(O,K){return{type:"number",value:(O==="-"?-1:1)*parseInt(K.join(""))}},fc=function(O){return{type:"variable",...O}},wi=function(O){return{type:"variable",name:O}},Qn=function(O){return O},Ac="*",Ke=ur("*",!1),st="/",St=ur("/",!1),lr=function(O,K,re){return{type:K==="*"?"multiplication":"division",right:re}},te=function(O,K){return K.reduce((re,de)=>({left:re,...de}),O)},Ee=function(O,K,re){return{type:K==="+"?"addition":"subtraction",right:re}},Oe="$((",dt=ur("$((",!1),Et="))",bt=ur("))",!1),tr=function(O){return O},An="$(",li=ur("$(",!1),qi=function(O){return O},Tn="${",Ga=ur("${",!1),my=":-",Z1=ur(":-",!1),vo=function(O,K){return{name:O,defaultValue:K}},yy=":-}",Eh=ur(":-}",!1),$1=function(O){return{name:O,defaultValue:[]}},So=":+",Ih=ur(":+",!1),Ch=function(O,K){return{name:O,alternativeValue:K}},hu=":+}",wh=ur(":+}",!1),Fg=function(O){return{name:O,alternativeValue:[]}},Ng=function(O){return{name:O}},Og="$",Ey=ur("$",!1),df=function(O){return e.isGlobPattern(O)},Do=function(O){return O},Sl=/^[a-zA-Z0-9_]/,Bh=zi([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Lg=function(){return By()},Dl=/^[$@*?#a-zA-Z0-9_\-]/,bl=zi(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),Iy=/^[()}<>$|&; \t"']/,UA=zi(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),Cy=/^[<>&; \t"']/,wy=zi(["<",">","&",";"," "," ",'"',"'"],!1,!1),_A=/^[ \t]/,HA=zi([" "," "],!1,!1),Y=0,xt=0,jA=[{line:1,column:1}],bo=0,mf=[],yt=0,gu;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function By(){return t.substring(xt,Y)}function Mg(){return Ef(xt,Y)}function e2(O,K){throw K=K!==void 0?K:Ef(xt,Y),GA([Ug(O)],t.substring(xt,Y),K)}function vh(O,K){throw K=K!==void 0?K:Ef(xt,Y),di(O,K)}function ur(O,K){return{type:"literal",text:O,ignoreCase:K}}function zi(O,K,re){return{type:"class",parts:O,inverted:K,ignoreCase:re}}function yf(){return{type:"any"}}function qa(){return{type:"end"}}function Ug(O){return{type:"other",description:O}}function du(O){var K=jA[O],re;if(K)return K;for(re=O-1;!jA[re];)re--;for(K=jA[re],K={line:K.line,column:K.column};rebo&&(bo=Y,mf=[]),mf.push(O))}function di(O,K){return new Bd(O,null,null,K)}function GA(O,K,re){return new Bd(Bd.buildMessage(O,K),O,K,re)}function Wa(){var O,K,re;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(re=Aa(),re===r&&(re=null),re!==r?(xt=O,K=n(re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function Aa(){var O,K,re,de,Je;if(O=Y,K=Sh(),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=_g(),de!==r?(Je=Ya(),Je===r&&(Je=null),Je!==r?(xt=O,K=c(K,de,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;if(O===r)if(O=Y,K=Sh(),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=_g(),de===r&&(de=null),de!==r?(xt=O,K=f(K,de),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;return O}function Ya(){var O,K,re,de,Je;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=Aa(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=p(re),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;return O}function _g(){var O;return t.charCodeAt(Y)===59?(O=h,Y++):(O=r,yt===0&&wt(E)),O===r&&(t.charCodeAt(Y)===38?(O=C,Y++):(O=r,yt===0&&wt(S))),O}function Sh(){var O,K,re;return O=Y,K=qA(),K!==r?(re=Hg(),re===r&&(re=null),re!==r?(xt=O,K=P(K,re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function Hg(){var O,K,re,de,Je,At,dr;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=vy(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=Sh(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();At!==r?(xt=O,K=I(re,Je),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;return O}function vy(){var O;return t.substr(Y,2)===R?(O=R,Y+=2):(O=r,yt===0&&wt(N)),O===r&&(t.substr(Y,2)===U?(O=U,Y+=2):(O=r,yt===0&&wt(W))),O}function qA(){var O,K,re;return O=Y,K=If(),K!==r?(re=jg(),re===r&&(re=null),re!==r?(xt=O,K=ee(K,re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function jg(){var O,K,re,de,Je,At,dr;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=mu(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=qA(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();At!==r?(xt=O,K=ie(re,Je),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;return O}function mu(){var O;return t.substr(Y,2)===ue?(O=ue,Y+=2):(O=r,yt===0&&wt(le)),O===r&&(t.charCodeAt(Y)===124?(O=me,Y++):(O=r,yt===0&&wt(pe))),O}function yu(){var O,K,re,de,Je,At;if(O=Y,K=Ph(),K!==r)if(t.charCodeAt(Y)===61?(re=Be,Y++):(re=r,yt===0&&wt(Ce)),re!==r)if(de=WA(),de!==r){for(Je=[],At=kt();At!==r;)Je.push(At),At=kt();Je!==r?(xt=O,K=g(K,de),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;else Y=O,O=r;if(O===r)if(O=Y,K=Ph(),K!==r)if(t.charCodeAt(Y)===61?(re=Be,Y++):(re=r,yt===0&&wt(Ce)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=we(K),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;return O}function If(){var O,K,re,de,Je,At,dr,vr,Un,mi,Cs;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(t.charCodeAt(Y)===40?(re=ye,Y++):(re=r,yt===0&&wt(Ae)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=Aa(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();if(At!==r)if(t.charCodeAt(Y)===41?(dr=se,Y++):(dr=r,yt===0&&wt(Z)),dr!==r){for(vr=[],Un=kt();Un!==r;)vr.push(Un),Un=kt();if(vr!==r){for(Un=[],mi=Gn();mi!==r;)Un.push(mi),mi=Gn();if(Un!==r){for(mi=[],Cs=kt();Cs!==r;)mi.push(Cs),Cs=kt();mi!==r?(xt=O,K=De(Je,Un),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;if(O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(t.charCodeAt(Y)===123?(re=Re,Y++):(re=r,yt===0&&wt(mt)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=Aa(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();if(At!==r)if(t.charCodeAt(Y)===125?(dr=j,Y++):(dr=r,yt===0&&wt(rt)),dr!==r){for(vr=[],Un=kt();Un!==r;)vr.push(Un),Un=kt();if(vr!==r){for(Un=[],mi=Gn();mi!==r;)Un.push(mi),mi=Gn();if(Un!==r){for(mi=[],Cs=kt();Cs!==r;)mi.push(Cs),Cs=kt();mi!==r?(xt=O,K=Fe(Je,Un),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;if(O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){for(re=[],de=yu();de!==r;)re.push(de),de=yu();if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r){if(Je=[],At=Eu(),At!==r)for(;At!==r;)Je.push(At),At=Eu();else Je=r;if(Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();At!==r?(xt=O,K=Ne(re,Je),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;if(O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){if(re=[],de=yu(),de!==r)for(;de!==r;)re.push(de),de=yu();else re=r;if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=Pe(re),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}}}return O}function Rs(){var O,K,re,de,Je;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){if(re=[],de=Pi(),de!==r)for(;de!==r;)re.push(de),de=Pi();else re=r;if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=Ve(re),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r;return O}function Eu(){var O,K,re;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r?(re=Gn(),re!==r?(xt=O,K=ke(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();K!==r?(re=Pi(),re!==r?(xt=O,K=ke(re),O=K):(Y=O,O=r)):(Y=O,O=r)}return O}function Gn(){var O,K,re,de,Je;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(it.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Ue)),re===r&&(re=null),re!==r?(de=is(),de!==r?(Je=Pi(),Je!==r?(xt=O,K=x(re,de,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function is(){var O;return t.substr(Y,2)===w?(O=w,Y+=2):(O=r,yt===0&&wt(b)),O===r&&(t.substr(Y,2)===y?(O=y,Y+=2):(O=r,yt===0&&wt(F)),O===r&&(t.charCodeAt(Y)===62?(O=z,Y++):(O=r,yt===0&&wt(X)),O===r&&(t.substr(Y,3)===$?(O=$,Y+=3):(O=r,yt===0&&wt(oe)),O===r&&(t.substr(Y,2)===xe?(O=xe,Y+=2):(O=r,yt===0&&wt(Te)),O===r&&(t.charCodeAt(Y)===60?(O=lt,Y++):(O=r,yt===0&&wt(Ct))))))),O}function Pi(){var O,K,re;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(re=WA(),re!==r?(xt=O,K=ke(re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function WA(){var O,K,re;if(O=Y,K=[],re=Cf(),re!==r)for(;re!==r;)K.push(re),re=Cf();else K=r;return K!==r&&(xt=O,K=qt(K)),O=K,O}function Cf(){var O,K;return O=Y,K=mn(),K!==r&&(xt=O,K=ir(K)),O=K,O===r&&(O=Y,K=Gg(),K!==r&&(xt=O,K=ir(K)),O=K,O===r&&(O=Y,K=qg(),K!==r&&(xt=O,K=ir(K)),O=K,O===r&&(O=Y,K=ss(),K!==r&&(xt=O,K=ir(K)),O=K))),O}function mn(){var O,K,re,de;return O=Y,t.substr(Y,2)===Pt?(K=Pt,Y+=2):(K=r,yt===0&&wt(gn)),K!==r?(re=yn(),re!==r?(t.charCodeAt(Y)===39?(de=Pr,Y++):(de=r,yt===0&&wt(Ir)),de!==r?(xt=O,K=Or(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function Gg(){var O,K,re,de;return O=Y,t.charCodeAt(Y)===39?(K=Pr,Y++):(K=r,yt===0&&wt(Ir)),K!==r?(re=wf(),re!==r?(t.charCodeAt(Y)===39?(de=Pr,Y++):(de=r,yt===0&&wt(Ir)),de!==r?(xt=O,K=Or(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function qg(){var O,K,re,de;if(O=Y,t.substr(Y,2)===on?(K=on,Y+=2):(K=r,yt===0&&wt(ai)),K!==r&&(xt=O,K=Io()),O=K,O===r)if(O=Y,t.charCodeAt(Y)===34?(K=rs,Y++):(K=r,yt===0&&wt($s)),K!==r){for(re=[],de=Pl();de!==r;)re.push(de),de=Pl();re!==r?(t.charCodeAt(Y)===34?(de=rs,Y++):(de=r,yt===0&&wt($s)),de!==r?(xt=O,K=Co(re),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;return O}function ss(){var O,K,re;if(O=Y,K=[],re=Po(),re!==r)for(;re!==r;)K.push(re),re=Po();else K=r;return K!==r&&(xt=O,K=Co(K)),O=K,O}function Pl(){var O,K;return O=Y,K=Zr(),K!==r&&(xt=O,K=ji(K)),O=K,O===r&&(O=Y,K=bh(),K!==r&&(xt=O,K=eo(K)),O=K,O===r&&(O=Y,K=VA(),K!==r&&(xt=O,K=wo(K)),O=K,O===r&&(O=Y,K=Bf(),K!==r&&(xt=O,K=QA(K)),O=K))),O}function Po(){var O,K;return O=Y,K=Zr(),K!==r&&(xt=O,K=Af(K)),O=K,O===r&&(O=Y,K=bh(),K!==r&&(xt=O,K=dh(K)),O=K,O===r&&(O=Y,K=VA(),K!==r&&(xt=O,K=mh(K)),O=K,O===r&&(O=Y,K=Sy(),K!==r&&(xt=O,K=to(K)),O=K,O===r&&(O=Y,K=Dh(),K!==r&&(xt=O,K=QA(K)),O=K)))),O}function wf(){var O,K,re;for(O=Y,K=[],jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Ts));re!==r;)K.push(re),jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Ts));return K!==r&&(xt=O,K=ro(K)),O=K,O}function Bf(){var O,K,re;if(O=Y,K=[],re=xl(),re===r&&(ou.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(au))),re!==r)for(;re!==r;)K.push(re),re=xl(),re===r&&(ou.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(au)));else K=r;return K!==r&&(xt=O,K=ro(K)),O=K,O}function xl(){var O,K,re;return O=Y,t.substr(Y,2)===lu?(K=lu,Y+=2):(K=r,yt===0&&wt(TA)),K!==r&&(xt=O,K=RA()),O=K,O===r&&(O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(FA.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(gr)),re!==r?(xt=O,K=Bo(re),O=K):(Y=O,O=r)):(Y=O,O=r)),O}function yn(){var O,K,re;for(O=Y,K=[],re=xo(),re===r&&(jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Ts)));re!==r;)K.push(re),re=xo(),re===r&&(jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Ts)));return K!==r&&(xt=O,K=ro(K)),O=K,O}function xo(){var O,K,re;return O=Y,t.substr(Y,2)===Me?(K=Me,Y+=2):(K=r,yt===0&&wt(cu)),K!==r&&(xt=O,K=Cr()),O=K,O===r&&(O=Y,t.substr(Y,2)===pf?(K=pf,Y+=2):(K=r,yt===0&&wt(NA)),K!==r&&(xt=O,K=OA()),O=K,O===r&&(O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(uu.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(fu)),re!==r?(xt=O,K=oc(),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===ve?(K=ve,Y+=2):(K=r,yt===0&&wt(Nt)),K!==r&&(xt=O,K=ac()),O=K,O===r&&(O=Y,t.substr(Y,2)===Oi?(K=Oi,Y+=2):(K=r,yt===0&&wt(no)),K!==r&&(xt=O,K=Rt()),O=K,O===r&&(O=Y,t.substr(Y,2)===xn?(K=xn,Y+=2):(K=r,yt===0&&wt(la)),K!==r&&(xt=O,K=Gi()),O=K,O===r&&(O=Y,t.substr(Y,2)===Li?(K=Li,Y+=2):(K=r,yt===0&&wt(Na)),K!==r&&(xt=O,K=dn()),O=K,O===r&&(O=Y,t.substr(Y,2)===Kn?(K=Kn,Y+=2):(K=r,yt===0&&wt(Au)),K!==r&&(xt=O,K=yh()),O=K,O===r&&(O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(Oa.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(La)),re!==r?(xt=O,K=Bo(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Iu()))))))))),O}function Iu(){var O,K,re,de,Je,At,dr,vr,Un,mi,Cs,JA;return O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(re=pa(),re!==r?(xt=O,K=Ma(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===$e?(K=$e,Y+=2):(K=r,yt===0&&wt(Ua)),K!==r?(re=Y,de=Y,Je=pa(),Je!==r?(At=Fs(),At!==r?(Je=[Je,At],de=Je):(Y=de,de=r)):(Y=de,de=r),de===r&&(de=pa()),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,K=Ma(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===hf?(K=hf,Y+=2):(K=r,yt===0&&wt(lc)),K!==r?(re=Y,de=Y,Je=Fs(),Je!==r?(At=Fs(),At!==r?(dr=Fs(),dr!==r?(vr=Fs(),vr!==r?(Je=[Je,At,dr,vr],de=Je):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,K=Ma(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===wn?(K=wn,Y+=2):(K=r,yt===0&&wt(ca)),K!==r?(re=Y,de=Y,Je=Fs(),Je!==r?(At=Fs(),At!==r?(dr=Fs(),dr!==r?(vr=Fs(),vr!==r?(Un=Fs(),Un!==r?(mi=Fs(),mi!==r?(Cs=Fs(),Cs!==r?(JA=Fs(),JA!==r?(Je=[Je,At,dr,vr,Un,mi,Cs,JA],de=Je):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,K=LA(re),O=K):(Y=O,O=r)):(Y=O,O=r)))),O}function pa(){var O;return MA.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(ua)),O}function Fs(){var O;return Bl.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(Mt)),O}function Dh(){var O,K,re,de,Je;if(O=Y,K=[],re=Y,t.charCodeAt(Y)===92?(de=oa,Y++):(de=r,yt===0&&wt(aa)),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r),re===r&&(re=Y,t.substr(Y,2)===fa?(de=fa,Y+=2):(de=r,yt===0&&wt(Ha)),de!==r&&(xt=re,de=ns()),re=de,re===r&&(re=Y,de=Y,yt++,Je=Dy(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r))),re!==r)for(;re!==r;)K.push(re),re=Y,t.charCodeAt(Y)===92?(de=oa,Y++):(de=r,yt===0&&wt(aa)),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r),re===r&&(re=Y,t.substr(Y,2)===fa?(de=fa,Y+=2):(de=r,yt===0&&wt(Ha)),de!==r&&(xt=re,de=ns()),re=de,re===r&&(re=Y,de=Y,yt++,Je=Dy(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r)));else K=r;return K!==r&&(xt=O,K=ro(K)),O=K,O}function YA(){var O,K,re,de,Je,At;if(O=Y,t.charCodeAt(Y)===45?(K=cc,Y++):(K=r,yt===0&&wt(pu)),K===r&&(t.charCodeAt(Y)===43?(K=uc,Y++):(K=r,yt===0&&wt(ja))),K===r&&(K=null),K!==r){if(re=[],it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue)),de!==r)for(;de!==r;)re.push(de),it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue));else re=r;if(re!==r)if(t.charCodeAt(Y)===46?(de=Mi,Y++):(de=r,yt===0&&wt(Is)),de!==r){if(Je=[],it.test(t.charAt(Y))?(At=t.charAt(Y),Y++):(At=r,yt===0&&wt(Ue)),At!==r)for(;At!==r;)Je.push(At),it.test(t.charAt(Y))?(At=t.charAt(Y),Y++):(At=r,yt===0&&wt(Ue));else Je=r;Je!==r?(xt=O,K=vl(K,re,Je),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;if(O===r){if(O=Y,t.charCodeAt(Y)===45?(K=cc,Y++):(K=r,yt===0&&wt(pu)),K===r&&(t.charCodeAt(Y)===43?(K=uc,Y++):(K=r,yt===0&&wt(ja))),K===r&&(K=null),K!==r){if(re=[],it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue)),de!==r)for(;de!==r;)re.push(de),it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue));else re=r;re!==r?(xt=O,K=gf(K,re),O=K):(Y=O,O=r)}else Y=O,O=r;if(O===r&&(O=Y,K=VA(),K!==r&&(xt=O,K=fc(K)),O=K,O===r&&(O=Y,K=pc(),K!==r&&(xt=O,K=wi(K)),O=K,O===r)))if(O=Y,t.charCodeAt(Y)===40?(K=ye,Y++):(K=r,yt===0&&wt(Ae)),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=io(),de!==r){for(Je=[],At=kt();At!==r;)Je.push(At),At=kt();Je!==r?(t.charCodeAt(Y)===41?(At=se,Y++):(At=r,yt===0&&wt(Z)),At!==r?(xt=O,K=Qn(de),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r}return O}function vf(){var O,K,re,de,Je,At,dr,vr;if(O=Y,K=YA(),K!==r){for(re=[],de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===42?(At=Ac,Y++):(At=r,yt===0&&wt(Ke)),At===r&&(t.charCodeAt(Y)===47?(At=st,Y++):(At=r,yt===0&&wt(St))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=YA(),vr!==r?(xt=de,Je=lr(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r;for(;de!==r;){for(re.push(de),de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===42?(At=Ac,Y++):(At=r,yt===0&&wt(Ke)),At===r&&(t.charCodeAt(Y)===47?(At=st,Y++):(At=r,yt===0&&wt(St))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=YA(),vr!==r?(xt=de,Je=lr(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r}re!==r?(xt=O,K=te(K,re),O=K):(Y=O,O=r)}else Y=O,O=r;return O}function io(){var O,K,re,de,Je,At,dr,vr;if(O=Y,K=vf(),K!==r){for(re=[],de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===43?(At=uc,Y++):(At=r,yt===0&&wt(ja)),At===r&&(t.charCodeAt(Y)===45?(At=cc,Y++):(At=r,yt===0&&wt(pu))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=vf(),vr!==r?(xt=de,Je=Ee(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r;for(;de!==r;){for(re.push(de),de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===43?(At=uc,Y++):(At=r,yt===0&&wt(ja)),At===r&&(t.charCodeAt(Y)===45?(At=cc,Y++):(At=r,yt===0&&wt(pu))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=vf(),vr!==r?(xt=de,Je=Ee(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r}re!==r?(xt=O,K=te(K,re),O=K):(Y=O,O=r)}else Y=O,O=r;return O}function Zr(){var O,K,re,de,Je,At;if(O=Y,t.substr(Y,3)===Oe?(K=Oe,Y+=3):(K=r,yt===0&&wt(dt)),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=io(),de!==r){for(Je=[],At=kt();At!==r;)Je.push(At),At=kt();Je!==r?(t.substr(Y,2)===Et?(At=Et,Y+=2):(At=r,yt===0&&wt(bt)),At!==r?(xt=O,K=tr(de),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;return O}function bh(){var O,K,re,de;return O=Y,t.substr(Y,2)===An?(K=An,Y+=2):(K=r,yt===0&&wt(li)),K!==r?(re=Aa(),re!==r?(t.charCodeAt(Y)===41?(de=se,Y++):(de=r,yt===0&&wt(Z)),de!==r?(xt=O,K=qi(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function VA(){var O,K,re,de,Je,At;return O=Y,t.substr(Y,2)===Tn?(K=Tn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,2)===my?(de=my,Y+=2):(de=r,yt===0&&wt(Z1)),de!==r?(Je=Rs(),Je!==r?(t.charCodeAt(Y)===125?(At=j,Y++):(At=r,yt===0&&wt(rt)),At!==r?(xt=O,K=vo(re,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(K=Tn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,3)===yy?(de=yy,Y+=3):(de=r,yt===0&&wt(Eh)),de!==r?(xt=O,K=$1(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(K=Tn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,2)===So?(de=So,Y+=2):(de=r,yt===0&&wt(Ih)),de!==r?(Je=Rs(),Je!==r?(t.charCodeAt(Y)===125?(At=j,Y++):(At=r,yt===0&&wt(rt)),At!==r?(xt=O,K=Ch(re,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(K=Tn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,3)===hu?(de=hu,Y+=3):(de=r,yt===0&&wt(wh)),de!==r?(xt=O,K=Fg(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(K=Tn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.charCodeAt(Y)===125?(de=j,Y++):(de=r,yt===0&&wt(rt)),de!==r?(xt=O,K=Ng(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.charCodeAt(Y)===36?(K=Og,Y++):(K=r,yt===0&&wt(Ey)),K!==r?(re=pc(),re!==r?(xt=O,K=Ng(re),O=K):(Y=O,O=r)):(Y=O,O=r)))))),O}function Sy(){var O,K,re;return O=Y,K=Wg(),K!==r?(xt=Y,re=df(K),re?re=void 0:re=r,re!==r?(xt=O,K=Do(K),O=K):(Y=O,O=r)):(Y=O,O=r),O}function Wg(){var O,K,re,de,Je;if(O=Y,K=[],re=Y,de=Y,yt++,Je=xh(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r),re!==r)for(;re!==r;)K.push(re),re=Y,de=Y,yt++,Je=xh(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r);else K=r;return K!==r&&(xt=O,K=ro(K)),O=K,O}function Ph(){var O,K,re;if(O=Y,K=[],Sl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Bh)),re!==r)for(;re!==r;)K.push(re),Sl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Bh));else K=r;return K!==r&&(xt=O,K=Lg()),O=K,O}function pc(){var O,K,re;if(O=Y,K=[],Dl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(bl)),re!==r)for(;re!==r;)K.push(re),Dl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(bl));else K=r;return K!==r&&(xt=O,K=Lg()),O=K,O}function Dy(){var O;return Iy.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(UA)),O}function xh(){var O;return Cy.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(wy)),O}function kt(){var O,K;if(O=[],_A.test(t.charAt(Y))?(K=t.charAt(Y),Y++):(K=r,yt===0&&wt(HA)),K!==r)for(;K!==r;)O.push(K),_A.test(t.charAt(Y))?(K=t.charAt(Y),Y++):(K=r,yt===0&&wt(HA));else O=r;return O}if(gu=a(),gu!==r&&Y===t.length)return gu;throw gu!==r&&Y!1}){try{return(0,Eee.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fE(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:s},a)=>`${fx(r)}${s===";"?a!==t.length-1||e?";":"":" &"}`).join(" ")}function fx(t){return`${AE(t.chain)}${t.then?` ${HU(t.then)}`:""}`}function HU(t){return`${t.type} ${fx(t.line)}`}function AE(t){return`${GU(t)}${t.then?` ${jU(t.then)}`:""}`}function jU(t){return`${t.type} ${AE(t.chain)}`}function GU(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>cx(e)).join(" ")} `:""}${t.args.map(e=>qU(e)).join(" ")}`;case"subshell":return`(${fE(t.subshell)})${t.args.length>0?` ${t.args.map(e=>H2(e)).join(" ")}`:""}`;case"group":return`{ ${fE(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>H2(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>cx(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function cx(t){return`${t.name}=${t.args[0]?vd(t.args[0]):""}`}function qU(t){switch(t.type){case"redirection":return H2(t);case"argument":return vd(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function H2(t){return`${t.subtype} ${t.args.map(e=>vd(e)).join(" ")}`}function vd(t){return t.segments.map(e=>WU(e)).join("")}function WU(t){let e=(s,a)=>a?`"${s}"`:s,r=s=>s===""?"''":s.match(/[()}<>$|&;"'\n\t ]/)?s.match(/['\t\p{C}]/u)?s.match(/'/)?`"${s.replace(/["$\t\p{C}]/u,U5e)}"`:`$'${s.replace(/[\t\p{C}]/u,Cee)}'`:`'${s}'`:s;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`$(${fE(t.shell)})`,t.quoted);case"variable":return e(typeof t.defaultValue>"u"?typeof t.alternativeValue>"u"?`\${${t.name}}`:t.alternativeValue.length===0?`\${${t.name}:+}`:`\${${t.name}:+${t.alternativeValue.map(s=>vd(s)).join(" ")}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(s=>vd(s)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${Ax(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function Ax(t){let e=a=>{switch(a){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${a}"`)}},r=(a,n)=>n?`( ${a} )`:a,s=a=>r(Ax(a),!["number","variable"].includes(a.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${s(t.left)} ${e(t.type)} ${s(t.right)}`}}var Eee,Iee,M5e,Cee,U5e,wee=Xe(()=>{Eee=ut(yee());Iee=new Map([["\f","\\f"],[` -`,"\\n"],["\r","\\r"],[" ","\\t"],["\v","\\v"],["\0","\\0"]]),M5e=new Map([["\\","\\\\"],["$","\\$"],['"','\\"'],...Array.from(Iee,([t,e])=>[t,`"$'${e}'"`])]),Cee=t=>Iee.get(t)??`\\x${t.charCodeAt(0).toString(16).padStart(2,"0")}`,U5e=t=>M5e.get(t)??`"$'${Cee(t)}'"`});var vee=_((eQt,Bee)=>{"use strict";function _5e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Sd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Sd)}_5e(Sd,Error);Sd.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;Cue&&(ue=W,le=[]),le.push(Ue))}function rt(Ue,x){return new Sd(Ue,null,null,x)}function Fe(Ue,x,w){return new Sd(Sd.buildMessage(Ue,x),Ue,x,w)}function Ne(){var Ue,x,w,b;return Ue=W,x=Pe(),x!==r?(t.charCodeAt(W)===47?(w=n,W++):(w=r,me===0&&j(c)),w!==r?(b=Pe(),b!==r?(ee=Ue,x=f(x,b),Ue=x):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r),Ue===r&&(Ue=W,x=Pe(),x!==r&&(ee=Ue,x=p(x)),Ue=x),Ue}function Pe(){var Ue,x,w,b;return Ue=W,x=Ve(),x!==r?(t.charCodeAt(W)===64?(w=h,W++):(w=r,me===0&&j(E)),w!==r?(b=it(),b!==r?(ee=Ue,x=C(x,b),Ue=x):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r),Ue===r&&(Ue=W,x=Ve(),x!==r&&(ee=Ue,x=S(x)),Ue=x),Ue}function Ve(){var Ue,x,w,b,y;return Ue=W,t.charCodeAt(W)===64?(x=h,W++):(x=r,me===0&&j(E)),x!==r?(w=ke(),w!==r?(t.charCodeAt(W)===47?(b=n,W++):(b=r,me===0&&j(c)),b!==r?(y=ke(),y!==r?(ee=Ue,x=P(),Ue=x):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r),Ue===r&&(Ue=W,x=ke(),x!==r&&(ee=Ue,x=P()),Ue=x),Ue}function ke(){var Ue,x,w;if(Ue=W,x=[],I.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(R)),w!==r)for(;w!==r;)x.push(w),I.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(R));else x=r;return x!==r&&(ee=Ue,x=P()),Ue=x,Ue}function it(){var Ue,x,w;if(Ue=W,x=[],N.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(U)),w!==r)for(;w!==r;)x.push(w),N.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(U));else x=r;return x!==r&&(ee=Ue,x=P()),Ue=x,Ue}if(pe=a(),pe!==r&&W===t.length)return pe;throw pe!==r&&W{See=ut(vee())});var bd=_((rQt,Dd)=>{"use strict";function bee(t){return typeof t>"u"||t===null}function j5e(t){return typeof t=="object"&&t!==null}function G5e(t){return Array.isArray(t)?t:bee(t)?[]:[t]}function q5e(t,e){var r,s,a,n;if(e)for(n=Object.keys(e),r=0,s=n.length;r{"use strict";function j2(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}j2.prototype=Object.create(Error.prototype);j2.prototype.constructor=j2;j2.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};Pee.exports=j2});var Qee=_((iQt,kee)=>{"use strict";var xee=bd();function YU(t,e,r,s,a){this.name=t,this.buffer=e,this.position=r,this.line=s,this.column=a}YU.prototype.getSnippet=function(e,r){var s,a,n,c,f;if(!this.buffer)return null;for(e=e||4,r=r||75,s="",a=this.position;a>0&&`\0\r -\x85\u2028\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){s=" ... ",a+=5;break}for(n="",c=this.position;cr/2-1){n=" ... ",c-=5;break}return f=this.buffer.slice(a,c),xee.repeat(" ",e)+s+f+n+` -`+xee.repeat(" ",e+this.position-a+s.length)+"^"};YU.prototype.toString=function(e){var r,s="";return this.name&&(s+='in "'+this.name+'" '),s+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(s+=`: -`+r)),s};kee.exports=YU});var Ss=_((sQt,Ree)=>{"use strict";var Tee=pE(),V5e=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],J5e=["scalar","sequence","mapping"];function K5e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(s){e[String(s)]=r})}),e}function z5e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(V5e.indexOf(r)===-1)throw new Tee('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=K5e(e.styleAliases||null),J5e.indexOf(this.kind)===-1)throw new Tee('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}Ree.exports=z5e});var Pd=_((oQt,Nee)=>{"use strict";var Fee=bd(),gx=pE(),X5e=Ss();function VU(t,e,r){var s=[];return t.include.forEach(function(a){r=VU(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,c){n.tag===a.tag&&n.kind===a.kind&&s.push(c)}),r.push(a)}),r.filter(function(a,n){return s.indexOf(n)===-1})}function Z5e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function s(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e{"use strict";var $5e=Ss();Oee.exports=new $5e("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var Uee=_((lQt,Mee)=>{"use strict";var eqe=Ss();Mee.exports=new eqe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var Hee=_((cQt,_ee)=>{"use strict";var tqe=Ss();_ee.exports=new tqe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var dx=_((uQt,jee)=>{"use strict";var rqe=Pd();jee.exports=new rqe({explicit:[Lee(),Uee(),Hee()]})});var qee=_((fQt,Gee)=>{"use strict";var nqe=Ss();function iqe(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function sqe(){return null}function oqe(t){return t===null}Gee.exports=new nqe("tag:yaml.org,2002:null",{kind:"scalar",resolve:iqe,construct:sqe,predicate:oqe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var Yee=_((AQt,Wee)=>{"use strict";var aqe=Ss();function lqe(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function cqe(t){return t==="true"||t==="True"||t==="TRUE"}function uqe(t){return Object.prototype.toString.call(t)==="[object Boolean]"}Wee.exports=new aqe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:lqe,construct:cqe,predicate:uqe,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var Jee=_((pQt,Vee)=>{"use strict";var fqe=bd(),Aqe=Ss();function pqe(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function hqe(t){return 48<=t&&t<=55}function gqe(t){return 48<=t&&t<=57}function dqe(t){if(t===null)return!1;var e=t.length,r=0,s=!1,a;if(!e)return!1;if(a=t[r],(a==="-"||a==="+")&&(a=t[++r]),a==="0"){if(r+1===e)return!0;if(a=t[++r],a==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var Xee=_((hQt,zee)=>{"use strict";var Kee=bd(),Eqe=Ss(),Iqe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Cqe(t){return!(t===null||!Iqe.test(t)||t[t.length-1]==="_")}function wqe(t){var e,r,s,a;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,a=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(n){a.unshift(parseFloat(n,10))}),e=0,s=1,a.forEach(function(n){e+=n*s,s*=60}),r*e):r*parseFloat(e,10)}var Bqe=/^[-+]?[0-9]+e/;function vqe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Kee.isNegativeZero(t))return"-0.0";return r=t.toString(10),Bqe.test(r)?r.replace("e",".e"):r}function Sqe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Kee.isNegativeZero(t))}zee.exports=new Eqe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Cqe,construct:wqe,predicate:Sqe,represent:vqe,defaultStyle:"lowercase"})});var JU=_((gQt,Zee)=>{"use strict";var Dqe=Pd();Zee.exports=new Dqe({include:[dx()],implicit:[qee(),Yee(),Jee(),Xee()]})});var KU=_((dQt,$ee)=>{"use strict";var bqe=Pd();$ee.exports=new bqe({include:[JU()]})});var nte=_((mQt,rte)=>{"use strict";var Pqe=Ss(),ete=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),tte=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function xqe(t){return t===null?!1:ete.exec(t)!==null||tte.exec(t)!==null}function kqe(t){var e,r,s,a,n,c,f,p=0,h=null,E,C,S;if(e=ete.exec(t),e===null&&(e=tte.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],s=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,s,a));if(n=+e[4],c=+e[5],f=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+="0";p=+p}return e[9]&&(E=+e[10],C=+(e[11]||0),h=(E*60+C)*6e4,e[9]==="-"&&(h=-h)),S=new Date(Date.UTC(r,s,a,n,c,f,p)),h&&S.setTime(S.getTime()-h),S}function Qqe(t){return t.toISOString()}rte.exports=new Pqe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:xqe,construct:kqe,instanceOf:Date,represent:Qqe})});var ste=_((yQt,ite)=>{"use strict";var Tqe=Ss();function Rqe(t){return t==="<<"||t===null}ite.exports=new Tqe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Rqe})});var lte=_((EQt,ate)=>{"use strict";var xd;try{ote=Ie,xd=ote("buffer").Buffer}catch{}var ote,Fqe=Ss(),zU=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function Nqe(t){if(t===null)return!1;var e,r,s=0,a=t.length,n=zU;for(r=0;r64)){if(e<0)return!1;s+=6}return s%8===0}function Oqe(t){var e,r,s=t.replace(/[\r\n=]/g,""),a=s.length,n=zU,c=0,f=[];for(e=0;e>16&255),f.push(c>>8&255),f.push(c&255)),c=c<<6|n.indexOf(s.charAt(e));return r=a%4*6,r===0?(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)):r===18?(f.push(c>>10&255),f.push(c>>2&255)):r===12&&f.push(c>>4&255),xd?xd.from?xd.from(f):new xd(f):f}function Lqe(t){var e="",r=0,s,a,n=t.length,c=zU;for(s=0;s>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]),r=(r<<8)+t[s];return a=n%3,a===0?(e+=c[r>>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]):a===2?(e+=c[r>>10&63],e+=c[r>>4&63],e+=c[r<<2&63],e+=c[64]):a===1&&(e+=c[r>>2&63],e+=c[r<<4&63],e+=c[64],e+=c[64]),e}function Mqe(t){return xd&&xd.isBuffer(t)}ate.exports=new Fqe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Nqe,construct:Oqe,predicate:Mqe,represent:Lqe})});var ute=_((CQt,cte)=>{"use strict";var Uqe=Ss(),_qe=Object.prototype.hasOwnProperty,Hqe=Object.prototype.toString;function jqe(t){if(t===null)return!0;var e=[],r,s,a,n,c,f=t;for(r=0,s=f.length;r{"use strict";var qqe=Ss(),Wqe=Object.prototype.toString;function Yqe(t){if(t===null)return!0;var e,r,s,a,n,c=t;for(n=new Array(c.length),e=0,r=c.length;e{"use strict";var Jqe=Ss(),Kqe=Object.prototype.hasOwnProperty;function zqe(t){if(t===null)return!0;var e,r=t;for(e in r)if(Kqe.call(r,e)&&r[e]!==null)return!1;return!0}function Xqe(t){return t!==null?t:{}}pte.exports=new Jqe("tag:yaml.org,2002:set",{kind:"mapping",resolve:zqe,construct:Xqe})});var gE=_((vQt,gte)=>{"use strict";var Zqe=Pd();gte.exports=new Zqe({include:[KU()],implicit:[nte(),ste()],explicit:[lte(),ute(),Ate(),hte()]})});var mte=_((SQt,dte)=>{"use strict";var $qe=Ss();function e9e(){return!0}function t9e(){}function r9e(){return""}function n9e(t){return typeof t>"u"}dte.exports=new $qe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:e9e,construct:t9e,predicate:n9e,represent:r9e})});var Ete=_((DQt,yte)=>{"use strict";var i9e=Ss();function s9e(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),s="";return!(e[0]==="/"&&(r&&(s=r[1]),s.length>3||e[e.length-s.length-1]!=="/"))}function o9e(t){var e=t,r=/\/([gim]*)$/.exec(t),s="";return e[0]==="/"&&(r&&(s=r[1]),e=e.slice(1,e.length-s.length-1)),new RegExp(e,s)}function a9e(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function l9e(t){return Object.prototype.toString.call(t)==="[object RegExp]"}yte.exports=new i9e("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:s9e,construct:o9e,predicate:l9e,represent:a9e})});var wte=_((bQt,Cte)=>{"use strict";var mx;try{Ite=Ie,mx=Ite("esprima")}catch{typeof window<"u"&&(mx=window.esprima)}var Ite,c9e=Ss();function u9e(t){if(t===null)return!1;try{var e="("+t+")",r=mx.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function f9e(t){var e="("+t+")",r=mx.parse(e,{range:!0}),s=[],a;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(n){s.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(s,e.slice(a[0]+1,a[1]-1)):new Function(s,"return "+e.slice(a[0],a[1]))}function A9e(t){return t.toString()}function p9e(t){return Object.prototype.toString.call(t)==="[object Function]"}Cte.exports=new c9e("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:u9e,construct:f9e,predicate:p9e,represent:A9e})});var G2=_((xQt,vte)=>{"use strict";var Bte=Pd();vte.exports=Bte.DEFAULT=new Bte({include:[gE()],explicit:[mte(),Ete(),wte()]})});var Gte=_((kQt,q2)=>{"use strict";var Ip=bd(),Qte=pE(),h9e=Qee(),Tte=gE(),g9e=G2(),i0=Object.prototype.hasOwnProperty,yx=1,Rte=2,Fte=3,Ex=4,XU=1,d9e=2,Ste=3,m9e=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,y9e=/[\x85\u2028\u2029]/,E9e=/[,\[\]\{\}]/,Nte=/^(?:!|!!|![a-z\-]+!)$/i,Ote=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Dte(t){return Object.prototype.toString.call(t)}function jf(t){return t===10||t===13}function Qd(t){return t===9||t===32}function rl(t){return t===9||t===32||t===10||t===13}function dE(t){return t===44||t===91||t===93||t===123||t===125}function I9e(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function C9e(t){return t===120?2:t===117?4:t===85?8:0}function w9e(t){return 48<=t&&t<=57?t-48:-1}function bte(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` -`:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"\x1B":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function B9e(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var Lte=new Array(256),Mte=new Array(256);for(kd=0;kd<256;kd++)Lte[kd]=bte(kd)?1:0,Mte[kd]=bte(kd);var kd;function v9e(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||g9e,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function Ute(t,e){return new Qte(e,new h9e(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function Rr(t,e){throw Ute(t,e)}function Ix(t,e){t.onWarning&&t.onWarning.call(null,Ute(t,e))}var Pte={YAML:function(e,r,s){var a,n,c;e.version!==null&&Rr(e,"duplication of %YAML directive"),s.length!==1&&Rr(e,"YAML directive accepts exactly one argument"),a=/^([0-9]+)\.([0-9]+)$/.exec(s[0]),a===null&&Rr(e,"ill-formed argument of the YAML directive"),n=parseInt(a[1],10),c=parseInt(a[2],10),n!==1&&Rr(e,"unacceptable YAML version of the document"),e.version=s[0],e.checkLineBreaks=c<2,c!==1&&c!==2&&Ix(e,"unsupported YAML version of the document")},TAG:function(e,r,s){var a,n;s.length!==2&&Rr(e,"TAG directive accepts exactly two arguments"),a=s[0],n=s[1],Nte.test(a)||Rr(e,"ill-formed tag handle (first argument) of the TAG directive"),i0.call(e.tagMap,a)&&Rr(e,'there is a previously declared suffix for "'+a+'" tag handle'),Ote.test(n)||Rr(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[a]=n}};function n0(t,e,r,s){var a,n,c,f;if(e1&&(t.result+=Ip.repeat(` -`,e-1))}function S9e(t,e,r){var s,a,n,c,f,p,h,E,C=t.kind,S=t.result,P;if(P=t.input.charCodeAt(t.position),rl(P)||dE(P)||P===35||P===38||P===42||P===33||P===124||P===62||P===39||P===34||P===37||P===64||P===96||(P===63||P===45)&&(a=t.input.charCodeAt(t.position+1),rl(a)||r&&dE(a)))return!1;for(t.kind="scalar",t.result="",n=c=t.position,f=!1;P!==0;){if(P===58){if(a=t.input.charCodeAt(t.position+1),rl(a)||r&&dE(a))break}else if(P===35){if(s=t.input.charCodeAt(t.position-1),rl(s))break}else{if(t.position===t.lineStart&&Cx(t)||r&&dE(P))break;if(jf(P))if(p=t.line,h=t.lineStart,E=t.lineIndent,as(t,!1,-1),t.lineIndent>=e){f=!0,P=t.input.charCodeAt(t.position);continue}else{t.position=c,t.line=p,t.lineStart=h,t.lineIndent=E;break}}f&&(n0(t,n,c,!1),$U(t,t.line-p),n=c=t.position,f=!1),Qd(P)||(c=t.position+1),P=t.input.charCodeAt(++t.position)}return n0(t,n,c,!1),t.result?!0:(t.kind=C,t.result=S,!1)}function D9e(t,e){var r,s,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,s=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(n0(t,s,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)s=t.position,t.position++,a=t.position;else return!0;else jf(r)?(n0(t,s,a,!0),$U(t,as(t,!1,e)),s=a=t.position):t.position===t.lineStart&&Cx(t)?Rr(t,"unexpected end of the document within a single quoted scalar"):(t.position++,a=t.position);Rr(t,"unexpected end of the stream within a single quoted scalar")}function b9e(t,e){var r,s,a,n,c,f;if(f=t.input.charCodeAt(t.position),f!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=s=t.position;(f=t.input.charCodeAt(t.position))!==0;){if(f===34)return n0(t,r,t.position,!0),t.position++,!0;if(f===92){if(n0(t,r,t.position,!0),f=t.input.charCodeAt(++t.position),jf(f))as(t,!1,e);else if(f<256&&Lte[f])t.result+=Mte[f],t.position++;else if((c=C9e(f))>0){for(a=c,n=0;a>0;a--)f=t.input.charCodeAt(++t.position),(c=I9e(f))>=0?n=(n<<4)+c:Rr(t,"expected hexadecimal character");t.result+=B9e(n),t.position++}else Rr(t,"unknown escape sequence");r=s=t.position}else jf(f)?(n0(t,r,s,!0),$U(t,as(t,!1,e)),r=s=t.position):t.position===t.lineStart&&Cx(t)?Rr(t,"unexpected end of the document within a double quoted scalar"):(t.position++,s=t.position)}Rr(t,"unexpected end of the stream within a double quoted scalar")}function P9e(t,e){var r=!0,s,a=t.tag,n,c=t.anchor,f,p,h,E,C,S={},P,I,R,N;if(N=t.input.charCodeAt(t.position),N===91)p=93,C=!1,n=[];else if(N===123)p=125,C=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),N=t.input.charCodeAt(++t.position);N!==0;){if(as(t,!0,e),N=t.input.charCodeAt(t.position),N===p)return t.position++,t.tag=a,t.anchor=c,t.kind=C?"mapping":"sequence",t.result=n,!0;r||Rr(t,"missed comma between flow collection entries"),I=P=R=null,h=E=!1,N===63&&(f=t.input.charCodeAt(t.position+1),rl(f)&&(h=E=!0,t.position++,as(t,!0,e))),s=t.line,yE(t,e,yx,!1,!0),I=t.tag,P=t.result,as(t,!0,e),N=t.input.charCodeAt(t.position),(E||t.line===s)&&N===58&&(h=!0,N=t.input.charCodeAt(++t.position),as(t,!0,e),yE(t,e,yx,!1,!0),R=t.result),C?mE(t,n,S,I,P,R):h?n.push(mE(t,null,S,I,P,R)):n.push(P),as(t,!0,e),N=t.input.charCodeAt(t.position),N===44?(r=!0,N=t.input.charCodeAt(++t.position)):r=!1}Rr(t,"unexpected end of the stream within a flow collection")}function x9e(t,e){var r,s,a=XU,n=!1,c=!1,f=e,p=0,h=!1,E,C;if(C=t.input.charCodeAt(t.position),C===124)s=!1;else if(C===62)s=!0;else return!1;for(t.kind="scalar",t.result="";C!==0;)if(C=t.input.charCodeAt(++t.position),C===43||C===45)XU===a?a=C===43?Ste:d9e:Rr(t,"repeat of a chomping mode identifier");else if((E=w9e(C))>=0)E===0?Rr(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Rr(t,"repeat of an indentation width identifier"):(f=e+E-1,c=!0);else break;if(Qd(C)){do C=t.input.charCodeAt(++t.position);while(Qd(C));if(C===35)do C=t.input.charCodeAt(++t.position);while(!jf(C)&&C!==0)}for(;C!==0;){for(ZU(t),t.lineIndent=0,C=t.input.charCodeAt(t.position);(!c||t.lineIndentf&&(f=t.lineIndent),jf(C)){p++;continue}if(t.lineIndente)&&p!==0)Rr(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(yE(t,e,Ex,!0,a)&&(I?S=t.result:P=t.result),I||(mE(t,h,E,C,S,P,n,c),C=S=P=null),as(t,!0,-1),N=t.input.charCodeAt(t.position)),t.lineIndent>e&&N!==0)Rr(t,"bad indentation of a mapping entry");else if(t.lineIndente?p=1:t.lineIndent===e?p=0:t.lineIndente?p=1:t.lineIndent===e?p=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),C=0,S=t.implicitTypes.length;C tag; it should be "'+P.kind+'", not "'+t.kind+'"'),P.resolve(t.result)?(t.result=P.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Rr(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):Rr(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||E}function F9e(t){var e=t.position,r,s,a,n=!1,c;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(c=t.input.charCodeAt(t.position))!==0&&(as(t,!0,-1),c=t.input.charCodeAt(t.position),!(t.lineIndent>0||c!==37));){for(n=!0,c=t.input.charCodeAt(++t.position),r=t.position;c!==0&&!rl(c);)c=t.input.charCodeAt(++t.position);for(s=t.input.slice(r,t.position),a=[],s.length<1&&Rr(t,"directive name must not be less than one character in length");c!==0;){for(;Qd(c);)c=t.input.charCodeAt(++t.position);if(c===35){do c=t.input.charCodeAt(++t.position);while(c!==0&&!jf(c));break}if(jf(c))break;for(r=t.position;c!==0&&!rl(c);)c=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}c!==0&&ZU(t),i0.call(Pte,s)?Pte[s](t,s,a):Ix(t,'unknown document directive "'+s+'"')}if(as(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,as(t,!0,-1)):n&&Rr(t,"directives end mark is expected"),yE(t,t.lineIndent-1,Ex,!1,!0),as(t,!0,-1),t.checkLineBreaks&&y9e.test(t.input.slice(e,t.position))&&Ix(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Cx(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,as(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var s=_te(t,r);if(typeof e!="function")return s;for(var a=0,n=s.length;a"u"&&(r=e,e=null),Hte(t,e,Ip.extend({schema:Tte},r))}function O9e(t,e){return jte(t,Ip.extend({schema:Tte},e))}q2.exports.loadAll=Hte;q2.exports.load=jte;q2.exports.safeLoadAll=N9e;q2.exports.safeLoad=O9e});var Are=_((QQt,n_)=>{"use strict";var Y2=bd(),V2=pE(),L9e=G2(),M9e=gE(),Xte=Object.prototype.toString,Zte=Object.prototype.hasOwnProperty,U9e=9,W2=10,_9e=13,H9e=32,j9e=33,G9e=34,$te=35,q9e=37,W9e=38,Y9e=39,V9e=42,ere=44,J9e=45,tre=58,K9e=61,z9e=62,X9e=63,Z9e=64,rre=91,nre=93,$9e=96,ire=123,eWe=124,sre=125,_o={};_o[0]="\\0";_o[7]="\\a";_o[8]="\\b";_o[9]="\\t";_o[10]="\\n";_o[11]="\\v";_o[12]="\\f";_o[13]="\\r";_o[27]="\\e";_o[34]='\\"';_o[92]="\\\\";_o[133]="\\N";_o[160]="\\_";_o[8232]="\\L";_o[8233]="\\P";var tWe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function rWe(t,e){var r,s,a,n,c,f,p;if(e===null)return{};for(r={},s=Object.keys(e),a=0,n=s.length;a0?t.charCodeAt(n-1):null,S=S&&Yte(c,f)}else{for(n=0;ns&&t[C+1]!==" ",C=n);else if(!EE(c))return wx;f=n>0?t.charCodeAt(n-1):null,S=S&&Yte(c,f)}h=h||E&&n-C-1>s&&t[C+1]!==" "}return!p&&!h?S&&!a(t)?are:lre:r>9&&ore(t)?wx:h?ure:cre}function lWe(t,e,r,s){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&tWe.indexOf(e)!==-1)return"'"+e+"'";var a=t.indent*Math.max(1,r),n=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),c=s||t.flowLevel>-1&&r>=t.flowLevel;function f(p){return iWe(t,p)}switch(aWe(e,c,t.indent,n,f)){case are:return e;case lre:return"'"+e.replace(/'/g,"''")+"'";case cre:return"|"+Vte(e,t.indent)+Jte(Wte(e,a));case ure:return">"+Vte(e,t.indent)+Jte(Wte(cWe(e,n),a));case wx:return'"'+uWe(e,n)+'"';default:throw new V2("impossible error: invalid scalar style")}}()}function Vte(t,e){var r=ore(t)?String(e):"",s=t[t.length-1]===` -`,a=s&&(t[t.length-2]===` -`||t===` -`),n=a?"+":s?"":"-";return r+n+` -`}function Jte(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function cWe(t,e){for(var r=/(\n+)([^\n]*)/g,s=function(){var h=t.indexOf(` -`);return h=h!==-1?h:t.length,r.lastIndex=h,Kte(t.slice(0,h),e)}(),a=t[0]===` -`||t[0]===" ",n,c;c=r.exec(t);){var f=c[1],p=c[2];n=p[0]===" ",s+=f+(!a&&!n&&p!==""?` -`:"")+Kte(p,e),a=n}return s}function Kte(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,s,a=0,n,c=0,f=0,p="";s=r.exec(t);)f=s.index,f-a>e&&(n=c>a?c:f,p+=` -`+t.slice(a,n),a=n+1),c=f;return p+=` -`,t.length-a>e&&c>a?p+=t.slice(a,c)+` -`+t.slice(c+1):p+=t.slice(a),p.slice(1)}function uWe(t){for(var e="",r,s,a,n=0;n=55296&&r<=56319&&(s=t.charCodeAt(n+1),s>=56320&&s<=57343)){e+=qte((r-55296)*1024+s-56320+65536),n++;continue}a=_o[r],e+=!a&&EE(r)?t[n]:a||qte(r)}return e}function fWe(t,e,r){var s="",a=t.tag,n,c;for(n=0,c=r.length;n1024&&(E+="? "),E+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Td(t,e,h,!1,!1)&&(E+=t.dump,s+=E));t.tag=a,t.dump="{"+s+"}"}function hWe(t,e,r,s){var a="",n=t.tag,c=Object.keys(r),f,p,h,E,C,S;if(t.sortKeys===!0)c.sort();else if(typeof t.sortKeys=="function")c.sort(t.sortKeys);else if(t.sortKeys)throw new V2("sortKeys must be a boolean or a function");for(f=0,p=c.length;f1024,C&&(t.dump&&W2===t.dump.charCodeAt(0)?S+="?":S+="? "),S+=t.dump,C&&(S+=e_(t,e)),Td(t,e+1,E,!0,C)&&(t.dump&&W2===t.dump.charCodeAt(0)?S+=":":S+=": ",S+=t.dump,a+=S));t.tag=n,t.dump=a||"{}"}function zte(t,e,r){var s,a,n,c,f,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,c=a.length;n tag resolver accepts not "'+p+'" style');t.dump=s}return!0}return!1}function Td(t,e,r,s,a,n){t.tag=null,t.dump=r,zte(t,r,!1)||zte(t,r,!0);var c=Xte.call(t.dump);s&&(s=t.flowLevel<0||t.flowLevel>e);var f=c==="[object Object]"||c==="[object Array]",p,h;if(f&&(p=t.duplicates.indexOf(r),h=p!==-1),(t.tag!==null&&t.tag!=="?"||h||t.indent!==2&&e>0)&&(a=!1),h&&t.usedDuplicates[p])t.dump="*ref_"+p;else{if(f&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),c==="[object Object]")s&&Object.keys(t.dump).length!==0?(hWe(t,e,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(pWe(t,e,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump));else if(c==="[object Array]"){var E=t.noArrayIndent&&e>0?e-1:e;s&&t.dump.length!==0?(AWe(t,E,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(fWe(t,E,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump))}else if(c==="[object String]")t.tag!=="?"&&lWe(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new V2("unacceptable kind of an object to dump "+c)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function gWe(t,e){var r=[],s=[],a,n;for(t_(t,r,s),a=0,n=s.length;a{"use strict";var Bx=Gte(),pre=Are();function vx(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Wi.exports.Type=Ss();Wi.exports.Schema=Pd();Wi.exports.FAILSAFE_SCHEMA=dx();Wi.exports.JSON_SCHEMA=JU();Wi.exports.CORE_SCHEMA=KU();Wi.exports.DEFAULT_SAFE_SCHEMA=gE();Wi.exports.DEFAULT_FULL_SCHEMA=G2();Wi.exports.load=Bx.load;Wi.exports.loadAll=Bx.loadAll;Wi.exports.safeLoad=Bx.safeLoad;Wi.exports.safeLoadAll=Bx.safeLoadAll;Wi.exports.dump=pre.dump;Wi.exports.safeDump=pre.safeDump;Wi.exports.YAMLException=pE();Wi.exports.MINIMAL_SCHEMA=dx();Wi.exports.SAFE_SCHEMA=gE();Wi.exports.DEFAULT_SCHEMA=G2();Wi.exports.scan=vx("scan");Wi.exports.parse=vx("parse");Wi.exports.compose=vx("compose");Wi.exports.addConstructor=vx("addConstructor")});var dre=_((RQt,gre)=>{"use strict";var mWe=hre();gre.exports=mWe});var yre=_((FQt,mre)=>{"use strict";function yWe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Rd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Rd)}yWe(Rd,Error);Rd.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C({[dt]:Oe})))},ue=function(te){return te},le=function(te){return te},me=Oa("correct indentation"),pe=" ",Be=dn(" ",!1),Ce=function(te){return te.length===lr*St},g=function(te){return te.length===(lr+1)*St},we=function(){return lr++,!0},ye=function(){return lr--,!0},Ae=function(){return la()},se=Oa("pseudostring"),Z=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,De=Kn(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),Re=/^[^\r\n\t ,\][{}:#"']/,mt=Kn(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),j=function(){return la().replace(/^ *| *$/g,"")},rt="--",Fe=dn("--",!1),Ne=/^[a-zA-Z\/0-9]/,Pe=Kn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),Ve=/^[^\r\n\t :,]/,ke=Kn(["\r",` -`," "," ",":",","],!0,!1),it="null",Ue=dn("null",!1),x=function(){return null},w="true",b=dn("true",!1),y=function(){return!0},F="false",z=dn("false",!1),X=function(){return!1},$=Oa("string"),oe='"',xe=dn('"',!1),Te=function(){return""},lt=function(te){return te},Ct=function(te){return te.join("")},qt=/^[^"\\\0-\x1F\x7F]/,ir=Kn(['"',"\\",["\0",""],"\x7F"],!0,!1),Pt='\\"',gn=dn('\\"',!1),Pr=function(){return'"'},Ir="\\\\",Or=dn("\\\\",!1),on=function(){return"\\"},ai="\\/",Io=dn("\\/",!1),rs=function(){return"/"},$s="\\b",Co=dn("\\b",!1),ji=function(){return"\b"},eo="\\f",wo=dn("\\f",!1),QA=function(){return"\f"},Af="\\n",dh=dn("\\n",!1),mh=function(){return` -`},to="\\r",jn=dn("\\r",!1),Ts=function(){return"\r"},ro="\\t",ou=dn("\\t",!1),au=function(){return" "},lu="\\u",TA=dn("\\u",!1),RA=function(te,Ee,Oe,dt){return String.fromCharCode(parseInt(`0x${te}${Ee}${Oe}${dt}`))},oa=/^[0-9a-fA-F]/,aa=Kn([["0","9"],["a","f"],["A","F"]],!1,!1),FA=Oa("blank space"),gr=/^[ \t]/,Bo=Kn([" "," "],!1,!1),Me=Oa("white space"),cu=/^[ \t\n\r]/,Cr=Kn([" "," ",` -`,"\r"],!1,!1),pf=`\r -`,NA=dn(`\r -`,!1),OA=` -`,uu=dn(` -`,!1),fu="\r",oc=dn("\r",!1),ve=0,Nt=0,ac=[{line:1,column:1}],Oi=0,no=[],Rt=0,xn;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function la(){return t.substring(Nt,ve)}function Gi(){return Ma(Nt,ve)}function Li(te,Ee){throw Ee=Ee!==void 0?Ee:Ma(Nt,ve),hf([Oa(te)],t.substring(Nt,ve),Ee)}function Na(te,Ee){throw Ee=Ee!==void 0?Ee:Ma(Nt,ve),Ua(te,Ee)}function dn(te,Ee){return{type:"literal",text:te,ignoreCase:Ee}}function Kn(te,Ee,Oe){return{type:"class",parts:te,inverted:Ee,ignoreCase:Oe}}function Au(){return{type:"any"}}function yh(){return{type:"end"}}function Oa(te){return{type:"other",description:te}}function La(te){var Ee=ac[te],Oe;if(Ee)return Ee;for(Oe=te-1;!ac[Oe];)Oe--;for(Ee=ac[Oe],Ee={line:Ee.line,column:Ee.column};OeOi&&(Oi=ve,no=[]),no.push(te))}function Ua(te,Ee){return new Rd(te,null,null,Ee)}function hf(te,Ee,Oe){return new Rd(Rd.buildMessage(te,Ee),te,Ee,Oe)}function lc(){var te;return te=LA(),te}function wn(){var te,Ee,Oe;for(te=ve,Ee=[],Oe=ca();Oe!==r;)Ee.push(Oe),Oe=ca();return Ee!==r&&(Nt=te,Ee=n(Ee)),te=Ee,te}function ca(){var te,Ee,Oe,dt,Et;return te=ve,Ee=Bl(),Ee!==r?(t.charCodeAt(ve)===45?(Oe=c,ve++):(Oe=r,Rt===0&&$e(f)),Oe!==r?(dt=Qn(),dt!==r?(Et=ua(),Et!==r?(Nt=te,Ee=p(Et),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te}function LA(){var te,Ee,Oe;for(te=ve,Ee=[],Oe=MA();Oe!==r;)Ee.push(Oe),Oe=MA();return Ee!==r&&(Nt=te,Ee=h(Ee)),te=Ee,te}function MA(){var te,Ee,Oe,dt,Et,bt,tr,An,li;if(te=ve,Ee=Qn(),Ee===r&&(Ee=null),Ee!==r){if(Oe=ve,t.charCodeAt(ve)===35?(dt=E,ve++):(dt=r,Rt===0&&$e(C)),dt!==r){if(Et=[],bt=ve,tr=ve,Rt++,An=st(),Rt--,An===r?tr=void 0:(ve=tr,tr=r),tr!==r?(t.length>ve?(An=t.charAt(ve),ve++):(An=r,Rt===0&&$e(S)),An!==r?(tr=[tr,An],bt=tr):(ve=bt,bt=r)):(ve=bt,bt=r),bt!==r)for(;bt!==r;)Et.push(bt),bt=ve,tr=ve,Rt++,An=st(),Rt--,An===r?tr=void 0:(ve=tr,tr=r),tr!==r?(t.length>ve?(An=t.charAt(ve),ve++):(An=r,Rt===0&&$e(S)),An!==r?(tr=[tr,An],bt=tr):(ve=bt,bt=r)):(ve=bt,bt=r);else Et=r;Et!==r?(dt=[dt,Et],Oe=dt):(ve=Oe,Oe=r)}else ve=Oe,Oe=r;if(Oe===r&&(Oe=null),Oe!==r){if(dt=[],Et=Ke(),Et!==r)for(;Et!==r;)dt.push(Et),Et=Ke();else dt=r;dt!==r?(Nt=te,Ee=P(),te=Ee):(ve=te,te=r)}else ve=te,te=r}else ve=te,te=r;if(te===r&&(te=ve,Ee=Bl(),Ee!==r?(Oe=Ha(),Oe!==r?(dt=Qn(),dt===r&&(dt=null),dt!==r?(t.charCodeAt(ve)===58?(Et=I,ve++):(Et=r,Rt===0&&$e(R)),Et!==r?(bt=Qn(),bt===r&&(bt=null),bt!==r?(tr=ua(),tr!==r?(Nt=te,Ee=N(Oe,tr),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r&&(te=ve,Ee=Bl(),Ee!==r?(Oe=ns(),Oe!==r?(dt=Qn(),dt===r&&(dt=null),dt!==r?(t.charCodeAt(ve)===58?(Et=I,ve++):(Et=r,Rt===0&&$e(R)),Et!==r?(bt=Qn(),bt===r&&(bt=null),bt!==r?(tr=ua(),tr!==r?(Nt=te,Ee=N(Oe,tr),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r))){if(te=ve,Ee=Bl(),Ee!==r)if(Oe=ns(),Oe!==r)if(dt=Qn(),dt!==r)if(Et=pu(),Et!==r){if(bt=[],tr=Ke(),tr!==r)for(;tr!==r;)bt.push(tr),tr=Ke();else bt=r;bt!==r?(Nt=te,Ee=N(Oe,Et),te=Ee):(ve=te,te=r)}else ve=te,te=r;else ve=te,te=r;else ve=te,te=r;else ve=te,te=r;if(te===r)if(te=ve,Ee=Bl(),Ee!==r)if(Oe=ns(),Oe!==r){if(dt=[],Et=ve,bt=Qn(),bt===r&&(bt=null),bt!==r?(t.charCodeAt(ve)===44?(tr=U,ve++):(tr=r,Rt===0&&$e(W)),tr!==r?(An=Qn(),An===r&&(An=null),An!==r?(li=ns(),li!==r?(Nt=Et,bt=ee(Oe,li),Et=bt):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r),Et!==r)for(;Et!==r;)dt.push(Et),Et=ve,bt=Qn(),bt===r&&(bt=null),bt!==r?(t.charCodeAt(ve)===44?(tr=U,ve++):(tr=r,Rt===0&&$e(W)),tr!==r?(An=Qn(),An===r&&(An=null),An!==r?(li=ns(),li!==r?(Nt=Et,bt=ee(Oe,li),Et=bt):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r);else dt=r;dt!==r?(Et=Qn(),Et===r&&(Et=null),Et!==r?(t.charCodeAt(ve)===58?(bt=I,ve++):(bt=r,Rt===0&&$e(R)),bt!==r?(tr=Qn(),tr===r&&(tr=null),tr!==r?(An=ua(),An!==r?(Nt=te,Ee=ie(Oe,dt,An),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)}else ve=te,te=r;else ve=te,te=r}return te}function ua(){var te,Ee,Oe,dt,Et,bt,tr;if(te=ve,Ee=ve,Rt++,Oe=ve,dt=st(),dt!==r?(Et=Mt(),Et!==r?(t.charCodeAt(ve)===45?(bt=c,ve++):(bt=r,Rt===0&&$e(f)),bt!==r?(tr=Qn(),tr!==r?(dt=[dt,Et,bt,tr],Oe=dt):(ve=Oe,Oe=r)):(ve=Oe,Oe=r)):(ve=Oe,Oe=r)):(ve=Oe,Oe=r),Rt--,Oe!==r?(ve=Ee,Ee=void 0):Ee=r,Ee!==r?(Oe=Ke(),Oe!==r?(dt=kn(),dt!==r?(Et=wn(),Et!==r?(bt=fa(),bt!==r?(Nt=te,Ee=ue(Et),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r&&(te=ve,Ee=st(),Ee!==r?(Oe=kn(),Oe!==r?(dt=LA(),dt!==r?(Et=fa(),Et!==r?(Nt=te,Ee=ue(dt),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r))if(te=ve,Ee=cc(),Ee!==r){if(Oe=[],dt=Ke(),dt!==r)for(;dt!==r;)Oe.push(dt),dt=Ke();else Oe=r;Oe!==r?(Nt=te,Ee=le(Ee),te=Ee):(ve=te,te=r)}else ve=te,te=r;return te}function Bl(){var te,Ee,Oe;for(Rt++,te=ve,Ee=[],t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&$e(Be));Oe!==r;)Ee.push(Oe),t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&$e(Be));return Ee!==r?(Nt=ve,Oe=Ce(Ee),Oe?Oe=void 0:Oe=r,Oe!==r?(Ee=[Ee,Oe],te=Ee):(ve=te,te=r)):(ve=te,te=r),Rt--,te===r&&(Ee=r,Rt===0&&$e(me)),te}function Mt(){var te,Ee,Oe;for(te=ve,Ee=[],t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&$e(Be));Oe!==r;)Ee.push(Oe),t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&$e(Be));return Ee!==r?(Nt=ve,Oe=g(Ee),Oe?Oe=void 0:Oe=r,Oe!==r?(Ee=[Ee,Oe],te=Ee):(ve=te,te=r)):(ve=te,te=r),te}function kn(){var te;return Nt=ve,te=we(),te?te=void 0:te=r,te}function fa(){var te;return Nt=ve,te=ye(),te?te=void 0:te=r,te}function Ha(){var te;return te=vl(),te===r&&(te=uc()),te}function ns(){var te,Ee,Oe;if(te=vl(),te===r){if(te=ve,Ee=[],Oe=ja(),Oe!==r)for(;Oe!==r;)Ee.push(Oe),Oe=ja();else Ee=r;Ee!==r&&(Nt=te,Ee=Ae()),te=Ee}return te}function cc(){var te;return te=Mi(),te===r&&(te=Is(),te===r&&(te=vl(),te===r&&(te=uc()))),te}function pu(){var te;return te=Mi(),te===r&&(te=vl(),te===r&&(te=ja())),te}function uc(){var te,Ee,Oe,dt,Et,bt;if(Rt++,te=ve,Z.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Rt===0&&$e(De)),Ee!==r){for(Oe=[],dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(Re.test(t.charAt(ve))?(bt=t.charAt(ve),ve++):(bt=r,Rt===0&&$e(mt)),bt!==r?(Et=[Et,bt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);dt!==r;)Oe.push(dt),dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(Re.test(t.charAt(ve))?(bt=t.charAt(ve),ve++):(bt=r,Rt===0&&$e(mt)),bt!==r?(Et=[Et,bt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);Oe!==r?(Nt=te,Ee=j(),te=Ee):(ve=te,te=r)}else ve=te,te=r;return Rt--,te===r&&(Ee=r,Rt===0&&$e(se)),te}function ja(){var te,Ee,Oe,dt,Et;if(te=ve,t.substr(ve,2)===rt?(Ee=rt,ve+=2):(Ee=r,Rt===0&&$e(Fe)),Ee===r&&(Ee=null),Ee!==r)if(Ne.test(t.charAt(ve))?(Oe=t.charAt(ve),ve++):(Oe=r,Rt===0&&$e(Pe)),Oe!==r){for(dt=[],Ve.test(t.charAt(ve))?(Et=t.charAt(ve),ve++):(Et=r,Rt===0&&$e(ke));Et!==r;)dt.push(Et),Ve.test(t.charAt(ve))?(Et=t.charAt(ve),ve++):(Et=r,Rt===0&&$e(ke));dt!==r?(Nt=te,Ee=j(),te=Ee):(ve=te,te=r)}else ve=te,te=r;else ve=te,te=r;return te}function Mi(){var te,Ee;return te=ve,t.substr(ve,4)===it?(Ee=it,ve+=4):(Ee=r,Rt===0&&$e(Ue)),Ee!==r&&(Nt=te,Ee=x()),te=Ee,te}function Is(){var te,Ee;return te=ve,t.substr(ve,4)===w?(Ee=w,ve+=4):(Ee=r,Rt===0&&$e(b)),Ee!==r&&(Nt=te,Ee=y()),te=Ee,te===r&&(te=ve,t.substr(ve,5)===F?(Ee=F,ve+=5):(Ee=r,Rt===0&&$e(z)),Ee!==r&&(Nt=te,Ee=X()),te=Ee),te}function vl(){var te,Ee,Oe,dt;return Rt++,te=ve,t.charCodeAt(ve)===34?(Ee=oe,ve++):(Ee=r,Rt===0&&$e(xe)),Ee!==r?(t.charCodeAt(ve)===34?(Oe=oe,ve++):(Oe=r,Rt===0&&$e(xe)),Oe!==r?(Nt=te,Ee=Te(),te=Ee):(ve=te,te=r)):(ve=te,te=r),te===r&&(te=ve,t.charCodeAt(ve)===34?(Ee=oe,ve++):(Ee=r,Rt===0&&$e(xe)),Ee!==r?(Oe=gf(),Oe!==r?(t.charCodeAt(ve)===34?(dt=oe,ve++):(dt=r,Rt===0&&$e(xe)),dt!==r?(Nt=te,Ee=lt(Oe),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)),Rt--,te===r&&(Ee=r,Rt===0&&$e($)),te}function gf(){var te,Ee,Oe;if(te=ve,Ee=[],Oe=fc(),Oe!==r)for(;Oe!==r;)Ee.push(Oe),Oe=fc();else Ee=r;return Ee!==r&&(Nt=te,Ee=Ct(Ee)),te=Ee,te}function fc(){var te,Ee,Oe,dt,Et,bt;return qt.test(t.charAt(ve))?(te=t.charAt(ve),ve++):(te=r,Rt===0&&$e(ir)),te===r&&(te=ve,t.substr(ve,2)===Pt?(Ee=Pt,ve+=2):(Ee=r,Rt===0&&$e(gn)),Ee!==r&&(Nt=te,Ee=Pr()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===Ir?(Ee=Ir,ve+=2):(Ee=r,Rt===0&&$e(Or)),Ee!==r&&(Nt=te,Ee=on()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===ai?(Ee=ai,ve+=2):(Ee=r,Rt===0&&$e(Io)),Ee!==r&&(Nt=te,Ee=rs()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===$s?(Ee=$s,ve+=2):(Ee=r,Rt===0&&$e(Co)),Ee!==r&&(Nt=te,Ee=ji()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===eo?(Ee=eo,ve+=2):(Ee=r,Rt===0&&$e(wo)),Ee!==r&&(Nt=te,Ee=QA()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===Af?(Ee=Af,ve+=2):(Ee=r,Rt===0&&$e(dh)),Ee!==r&&(Nt=te,Ee=mh()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===to?(Ee=to,ve+=2):(Ee=r,Rt===0&&$e(jn)),Ee!==r&&(Nt=te,Ee=Ts()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===ro?(Ee=ro,ve+=2):(Ee=r,Rt===0&&$e(ou)),Ee!==r&&(Nt=te,Ee=au()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===lu?(Ee=lu,ve+=2):(Ee=r,Rt===0&&$e(TA)),Ee!==r?(Oe=wi(),Oe!==r?(dt=wi(),dt!==r?(Et=wi(),Et!==r?(bt=wi(),bt!==r?(Nt=te,Ee=RA(Oe,dt,Et,bt),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)))))))))),te}function wi(){var te;return oa.test(t.charAt(ve))?(te=t.charAt(ve),ve++):(te=r,Rt===0&&$e(aa)),te}function Qn(){var te,Ee;if(Rt++,te=[],gr.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Rt===0&&$e(Bo)),Ee!==r)for(;Ee!==r;)te.push(Ee),gr.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Rt===0&&$e(Bo));else te=r;return Rt--,te===r&&(Ee=r,Rt===0&&$e(FA)),te}function Ac(){var te,Ee;if(Rt++,te=[],cu.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Rt===0&&$e(Cr)),Ee!==r)for(;Ee!==r;)te.push(Ee),cu.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Rt===0&&$e(Cr));else te=r;return Rt--,te===r&&(Ee=r,Rt===0&&$e(Me)),te}function Ke(){var te,Ee,Oe,dt,Et,bt;if(te=ve,Ee=st(),Ee!==r){for(Oe=[],dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(bt=st(),bt!==r?(Et=[Et,bt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);dt!==r;)Oe.push(dt),dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(bt=st(),bt!==r?(Et=[Et,bt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);Oe!==r?(Ee=[Ee,Oe],te=Ee):(ve=te,te=r)}else ve=te,te=r;return te}function st(){var te;return t.substr(ve,2)===pf?(te=pf,ve+=2):(te=r,Rt===0&&$e(NA)),te===r&&(t.charCodeAt(ve)===10?(te=OA,ve++):(te=r,Rt===0&&$e(uu)),te===r&&(t.charCodeAt(ve)===13?(te=fu,ve++):(te=r,Rt===0&&$e(oc)))),te}let St=2,lr=0;if(xn=a(),xn!==r&&ve===t.length)return xn;throw xn!==r&&ve"u"?!0:typeof t=="object"&&t!==null&&!Array.isArray(t)?Object.keys(t).every(e=>wre(t[e])):!1}function i_(t,e,r){if(t===null)return`null -`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} -`;if(typeof t=="string")return`${Ire(t)} -`;if(Array.isArray(t)){if(t.length===0)return`[] -`;let s=" ".repeat(e);return` -${t.map(n=>`${s}- ${i_(n,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let[s,a]=t instanceof Sx?[t.data,!1]:[t,!0],n=" ".repeat(e),c=Object.keys(s);a&&c.sort((p,h)=>{let E=Ere.indexOf(p),C=Ere.indexOf(h);return E===-1&&C===-1?ph?1:0:E!==-1&&C===-1?-1:E===-1&&C!==-1?1:E-C});let f=c.filter(p=>!wre(s[p])).map((p,h)=>{let E=s[p],C=Ire(p),S=i_(E,e+1,!0),P=h>0||r?n:"",I=C.length>1024?`? ${C} -${P}:`:`${C}:`,R=S.startsWith(` -`)?S:` ${S}`;return`${P}${I}${R}`}).join(e===0?` -`:"")||` -`;return r?` -${f}`:`${f}`}throw new Error(`Unsupported value type (${t})`)}function nl(t){try{let e=i_(t,0,!1);return e!==` -`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}function CWe(t){return t.endsWith(` -`)||(t+=` -`),(0,Cre.parse)(t)}function BWe(t){if(wWe.test(t))return CWe(t);let e=(0,Dx.safeLoad)(t,{schema:Dx.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function ls(t){return BWe(t)}var Dx,Cre,IWe,Ere,Sx,wWe,Bre=Xe(()=>{Dx=ut(dre()),Cre=ut(yre()),IWe=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,Ere=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],Sx=class{constructor(e){this.data=e}};nl.PreserveOrdering=Sx;wWe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i});var J2={};Vt(J2,{parseResolution:()=>px,parseShell:()=>ux,parseSyml:()=>ls,stringifyArgument:()=>qU,stringifyArgumentSegment:()=>WU,stringifyArithmeticExpression:()=>Ax,stringifyCommand:()=>GU,stringifyCommandChain:()=>AE,stringifyCommandChainThen:()=>jU,stringifyCommandLine:()=>fx,stringifyCommandLineThen:()=>HU,stringifyEnvSegment:()=>cx,stringifyRedirectArgument:()=>H2,stringifyResolution:()=>hx,stringifyShell:()=>fE,stringifyShellLine:()=>fE,stringifySyml:()=>nl,stringifyValueArgument:()=>vd});var wc=Xe(()=>{wee();Dee();Bre()});var Sre=_((UQt,s_)=>{"use strict";var vWe=t=>{let e=!1,r=!1,s=!1;for(let a=0;a{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=a=>e.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(t)?t=t.map(a=>a.trim()).filter(a=>a.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=vWe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,a=>a.toUpperCase()),r(t))};s_.exports=vre;s_.exports.default=vre});var Dre=_((_Qt,SWe)=>{SWe.exports=[{name:"Agola CI",constant:"AGOLA",env:"AGOLA_GIT_REF",pr:"AGOLA_PULL_REQUEST_ID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"TF_BUILD",pr:{BUILD_REASON:"PullRequest"}},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"Earthly",constant:"EARTHLY",env:"EARTHLY_CI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"Gerrit",constant:"GERRIT",env:"GERRIT_PROJECT"},{name:"Gitea Actions",constant:"GITEA_ACTIONS",env:"GITEA_ACTIONS"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Google Cloud Build",constant:"GOOGLE_CLOUD_BUILD",env:"BUILDER_OUTPUT"},{name:"Harness CI",constant:"HARNESS",env:"HARNESS_BUILD_ID"},{name:"Heroku",constant:"HEROKU",env:{env:"NODE",includes:"/app/.heroku/node/bin/node"}},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Prow",constant:"PROW",env:"PROW_JOB_ID"},{name:"ReleaseHub",constant:"RELEASEHUB",env:"RELEASE_BUILD_ID"},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Sourcehut",constant:"SOURCEHUT",env:{CI_NAME:"sourcehut"}},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vela",constant:"VELA",env:"VELA",pr:{VELA_PULL_REQUEST:"1"}},{name:"Vercel",constant:"VERCEL",env:{any:["NOW_BUILDER","VERCEL"]},pr:"VERCEL_GIT_PULL_REQUEST_ID"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"},{name:"Woodpecker",constant:"WOODPECKER",env:{CI:"woodpecker"},pr:{CI_BUILD_EVENT:"pull_request"}},{name:"Xcode Cloud",constant:"XCODE_CLOUD",env:"CI_XCODE_PROJECT",pr:"CI_PULL_REQUEST_NUMBER"},{name:"Xcode Server",constant:"XCODE_SERVER",env:"XCS"}]});var Fd=_(Ml=>{"use strict";var Pre=Dre(),Ds=process.env;Object.defineProperty(Ml,"_vendors",{value:Pre.map(function(t){return t.constant})});Ml.name=null;Ml.isPR=null;Pre.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(s){return bre(s)});if(Ml[t.constant]=r,!!r)switch(Ml.name=t.name,typeof t.pr){case"string":Ml.isPR=!!Ds[t.pr];break;case"object":"env"in t.pr?Ml.isPR=t.pr.env in Ds&&Ds[t.pr.env]!==t.pr.ne:"any"in t.pr?Ml.isPR=t.pr.any.some(function(s){return!!Ds[s]}):Ml.isPR=bre(t.pr);break;default:Ml.isPR=null}});Ml.isCI=!!(Ds.CI!=="false"&&(Ds.BUILD_ID||Ds.BUILD_NUMBER||Ds.CI||Ds.CI_APP_ID||Ds.CI_BUILD_ID||Ds.CI_BUILD_NUMBER||Ds.CI_NAME||Ds.CONTINUOUS_INTEGRATION||Ds.RUN_ID||Ml.name));function bre(t){return typeof t=="string"?!!Ds[t]:"env"in t?Ds[t.env]&&Ds[t.env].includes(t.includes):"any"in t?t.any.some(function(e){return!!Ds[e]}):Object.keys(t).every(function(e){return Ds[e]===t[e]})}});var ei,En,Nd,o_,bx,xre,a_,l_,Px=Xe(()=>{(function(t){t.StartOfInput="\0",t.EndOfInput="",t.EndOfPartialInput=""})(ei||(ei={}));(function(t){t[t.InitialNode=0]="InitialNode",t[t.SuccessNode=1]="SuccessNode",t[t.ErrorNode=2]="ErrorNode",t[t.CustomNode=3]="CustomNode"})(En||(En={}));Nd=-1,o_=/^(-h|--help)(?:=([0-9]+))?$/,bx=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,xre=/^-[a-zA-Z]{2,}$/,a_=/^([^=]+)=([\s\S]*)$/,l_=process.env.DEBUG_CLI==="1"});var nt,IE,xx,c_,kx=Xe(()=>{Px();nt=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},IE=class extends Error{constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(s=>s.reason!==null&&s.reason===r[0].reason)){let[{reason:s}]=this.candidates;this.message=`${s} - -${this.candidates.map(({usage:a})=>`$ ${a}`).join(` -`)}`}else if(this.candidates.length===1){let[{usage:s}]=this.candidates;this.message=`Command not found; did you mean: - -$ ${s} -${c_(e)}`}else this.message=`Command not found; did you mean one of: - -${this.candidates.map(({usage:s},a)=>`${`${a}.`.padStart(4)} ${s}`).join(` -`)} - -${c_(e)}`}},xx=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: - -${this.usages.map((s,a)=>`${`${a}.`.padStart(4)} ${s}`).join(` -`)} - -${c_(e)}`}},c_=t=>`While running ${t.filter(e=>e!==ei.EndOfInput&&e!==ei.EndOfPartialInput).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`});function DWe(t){let e=t.split(` -`),r=e.filter(a=>a.match(/\S/)),s=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(s).trimRight()).join(` -`)}function Ho(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` -`),t=DWe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 - -`),t=t.replace(/\n(\n)?\n*/g,(s,a)=>a||" "),r&&(t=t.split(/\n/).map(s=>{let a=s.match(/^\s*[*-][\t ]+(.*)/);if(!a)return s.match(/(.{1,80})(?: |$)/g).join(` -`);let n=s.length-s.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((c,f)=>" ".repeat(n)+(f===0?"- ":" ")+c).join(` -`)}).join(` - -`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(s,a,n)=>e.code(a+n+a)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(s,a,n)=>e.bold(a+n+a)),t?`${t} -`:""}var u_,kre,Qre,f_=Xe(()=>{u_=Array(80).fill("\u2501");for(let t=0;t<=24;++t)u_[u_.length-t]=`\x1B[38;5;${232+t}m\u2501`;kre={header:t=>`\x1B[1m\u2501\u2501\u2501 ${t}${t.length<75?` ${u_.slice(t.length+5).join("")}`:":"}\x1B[0m`,bold:t=>`\x1B[1m${t}\x1B[22m`,error:t=>`\x1B[31m\x1B[1m${t}\x1B[22m\x1B[39m`,code:t=>`\x1B[36m${t}\x1B[39m`},Qre={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function ya(t){return{...t,[K2]:!0}}function Gf(t,e){return typeof t>"u"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function Qx(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(!r)return"validation failed";let[,s,a]=r;return e&&(a=a[0].toLowerCase()+a.slice(1)),a=s!=="."||!e?`${s.replace(/^\.(\[|$)/,"$1")}: ${a}`:`: ${a}`,a}function z2(t,e){return e.length===1?new nt(`${t}${Qx(e[0],{mergeName:!0})}`):new nt(`${t}: -${e.map(r=>` -- ${Qx(r)}`).join("")}`)}function Od(t,e,r){if(typeof r>"u")return e;let s=[],a=[],n=f=>{let p=e;return e=f,n.bind(null,p)};if(!r(e,{errors:s,coercions:a,coercion:n}))throw z2(`Invalid value for ${t}`,s);for(let[,f]of a)f();return e}var K2,Cp=Xe(()=>{kx();K2=Symbol("clipanion/isOption")});var Ea={};Vt(Ea,{KeyRelationship:()=>qf,TypeAssertionError:()=>o0,applyCascade:()=>$2,as:()=>WWe,assert:()=>jWe,assertWithErrors:()=>GWe,cascade:()=>Nx,fn:()=>YWe,hasAtLeastOneKey:()=>y_,hasExactLength:()=>Ore,hasForbiddenKeys:()=>fYe,hasKeyRelationship:()=>tB,hasMaxLength:()=>JWe,hasMinLength:()=>VWe,hasMutuallyExclusiveKeys:()=>AYe,hasRequiredKeys:()=>uYe,hasUniqueItems:()=>KWe,isArray:()=>Tx,isAtLeast:()=>d_,isAtMost:()=>ZWe,isBase64:()=>oYe,isBoolean:()=>FWe,isDate:()=>OWe,isDict:()=>UWe,isEnum:()=>fo,isHexColor:()=>sYe,isISO8601:()=>iYe,isInExclusiveRange:()=>eYe,isInInclusiveRange:()=>$We,isInstanceOf:()=>HWe,isInteger:()=>m_,isJSON:()=>aYe,isLiteral:()=>Rre,isLowerCase:()=>tYe,isMap:()=>MWe,isNegative:()=>zWe,isNullable:()=>cYe,isNumber:()=>h_,isObject:()=>Fre,isOneOf:()=>g_,isOptional:()=>lYe,isPartial:()=>_We,isPayload:()=>NWe,isPositive:()=>XWe,isRecord:()=>Fx,isSet:()=>LWe,isString:()=>wE,isTuple:()=>Rx,isUUID4:()=>nYe,isUnknown:()=>p_,isUpperCase:()=>rYe,makeTrait:()=>Nre,makeValidator:()=>Wr,matchesRegExp:()=>Z2,softAssert:()=>qWe});function ti(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":typeof t=="symbol"?`<${t.toString()}>`:Array.isArray(t)?"an array":JSON.stringify(t)}function CE(t,e){if(t.length===0)return"nothing";if(t.length===1)return ti(t[0]);let r=t.slice(0,-1),s=t[t.length-1],a=t.length>2?`, ${e} `:` ${e} `;return`${r.map(n=>ti(n)).join(", ")}${a}${ti(s)}`}function s0(t,e){var r,s,a;return typeof e=="number"?`${(r=t?.p)!==null&&r!==void 0?r:"."}[${e}]`:bWe.test(e)?`${(s=t?.p)!==null&&s!==void 0?s:""}.${e}`:`${(a=t?.p)!==null&&a!==void 0?a:"."}[${JSON.stringify(e)}]`}function A_(t,e,r){return t===1?e:r}function mr({errors:t,p:e}={},r){return t?.push(`${e??"."}: ${r}`),!1}function TWe(t,e){return r=>{t[e]=r}}function Wf(t,e){return r=>{let s=t[e];return t[e]=r,Wf(t,e).bind(null,s)}}function X2(t,e,r){let s=()=>(t(r()),a),a=()=>(t(e),s);return s}function p_(){return Wr({test:(t,e)=>!0})}function Rre(t){return Wr({test:(e,r)=>e!==t?mr(r,`Expected ${ti(t)} (got ${ti(e)})`):!0})}function wE(){return Wr({test:(t,e)=>typeof t!="string"?mr(e,`Expected a string (got ${ti(t)})`):!0})}function fo(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>typeof a=="string"||typeof a=="number"),s=new Set(e);return s.size===1?Rre([...s][0]):Wr({test:(a,n)=>s.has(a)?!0:r?mr(n,`Expected one of ${CE(e,"or")} (got ${ti(a)})`):mr(n,`Expected a valid enumeration value (got ${ti(a)})`)})}function FWe(){return Wr({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return mr(e,"Unbound coercion result");let s=RWe.get(t);if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a boolean (got ${ti(t)})`)}return!0}})}function h_(){return Wr({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return mr(e,"Unbound coercion result");let s;if(typeof t=="string"){let a;try{a=JSON.parse(t)}catch{}if(typeof a=="number")if(JSON.stringify(a)===t)s=a;else return mr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a number (got ${ti(t)})`)}return!0}})}function NWe(t){return Wr({test:(e,r)=>{var s;if(typeof r?.coercions>"u")return mr(r,"The isPayload predicate can only be used with coercion enabled");if(typeof r.coercion>"u")return mr(r,"Unbound coercion result");if(typeof e!="string")return mr(r,`Expected a string (got ${ti(e)})`);let a;try{a=JSON.parse(e)}catch{return mr(r,`Expected a JSON string (got ${ti(e)})`)}let n={value:a};return t(a,Object.assign(Object.assign({},r),{coercion:Wf(n,"value")}))?(r.coercions.push([(s=r.p)!==null&&s!==void 0?s:".",r.coercion.bind(null,n.value)]),!0):!1}})}function OWe(){return Wr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return mr(e,"Unbound coercion result");let s;if(typeof t=="string"&&Tre.test(t))s=new Date(t);else{let a;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch{}typeof n=="number"&&(a=n)}else typeof t=="number"&&(a=t);if(typeof a<"u")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))s=new Date(a*1e3);else return mr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a date (got ${ti(t)})`)}return!0}})}function Tx(t,{delimiter:e}={}){return Wr({test:(r,s)=>{var a;let n=r;if(typeof r=="string"&&typeof e<"u"&&typeof s?.coercions<"u"){if(typeof s?.coercion>"u")return mr(s,"Unbound coercion result");r=r.split(e)}if(!Array.isArray(r))return mr(s,`Expected an array (got ${ti(r)})`);let c=!0;for(let f=0,p=r.length;f{var n,c;if(Object.getPrototypeOf(s).toString()==="[object Set]")if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");let f=[...s],p=[...s];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,C)=>E!==f[C])?new Set(p):s;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",X2(a.coercion,s,h)]),!0}else{let f=!0;for(let p of s)if(f=t(p,Object.assign({},a))&&f,!f&&a?.errors==null)break;return f}if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");let f={value:s};return r(s,Object.assign(Object.assign({},a),{coercion:Wf(f,"value")}))?(a.coercions.push([(c=a.p)!==null&&c!==void 0?c:".",X2(a.coercion,s,()=>new Set(f.value))]),!0):!1}return mr(a,`Expected a set (got ${ti(s)})`)}})}function MWe(t,e){let r=Tx(Rx([t,e])),s=Fx(e,{keys:t});return Wr({test:(a,n)=>{var c,f,p;if(Object.getPrototypeOf(a).toString()==="[object Map]")if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return mr(n,"Unbound coercion result");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let C=()=>E.some((S,P)=>S[0]!==h[P][0]||S[1]!==h[P][1])?new Map(E):a;return n.coercions.push([(c=n.p)!==null&&c!==void 0?c:".",X2(n.coercion,a,C)]),!0}else{let h=!0;for(let[E,C]of a)if(h=t(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=e(C,Object.assign(Object.assign({},n),{p:s0(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return mr(n,"Unbound coercion result");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(f=n.p)!==null&&f!==void 0?f:".",X2(n.coercion,a,()=>new Map(h.value))]),!0):!1:s(a,Object.assign(Object.assign({},n),{coercion:Wf(h,"value")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:".",X2(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return mr(n,`Expected a map (got ${ti(a)})`)}})}function Rx(t,{delimiter:e}={}){let r=Ore(t.length);return Wr({test:(s,a)=>{var n;if(typeof s=="string"&&typeof e<"u"&&typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");s=s.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)])}if(!Array.isArray(s))return mr(a,`Expected a tuple (got ${ti(s)})`);let c=r(s,Object.assign({},a));for(let f=0,p=s.length;f{var n;if(Array.isArray(s)&&typeof a?.coercions<"u")return typeof a?.coercion>"u"?mr(a,"Unbound coercion result"):r(s,Object.assign(Object.assign({},a),{coercion:void 0}))?(s=Object.fromEntries(s),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)]),!0):!1;if(typeof s!="object"||s===null)return mr(a,`Expected an object (got ${ti(s)})`);let c=Object.keys(s),f=!0;for(let p=0,h=c.length;p{if(typeof a!="object"||a===null)return mr(n,`Expected an object (got ${ti(a)})`);let c=new Set([...r,...Object.keys(a)]),f={},p=!0;for(let h of c){if(h==="constructor"||h==="__proto__")p=mr(Object.assign(Object.assign({},n),{p:s0(n,h)}),"Unsafe property name");else{let E=Object.prototype.hasOwnProperty.call(t,h)?t[h]:void 0,C=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<"u"?p=E(C,Object.assign(Object.assign({},n),{p:s0(n,h),coercion:Wf(a,h)}))&&p:e===null?p=mr(Object.assign(Object.assign({},n),{p:s0(n,h)}),`Extraneous property (got ${ti(C)})`):Object.defineProperty(f,h,{enumerable:!0,get:()=>C,set:TWe(a,h)})}if(!p&&n?.errors==null)break}return e!==null&&(p||n?.errors!=null)&&(p=e(f,n)&&p),p}});return Object.assign(s,{properties:t})}function _We(t){return Fre(t,{extra:Fx(p_())})}function Nre(t){return()=>t}function Wr({test:t}){return Nre(t)()}function jWe(t,e){if(!e(t))throw new o0}function GWe(t,e){let r=[];if(!e(t,{errors:r}))throw new o0({errors:r})}function qWe(t,e){}function WWe(t,e,{coerce:r=!1,errors:s,throw:a}={}){let n=s?[]:void 0;if(!r){if(e(t,{errors:n}))return a?t:{value:t,errors:void 0};if(a)throw new o0({errors:n});return{value:void 0,errors:n??!0}}let c={value:t},f=Wf(c,"value"),p=[];if(!e(t,{errors:n,coercion:f,coercions:p})){if(a)throw new o0({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?c.value:{value:c.value,errors:void 0}}function YWe(t,e){let r=Rx(t);return(...s)=>{if(!r(s))throw new o0;return e(...s)}}function VWe(t){return Wr({test:(e,r)=>e.length>=t?!0:mr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)})}function JWe(t){return Wr({test:(e,r)=>e.length<=t?!0:mr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)})}function Ore(t){return Wr({test:(e,r)=>e.length!==t?mr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0})}function KWe({map:t}={}){return Wr({test:(e,r)=>{let s=new Set,a=new Set;for(let n=0,c=e.length;nt<=0?!0:mr(e,`Expected to be negative (got ${t})`)})}function XWe(){return Wr({test:(t,e)=>t>=0?!0:mr(e,`Expected to be positive (got ${t})`)})}function d_(t){return Wr({test:(e,r)=>e>=t?!0:mr(r,`Expected to be at least ${t} (got ${e})`)})}function ZWe(t){return Wr({test:(e,r)=>e<=t?!0:mr(r,`Expected to be at most ${t} (got ${e})`)})}function $We(t,e){return Wr({test:(r,s)=>r>=t&&r<=e?!0:mr(s,`Expected to be in the [${t}; ${e}] range (got ${r})`)})}function eYe(t,e){return Wr({test:(r,s)=>r>=t&&re!==Math.round(e)?mr(r,`Expected to be an integer (got ${e})`):!t&&!Number.isSafeInteger(e)?mr(r,`Expected to be a safe integer (got ${e})`):!0})}function Z2(t){return Wr({test:(e,r)=>t.test(e)?!0:mr(r,`Expected to match the pattern ${t.toString()} (got ${ti(e)})`)})}function tYe(){return Wr({test:(t,e)=>t!==t.toLowerCase()?mr(e,`Expected to be all-lowercase (got ${t})`):!0})}function rYe(){return Wr({test:(t,e)=>t!==t.toUpperCase()?mr(e,`Expected to be all-uppercase (got ${t})`):!0})}function nYe(){return Wr({test:(t,e)=>QWe.test(t)?!0:mr(e,`Expected to be a valid UUID v4 (got ${ti(t)})`)})}function iYe(){return Wr({test:(t,e)=>Tre.test(t)?!0:mr(e,`Expected to be a valid ISO 8601 date string (got ${ti(t)})`)})}function sYe({alpha:t=!1}){return Wr({test:(e,r)=>(t?PWe.test(e):xWe.test(e))?!0:mr(r,`Expected to be a valid hexadecimal color string (got ${ti(e)})`)})}function oYe(){return Wr({test:(t,e)=>kWe.test(t)?!0:mr(e,`Expected to be a valid base 64 string (got ${ti(t)})`)})}function aYe(t=p_()){return Wr({test:(e,r)=>{let s;try{s=JSON.parse(e)}catch{return mr(r,`Expected to be a valid JSON string (got ${ti(e)})`)}return t(s,r)}})}function Nx(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Wr({test:(s,a)=>{var n,c;let f={value:s},p=typeof a?.coercions<"u"?Wf(f,"value"):void 0,h=typeof a?.coercions<"u"?[]:void 0;if(!t(s,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<"u")for(let[,C]of h)E.push(C());try{if(typeof a?.coercions<"u"){if(f.value!==s){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,f.value)])}(c=a?.coercions)===null||c===void 0||c.push(...h)}return r.every(C=>C(f.value,a))}finally{for(let C of E)C()}}})}function $2(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Nx(t,r)}function lYe(t){return Wr({test:(e,r)=>typeof e>"u"?!0:t(e,r)})}function cYe(t){return Wr({test:(e,r)=>e===null?!0:t(e,r)})}function uYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)||p.push(h);return p.length>0?mr(c,`Missing required ${A_(p.length,"property","properties")} ${CE(p,"and")}`):!0}})}function y_(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>Object.keys(n).some(h=>a(s,h,n))?!0:mr(c,`Missing at least one property from ${CE(Array.from(s),"or")}`)})}function fYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>0?mr(c,`Forbidden ${A_(p.length,"property","properties")} ${CE(p,"and")}`):!0}})}function AYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>1?mr(c,`Mutually exclusive properties ${CE(p,"and")}`):!0}})}function tB(t,e,r,s){var a,n;let c=new Set((a=s?.ignore)!==null&&a!==void 0?a:[]),f=eB[(n=s?.missingIf)!==null&&n!==void 0?n:"missing"],p=new Set(r),h=pYe[e],E=e===qf.Forbids?"or":"and";return Wr({test:(C,S)=>{let P=new Set(Object.keys(C));if(!f(P,t,C)||c.has(C[t]))return!0;let I=[];for(let R of p)(f(P,R,C)&&!c.has(C[R]))!==h.expect&&I.push(R);return I.length>=1?mr(S,`Property "${t}" ${h.message} ${A_(I.length,"property","properties")} ${CE(I,E)}`):!0}})}var bWe,PWe,xWe,kWe,QWe,Tre,RWe,HWe,g_,o0,eB,qf,pYe,Ul=Xe(()=>{bWe=/^[a-zA-Z_][a-zA-Z0-9_]*$/;PWe=/^#[0-9a-f]{6}$/i,xWe=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,kWe=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,QWe=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Tre=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/;RWe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]);HWe=t=>Wr({test:(e,r)=>e instanceof t?!0:mr(r,`Expected an instance of ${t.name} (got ${ti(e)})`)}),g_=(t,{exclusive:e=!1}={})=>Wr({test:(r,s)=>{var a,n,c;let f=[],p=typeof s?.errors<"u"?[]:void 0;for(let h=0,E=t.length;h1?mr(s,`Expected to match exactly a single predicate (matched ${f.join(", ")})`):(c=s?.errors)===null||c===void 0||c.push(...p),!1}});o0=class extends Error{constructor({errors:e}={}){let r="Type mismatch";if(e&&e.length>0){r+=` -`;for(let s of e)r+=` -- ${s}`}super(r)}};eB={missing:(t,e)=>t.has(e),undefined:(t,e,r)=>t.has(e)&&typeof r[e]<"u",nil:(t,e,r)=>t.has(e)&&r[e]!=null,falsy:(t,e,r)=>t.has(e)&&!!r[e]};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(qf||(qf={}));pYe={[qf.Forbids]:{expect:!1,message:"forbids using"},[qf.Requires]:{expect:!0,message:"requires using"}}});var ot,a0=Xe(()=>{Cp();ot=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:c}=await Promise.resolve().then(()=>(Ul(),Ea)),f=c(a(n()),r),p=[],h=[];if(!f(this,{errors:p,coercions:h}))throw z2("Invalid option schema",p);for(let[,C]of h)C()}else if(r!=null)throw new Error("Invalid command schema");let s=await this.execute();return typeof s<"u"?s:0}};ot.isOption=K2;ot.Default=[]});function il(t){l_&&console.log(t)}function Mre(){let t={nodes:[]};for(let e=0;e{if(e.has(s))return;e.add(s);let a=t.nodes[s];for(let c of Object.values(a.statics))for(let{to:f}of c)r(f);for(let[,{to:c}]of a.dynamics)r(c);for(let{to:c}of a.shortcuts)r(c);let n=new Set(a.shortcuts.map(({to:c})=>c));for(;a.shortcuts.length>0;){let{to:c}=a.shortcuts.shift(),f=t.nodes[c];for(let[p,h]of Object.entries(f.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let C of h)E.some(({to:S})=>C.to===S)||E.push(C)}for(let[p,h]of f.dynamics)a.dynamics.some(([E,{to:C}])=>p===E&&h.to===C)||a.dynamics.push([p,h]);for(let p of f.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(En.InitialNode)}function dYe(t,{prefix:e=""}={}){if(l_){il(`${e}Nodes are:`);for(let r=0;rE!==En.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===En.ErrorNode))throw new IE(e,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));s=EYe(h)}if(s.length>0){il(" Results:");for(let n of s)il(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else il(" No results");return s}function yYe(t,e,{endToken:r=ei.EndOfInput}={}){let s=mYe(t,[...e,r]);return IYe(e,s.map(({state:a})=>a))}function EYe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function IYe(t,e){let r=e.filter(S=>S.selectedIndex!==null),s=r.filter(S=>!S.partial);if(s.length>0&&(r=s),r.length===0)throw new Error;let a=r.filter(S=>S.selectedIndex===Nd||S.requiredOptions.every(P=>P.some(I=>S.options.find(R=>R.name===I))));if(a.length===0)throw new IE(t,r.map(S=>({usage:S.candidateUsage,reason:null})));let n=0;for(let S of a)S.path.length>n&&(n=S.path.length);let c=a.filter(S=>S.path.length===n),f=S=>S.positionals.filter(({extra:P})=>!P).length+S.options.length,p=c.map(S=>({state:S,positionalCount:f(S)})),h=0;for(let{positionalCount:S}of p)S>h&&(h=S);let E=p.filter(({positionalCount:S})=>S===h).map(({state:S})=>S),C=CYe(E);if(C.length>1)throw new xx(t,C.map(S=>S.candidateUsage));return C[0]}function CYe(t){let e=[],r=[];for(let s of t)s.selectedIndex===Nd?r.push(s):e.push(s);return r.length>0&&e.push({...Lre,path:Ure(...r.map(s=>s.path)),options:r.reduce((s,a)=>s.concat(a.options),[])}),e}function Ure(t,e,...r){return e===void 0?Array.from(t):Ure(t.filter((s,a)=>s===e[a]),...r)}function _l(){return{dynamics:[],shortcuts:[],statics:{}}}function _re(t){return t===En.SuccessNode||t===En.ErrorNode}function E_(t,e=0){return{to:_re(t.to)?t.to:t.to>=En.CustomNode?t.to+e-En.CustomNode+1:t.to+e,reducer:t.reducer}}function wYe(t,e=0){let r=_l();for(let[s,a]of t.dynamics)r.dynamics.push([s,E_(a,e)]);for(let s of t.shortcuts)r.shortcuts.push(E_(s,e));for(let[s,a]of Object.entries(t.statics))r.statics[s]=a.map(n=>E_(n,e));return r}function Hs(t,e,r,s,a){t.nodes[e].dynamics.push([r,{to:s,reducer:a}])}function BE(t,e,r,s){t.nodes[e].shortcuts.push({to:r,reducer:s})}function Ia(t,e,r,s,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:s,reducer:a})}function Ox(t,e,r,s,a){if(Array.isArray(e)){let[n,...c]=e;return t[n](r,s,a,...c)}else return t[e](r,s,a)}var Lre,BYe,I_,Hl,C_,Lx,Mx=Xe(()=>{Px();kx();Lre={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Nd,partial:!1,tokens:[]};BYe={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,s)=>!t.ignoreOptions&&e===s,isBatchOption:(t,e,r,s)=>!t.ignoreOptions&&xre.test(e)&&[...e.slice(1)].every(a=>s.has(`-${a}`)),isBoundOption:(t,e,r,s,a)=>{let n=e.match(a_);return!t.ignoreOptions&&!!n&&bx.test(n[1])&&s.has(n[1])&&a.filter(c=>c.nameSet.includes(n[1])).every(c=>c.allowBinding)},isNegatedOption:(t,e,r,s)=>!t.ignoreOptions&&e===`--no-${s.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&o_.test(e),isUnsupportedOption:(t,e,r,s)=>!t.ignoreOptions&&e.startsWith("-")&&bx.test(e)&&!s.has(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!bx.test(e)},I_={setCandidateState:(t,e,r,s)=>({...t,...s}),setSelectedIndex:(t,e,r,s)=>({...t,selectedIndex:s}),setPartialIndex:(t,e,r,s)=>({...t,selectedIndex:s,partial:!0}),pushBatch:(t,e,r,s)=>{let a=t.options.slice(),n=t.tokens.slice();for(let c=1;c{let[,s,a]=e.match(a_),n=t.options.concat({name:s,value:a}),c=t.tokens.concat([{segmentIndex:r,type:"option",slice:[0,s.length],option:s},{segmentIndex:r,type:"assign",slice:[s.length,s.length+1]},{segmentIndex:r,type:"value",slice:[s.length+1,s.length+a.length+1]}]);return{...t,options:n,tokens:c}},pushPath:(t,e,r)=>{let s=t.path.concat(e),a=t.tokens.concat({segmentIndex:r,type:"path"});return{...t,path:s,tokens:a}},pushPositional:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:!1}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:s,tokens:a}},pushExtra:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:!0}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:s,tokens:a}},pushExtraNoLimits:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:Hl}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:s,tokens:a}},pushTrue:(t,e,r,s)=>{let a=t.options.concat({name:s,value:!0}),n=t.tokens.concat({segmentIndex:r,type:"option",option:s});return{...t,options:a,tokens:n}},pushFalse:(t,e,r,s)=>{let a=t.options.concat({name:s,value:!1}),n=t.tokens.concat({segmentIndex:r,type:"option",option:s});return{...t,options:a,tokens:n}},pushUndefined:(t,e,r,s)=>{let a=t.options.concat({name:e,value:void 0}),n=t.tokens.concat({segmentIndex:r,type:"option",option:e});return{...t,options:a,tokens:n}},pushStringValue:(t,e,r)=>{var s;let a=t.options[t.options.length-1],n=t.options.slice(),c=t.tokens.concat({segmentIndex:r,type:"value"});return a.value=((s=a.value)!==null&&s!==void 0?s:[]).concat([e]),{...t,options:n,tokens:c}},setStringValue:(t,e,r)=>{let s=t.options[t.options.length-1],a=t.options.slice(),n=t.tokens.concat({segmentIndex:r,type:"value"});return s.value=e,{...t,options:a,tokens:n}},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r,s)=>{let[,,a]=e.match(o_);return typeof a<"u"?{...t,options:[{name:"-c",value:String(s)},{name:"-i",value:a}]}:{...t,options:[{name:"-c",value:String(s)}]}},setError:(t,e,r,s)=>e===ei.EndOfInput||e===ei.EndOfPartialInput?{...t,errorMessage:`${s}.`}:{...t,errorMessage:`${s} ("${e}").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},Hl=Symbol(),C_=class{constructor(e,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:s=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:s,proxy:a})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===Hl)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Hl?this.arity.extra.push(e):this.arity.extra!==Hl&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===Hl)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let s=0;s1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(s))throw new Error(`The arity must be an integer, got ${s}`);if(s<0)throw new Error(`The arity must be positive, got ${s}`);let f=e.reduce((p,h)=>h.length>p.length?h:p,"");for(let p of e)this.allOptionNames.set(p,f);this.options.push({preferredName:f,nameSet:e,description:r,arity:s,hidden:a,required:n,allowBinding:c})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let s=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&s.push(...this.paths[0]),e){for(let{preferredName:c,nameSet:f,arity:p,hidden:h,description:E,required:C}of this.options){if(h)continue;let S=[];for(let I=0;I`:`[${P}]`)}s.push(...this.arity.leading.map(c=>`<${c}>`)),this.arity.extra===Hl?s.push("..."):s.push(...this.arity.extra.map(c=>`[${c}]`)),s.push(...this.arity.trailing.map(c=>`<${c}>`))}return{usage:s.join(" "),options:a}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=Mre(),r=En.InitialNode,s=this.usage().usage,a=this.options.filter(f=>f.required).map(f=>f.nameSet);r=Ou(e,_l()),Ia(e,En.InitialNode,ei.StartOfInput,r,["setCandidateState",{candidateUsage:s,requiredOptions:a}]);let n=this.arity.proxy?"always":"isNotOptionLike",c=this.paths.length>0?this.paths:[[]];for(let f of c){let p=r;if(f.length>0){let S=Ou(e,_l());BE(e,p,S),this.registerOptions(e,S),p=S}for(let S=0;S0||!this.arity.proxy){let S=Ou(e,_l());Hs(e,p,"isHelp",S,["useHelp",this.cliIndex]),Hs(e,S,"always",S,"pushExtra"),Ia(e,S,ei.EndOfInput,En.SuccessNode,["setSelectedIndex",Nd]),this.registerOptions(e,p)}this.arity.leading.length>0&&(Ia(e,p,ei.EndOfInput,En.ErrorNode,["setError","Not enough positional arguments"]),Ia(e,p,ei.EndOfPartialInput,En.SuccessNode,["setPartialIndex",this.cliIndex]));let h=p;for(let S=0;S0||S+1!==this.arity.leading.length)&&(Ia(e,P,ei.EndOfInput,En.ErrorNode,["setError","Not enough positional arguments"]),Ia(e,P,ei.EndOfPartialInput,En.SuccessNode,["setPartialIndex",this.cliIndex])),Hs(e,h,"isNotOptionLike",P,"pushPositional"),h=P}let E=h;if(this.arity.extra===Hl||this.arity.extra.length>0){let S=Ou(e,_l());if(BE(e,h,S),this.arity.extra===Hl){let P=Ou(e,_l());this.arity.proxy||this.registerOptions(e,P),Hs(e,h,n,P,"pushExtraNoLimits"),Hs(e,P,n,P,"pushExtraNoLimits"),BE(e,P,S)}else for(let P=0;P0)&&this.registerOptions(e,I),Hs(e,E,n,I,"pushExtra"),BE(e,I,S),E=I}E=S}this.arity.trailing.length>0&&(Ia(e,E,ei.EndOfInput,En.ErrorNode,["setError","Not enough positional arguments"]),Ia(e,E,ei.EndOfPartialInput,En.SuccessNode,["setPartialIndex",this.cliIndex]));let C=E;for(let S=0;S=0&&e{let c=n?ei.EndOfPartialInput:ei.EndOfInput;return yYe(s,a,{endToken:c})}}}}});function jre(){return Ux.default&&"getColorDepth"in Ux.default.WriteStream.prototype?Ux.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}function Gre(t){let e=Hre;if(typeof e>"u"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=Ie("async_hooks");e=Hre=new r;let s=process.stdout._write;process.stdout._write=function(n,c,f){let p=e.getStore();return typeof p>"u"?s.call(this,n,c,f):p.stdout.write(n,c,f)};let a=process.stderr._write;process.stderr._write=function(n,c,f){let p=e.getStore();return typeof p>"u"?a.call(this,n,c,f):p.stderr.write(n,c,f)}}return r=>e.run(t,r)}var Ux,Hre,qre=Xe(()=>{Ux=ut(Ie("tty"),1)});var _x,Wre=Xe(()=>{a0();_x=class t extends ot{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let s=new t(r);s.path=e.path;for(let a of e.options)switch(a.name){case"-c":s.commands.push(Number(a.value));break;case"-i":s.index=Number(a.value);break}return s}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: -`),this.context.stdout.write(` -`);let r=0;for(let s of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[s].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` -`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. -`)}}}});async function Jre(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=zre(t);return Ca.from(r,e).runExit(s,a)}async function Kre(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=zre(t);return Ca.from(r,e).run(s,a)}function zre(t){let e,r,s,a;switch(typeof process<"u"&&typeof process.argv<"u"&&(s=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof ot||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?s=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],s=t[2]):t[0]&&t[0].prototype instanceof ot||Array.isArray(t[0])?(r=t[0],s=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],s=t[2],a=t[3];break}if(typeof s>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}}function Vre(t){return t()}var Yre,Ca,Xre=Xe(()=>{Px();Mx();f_();qre();a0();Wre();Yre=Symbol("clipanion/errorCommand");Ca=class t{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:s,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Lx({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=s,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let s=new t(r),a=Array.isArray(e)?e:[e];for(let n of a)s.register(n);return s}register(e){var r;let s=new Map,a=new e;for(let p in a){let h=a[p];typeof h=="object"&&h!==null&&h[ot.isOption]&&s.set(p,h)}let n=this.builder.command(),c=n.cliIndex,f=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof f<"u")for(let p of f)n.addPath(p);this.registrations.set(e,{specs:s,builder:n,index:c});for(let[p,{definition:h}]of s.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{input:s,context:a,partial:n}=typeof e=="object"&&Array.isArray(e)?{input:e,context:r}:e,{contexts:c,process:f}=this.builder.compile(),p=f(s,{partial:n}),h={...t.defaultContext,...a};switch(p.selectedIndex){case Nd:{let E=_x.from(p,c);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=c[p.selectedIndex],C=this.registrations.get(E);if(typeof C>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let S=new E;S.context=h,S.tokens=p.tokens,S.path=p.path;try{for(let[P,{transformer:I}]of C.specs.entries())S[P]=I(C.builder,P,p,h);return S}catch(P){throw P[Yre]=S,P}}break}}async run(e,r){var s,a;let n,c={...t.defaultContext,...r},f=(s=this.enableColors)!==null&&s!==void 0?s:c.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,c)}catch(E){return c.stdout.write(this.error(E,{colored:f})),1}if(n.help)return c.stdout.write(this.usage(n,{colored:f,detailed:!0})),0;n.context=c,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,C)=>this.error(E,C),format:E=>this.format(E),process:(E,C)=>this.process(E,{...c,...C}),run:(E,C)=>this.run(E,{...c,...C}),usage:(E,C)=>this.usage(E,C)};let p=this.enableCapture&&(a=Gre(c))!==null&&a!==void 0?a:Vre,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return c.stdout.write(this.error(E,{colored:f,command:n})),1}return h}async runExit(e,r){process.exitCode=await this.run(e,r)}definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:s}=this.getUsageByRegistration(e,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(e,{detailed:!0,inlineOptions:!1}),c=typeof e.usage.category<"u"?Ho(e.usage.category,{format:this.format(r),paragraphs:!1}):void 0,f=typeof e.usage.description<"u"?Ho(e.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof e.usage.details<"u"?Ho(e.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof e.usage.examples<"u"?e.usage.examples.map(([E,C])=>[Ho(E,{format:this.format(r),paragraphs:!1}),C.replace(/\$0/g,this.binaryName)]):void 0;return{path:s,usage:a,category:c,description:f,details:p,examples:h,options:n}}definitions({colored:e=!1}={}){let r=[];for(let s of this.registrations.keys()){let a=this.definition(s,{colored:e});a&&r.push(a)}return r}usage(e=null,{colored:r,detailed:s=!1,prefix:a="$ "}={}){var n;if(e===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<"u";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(P=>P.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(E){e=null;continue}}e&&(s=!0)}let c=e!==null&&e instanceof ot?e.constructor:e,f="";if(c)if(s){let{description:p="",details:h="",examples:E=[]}=c.usage||{};p!==""&&(f+=Ho(p,{format:this.format(r),paragraphs:!1}).replace(/^./,P=>P.toUpperCase()),f+=` -`),(h!==""||E.length>0)&&(f+=`${this.format(r).header("Usage")} -`,f+=` -`);let{usage:C,options:S}=this.getUsageByRegistration(c,{inlineOptions:!1});if(f+=`${this.format(r).bold(a)}${C} -`,S.length>0){f+=` -`,f+=`${this.format(r).header("Options")} -`;let P=S.reduce((I,R)=>Math.max(I,R.definition.length),0);f+=` -`;for(let{definition:I,description:R}of S)f+=` ${this.format(r).bold(I.padEnd(P))} ${Ho(R,{format:this.format(r),paragraphs:!1})}`}if(h!==""&&(f+=` -`,f+=`${this.format(r).header("Details")} -`,f+=` -`,f+=Ho(h,{format:this.format(r),paragraphs:!0})),E.length>0){f+=` -`,f+=`${this.format(r).header("Examples")} -`;for(let[P,I]of E)f+=` -`,f+=Ho(P,{format:this.format(r),paragraphs:!1}),f+=`${I.replace(/^/m,` ${this.format(r).bold(a)}`).replace(/\$0/g,this.binaryName)} -`}}else{let{usage:p}=this.getUsageByRegistration(c);f+=`${this.format(r).bold(a)}${p} -`}else{let p=new Map;for(let[S,{index:P}]of this.registrations.entries()){if(typeof S.usage>"u")continue;let I=typeof S.usage.category<"u"?Ho(S.usage.category,{format:this.format(r),paragraphs:!1}):null,R=p.get(I);typeof R>"u"&&p.set(I,R=[]);let{usage:N}=this.getUsageByIndex(P);R.push({commandClass:S,usage:N})}let h=Array.from(p.keys()).sort((S,P)=>S===null?-1:P===null?1:S.localeCompare(P,"en",{usage:"sort",caseFirst:"upper"})),E=typeof this.binaryLabel<"u",C=typeof this.binaryVersion<"u";E||C?(E&&C?f+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} - -`:E?f+=`${this.format(r).header(`${this.binaryLabel}`)} -`:f+=`${this.format(r).header(`${this.binaryVersion}`)} -`,f+=` ${this.format(r).bold(a)}${this.binaryName} -`):f+=`${this.format(r).bold(a)}${this.binaryName} -`;for(let S of h){let P=p.get(S).slice().sort((R,N)=>R.usage.localeCompare(N.usage,"en",{usage:"sort",caseFirst:"upper"})),I=S!==null?S.trim():"General commands";f+=` -`,f+=`${this.format(r).header(`${I}`)} -`;for(let{commandClass:R,usage:N}of P){let U=R.usage.description||"undocumented";f+=` -`,f+=` ${this.format(r).bold(N)} -`,f+=` ${Ho(U,{format:this.format(r),paragraphs:!1})}`}}f+=` -`,f+=Ho("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return f}error(e,r){var s,{colored:a,command:n=(s=e[Yre])!==null&&s!==void 0?s:null}=r===void 0?{}:r;(!e||typeof e!="object"||!("stack"in e))&&(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let c="",f=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");f==="Error"&&(f="Internal Error"),c+=`${this.format(a).error(f)}: ${e.message} -`;let p=e.clipanion;return typeof p<"u"?p.type==="usage"&&(c+=` -`,c+=this.usage(n)):e.stack&&(c+=`${e.stack.replace(/^.*\n/,"")} -`),c}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:t.defaultContext.colorDepth>1)?kre:Qre}getUsageByRegistration(e,r){let s=this.registrations.get(e);if(typeof s>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(s.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};Ca.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:jre()}});var rB,Zre=Xe(()=>{a0();rB=class extends ot{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} -`)}};rB.paths=[["--clipanion=definitions"]]});var nB,$re=Xe(()=>{a0();nB=class extends ot{async execute(){this.context.stdout.write(this.cli.usage())}};nB.paths=[["-h"],["--help"]]});function Hx(t={}){return ya({definition(e,r){var s;e.addProxy({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){return s.positionals.map(({value:a})=>a)}})}var w_=Xe(()=>{Cp()});var iB,ene=Xe(()=>{a0();w_();iB=class extends ot{constructor(){super(...arguments),this.args=Hx()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)} -`)}};iB.paths=[["--clipanion=tokens"]]});var sB,tne=Xe(()=>{a0();sB=class extends ot{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} -`)}};sB.paths=[["-v"],["--version"]]});var B_={};Vt(B_,{DefinitionsCommand:()=>rB,HelpCommand:()=>nB,TokensCommand:()=>iB,VersionCommand:()=>sB});var rne=Xe(()=>{Zre();$re();ene();tne()});function nne(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(","),f=new Set(c);return ya({definition(p){p.addOption({names:c,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let C,S=typeof s<"u"?[...s]:void 0;for(let{name:P,value:I}of E.options)f.has(P)&&(C=P,S=S??[],S.push(I));return typeof S<"u"?Od(C??h,S,a.validator):S}})}var ine=Xe(()=>{Cp()});function sne(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(","),c=new Set(n);return ya({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E=S);return E}})}var one=Xe(()=>{Cp()});function ane(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(","),c=new Set(n);return ya({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E??(E=0),S?E+=1:E=0);return E}})}var lne=Xe(()=>{Cp()});function cne(t={}){return ya({definition(e,r){var s;e.addRest({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){let a=c=>{let f=s.positionals[c];return f.extra===Hl||f.extra===!1&&cc)}})}var une=Xe(()=>{Mx();Cp()});function vYe(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(","),f=new Set(c);return ya({definition(p){p.addOption({names:c,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,C){let S,P=s;typeof a.env<"u"&&C.env[a.env]&&(S=a.env,P=C.env[a.env]);for(let{name:I,value:R}of E.options)f.has(I)&&(S=I,P=R);return typeof P=="string"?Od(S??h,P,a.validator):P}})}function SYe(t={}){let{required:e=!0}=t;return ya({definition(r,s){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:s,required:t.required})},transformer(r,s,a){var n;for(let c=0;c{Mx();Cp()});var ge={};Vt(ge,{Array:()=>nne,Boolean:()=>sne,Counter:()=>ane,Proxy:()=>Hx,Rest:()=>cne,String:()=>fne,applyValidator:()=>Od,cleanValidationError:()=>Qx,formatError:()=>z2,isOptionSymbol:()=>K2,makeCommandOption:()=>ya,rerouteArguments:()=>Gf});var pne=Xe(()=>{Cp();w_();ine();one();lne();une();Ane()});var oB={};Vt(oB,{Builtins:()=>B_,Cli:()=>Ca,Command:()=>ot,Option:()=>ge,UsageError:()=>nt,formatMarkdownish:()=>Ho,run:()=>Kre,runExit:()=>Jre});var Yt=Xe(()=>{kx();f_();a0();Xre();rne();pne()});var hne=_((VTt,DYe)=>{DYe.exports={name:"dotenv",version:"16.3.1",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard","lint-readme":"standard-markdown",pretest:"npm run lint && npm run dts-check",test:"tap tests/*.js --100 -Rspec",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},funding:"https://github.com/motdotla/dotenv?sponsor=1",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@definitelytyped/dtslint":"^0.0.133","@types/node":"^18.11.3",decache:"^4.6.1",sinon:"^14.0.1",standard:"^17.0.0","standard-markdown":"^7.1.0","standard-version":"^9.5.0",tap:"^16.3.0",tar:"^6.1.11",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var yne=_((JTt,wp)=>{var gne=Ie("fs"),S_=Ie("path"),bYe=Ie("os"),PYe=Ie("crypto"),xYe=hne(),D_=xYe.version,kYe=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function QYe(t){let e={},r=t.toString();r=r.replace(/\r\n?/mg,` -`);let s;for(;(s=kYe.exec(r))!=null;){let a=s[1],n=s[2]||"";n=n.trim();let c=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),c==='"'&&(n=n.replace(/\\n/g,` -`),n=n.replace(/\\r/g,"\r")),e[a]=n}return e}function TYe(t){let e=mne(t),r=js.configDotenv({path:e});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);let s=dne(t).split(","),a=s.length,n;for(let c=0;c=a)throw f}return js.parse(n)}function RYe(t){console.log(`[dotenv@${D_}][INFO] ${t}`)}function FYe(t){console.log(`[dotenv@${D_}][WARN] ${t}`)}function v_(t){console.log(`[dotenv@${D_}][DEBUG] ${t}`)}function dne(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function NYe(t,e){let r;try{r=new URL(e)}catch(f){throw f.code==="ERR_INVALID_URL"?new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development"):f}let s=r.password;if(!s)throw new Error("INVALID_DOTENV_KEY: Missing key part");let a=r.searchParams.get("environment");if(!a)throw new Error("INVALID_DOTENV_KEY: Missing environment part");let n=`DOTENV_VAULT_${a.toUpperCase()}`,c=t.parsed[n];if(!c)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:c,key:s}}function mne(t){let e=S_.resolve(process.cwd(),".env");return t&&t.path&&t.path.length>0&&(e=t.path),e.endsWith(".vault")?e:`${e}.vault`}function OYe(t){return t[0]==="~"?S_.join(bYe.homedir(),t.slice(1)):t}function LYe(t){RYe("Loading env from encrypted .env.vault");let e=js._parseVault(t),r=process.env;return t&&t.processEnv!=null&&(r=t.processEnv),js.populate(r,e,t),{parsed:e}}function MYe(t){let e=S_.resolve(process.cwd(),".env"),r="utf8",s=!!(t&&t.debug);t&&(t.path!=null&&(e=OYe(t.path)),t.encoding!=null&&(r=t.encoding));try{let a=js.parse(gne.readFileSync(e,{encoding:r})),n=process.env;return t&&t.processEnv!=null&&(n=t.processEnv),js.populate(n,a,t),{parsed:a}}catch(a){return s&&v_(`Failed to load ${e} ${a.message}`),{error:a}}}function UYe(t){let e=mne(t);return dne(t).length===0?js.configDotenv(t):gne.existsSync(e)?js._configVault(t):(FYe(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),js.configDotenv(t))}function _Ye(t,e){let r=Buffer.from(e.slice(-64),"hex"),s=Buffer.from(t,"base64"),a=s.slice(0,12),n=s.slice(-16);s=s.slice(12,-16);try{let c=PYe.createDecipheriv("aes-256-gcm",r,a);return c.setAuthTag(n),`${c.update(s)}${c.final()}`}catch(c){let f=c instanceof RangeError,p=c.message==="Invalid key length",h=c.message==="Unsupported state or unable to authenticate data";if(f||p){let E="INVALID_DOTENV_KEY: It must be 64 characters long (or more)";throw new Error(E)}else if(h){let E="DECRYPTION_FAILED: Please check your DOTENV_KEY";throw new Error(E)}else throw console.error("Error: ",c.code),console.error("Error: ",c.message),c}}function HYe(t,e,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeof e!="object")throw new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(t,n)?(a===!0&&(t[n]=e[n]),s&&v_(a===!0?`"${n}" is already defined and WAS overwritten`:`"${n}" is already defined and was NOT overwritten`)):t[n]=e[n]}var js={configDotenv:MYe,_configVault:LYe,_parseVault:TYe,config:UYe,decrypt:_Ye,parse:QYe,populate:HYe};wp.exports.configDotenv=js.configDotenv;wp.exports._configVault=js._configVault;wp.exports._parseVault=js._parseVault;wp.exports.config=js.config;wp.exports.decrypt=js.decrypt;wp.exports.parse=js.parse;wp.exports.populate=js.populate;wp.exports=js});var Ine=_((KTt,Ene)=>{"use strict";Ene.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Ld=_((zTt,b_)=>{"use strict";var jYe=Ine(),Cne=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,s=()=>{r--,e.length>0&&e.shift()()},a=(f,p,...h)=>{r++;let E=jYe(f,...h);p(E),E.then(s,s)},n=(f,p,...h)=>{rnew Promise(h=>n(f,h,...p));return Object.defineProperties(c,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),c};b_.exports=Cne;b_.exports.default=Cne});function Yf(t){return`YN${t.toString(10).padStart(4,"0")}`}function jx(t){let e=Number(t.slice(2));if(typeof Br[e]>"u")throw new Error(`Unknown message name: "${t}"`);return e}var Br,Gx=Xe(()=>{Br=(Me=>(Me[Me.UNNAMED=0]="UNNAMED",Me[Me.EXCEPTION=1]="EXCEPTION",Me[Me.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",Me[Me.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",Me[Me.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",Me[Me.BUILD_DISABLED=5]="BUILD_DISABLED",Me[Me.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",Me[Me.MUST_BUILD=7]="MUST_BUILD",Me[Me.MUST_REBUILD=8]="MUST_REBUILD",Me[Me.BUILD_FAILED=9]="BUILD_FAILED",Me[Me.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",Me[Me.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",Me[Me.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",Me[Me.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",Me[Me.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",Me[Me.REMOTE_INVALID=15]="REMOTE_INVALID",Me[Me.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",Me[Me.RESOLUTION_PACK=17]="RESOLUTION_PACK",Me[Me.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",Me[Me.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",Me[Me.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",Me[Me.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",Me[Me.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",Me[Me.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",Me[Me.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",Me[Me.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",Me[Me.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",Me[Me.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",Me[Me.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",Me[Me.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",Me[Me.FETCH_FAILED=30]="FETCH_FAILED",Me[Me.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",Me[Me.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",Me[Me.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",Me[Me.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",Me[Me.NETWORK_ERROR=35]="NETWORK_ERROR",Me[Me.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",Me[Me.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",Me[Me.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",Me[Me.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",Me[Me.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",Me[Me.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",Me[Me.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",Me[Me.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",Me[Me.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",Me[Me.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",Me[Me.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",Me[Me.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",Me[Me.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",Me[Me.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",Me[Me.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",Me[Me.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",Me[Me.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",Me[Me.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",Me[Me.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",Me[Me.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",Me[Me.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",Me[Me.INVALID_MANIFEST=57]="INVALID_MANIFEST",Me[Me.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",Me[Me.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",Me[Me.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",Me[Me.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",Me[Me.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",Me[Me.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",Me[Me.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",Me[Me.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",Me[Me.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",Me[Me.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",Me[Me.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",Me[Me.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",Me[Me.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",Me[Me.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",Me[Me.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",Me[Me.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",Me[Me.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",Me[Me.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",Me[Me.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",Me[Me.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",Me[Me.RESOLUTION_MISMATCH=78]="RESOLUTION_MISMATCH",Me[Me.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",Me[Me.NETWORK_DISABLED=80]="NETWORK_DISABLED",Me[Me.NETWORK_UNSAFE_HTTP=81]="NETWORK_UNSAFE_HTTP",Me[Me.RESOLUTION_FAILED=82]="RESOLUTION_FAILED",Me[Me.AUTOMERGE_GIT_ERROR=83]="AUTOMERGE_GIT_ERROR",Me[Me.CONSTRAINTS_CHECK_FAILED=84]="CONSTRAINTS_CHECK_FAILED",Me[Me.UPDATED_RESOLUTION_RECORD=85]="UPDATED_RESOLUTION_RECORD",Me[Me.EXPLAIN_PEER_DEPENDENCIES_CTA=86]="EXPLAIN_PEER_DEPENDENCIES_CTA",Me[Me.MIGRATION_SUCCESS=87]="MIGRATION_SUCCESS",Me[Me.VERSION_NOTICE=88]="VERSION_NOTICE",Me[Me.TIPS_NOTICE=89]="TIPS_NOTICE",Me[Me.OFFLINE_MODE_ENABLED=90]="OFFLINE_MODE_ENABLED",Me[Me.INVALID_PROVENANCE_ENVIRONMENT=91]="INVALID_PROVENANCE_ENVIRONMENT",Me))(Br||{})});var aB=_((ZTt,wne)=>{var GYe="2.0.0",qYe=Number.MAX_SAFE_INTEGER||9007199254740991,WYe=16,YYe=250,VYe=["major","premajor","minor","preminor","patch","prepatch","prerelease"];wne.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:WYe,MAX_SAFE_BUILD_LENGTH:YYe,MAX_SAFE_INTEGER:qYe,RELEASE_TYPES:VYe,SEMVER_SPEC_VERSION:GYe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var lB=_(($Tt,Bne)=>{var JYe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};Bne.exports=JYe});var vE=_((Bp,vne)=>{var{MAX_SAFE_COMPONENT_LENGTH:P_,MAX_SAFE_BUILD_LENGTH:KYe,MAX_LENGTH:zYe}=aB(),XYe=lB();Bp=vne.exports={};var ZYe=Bp.re=[],$Ye=Bp.safeRe=[],rr=Bp.src=[],nr=Bp.t={},eVe=0,x_="[a-zA-Z0-9-]",tVe=[["\\s",1],["\\d",zYe],[x_,KYe]],rVe=t=>{for(let[e,r]of tVe)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Jr=(t,e,r)=>{let s=rVe(e),a=eVe++;XYe(t,a,e),nr[t]=a,rr[a]=e,ZYe[a]=new RegExp(e,r?"g":void 0),$Ye[a]=new RegExp(s,r?"g":void 0)};Jr("NUMERICIDENTIFIER","0|[1-9]\\d*");Jr("NUMERICIDENTIFIERLOOSE","\\d+");Jr("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${x_}*`);Jr("MAINVERSION",`(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})`);Jr("MAINVERSIONLOOSE",`(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})`);Jr("PRERELEASEIDENTIFIER",`(?:${rr[nr.NUMERICIDENTIFIER]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Jr("PRERELEASEIDENTIFIERLOOSE",`(?:${rr[nr.NUMERICIDENTIFIERLOOSE]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Jr("PRERELEASE",`(?:-(${rr[nr.PRERELEASEIDENTIFIER]}(?:\\.${rr[nr.PRERELEASEIDENTIFIER]})*))`);Jr("PRERELEASELOOSE",`(?:-?(${rr[nr.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${rr[nr.PRERELEASEIDENTIFIERLOOSE]})*))`);Jr("BUILDIDENTIFIER",`${x_}+`);Jr("BUILD",`(?:\\+(${rr[nr.BUILDIDENTIFIER]}(?:\\.${rr[nr.BUILDIDENTIFIER]})*))`);Jr("FULLPLAIN",`v?${rr[nr.MAINVERSION]}${rr[nr.PRERELEASE]}?${rr[nr.BUILD]}?`);Jr("FULL",`^${rr[nr.FULLPLAIN]}$`);Jr("LOOSEPLAIN",`[v=\\s]*${rr[nr.MAINVERSIONLOOSE]}${rr[nr.PRERELEASELOOSE]}?${rr[nr.BUILD]}?`);Jr("LOOSE",`^${rr[nr.LOOSEPLAIN]}$`);Jr("GTLT","((?:<|>)?=?)");Jr("XRANGEIDENTIFIERLOOSE",`${rr[nr.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Jr("XRANGEIDENTIFIER",`${rr[nr.NUMERICIDENTIFIER]}|x|X|\\*`);Jr("XRANGEPLAIN",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:${rr[nr.PRERELEASE]})?${rr[nr.BUILD]}?)?)?`);Jr("XRANGEPLAINLOOSE",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:${rr[nr.PRERELEASELOOSE]})?${rr[nr.BUILD]}?)?)?`);Jr("XRANGE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAIN]}$`);Jr("XRANGELOOSE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("COERCEPLAIN",`(^|[^\\d])(\\d{1,${P_}})(?:\\.(\\d{1,${P_}}))?(?:\\.(\\d{1,${P_}}))?`);Jr("COERCE",`${rr[nr.COERCEPLAIN]}(?:$|[^\\d])`);Jr("COERCEFULL",rr[nr.COERCEPLAIN]+`(?:${rr[nr.PRERELEASE]})?(?:${rr[nr.BUILD]})?(?:$|[^\\d])`);Jr("COERCERTL",rr[nr.COERCE],!0);Jr("COERCERTLFULL",rr[nr.COERCEFULL],!0);Jr("LONETILDE","(?:~>?)");Jr("TILDETRIM",`(\\s*)${rr[nr.LONETILDE]}\\s+`,!0);Bp.tildeTrimReplace="$1~";Jr("TILDE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAIN]}$`);Jr("TILDELOOSE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("LONECARET","(?:\\^)");Jr("CARETTRIM",`(\\s*)${rr[nr.LONECARET]}\\s+`,!0);Bp.caretTrimReplace="$1^";Jr("CARET",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAIN]}$`);Jr("CARETLOOSE",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("COMPARATORLOOSE",`^${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]})$|^$`);Jr("COMPARATOR",`^${rr[nr.GTLT]}\\s*(${rr[nr.FULLPLAIN]})$|^$`);Jr("COMPARATORTRIM",`(\\s*)${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]}|${rr[nr.XRANGEPLAIN]})`,!0);Bp.comparatorTrimReplace="$1$2$3";Jr("HYPHENRANGE",`^\\s*(${rr[nr.XRANGEPLAIN]})\\s+-\\s+(${rr[nr.XRANGEPLAIN]})\\s*$`);Jr("HYPHENRANGELOOSE",`^\\s*(${rr[nr.XRANGEPLAINLOOSE]})\\s+-\\s+(${rr[nr.XRANGEPLAINLOOSE]})\\s*$`);Jr("STAR","(<|>)?=?\\s*\\*");Jr("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Jr("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var qx=_((eRt,Sne)=>{var nVe=Object.freeze({loose:!0}),iVe=Object.freeze({}),sVe=t=>t?typeof t!="object"?nVe:t:iVe;Sne.exports=sVe});var k_=_((tRt,Pne)=>{var Dne=/^[0-9]+$/,bne=(t,e)=>{let r=Dne.test(t),s=Dne.test(e);return r&&s&&(t=+t,e=+e),t===e?0:r&&!s?-1:s&&!r?1:tbne(e,t);Pne.exports={compareIdentifiers:bne,rcompareIdentifiers:oVe}});var jo=_((rRt,Tne)=>{var Wx=lB(),{MAX_LENGTH:xne,MAX_SAFE_INTEGER:Yx}=aB(),{safeRe:kne,t:Qne}=vE(),aVe=qx(),{compareIdentifiers:SE}=k_(),Q_=class t{constructor(e,r){if(r=aVe(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>xne)throw new TypeError(`version is longer than ${xne} characters`);Wx("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let s=e.trim().match(r.loose?kne[Qne.LOOSE]:kne[Qne.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>Yx||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Yx||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Yx||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(a)}}if(r){let n=[r,a];s===!1&&(n=[r]),SE(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Tne.exports=Q_});var Md=_((nRt,Fne)=>{var Rne=jo(),lVe=(t,e,r=!1)=>{if(t instanceof Rne)return t;try{return new Rne(t,e)}catch(s){if(!r)return null;throw s}};Fne.exports=lVe});var One=_((iRt,Nne)=>{var cVe=Md(),uVe=(t,e)=>{let r=cVe(t,e);return r?r.version:null};Nne.exports=uVe});var Mne=_((sRt,Lne)=>{var fVe=Md(),AVe=(t,e)=>{let r=fVe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};Lne.exports=AVe});var Hne=_((oRt,_ne)=>{var Une=jo(),pVe=(t,e,r,s,a)=>{typeof r=="string"&&(a=s,s=r,r=void 0);try{return new Une(t instanceof Une?t.version:t,r).inc(e,s,a).version}catch{return null}};_ne.exports=pVe});var qne=_((aRt,Gne)=>{var jne=Md(),hVe=(t,e)=>{let r=jne(t,null,!0),s=jne(e,null,!0),a=r.compare(s);if(a===0)return null;let n=a>0,c=n?r:s,f=n?s:r,p=!!c.prerelease.length;if(!!f.prerelease.length&&!p)return!f.patch&&!f.minor?"major":c.patch?"patch":c.minor?"minor":"major";let E=p?"pre":"";return r.major!==s.major?E+"major":r.minor!==s.minor?E+"minor":r.patch!==s.patch?E+"patch":"prerelease"};Gne.exports=hVe});var Yne=_((lRt,Wne)=>{var gVe=jo(),dVe=(t,e)=>new gVe(t,e).major;Wne.exports=dVe});var Jne=_((cRt,Vne)=>{var mVe=jo(),yVe=(t,e)=>new mVe(t,e).minor;Vne.exports=yVe});var zne=_((uRt,Kne)=>{var EVe=jo(),IVe=(t,e)=>new EVe(t,e).patch;Kne.exports=IVe});var Zne=_((fRt,Xne)=>{var CVe=Md(),wVe=(t,e)=>{let r=CVe(t,e);return r&&r.prerelease.length?r.prerelease:null};Xne.exports=wVe});var Bc=_((ARt,eie)=>{var $ne=jo(),BVe=(t,e,r)=>new $ne(t,r).compare(new $ne(e,r));eie.exports=BVe});var rie=_((pRt,tie)=>{var vVe=Bc(),SVe=(t,e,r)=>vVe(e,t,r);tie.exports=SVe});var iie=_((hRt,nie)=>{var DVe=Bc(),bVe=(t,e)=>DVe(t,e,!0);nie.exports=bVe});var Vx=_((gRt,oie)=>{var sie=jo(),PVe=(t,e,r)=>{let s=new sie(t,r),a=new sie(e,r);return s.compare(a)||s.compareBuild(a)};oie.exports=PVe});var lie=_((dRt,aie)=>{var xVe=Vx(),kVe=(t,e)=>t.sort((r,s)=>xVe(r,s,e));aie.exports=kVe});var uie=_((mRt,cie)=>{var QVe=Vx(),TVe=(t,e)=>t.sort((r,s)=>QVe(s,r,e));cie.exports=TVe});var cB=_((yRt,fie)=>{var RVe=Bc(),FVe=(t,e,r)=>RVe(t,e,r)>0;fie.exports=FVe});var Jx=_((ERt,Aie)=>{var NVe=Bc(),OVe=(t,e,r)=>NVe(t,e,r)<0;Aie.exports=OVe});var T_=_((IRt,pie)=>{var LVe=Bc(),MVe=(t,e,r)=>LVe(t,e,r)===0;pie.exports=MVe});var R_=_((CRt,hie)=>{var UVe=Bc(),_Ve=(t,e,r)=>UVe(t,e,r)!==0;hie.exports=_Ve});var Kx=_((wRt,gie)=>{var HVe=Bc(),jVe=(t,e,r)=>HVe(t,e,r)>=0;gie.exports=jVe});var zx=_((BRt,die)=>{var GVe=Bc(),qVe=(t,e,r)=>GVe(t,e,r)<=0;die.exports=qVe});var F_=_((vRt,mie)=>{var WVe=T_(),YVe=R_(),VVe=cB(),JVe=Kx(),KVe=Jx(),zVe=zx(),XVe=(t,e,r,s)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return WVe(t,r,s);case"!=":return YVe(t,r,s);case">":return VVe(t,r,s);case">=":return JVe(t,r,s);case"<":return KVe(t,r,s);case"<=":return zVe(t,r,s);default:throw new TypeError(`Invalid operator: ${e}`)}};mie.exports=XVe});var Eie=_((SRt,yie)=>{var ZVe=jo(),$Ve=Md(),{safeRe:Xx,t:Zx}=vE(),e7e=(t,e)=>{if(t instanceof ZVe)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(e.includePrerelease?Xx[Zx.COERCEFULL]:Xx[Zx.COERCE]);else{let p=e.includePrerelease?Xx[Zx.COERCERTLFULL]:Xx[Zx.COERCERTL],h;for(;(h=p.exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||h.index+h[0].length!==r.index+r[0].length)&&(r=h),p.lastIndex=h.index+h[1].length+h[2].length;p.lastIndex=-1}if(r===null)return null;let s=r[2],a=r[3]||"0",n=r[4]||"0",c=e.includePrerelease&&r[5]?`-${r[5]}`:"",f=e.includePrerelease&&r[6]?`+${r[6]}`:"";return $Ve(`${s}.${a}.${n}${c}${f}`,e)};yie.exports=e7e});var Cie=_((DRt,Iie)=>{"use strict";Iie.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var $x=_((bRt,wie)=>{"use strict";wie.exports=Fn;Fn.Node=Ud;Fn.create=Fn;function Fn(t){var e=this;if(e instanceof Fn||(e=new Fn),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(a){e.push(a)});else if(arguments.length>0)for(var r=0,s=arguments.length;r1)r=e;else if(this.head)s=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;s!==null;a++)r=t(r,s.value,a),s=s.next;return r};Fn.prototype.reduceReverse=function(t,e){var r,s=this.tail;if(arguments.length>1)r=e;else if(this.tail)s=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=this.length-1;s!==null;a--)r=t(r,s.value,a),s=s.prev;return r};Fn.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Fn.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Fn.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Fn;if(ethis.length&&(e=this.length);for(var s=0,a=this.head;a!==null&&sthis.length&&(e=this.length);for(var s=this.length,a=this.tail;a!==null&&s>e;s--)a=a.prev;for(;a!==null&&s>t;s--,a=a.prev)r.push(a.value);return r};Fn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var s=0,a=this.head;a!==null&&s{"use strict";var i7e=$x(),_d=Symbol("max"),Sp=Symbol("length"),DE=Symbol("lengthCalculator"),fB=Symbol("allowStale"),Hd=Symbol("maxAge"),vp=Symbol("dispose"),Bie=Symbol("noDisposeOnSet"),Gs=Symbol("lruList"),Lu=Symbol("cache"),Sie=Symbol("updateAgeOnGet"),N_=()=>1,L_=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[_d]=e.max||1/0,s=e.length||N_;if(this[DE]=typeof s!="function"?N_:s,this[fB]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Hd]=e.maxAge||0,this[vp]=e.dispose,this[Bie]=e.noDisposeOnSet||!1,this[Sie]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[_d]=e||1/0,uB(this)}get max(){return this[_d]}set allowStale(e){this[fB]=!!e}get allowStale(){return this[fB]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Hd]=e,uB(this)}get maxAge(){return this[Hd]}set lengthCalculator(e){typeof e!="function"&&(e=N_),e!==this[DE]&&(this[DE]=e,this[Sp]=0,this[Gs].forEach(r=>{r.length=this[DE](r.value,r.key),this[Sp]+=r.length})),uB(this)}get lengthCalculator(){return this[DE]}get length(){return this[Sp]}get itemCount(){return this[Gs].length}rforEach(e,r){r=r||this;for(let s=this[Gs].tail;s!==null;){let a=s.prev;vie(this,e,s,r),s=a}}forEach(e,r){r=r||this;for(let s=this[Gs].head;s!==null;){let a=s.next;vie(this,e,s,r),s=a}}keys(){return this[Gs].toArray().map(e=>e.key)}values(){return this[Gs].toArray().map(e=>e.value)}reset(){this[vp]&&this[Gs]&&this[Gs].length&&this[Gs].forEach(e=>this[vp](e.key,e.value)),this[Lu]=new Map,this[Gs]=new i7e,this[Sp]=0}dump(){return this[Gs].map(e=>ek(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Gs]}set(e,r,s){if(s=s||this[Hd],s&&typeof s!="number")throw new TypeError("maxAge must be a number");let a=s?Date.now():0,n=this[DE](r,e);if(this[Lu].has(e)){if(n>this[_d])return bE(this,this[Lu].get(e)),!1;let p=this[Lu].get(e).value;return this[vp]&&(this[Bie]||this[vp](e,p.value)),p.now=a,p.maxAge=s,p.value=r,this[Sp]+=n-p.length,p.length=n,this.get(e),uB(this),!0}let c=new M_(e,r,n,a,s);return c.length>this[_d]?(this[vp]&&this[vp](e,r),!1):(this[Sp]+=c.length,this[Gs].unshift(c),this[Lu].set(e,this[Gs].head),uB(this),!0)}has(e){if(!this[Lu].has(e))return!1;let r=this[Lu].get(e).value;return!ek(this,r)}get(e){return O_(this,e,!0)}peek(e){return O_(this,e,!1)}pop(){let e=this[Gs].tail;return e?(bE(this,e),e.value):null}del(e){bE(this,this[Lu].get(e))}load(e){this.reset();let r=Date.now();for(let s=e.length-1;s>=0;s--){let a=e[s],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let c=n-r;c>0&&this.set(a.k,a.v,c)}}}prune(){this[Lu].forEach((e,r)=>O_(this,r,!1))}},O_=(t,e,r)=>{let s=t[Lu].get(e);if(s){let a=s.value;if(ek(t,a)){if(bE(t,s),!t[fB])return}else r&&(t[Sie]&&(s.value.now=Date.now()),t[Gs].unshiftNode(s));return a.value}},ek=(t,e)=>{if(!e||!e.maxAge&&!t[Hd])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[Hd]&&r>t[Hd]},uB=t=>{if(t[Sp]>t[_d])for(let e=t[Gs].tail;t[Sp]>t[_d]&&e!==null;){let r=e.prev;bE(t,e),e=r}},bE=(t,e)=>{if(e){let r=e.value;t[vp]&&t[vp](r.key,r.value),t[Sp]-=r.length,t[Lu].delete(r.key),t[Gs].removeNode(e)}},M_=class{constructor(e,r,s,a,n){this.key=e,this.value=r,this.length=s,this.now=a,this.maxAge=n||0}},vie=(t,e,r,s)=>{let a=r.value;ek(t,a)&&(bE(t,r),t[fB]||(a=void 0)),a&&e.call(s,a.value,a.key,t)};Die.exports=L_});var vc=_((xRt,Qie)=>{var U_=class t{constructor(e,r){if(r=o7e(r),e instanceof t)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new t(e.raw,r);if(e instanceof __)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(s=>this.parseRange(s.trim())).filter(s=>s.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let s=this.set[0];if(this.set=this.set.filter(a=>!xie(a[0])),this.set.length===0)this.set=[s];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&p7e(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){let s=((this.options.includePrerelease&&f7e)|(this.options.loose&&A7e))+":"+e,a=Pie.get(s);if(a)return a;let n=this.options.loose,c=n?sl[wa.HYPHENRANGELOOSE]:sl[wa.HYPHENRANGE];e=e.replace(c,B7e(this.options.includePrerelease)),vi("hyphen replace",e),e=e.replace(sl[wa.COMPARATORTRIM],l7e),vi("comparator trim",e),e=e.replace(sl[wa.TILDETRIM],c7e),vi("tilde trim",e),e=e.replace(sl[wa.CARETTRIM],u7e),vi("caret trim",e);let f=e.split(" ").map(C=>h7e(C,this.options)).join(" ").split(/\s+/).map(C=>w7e(C,this.options));n&&(f=f.filter(C=>(vi("loose invalid filter",C,this.options),!!C.match(sl[wa.COMPARATORLOOSE])))),vi("range list",f);let p=new Map,h=f.map(C=>new __(C,this.options));for(let C of h){if(xie(C))return[C];p.set(C.value,C)}p.size>1&&p.has("")&&p.delete("");let E=[...p.values()];return Pie.set(s,E),E}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some(s=>kie(s,r)&&e.set.some(a=>kie(a,r)&&s.every(n=>a.every(c=>n.intersects(c,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new a7e(e,this.options)}catch{return!1}for(let r=0;rt.value==="<0.0.0-0",p7e=t=>t.value==="",kie=(t,e)=>{let r=!0,s=t.slice(),a=s.pop();for(;r&&s.length;)r=s.every(n=>a.intersects(n,e)),a=s.pop();return r},h7e=(t,e)=>(vi("comp",t,e),t=m7e(t,e),vi("caret",t),t=g7e(t,e),vi("tildes",t),t=E7e(t,e),vi("xrange",t),t=C7e(t,e),vi("stars",t),t),Ba=t=>!t||t.toLowerCase()==="x"||t==="*",g7e=(t,e)=>t.trim().split(/\s+/).map(r=>d7e(r,e)).join(" "),d7e=(t,e)=>{let r=e.loose?sl[wa.TILDELOOSE]:sl[wa.TILDE];return t.replace(r,(s,a,n,c,f)=>{vi("tilde",t,s,a,n,c,f);let p;return Ba(a)?p="":Ba(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Ba(c)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:f?(vi("replaceTilde pr",f),p=`>=${a}.${n}.${c}-${f} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${c} <${a}.${+n+1}.0-0`,vi("tilde return",p),p})},m7e=(t,e)=>t.trim().split(/\s+/).map(r=>y7e(r,e)).join(" "),y7e=(t,e)=>{vi("caret",t,e);let r=e.loose?sl[wa.CARETLOOSE]:sl[wa.CARET],s=e.includePrerelease?"-0":"";return t.replace(r,(a,n,c,f,p)=>{vi("caret",t,a,n,c,f,p);let h;return Ba(n)?h="":Ba(c)?h=`>=${n}.0.0${s} <${+n+1}.0.0-0`:Ba(f)?n==="0"?h=`>=${n}.${c}.0${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.0${s} <${+n+1}.0.0-0`:p?(vi("replaceCaret pr",p),n==="0"?c==="0"?h=`>=${n}.${c}.${f}-${p} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}-${p} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f}-${p} <${+n+1}.0.0-0`):(vi("no pr"),n==="0"?c==="0"?h=`>=${n}.${c}.${f}${s} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f} <${+n+1}.0.0-0`),vi("caret return",h),h})},E7e=(t,e)=>(vi("replaceXRanges",t,e),t.split(/\s+/).map(r=>I7e(r,e)).join(" ")),I7e=(t,e)=>{t=t.trim();let r=e.loose?sl[wa.XRANGELOOSE]:sl[wa.XRANGE];return t.replace(r,(s,a,n,c,f,p)=>{vi("xRange",t,s,a,n,c,f,p);let h=Ba(n),E=h||Ba(c),C=E||Ba(f),S=C;return a==="="&&S&&(a=""),p=e.includePrerelease?"-0":"",h?a===">"||a==="<"?s="<0.0.0-0":s="*":a&&S?(E&&(c=0),f=0,a===">"?(a=">=",E?(n=+n+1,c=0,f=0):(c=+c+1,f=0)):a==="<="&&(a="<",E?n=+n+1:c=+c+1),a==="<"&&(p="-0"),s=`${a+n}.${c}.${f}${p}`):E?s=`>=${n}.0.0${p} <${+n+1}.0.0-0`:C&&(s=`>=${n}.${c}.0${p} <${n}.${+c+1}.0-0`),vi("xRange return",s),s})},C7e=(t,e)=>(vi("replaceStars",t,e),t.trim().replace(sl[wa.STAR],"")),w7e=(t,e)=>(vi("replaceGTE0",t,e),t.trim().replace(sl[e.includePrerelease?wa.GTE0PRE:wa.GTE0],"")),B7e=t=>(e,r,s,a,n,c,f,p,h,E,C,S,P)=>(Ba(s)?r="":Ba(a)?r=`>=${s}.0.0${t?"-0":""}`:Ba(n)?r=`>=${s}.${a}.0${t?"-0":""}`:c?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ba(h)?p="":Ba(E)?p=`<${+h+1}.0.0-0`:Ba(C)?p=`<${h}.${+E+1}.0-0`:S?p=`<=${h}.${E}.${C}-${S}`:t?p=`<${h}.${E}.${+C+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),v7e=(t,e,r)=>{for(let s=0;s0){let a=t[s].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var AB=_((kRt,Lie)=>{var pB=Symbol("SemVer ANY"),G_=class t{static get ANY(){return pB}constructor(e,r){if(r=Tie(r),e instanceof t){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),j_("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===pB?this.value="":this.value=this.operator+this.semver.version,j_("comp",this)}parse(e){let r=this.options.loose?Rie[Fie.COMPARATORLOOSE]:Rie[Fie.COMPARATOR],s=e.match(r);if(!s)throw new TypeError(`Invalid comparator: ${e}`);this.operator=s[1]!==void 0?s[1]:"",this.operator==="="&&(this.operator=""),s[2]?this.semver=new Nie(s[2],this.options.loose):this.semver=pB}toString(){return this.value}test(e){if(j_("Comparator.test",e,this.options.loose),this.semver===pB||e===pB)return!0;if(typeof e=="string")try{e=new Nie(e,this.options)}catch{return!1}return H_(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Oie(e.value,r).test(this.value):e.operator===""?e.value===""?!0:new Oie(this.value,r).test(e.semver):(r=Tie(r),r.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||H_(this.semver,"<",e.semver,r)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||H_(this.semver,">",e.semver,r)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};Lie.exports=G_;var Tie=qx(),{safeRe:Rie,t:Fie}=vE(),H_=F_(),j_=lB(),Nie=jo(),Oie=vc()});var hB=_((QRt,Mie)=>{var S7e=vc(),D7e=(t,e,r)=>{try{e=new S7e(e,r)}catch{return!1}return e.test(t)};Mie.exports=D7e});var _ie=_((TRt,Uie)=>{var b7e=vc(),P7e=(t,e)=>new b7e(t,e).set.map(r=>r.map(s=>s.value).join(" ").trim().split(" "));Uie.exports=P7e});var jie=_((RRt,Hie)=>{var x7e=jo(),k7e=vc(),Q7e=(t,e,r)=>{let s=null,a=null,n=null;try{n=new k7e(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!s||a.compare(c)===-1)&&(s=c,a=new x7e(s,r))}),s};Hie.exports=Q7e});var qie=_((FRt,Gie)=>{var T7e=jo(),R7e=vc(),F7e=(t,e,r)=>{let s=null,a=null,n=null;try{n=new R7e(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!s||a.compare(c)===1)&&(s=c,a=new T7e(s,r))}),s};Gie.exports=F7e});var Vie=_((NRt,Yie)=>{var q_=jo(),N7e=vc(),Wie=cB(),O7e=(t,e)=>{t=new N7e(t,e);let r=new q_("0.0.0");if(t.test(r)||(r=new q_("0.0.0-0"),t.test(r)))return r;r=null;for(let s=0;s{let f=new q_(c.semver.version);switch(c.operator){case">":f.prerelease.length===0?f.patch++:f.prerelease.push(0),f.raw=f.format();case"":case">=":(!n||Wie(f,n))&&(n=f);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),n&&(!r||Wie(r,n))&&(r=n)}return r&&t.test(r)?r:null};Yie.exports=O7e});var Kie=_((ORt,Jie)=>{var L7e=vc(),M7e=(t,e)=>{try{return new L7e(t,e).range||"*"}catch{return null}};Jie.exports=M7e});var tk=_((LRt,$ie)=>{var U7e=jo(),Zie=AB(),{ANY:_7e}=Zie,H7e=vc(),j7e=hB(),zie=cB(),Xie=Jx(),G7e=zx(),q7e=Kx(),W7e=(t,e,r,s)=>{t=new U7e(t,s),e=new H7e(e,s);let a,n,c,f,p;switch(r){case">":a=zie,n=G7e,c=Xie,f=">",p=">=";break;case"<":a=Xie,n=q7e,c=zie,f="<",p="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(j7e(t,e,s))return!1;for(let h=0;h{P.semver===_7e&&(P=new Zie(">=0.0.0")),C=C||P,S=S||P,a(P.semver,C.semver,s)?C=P:c(P.semver,S.semver,s)&&(S=P)}),C.operator===f||C.operator===p||(!S.operator||S.operator===f)&&n(t,S.semver))return!1;if(S.operator===p&&c(t,S.semver))return!1}return!0};$ie.exports=W7e});var tse=_((MRt,ese)=>{var Y7e=tk(),V7e=(t,e,r)=>Y7e(t,e,">",r);ese.exports=V7e});var nse=_((URt,rse)=>{var J7e=tk(),K7e=(t,e,r)=>J7e(t,e,"<",r);rse.exports=K7e});var ose=_((_Rt,sse)=>{var ise=vc(),z7e=(t,e,r)=>(t=new ise(t,r),e=new ise(e,r),t.intersects(e,r));sse.exports=z7e});var lse=_((HRt,ase)=>{var X7e=hB(),Z7e=Bc();ase.exports=(t,e,r)=>{let s=[],a=null,n=null,c=t.sort((E,C)=>Z7e(E,C,r));for(let E of c)X7e(E,e,r)?(n=E,a||(a=E)):(n&&s.push([a,n]),n=null,a=null);a&&s.push([a,null]);let f=[];for(let[E,C]of s)E===C?f.push(E):!C&&E===c[0]?f.push("*"):C?E===c[0]?f.push(`<=${C}`):f.push(`${E} - ${C}`):f.push(`>=${E}`);let p=f.join(" || "),h=typeof e.raw=="string"?e.raw:String(e);return p.length{var cse=vc(),Y_=AB(),{ANY:W_}=Y_,gB=hB(),V_=Bc(),$7e=(t,e,r={})=>{if(t===e)return!0;t=new cse(t,r),e=new cse(e,r);let s=!1;e:for(let a of t.set){for(let n of e.set){let c=tJe(a,n,r);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},eJe=[new Y_(">=0.0.0-0")],use=[new Y_(">=0.0.0")],tJe=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===W_){if(e.length===1&&e[0].semver===W_)return!0;r.includePrerelease?t=eJe:t=use}if(e.length===1&&e[0].semver===W_){if(r.includePrerelease)return!0;e=use}let s=new Set,a,n;for(let P of t)P.operator===">"||P.operator===">="?a=fse(a,P,r):P.operator==="<"||P.operator==="<="?n=Ase(n,P,r):s.add(P.semver);if(s.size>1)return null;let c;if(a&&n){if(c=V_(a.semver,n.semver,r),c>0)return null;if(c===0&&(a.operator!==">="||n.operator!=="<="))return null}for(let P of s){if(a&&!gB(P,String(a),r)||n&&!gB(P,String(n),r))return null;for(let I of e)if(!gB(P,String(I),r))return!1;return!0}let f,p,h,E,C=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,S=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;C&&C.prerelease.length===1&&n.operator==="<"&&C.prerelease[0]===0&&(C=!1);for(let P of e){if(E=E||P.operator===">"||P.operator===">=",h=h||P.operator==="<"||P.operator==="<=",a){if(S&&P.semver.prerelease&&P.semver.prerelease.length&&P.semver.major===S.major&&P.semver.minor===S.minor&&P.semver.patch===S.patch&&(S=!1),P.operator===">"||P.operator===">="){if(f=fse(a,P,r),f===P&&f!==a)return!1}else if(a.operator===">="&&!gB(a.semver,String(P),r))return!1}if(n){if(C&&P.semver.prerelease&&P.semver.prerelease.length&&P.semver.major===C.major&&P.semver.minor===C.minor&&P.semver.patch===C.patch&&(C=!1),P.operator==="<"||P.operator==="<="){if(p=Ase(n,P,r),p===P&&p!==n)return!1}else if(n.operator==="<="&&!gB(n.semver,String(P),r))return!1}if(!P.operator&&(n||a)&&c!==0)return!1}return!(a&&h&&!n&&c!==0||n&&E&&!a&&c!==0||S||C)},fse=(t,e,r)=>{if(!t)return e;let s=V_(t.semver,e.semver,r);return s>0?t:s<0||e.operator===">"&&t.operator===">="?e:t},Ase=(t,e,r)=>{if(!t)return e;let s=V_(t.semver,e.semver,r);return s<0?t:s>0||e.operator==="<"&&t.operator==="<="?e:t};pse.exports=$7e});var Ai=_((GRt,mse)=>{var J_=vE(),gse=aB(),rJe=jo(),dse=k_(),nJe=Md(),iJe=One(),sJe=Mne(),oJe=Hne(),aJe=qne(),lJe=Yne(),cJe=Jne(),uJe=zne(),fJe=Zne(),AJe=Bc(),pJe=rie(),hJe=iie(),gJe=Vx(),dJe=lie(),mJe=uie(),yJe=cB(),EJe=Jx(),IJe=T_(),CJe=R_(),wJe=Kx(),BJe=zx(),vJe=F_(),SJe=Eie(),DJe=AB(),bJe=vc(),PJe=hB(),xJe=_ie(),kJe=jie(),QJe=qie(),TJe=Vie(),RJe=Kie(),FJe=tk(),NJe=tse(),OJe=nse(),LJe=ose(),MJe=lse(),UJe=hse();mse.exports={parse:nJe,valid:iJe,clean:sJe,inc:oJe,diff:aJe,major:lJe,minor:cJe,patch:uJe,prerelease:fJe,compare:AJe,rcompare:pJe,compareLoose:hJe,compareBuild:gJe,sort:dJe,rsort:mJe,gt:yJe,lt:EJe,eq:IJe,neq:CJe,gte:wJe,lte:BJe,cmp:vJe,coerce:SJe,Comparator:DJe,Range:bJe,satisfies:PJe,toComparators:xJe,maxSatisfying:kJe,minSatisfying:QJe,minVersion:TJe,validRange:RJe,outside:FJe,gtr:NJe,ltr:OJe,intersects:LJe,simplifyRange:MJe,subset:UJe,SemVer:rJe,re:J_.re,src:J_.src,tokens:J_.t,SEMVER_SPEC_VERSION:gse.SEMVER_SPEC_VERSION,RELEASE_TYPES:gse.RELEASE_TYPES,compareIdentifiers:dse.compareIdentifiers,rcompareIdentifiers:dse.rcompareIdentifiers}});var Ese=_((qRt,yse)=>{"use strict";function _Je(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function jd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,jd)}_Je(jd,Error);jd.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C{switch(Te[1]){case"|":return xe|Te[3];case"&":return xe&Te[3];case"^":return xe^Te[3]}},$)},S="!",P=Fe("!",!1),I=function($){return!$},R="(",N=Fe("(",!1),U=")",W=Fe(")",!1),ee=function($){return $},ie=/^[^ \t\n\r()!|&\^]/,ue=Ne([" "," ",` -`,"\r","(",")","!","|","&","^"],!0,!1),le=function($){return e.queryPattern.test($)},me=function($){return e.checkFn($)},pe=ke("whitespace"),Be=/^[ \t\n\r]/,Ce=Ne([" "," ",` -`,"\r"],!1,!1),g=0,we=0,ye=[{line:1,column:1}],Ae=0,se=[],Z=0,De;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function Re(){return t.substring(we,g)}function mt(){return Ue(we,g)}function j($,oe){throw oe=oe!==void 0?oe:Ue(we,g),b([ke($)],t.substring(we,g),oe)}function rt($,oe){throw oe=oe!==void 0?oe:Ue(we,g),w($,oe)}function Fe($,oe){return{type:"literal",text:$,ignoreCase:oe}}function Ne($,oe,xe){return{type:"class",parts:$,inverted:oe,ignoreCase:xe}}function Pe(){return{type:"any"}}function Ve(){return{type:"end"}}function ke($){return{type:"other",description:$}}function it($){var oe=ye[$],xe;if(oe)return oe;for(xe=$-1;!ye[xe];)xe--;for(oe=ye[xe],oe={line:oe.line,column:oe.column};xe<$;)t.charCodeAt(xe)===10?(oe.line++,oe.column=1):oe.column++,xe++;return ye[$]=oe,oe}function Ue($,oe){var xe=it($),Te=it(oe);return{start:{offset:$,line:xe.line,column:xe.column},end:{offset:oe,line:Te.line,column:Te.column}}}function x($){gAe&&(Ae=g,se=[]),se.push($))}function w($,oe){return new jd($,null,null,oe)}function b($,oe,xe){return new jd(jd.buildMessage($,oe),$,oe,xe)}function y(){var $,oe,xe,Te,lt,Ct,qt,ir;if($=g,oe=F(),oe!==r){for(xe=[],Te=g,lt=X(),lt!==r?(t.charCodeAt(g)===124?(Ct=n,g++):(Ct=r,Z===0&&x(c)),Ct===r&&(t.charCodeAt(g)===38?(Ct=f,g++):(Ct=r,Z===0&&x(p)),Ct===r&&(t.charCodeAt(g)===94?(Ct=h,g++):(Ct=r,Z===0&&x(E)))),Ct!==r?(qt=X(),qt!==r?(ir=F(),ir!==r?(lt=[lt,Ct,qt,ir],Te=lt):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r);Te!==r;)xe.push(Te),Te=g,lt=X(),lt!==r?(t.charCodeAt(g)===124?(Ct=n,g++):(Ct=r,Z===0&&x(c)),Ct===r&&(t.charCodeAt(g)===38?(Ct=f,g++):(Ct=r,Z===0&&x(p)),Ct===r&&(t.charCodeAt(g)===94?(Ct=h,g++):(Ct=r,Z===0&&x(E)))),Ct!==r?(qt=X(),qt!==r?(ir=F(),ir!==r?(lt=[lt,Ct,qt,ir],Te=lt):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r);xe!==r?(we=$,oe=C(oe,xe),$=oe):(g=$,$=r)}else g=$,$=r;return $}function F(){var $,oe,xe,Te,lt,Ct;return $=g,t.charCodeAt(g)===33?(oe=S,g++):(oe=r,Z===0&&x(P)),oe!==r?(xe=F(),xe!==r?(we=$,oe=I(xe),$=oe):(g=$,$=r)):(g=$,$=r),$===r&&($=g,t.charCodeAt(g)===40?(oe=R,g++):(oe=r,Z===0&&x(N)),oe!==r?(xe=X(),xe!==r?(Te=y(),Te!==r?(lt=X(),lt!==r?(t.charCodeAt(g)===41?(Ct=U,g++):(Ct=r,Z===0&&x(W)),Ct!==r?(we=$,oe=ee(Te),$=oe):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r),$===r&&($=z())),$}function z(){var $,oe,xe,Te,lt;if($=g,oe=X(),oe!==r){if(xe=g,Te=[],ie.test(t.charAt(g))?(lt=t.charAt(g),g++):(lt=r,Z===0&&x(ue)),lt!==r)for(;lt!==r;)Te.push(lt),ie.test(t.charAt(g))?(lt=t.charAt(g),g++):(lt=r,Z===0&&x(ue));else Te=r;Te!==r?xe=t.substring(xe,g):xe=Te,xe!==r?(we=g,Te=le(xe),Te?Te=void 0:Te=r,Te!==r?(we=$,oe=me(xe),$=oe):(g=$,$=r)):(g=$,$=r)}else g=$,$=r;return $}function X(){var $,oe;for(Z++,$=[],Be.test(t.charAt(g))?(oe=t.charAt(g),g++):(oe=r,Z===0&&x(Ce));oe!==r;)$.push(oe),Be.test(t.charAt(g))?(oe=t.charAt(g),g++):(oe=r,Z===0&&x(Ce));return Z--,$===r&&(oe=r,Z===0&&x(pe)),$}if(De=a(),De!==r&&g===t.length)return De;throw De!==r&&g{var{parse:jJe}=Ese();rk.makeParser=(t=/[a-z]+/)=>(e,r)=>jJe(e,{queryPattern:t,checkFn:r});rk.parse=rk.makeParser()});var wse=_((YRt,Cse)=>{"use strict";Cse.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var K_=_((VRt,vse)=>{var dB=wse(),Bse={};for(let t of Object.keys(dB))Bse[dB[t]]=t;var hr={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};vse.exports=hr;for(let t of Object.keys(hr)){if(!("channels"in hr[t]))throw new Error("missing channels property: "+t);if(!("labels"in hr[t]))throw new Error("missing channel labels property: "+t);if(hr[t].labels.length!==hr[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=hr[t];delete hr[t].channels,delete hr[t].labels,Object.defineProperty(hr[t],"channels",{value:e}),Object.defineProperty(hr[t],"labels",{value:r})}hr.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.min(e,r,s),n=Math.max(e,r,s),c=n-a,f,p;n===a?f=0:e===n?f=(r-s)/c:r===n?f=2+(s-e)/c:s===n&&(f=4+(e-r)/c),f=Math.min(f*60,360),f<0&&(f+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=c/(n+a):p=c/(2-n-a),[f,p*100,h*100]};hr.rgb.hsv=function(t){let e,r,s,a,n,c=t[0]/255,f=t[1]/255,p=t[2]/255,h=Math.max(c,f,p),E=h-Math.min(c,f,p),C=function(S){return(h-S)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,e=C(c),r=C(f),s=C(p),c===h?a=s-r:f===h?a=1/3+e-s:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};hr.rgb.hwb=function(t){let e=t[0],r=t[1],s=t[2],a=hr.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,s));return s=1-1/255*Math.max(e,Math.max(r,s)),[a,n*100,s*100]};hr.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.min(1-e,1-r,1-s),n=(1-e-a)/(1-a)||0,c=(1-r-a)/(1-a)||0,f=(1-s-a)/(1-a)||0;return[n*100,c*100,f*100,a*100]};function GJe(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}hr.rgb.keyword=function(t){let e=Bse[t];if(e)return e;let r=1/0,s;for(let a of Object.keys(dB)){let n=dB[a],c=GJe(t,n);c.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92;let a=e*.4124+r*.3576+s*.1805,n=e*.2126+r*.7152+s*.0722,c=e*.0193+r*.1192+s*.9505;return[a*100,n*100,c*100]};hr.rgb.lab=function(t){let e=hr.rgb.xyz(t),r=e[0],s=e[1],a=e[2];r/=95.047,s/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*s-16,c=500*(r-s),f=200*(s-a);return[n,c,f]};hr.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,a,n,c;if(r===0)return c=s*255,[c,c,c];s<.5?a=s*(1+r):a=s+r-s*r;let f=2*s-a,p=[0,0,0];for(let h=0;h<3;h++)n=e+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?c=f+(a-f)*6*n:2*n<1?c=a:3*n<2?c=f+(a-f)*(2/3-n)*6:c=f,p[h]=c*255;return p};hr.hsl.hsv=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,a=r,n=Math.max(s,.01);s*=2,r*=s<=1?s:2-s,a*=n<=1?n:2-n;let c=(s+r)/2,f=s===0?2*a/(n+a):2*r/(s+r);return[e,f*100,c*100]};hr.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,s=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),c=255*s*(1-r),f=255*s*(1-r*n),p=255*s*(1-r*(1-n));switch(s*=255,a){case 0:return[s,p,c];case 1:return[f,s,c];case 2:return[c,s,p];case 3:return[c,f,s];case 4:return[p,c,s];case 5:return[s,c,f]}};hr.hsv.hsl=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,a=Math.max(s,.01),n,c;c=(2-r)*s;let f=(2-r)*a;return n=r*a,n/=f<=1?f:2-f,n=n||0,c/=2,[e,n*100,c*100]};hr.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,a=r+s,n;a>1&&(r/=a,s/=a);let c=Math.floor(6*e),f=1-s;n=6*e-c,c&1&&(n=1-n);let p=r+n*(f-r),h,E,C;switch(c){default:case 6:case 0:h=f,E=p,C=r;break;case 1:h=p,E=f,C=r;break;case 2:h=r,E=f,C=p;break;case 3:h=r,E=p,C=f;break;case 4:h=p,E=r,C=f;break;case 5:h=f,E=r,C=p;break}return[h*255,E*255,C*255]};hr.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),c=1-Math.min(1,r*(1-a)+a),f=1-Math.min(1,s*(1-a)+a);return[n*255,c*255,f*255]};hr.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,a,n,c;return a=e*3.2406+r*-1.5372+s*-.4986,n=e*-.9689+r*1.8758+s*.0415,c=e*.0557+r*-.204+s*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),c=Math.min(Math.max(0,c),1),[a*255,n*255,c*255]};hr.xyz.lab=function(t){let e=t[0],r=t[1],s=t[2];e/=95.047,r/=100,s/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;let a=116*r-16,n=500*(e-r),c=200*(r-s);return[a,n,c]};hr.lab.xyz=function(t){let e=t[0],r=t[1],s=t[2],a,n,c;n=(e+16)/116,a=r/500+n,c=n-s/200;let f=n**3,p=a**3,h=c**3;return n=f>.008856?f:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,c=h>.008856?h:(c-16/116)/7.787,a*=95.047,n*=100,c*=108.883,[a,n,c]};hr.lab.lch=function(t){let e=t[0],r=t[1],s=t[2],a;a=Math.atan2(s,r)*360/2/Math.PI,a<0&&(a+=360);let c=Math.sqrt(r*r+s*s);return[e,c,a]};hr.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),c=r*Math.sin(a);return[e,n,c]};hr.rgb.ansi16=function(t,e=null){let[r,s,a]=t,n=e===null?hr.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let c=30+(Math.round(a/255)<<2|Math.round(s/255)<<1|Math.round(r/255));return n===2&&(c+=60),c};hr.hsv.ansi16=function(t){return hr.rgb.ansi16(hr.hsv.rgb(t),t[2])};hr.rgb.ansi256=function(t){let e=t[0],r=t[1],s=t[2];return e===r&&r===s?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(s/255*5)};hr.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,s=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[s,a,n]};hr.ansi256.rgb=function(t){if(t>=232){let n=(t-232)*10+8;return[n,n,n]}t-=16;let e,r=Math.floor(t/36)/5*255,s=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,s,a]};hr.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};hr.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(f=>f+f).join(""));let s=parseInt(r,16),a=s>>16&255,n=s>>8&255,c=s&255;return[a,n,c]};hr.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.max(Math.max(e,r),s),n=Math.min(Math.min(e,r),s),c=a-n,f,p;return c<1?f=n/(1-c):f=0,c<=0?p=0:a===e?p=(r-s)/c%6:a===r?p=2+(s-e)/c:p=4+(e-r)/c,p/=6,p%=1,[p*360,c*100,f*100]};hr.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=r<.5?2*e*r:2*e*(1-r),a=0;return s<1&&(a=(r-.5*s)/(1-s)),[t[0],s*100,a*100]};hr.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=e*r,a=0;return s<1&&(a=(r-s)/(1-s)),[t[0],s*100,a*100]};hr.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100;if(r===0)return[s*255,s*255,s*255];let a=[0,0,0],n=e%1*6,c=n%1,f=1-c,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=c,a[2]=0;break;case 1:a[0]=f,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=c;break;case 3:a[0]=0,a[1]=f,a[2]=1;break;case 4:a[0]=c,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=f}return p=(1-r)*s,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};hr.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e),a=0;return s>0&&(a=e/s),[t[0],a*100,s*100]};hr.hcg.hsl=function(t){let e=t[1]/100,s=t[2]/100*(1-e)+.5*e,a=0;return s>0&&s<.5?a=e/(2*s):s>=.5&&s<1&&(a=e/(2*(1-s))),[t[0],a*100,s*100]};hr.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e);return[t[0],(s-e)*100,(1-s)*100]};hr.hwb.hcg=function(t){let e=t[1]/100,s=1-t[2]/100,a=s-e,n=0;return a<1&&(n=(s-a)/(1-a)),[t[0],a*100,n*100]};hr.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};hr.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};hr.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};hr.gray.hsl=function(t){return[0,0,t[0]]};hr.gray.hsv=hr.gray.hsl;hr.gray.hwb=function(t){return[0,100,t[0]]};hr.gray.cmyk=function(t){return[0,0,0,t[0]]};hr.gray.lab=function(t){return[t[0],0,0]};hr.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,s=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(s.length)+s};hr.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var Dse=_((JRt,Sse)=>{var nk=K_();function qJe(){let t={},e=Object.keys(nk);for(let r=e.length,s=0;s{var z_=K_(),JJe=Dse(),PE={},KJe=Object.keys(z_);function zJe(t){let e=function(...r){let s=r[0];return s==null?s:(s.length>1&&(r=s),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function XJe(t){let e=function(...r){let s=r[0];if(s==null)return s;s.length>1&&(r=s);let a=t(r);if(typeof a=="object")for(let n=a.length,c=0;c{PE[t]={},Object.defineProperty(PE[t],"channels",{value:z_[t].channels}),Object.defineProperty(PE[t],"labels",{value:z_[t].labels});let e=JJe(t);Object.keys(e).forEach(s=>{let a=e[s];PE[t][s]=XJe(a),PE[t][s].raw=zJe(a)})});bse.exports=PE});var sk=_((zRt,Rse)=>{"use strict";var xse=(t,e)=>(...r)=>`\x1B[${t(...r)+e}m`,kse=(t,e)=>(...r)=>{let s=t(...r);return`\x1B[${38+e};5;${s}m`},Qse=(t,e)=>(...r)=>{let s=t(...r);return`\x1B[${38+e};2;${s[0]};${s[1]};${s[2]}m`},ik=t=>t,Tse=(t,e,r)=>[t,e,r],xE=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let s=r();return Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0}),s},enumerable:!0,configurable:!0})},X_,kE=(t,e,r,s)=>{X_===void 0&&(X_=Pse());let a=s?10:0,n={};for(let[c,f]of Object.entries(X_)){let p=c==="ansi16"?"ansi":c;c===e?n[p]=t(r,a):typeof f=="object"&&(n[p]=t(f[e],a))}return n};function ZJe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,s]of Object.entries(e)){for(let[a,n]of Object.entries(s))e[a]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},s[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:s,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",xE(e.color,"ansi",()=>kE(xse,"ansi16",ik,!1)),xE(e.color,"ansi256",()=>kE(kse,"ansi256",ik,!1)),xE(e.color,"ansi16m",()=>kE(Qse,"rgb",Tse,!1)),xE(e.bgColor,"ansi",()=>kE(xse,"ansi16",ik,!0)),xE(e.bgColor,"ansi256",()=>kE(kse,"ansi256",ik,!0)),xE(e.bgColor,"ansi16m",()=>kE(Qse,"rgb",Tse,!0)),e}Object.defineProperty(Rse,"exports",{enumerable:!0,get:ZJe})});var Nse=_((XRt,Fse)=>{"use strict";Fse.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",s=e.indexOf(r+t),a=e.indexOf("--");return s!==-1&&(a===-1||s{"use strict";var $Je=Ie("os"),Ose=Ie("tty"),Sc=Nse(),{env:bs}=process,l0;Sc("no-color")||Sc("no-colors")||Sc("color=false")||Sc("color=never")?l0=0:(Sc("color")||Sc("colors")||Sc("color=true")||Sc("color=always"))&&(l0=1);"FORCE_COLOR"in bs&&(bs.FORCE_COLOR==="true"?l0=1:bs.FORCE_COLOR==="false"?l0=0:l0=bs.FORCE_COLOR.length===0?1:Math.min(parseInt(bs.FORCE_COLOR,10),3));function Z_(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function $_(t,e){if(l0===0)return 0;if(Sc("color=16m")||Sc("color=full")||Sc("color=truecolor"))return 3;if(Sc("color=256"))return 2;if(t&&!e&&l0===void 0)return 0;let r=l0||0;if(bs.TERM==="dumb")return r;if(process.platform==="win32"){let s=$Je.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in bs)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(s=>s in bs)||bs.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in bs)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(bs.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in bs)return 1;if(bs.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in bs){let s=parseInt((bs.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(bs.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(bs.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(bs.TERM)||"COLORTERM"in bs?1:r}function eKe(t){let e=$_(t,t&&t.isTTY);return Z_(e)}Lse.exports={supportsColor:eKe,stdout:Z_($_(!0,Ose.isatty(1))),stderr:Z_($_(!0,Ose.isatty(2)))}});var _se=_(($Rt,Use)=>{"use strict";var tKe=(t,e,r)=>{let s=t.indexOf(e);if(s===-1)return t;let a=e.length,n=0,c="";do c+=t.substr(n,s-n)+e+r,n=s+a,s=t.indexOf(e,n);while(s!==-1);return c+=t.substr(n),c},rKe=(t,e,r,s)=>{let a=0,n="";do{let c=t[s-1]==="\r";n+=t.substr(a,(c?s-1:s)-a)+e+(c?`\r -`:` -`)+r,a=s+1,s=t.indexOf(` -`,a)}while(s!==-1);return n+=t.substr(a),n};Use.exports={stringReplaceAll:tKe,stringEncaseCRLFWithFirstIndex:rKe}});var Wse=_((eFt,qse)=>{"use strict";var nKe=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,Hse=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,iKe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,sKe=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,oKe=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function Gse(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):oKe.get(t)||t}function aKe(t,e){let r=[],s=e.trim().split(/\s*,\s*/g),a;for(let n of s){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(iKe))r.push(a[2].replace(sKe,(f,p,h)=>p?Gse(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function lKe(t){Hse.lastIndex=0;let e=[],r;for(;(r=Hse.exec(t))!==null;){let s=r[1];if(r[2]){let a=aKe(s,r[2]);e.push([s].concat(a))}else e.push([s])}return e}function jse(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=t;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}qse.exports=(t,e)=>{let r=[],s=[],a=[];if(e.replace(nKe,(n,c,f,p,h,E)=>{if(c)a.push(Gse(c));else if(p){let C=a.join("");a=[],s.push(r.length===0?C:jse(t,r)(C)),r.push({inverse:f,styles:lKe(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");s.push(jse(t,r)(a.join(""))),a=[],r.pop()}else a.push(E)}),s.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return s.join("")}});var TE=_((tFt,Xse)=>{"use strict";var mB=sk(),{stdout:t4,stderr:r4}=Mse(),{stringReplaceAll:cKe,stringEncaseCRLFWithFirstIndex:uKe}=_se(),{isArray:ok}=Array,Vse=["ansi","ansi","ansi256","ansi16m"],QE=Object.create(null),fKe=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=t4?t4.level:0;t.level=e.level===void 0?r:e.level},n4=class{constructor(e){return Jse(e)}},Jse=t=>{let e={};return fKe(e,t),e.template=(...r)=>zse(e.template,...r),Object.setPrototypeOf(e,ak.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=n4,e.template};function ak(t){return Jse(t)}for(let[t,e]of Object.entries(mB))QE[t]={get(){let r=lk(this,i4(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};QE.visible={get(){let t=lk(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var Kse=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of Kse)QE[t]={get(){let{level:e}=this;return function(...r){let s=i4(mB.color[Vse[e]][t](...r),mB.color.close,this._styler);return lk(this,s,this._isEmpty)}}};for(let t of Kse){let e="bg"+t[0].toUpperCase()+t.slice(1);QE[e]={get(){let{level:r}=this;return function(...s){let a=i4(mB.bgColor[Vse[r]][t](...s),mB.bgColor.close,this._styler);return lk(this,a,this._isEmpty)}}}}var AKe=Object.defineProperties(()=>{},{...QE,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),i4=(t,e,r)=>{let s,a;return r===void 0?(s=t,a=e):(s=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:s,closeAll:a,parent:r}},lk=(t,e,r)=>{let s=(...a)=>ok(a[0])&&ok(a[0].raw)?Yse(s,zse(s,...a)):Yse(s,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(s,AKe),s._generator=t,s._styler=e,s._isEmpty=r,s},Yse=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:s,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=cKe(e,r.close,r.open),r=r.parent;let n=e.indexOf(` -`);return n!==-1&&(e=uKe(e,a,s,n)),s+e+a},e4,zse=(t,...e)=>{let[r]=e;if(!ok(r)||!ok(r.raw))return e.join(" ");let s=e.slice(1),a=[r.raw[0]];for(let n=1;n{"use strict";Dc.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;Dc.find=(t,e)=>t.nodes.find(r=>r.type===e);Dc.exceedsLimit=(t,e,r=1,s)=>s===!1||!Dc.isInteger(t)||!Dc.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=s;Dc.escapeNode=(t,e=0,r)=>{let s=t.nodes[e];s&&(r&&s.type===r||s.type==="open"||s.type==="close")&&s.escaped!==!0&&(s.value="\\"+s.value,s.escaped=!0)};Dc.encloseBrace=t=>t.type!=="brace"||t.commas>>0+t.ranges>>0?!1:(t.invalid=!0,!0);Dc.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:!(t.commas>>0+t.ranges>>0)||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;Dc.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;Dc.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);Dc.flatten=(...t)=>{let e=[],r=s=>{for(let a=0;a{"use strict";var Zse=uk();$se.exports=(t,e={})=>{let r=(s,a={})=>{let n=e.escapeInvalid&&Zse.isInvalidBrace(a),c=s.invalid===!0&&e.escapeInvalid===!0,f="";if(s.value)return(n||c)&&Zse.isOpenOrClose(s)?"\\"+s.value:s.value;if(s.value)return s.value;if(s.nodes)for(let p of s.nodes)f+=r(p);return f};return r(t)}});var toe=_((iFt,eoe)=>{"use strict";eoe.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var uoe=_((sFt,coe)=>{"use strict";var roe=toe(),Gd=(t,e,r)=>{if(roe(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(roe(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let s={relaxZeros:!0,...r};typeof s.strictZeros=="boolean"&&(s.relaxZeros=s.strictZeros===!1);let a=String(s.relaxZeros),n=String(s.shorthand),c=String(s.capture),f=String(s.wrap),p=t+":"+e+"="+a+n+c+f;if(Gd.cache.hasOwnProperty(p))return Gd.cache[p].result;let h=Math.min(t,e),E=Math.max(t,e);if(Math.abs(h-E)===1){let R=t+"|"+e;return s.capture?`(${R})`:s.wrap===!1?R:`(?:${R})`}let C=loe(t)||loe(e),S={min:t,max:e,a:h,b:E},P=[],I=[];if(C&&(S.isPadded=C,S.maxLen=String(S.max).length),h<0){let R=E<0?Math.abs(E):1;I=noe(R,Math.abs(h),S,s),h=S.a=0}return E>=0&&(P=noe(h,E,S,s)),S.negatives=I,S.positives=P,S.result=pKe(I,P,s),s.capture===!0?S.result=`(${S.result})`:s.wrap!==!1&&P.length+I.length>1&&(S.result=`(?:${S.result})`),Gd.cache[p]=S,S.result};function pKe(t,e,r){let s=s4(t,e,"-",!1,r)||[],a=s4(e,t,"",!1,r)||[],n=s4(t,e,"-?",!0,r)||[];return s.concat(n).concat(a).join("|")}function hKe(t,e){let r=1,s=1,a=soe(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=soe(t,r);for(a=ooe(e+1,s)-1;t1&&f.count.pop(),f.count.push(E.count[0]),f.string=f.pattern+aoe(f.count),c=h+1;continue}r.isPadded&&(C=EKe(h,r,s)),E.string=C+E.pattern+aoe(E.count),n.push(E),c=h+1,f=E}return n}function s4(t,e,r,s,a){let n=[];for(let c of t){let{string:f}=c;!s&&!ioe(e,"string",f)&&n.push(r+f),s&&ioe(e,"string",f)&&n.push(r+f)}return n}function dKe(t,e){let r=[];for(let s=0;se?1:e>t?-1:0}function ioe(t,e,r){return t.some(s=>s[e]===r)}function soe(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function ooe(t,e){return t-t%Math.pow(10,e)}function aoe(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function yKe(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function loe(t){return/^-?(0+)\d/.test(t)}function EKe(t,e,r){if(!e.isPadded)return t;let s=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(s){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${s}}`:`0{${s}}`}}Gd.cache={};Gd.clearCache=()=>Gd.cache={};coe.exports=Gd});var l4=_((oFt,yoe)=>{"use strict";var IKe=Ie("util"),poe=uoe(),foe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),CKe=t=>e=>t===!0?Number(e):String(e),o4=t=>typeof t=="number"||typeof t=="string"&&t!=="",yB=t=>Number.isInteger(+t),a4=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},wKe=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,BKe=(t,e,r)=>{if(e>0){let s=t[0]==="-"?"-":"";s&&(t=t.slice(1)),t=s+t.padStart(s?e-1:e,"0")}return r===!1?String(t):t},Aoe=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((c,f)=>cf?1:0),t.positives.sort((c,f)=>cf?1:0);let r=e.capture?"":"?:",s="",a="",n;return t.positives.length&&(s=t.positives.join("|")),t.negatives.length&&(a=`-(${r}${t.negatives.join("|")})`),s&&a?n=`${s}|${a}`:n=s||a,e.wrap?`(${r}${n})`:n},hoe=(t,e,r,s)=>{if(r)return poe(t,e,{wrap:!1,...s});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},goe=(t,e,r)=>{if(Array.isArray(t)){let s=r.wrap===!0,a=r.capture?"":"?:";return s?`(${a}${t.join("|")})`:t.join("|")}return poe(t,e,r)},doe=(...t)=>new RangeError("Invalid range arguments: "+IKe.inspect(...t)),moe=(t,e,r)=>{if(r.strictRanges===!0)throw doe([t,e]);return[]},SKe=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},DKe=(t,e,r=1,s={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(s.strictRanges===!0)throw doe([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let c=a>n,f=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let E=a4(f)||a4(p)||a4(h),C=E?Math.max(f.length,p.length,h.length):0,S=E===!1&&wKe(t,e,s)===!1,P=s.transform||CKe(S);if(s.toRegex&&r===1)return hoe(Aoe(t,C),Aoe(e,C),!0,s);let I={negatives:[],positives:[]},R=W=>I[W<0?"negatives":"positives"].push(Math.abs(W)),N=[],U=0;for(;c?a>=n:a<=n;)s.toRegex===!0&&r>1?R(a):N.push(BKe(P(a,U),C,S)),a=c?a-r:a+r,U++;return s.toRegex===!0?r>1?vKe(I,s):goe(N,null,{wrap:!1,...s}):N},bKe=(t,e,r=1,s={})=>{if(!yB(t)&&t.length>1||!yB(e)&&e.length>1)return moe(t,e,s);let a=s.transform||(S=>String.fromCharCode(S)),n=`${t}`.charCodeAt(0),c=`${e}`.charCodeAt(0),f=n>c,p=Math.min(n,c),h=Math.max(n,c);if(s.toRegex&&r===1)return hoe(p,h,!1,s);let E=[],C=0;for(;f?n>=c:n<=c;)E.push(a(n,C)),n=f?n-r:n+r,C++;return s.toRegex===!0?goe(E,null,{wrap:!1,options:s}):E},Ak=(t,e,r,s={})=>{if(e==null&&o4(t))return[t];if(!o4(t)||!o4(e))return moe(t,e,s);if(typeof r=="function")return Ak(t,e,1,{transform:r});if(foe(r))return Ak(t,e,0,r);let a={...s};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,yB(r)?yB(t)&&yB(e)?DKe(t,e,r,a):bKe(t,e,Math.max(Math.abs(r),1),a):r!=null&&!foe(r)?SKe(r,a):Ak(t,e,1,r)};yoe.exports=Ak});var Coe=_((aFt,Ioe)=>{"use strict";var PKe=l4(),Eoe=uk(),xKe=(t,e={})=>{let r=(s,a={})=>{let n=Eoe.isInvalidBrace(a),c=s.invalid===!0&&e.escapeInvalid===!0,f=n===!0||c===!0,p=e.escapeInvalid===!0?"\\":"",h="";if(s.isOpen===!0||s.isClose===!0)return p+s.value;if(s.type==="open")return f?p+s.value:"(";if(s.type==="close")return f?p+s.value:")";if(s.type==="comma")return s.prev.type==="comma"?"":f?s.value:"|";if(s.value)return s.value;if(s.nodes&&s.ranges>0){let E=Eoe.reduce(s.nodes),C=PKe(...E,{...e,wrap:!1,toRegex:!0});if(C.length!==0)return E.length>1&&C.length>1?`(${C})`:C}if(s.nodes)for(let E of s.nodes)h+=r(E,s);return h};return r(t)};Ioe.exports=xKe});var voe=_((lFt,Boe)=>{"use strict";var kKe=l4(),woe=fk(),RE=uk(),qd=(t="",e="",r=!1)=>{let s=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?RE.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)s.push(qd(n,e,r));else for(let n of e)r===!0&&typeof n=="string"&&(n=`{${n}}`),s.push(Array.isArray(n)?qd(a,n,r):a+n);return RE.flatten(s)},QKe=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,s=(a,n={})=>{a.queue=[];let c=n,f=n.queue;for(;c.type!=="brace"&&c.type!=="root"&&c.parent;)c=c.parent,f=c.queue;if(a.invalid||a.dollar){f.push(qd(f.pop(),woe(a,e)));return}if(a.type==="brace"&&a.invalid!==!0&&a.nodes.length===2){f.push(qd(f.pop(),["{}"]));return}if(a.nodes&&a.ranges>0){let C=RE.reduce(a.nodes);if(RE.exceedsLimit(...C,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let S=kKe(...C,e);S.length===0&&(S=woe(a,e)),f.push(qd(f.pop(),S)),a.nodes=[];return}let p=RE.encloseBrace(a),h=a.queue,E=a;for(;E.type!=="brace"&&E.type!=="root"&&E.parent;)E=E.parent,h=E.queue;for(let C=0;C{"use strict";Soe.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` -`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var Qoe=_((uFt,koe)=>{"use strict";var TKe=fk(),{MAX_LENGTH:boe,CHAR_BACKSLASH:c4,CHAR_BACKTICK:RKe,CHAR_COMMA:FKe,CHAR_DOT:NKe,CHAR_LEFT_PARENTHESES:OKe,CHAR_RIGHT_PARENTHESES:LKe,CHAR_LEFT_CURLY_BRACE:MKe,CHAR_RIGHT_CURLY_BRACE:UKe,CHAR_LEFT_SQUARE_BRACKET:Poe,CHAR_RIGHT_SQUARE_BRACKET:xoe,CHAR_DOUBLE_QUOTE:_Ke,CHAR_SINGLE_QUOTE:HKe,CHAR_NO_BREAK_SPACE:jKe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:GKe}=Doe(),qKe=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},s=typeof r.maxLength=="number"?Math.min(boe,r.maxLength):boe;if(t.length>s)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${s})`);let a={type:"root",input:t,nodes:[]},n=[a],c=a,f=a,p=0,h=t.length,E=0,C=0,S,P={},I=()=>t[E++],R=N=>{if(N.type==="text"&&f.type==="dot"&&(f.type="text"),f&&f.type==="text"&&N.type==="text"){f.value+=N.value;return}return c.nodes.push(N),N.parent=c,N.prev=f,f=N,N};for(R({type:"bos"});E0){if(c.ranges>0){c.ranges=0;let N=c.nodes.shift();c.nodes=[N,{type:"text",value:TKe(c)}]}R({type:"comma",value:S}),c.commas++;continue}if(S===NKe&&C>0&&c.commas===0){let N=c.nodes;if(C===0||N.length===0){R({type:"text",value:S});continue}if(f.type==="dot"){if(c.range=[],f.value+=S,f.type="range",c.nodes.length!==3&&c.nodes.length!==5){c.invalid=!0,c.ranges=0,f.type="text";continue}c.ranges++,c.args=[];continue}if(f.type==="range"){N.pop();let U=N[N.length-1];U.value+=f.value+S,f=U,c.ranges--;continue}R({type:"dot",value:S});continue}R({type:"text",value:S})}do if(c=n.pop(),c.type!=="root"){c.nodes.forEach(W=>{W.nodes||(W.type==="open"&&(W.isOpen=!0),W.type==="close"&&(W.isClose=!0),W.nodes||(W.type="text"),W.invalid=!0)});let N=n[n.length-1],U=N.nodes.indexOf(c);N.nodes.splice(U,1,...c.nodes)}while(n.length>0);return R({type:"eos"}),a};koe.exports=qKe});var Foe=_((fFt,Roe)=>{"use strict";var Toe=fk(),WKe=Coe(),YKe=voe(),VKe=Qoe(),jl=(t,e={})=>{let r=[];if(Array.isArray(t))for(let s of t){let a=jl.create(s,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(jl.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};jl.parse=(t,e={})=>VKe(t,e);jl.stringify=(t,e={})=>Toe(typeof t=="string"?jl.parse(t,e):t,e);jl.compile=(t,e={})=>(typeof t=="string"&&(t=jl.parse(t,e)),WKe(t,e));jl.expand=(t,e={})=>{typeof t=="string"&&(t=jl.parse(t,e));let r=YKe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};jl.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?jl.compile(t,e):jl.expand(t,e);Roe.exports=jl});var EB=_((AFt,Uoe)=>{"use strict";var JKe=Ie("path"),Vf="\\\\/",Noe=`[^${Vf}]`,Dp="\\.",KKe="\\+",zKe="\\?",pk="\\/",XKe="(?=.)",Ooe="[^/]",u4=`(?:${pk}|$)`,Loe=`(?:^|${pk})`,f4=`${Dp}{1,2}${u4}`,ZKe=`(?!${Dp})`,$Ke=`(?!${Loe}${f4})`,eze=`(?!${Dp}{0,1}${u4})`,tze=`(?!${f4})`,rze=`[^.${pk}]`,nze=`${Ooe}*?`,Moe={DOT_LITERAL:Dp,PLUS_LITERAL:KKe,QMARK_LITERAL:zKe,SLASH_LITERAL:pk,ONE_CHAR:XKe,QMARK:Ooe,END_ANCHOR:u4,DOTS_SLASH:f4,NO_DOT:ZKe,NO_DOTS:$Ke,NO_DOT_SLASH:eze,NO_DOTS_SLASH:tze,QMARK_NO_DOT:rze,STAR:nze,START_ANCHOR:Loe},ize={...Moe,SLASH_LITERAL:`[${Vf}]`,QMARK:Noe,STAR:`${Noe}*?`,DOTS_SLASH:`${Dp}{1,2}(?:[${Vf}]|$)`,NO_DOT:`(?!${Dp})`,NO_DOTS:`(?!(?:^|[${Vf}])${Dp}{1,2}(?:[${Vf}]|$))`,NO_DOT_SLASH:`(?!${Dp}{0,1}(?:[${Vf}]|$))`,NO_DOTS_SLASH:`(?!${Dp}{1,2}(?:[${Vf}]|$))`,QMARK_NO_DOT:`[^.${Vf}]`,START_ANCHOR:`(?:^|[${Vf}])`,END_ANCHOR:`(?:[${Vf}]|$)`},sze={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};Uoe.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:sze,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:JKe.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?ize:Moe}}});var IB=_(ol=>{"use strict";var oze=Ie("path"),aze=process.platform==="win32",{REGEX_BACKSLASH:lze,REGEX_REMOVE_BACKSLASH:cze,REGEX_SPECIAL_CHARS:uze,REGEX_SPECIAL_CHARS_GLOBAL:fze}=EB();ol.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);ol.hasRegexChars=t=>uze.test(t);ol.isRegexChar=t=>t.length===1&&ol.hasRegexChars(t);ol.escapeRegex=t=>t.replace(fze,"\\$1");ol.toPosixSlashes=t=>t.replace(lze,"/");ol.removeBackslashes=t=>t.replace(cze,e=>e==="\\"?"":e);ol.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};ol.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:aze===!0||oze.sep==="\\";ol.escapeLast=(t,e,r)=>{let s=t.lastIndexOf(e,r);return s===-1?t:t[s-1]==="\\"?ol.escapeLast(t,e,s-1):`${t.slice(0,s)}\\${t.slice(s)}`};ol.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};ol.wrapOutput=(t,e={},r={})=>{let s=r.contains?"":"^",a=r.contains?"":"$",n=`${s}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var Voe=_((hFt,Yoe)=>{"use strict";var _oe=IB(),{CHAR_ASTERISK:A4,CHAR_AT:Aze,CHAR_BACKWARD_SLASH:CB,CHAR_COMMA:pze,CHAR_DOT:p4,CHAR_EXCLAMATION_MARK:h4,CHAR_FORWARD_SLASH:Woe,CHAR_LEFT_CURLY_BRACE:g4,CHAR_LEFT_PARENTHESES:d4,CHAR_LEFT_SQUARE_BRACKET:hze,CHAR_PLUS:gze,CHAR_QUESTION_MARK:Hoe,CHAR_RIGHT_CURLY_BRACE:dze,CHAR_RIGHT_PARENTHESES:joe,CHAR_RIGHT_SQUARE_BRACKET:mze}=EB(),Goe=t=>t===Woe||t===CB,qoe=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},yze=(t,e)=>{let r=e||{},s=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],c=[],f=[],p=t,h=-1,E=0,C=0,S=!1,P=!1,I=!1,R=!1,N=!1,U=!1,W=!1,ee=!1,ie=!1,ue=!1,le=0,me,pe,Be={value:"",depth:0,isGlob:!1},Ce=()=>h>=s,g=()=>p.charCodeAt(h+1),we=()=>(me=pe,p.charCodeAt(++h));for(;h0&&(Ae=p.slice(0,E),p=p.slice(E),C-=E),ye&&I===!0&&C>0?(ye=p.slice(0,C),se=p.slice(C)):I===!0?(ye="",se=p):ye=p,ye&&ye!==""&&ye!=="/"&&ye!==p&&Goe(ye.charCodeAt(ye.length-1))&&(ye=ye.slice(0,-1)),r.unescape===!0&&(se&&(se=_oe.removeBackslashes(se)),ye&&W===!0&&(ye=_oe.removeBackslashes(ye)));let Z={prefix:Ae,input:t,start:E,base:ye,glob:se,isBrace:S,isBracket:P,isGlob:I,isExtglob:R,isGlobstar:N,negated:ee,negatedExtglob:ie};if(r.tokens===!0&&(Z.maxDepth=0,Goe(pe)||c.push(Be),Z.tokens=c),r.parts===!0||r.tokens===!0){let De;for(let Re=0;Re{"use strict";var hk=EB(),Gl=IB(),{MAX_LENGTH:gk,POSIX_REGEX_SOURCE:Eze,REGEX_NON_SPECIAL_CHARS:Ize,REGEX_SPECIAL_CHARS_BACKREF:Cze,REPLACEMENTS:Joe}=hk,wze=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(a=>Gl.escapeRegex(a)).join("..")}return r},FE=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,m4=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=Joe[t]||t;let r={...e},s=typeof r.maxLength=="number"?Math.min(gk,r.maxLength):gk,a=t.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);let n={type:"bos",value:"",output:r.prepend||""},c=[n],f=r.capture?"":"?:",p=Gl.isWindows(e),h=hk.globChars(p),E=hk.extglobChars(h),{DOT_LITERAL:C,PLUS_LITERAL:S,SLASH_LITERAL:P,ONE_CHAR:I,DOTS_SLASH:R,NO_DOT:N,NO_DOT_SLASH:U,NO_DOTS_SLASH:W,QMARK:ee,QMARK_NO_DOT:ie,STAR:ue,START_ANCHOR:le}=h,me=x=>`(${f}(?:(?!${le}${x.dot?R:C}).)*?)`,pe=r.dot?"":N,Be=r.dot?ee:ie,Ce=r.bash===!0?me(r):ue;r.capture&&(Ce=`(${Ce})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let g={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:c};t=Gl.removePrefix(t,g),a=t.length;let we=[],ye=[],Ae=[],se=n,Z,De=()=>g.index===a-1,Re=g.peek=(x=1)=>t[g.index+x],mt=g.advance=()=>t[++g.index]||"",j=()=>t.slice(g.index+1),rt=(x="",w=0)=>{g.consumed+=x,g.index+=w},Fe=x=>{g.output+=x.output!=null?x.output:x.value,rt(x.value)},Ne=()=>{let x=1;for(;Re()==="!"&&(Re(2)!=="("||Re(3)==="?");)mt(),g.start++,x++;return x%2===0?!1:(g.negated=!0,g.start++,!0)},Pe=x=>{g[x]++,Ae.push(x)},Ve=x=>{g[x]--,Ae.pop()},ke=x=>{if(se.type==="globstar"){let w=g.braces>0&&(x.type==="comma"||x.type==="brace"),b=x.extglob===!0||we.length&&(x.type==="pipe"||x.type==="paren");x.type!=="slash"&&x.type!=="paren"&&!w&&!b&&(g.output=g.output.slice(0,-se.output.length),se.type="star",se.value="*",se.output=Ce,g.output+=se.output)}if(we.length&&x.type!=="paren"&&(we[we.length-1].inner+=x.value),(x.value||x.output)&&Fe(x),se&&se.type==="text"&&x.type==="text"){se.value+=x.value,se.output=(se.output||"")+x.value;return}x.prev=se,c.push(x),se=x},it=(x,w)=>{let b={...E[w],conditions:1,inner:""};b.prev=se,b.parens=g.parens,b.output=g.output;let y=(r.capture?"(":"")+b.open;Pe("parens"),ke({type:x,value:w,output:g.output?"":I}),ke({type:"paren",extglob:!0,value:mt(),output:y}),we.push(b)},Ue=x=>{let w=x.close+(r.capture?")":""),b;if(x.type==="negate"){let y=Ce;if(x.inner&&x.inner.length>1&&x.inner.includes("/")&&(y=me(r)),(y!==Ce||De()||/^\)+$/.test(j()))&&(w=x.close=`)$))${y}`),x.inner.includes("*")&&(b=j())&&/^\.[^\\/.]+$/.test(b)){let F=m4(b,{...e,fastpaths:!1}).output;w=x.close=`)${F})${y})`}x.prev.type==="bos"&&(g.negatedExtglob=!0)}ke({type:"paren",extglob:!0,value:Z,output:w}),Ve("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let x=!1,w=t.replace(Cze,(b,y,F,z,X,$)=>z==="\\"?(x=!0,b):z==="?"?y?y+z+(X?ee.repeat(X.length):""):$===0?Be+(X?ee.repeat(X.length):""):ee.repeat(F.length):z==="."?C.repeat(F.length):z==="*"?y?y+z+(X?Ce:""):Ce:y?b:`\\${b}`);return x===!0&&(r.unescape===!0?w=w.replace(/\\/g,""):w=w.replace(/\\+/g,b=>b.length%2===0?"\\\\":b?"\\":"")),w===t&&r.contains===!0?(g.output=t,g):(g.output=Gl.wrapOutput(w,g,e),g)}for(;!De();){if(Z=mt(),Z==="\0")continue;if(Z==="\\"){let b=Re();if(b==="/"&&r.bash!==!0||b==="."||b===";")continue;if(!b){Z+="\\",ke({type:"text",value:Z});continue}let y=/^\\+/.exec(j()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(Z+="\\")),r.unescape===!0?Z=mt():Z+=mt(),g.brackets===0){ke({type:"text",value:Z});continue}}if(g.brackets>0&&(Z!=="]"||se.value==="["||se.value==="[^")){if(r.posix!==!1&&Z===":"){let b=se.value.slice(1);if(b.includes("[")&&(se.posix=!0,b.includes(":"))){let y=se.value.lastIndexOf("["),F=se.value.slice(0,y),z=se.value.slice(y+2),X=Eze[z];if(X){se.value=F+X,g.backtrack=!0,mt(),!n.output&&c.indexOf(se)===1&&(n.output=I);continue}}}(Z==="["&&Re()!==":"||Z==="-"&&Re()==="]")&&(Z=`\\${Z}`),Z==="]"&&(se.value==="["||se.value==="[^")&&(Z=`\\${Z}`),r.posix===!0&&Z==="!"&&se.value==="["&&(Z="^"),se.value+=Z,Fe({value:Z});continue}if(g.quotes===1&&Z!=='"'){Z=Gl.escapeRegex(Z),se.value+=Z,Fe({value:Z});continue}if(Z==='"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&ke({type:"text",value:Z});continue}if(Z==="("){Pe("parens"),ke({type:"paren",value:Z});continue}if(Z===")"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(FE("opening","("));let b=we[we.length-1];if(b&&g.parens===b.parens+1){Ue(we.pop());continue}ke({type:"paren",value:Z,output:g.parens?")":"\\)"}),Ve("parens");continue}if(Z==="["){if(r.nobracket===!0||!j().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(FE("closing","]"));Z=`\\${Z}`}else Pe("brackets");ke({type:"bracket",value:Z});continue}if(Z==="]"){if(r.nobracket===!0||se&&se.type==="bracket"&&se.value.length===1){ke({type:"text",value:Z,output:`\\${Z}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(FE("opening","["));ke({type:"text",value:Z,output:`\\${Z}`});continue}Ve("brackets");let b=se.value.slice(1);if(se.posix!==!0&&b[0]==="^"&&!b.includes("/")&&(Z=`/${Z}`),se.value+=Z,Fe({value:Z}),r.literalBrackets===!1||Gl.hasRegexChars(b))continue;let y=Gl.escapeRegex(se.value);if(g.output=g.output.slice(0,-se.value.length),r.literalBrackets===!0){g.output+=y,se.value=y;continue}se.value=`(${f}${y}|${se.value})`,g.output+=se.value;continue}if(Z==="{"&&r.nobrace!==!0){Pe("braces");let b={type:"brace",value:Z,output:"(",outputIndex:g.output.length,tokensIndex:g.tokens.length};ye.push(b),ke(b);continue}if(Z==="}"){let b=ye[ye.length-1];if(r.nobrace===!0||!b){ke({type:"text",value:Z,output:Z});continue}let y=")";if(b.dots===!0){let F=c.slice(),z=[];for(let X=F.length-1;X>=0&&(c.pop(),F[X].type!=="brace");X--)F[X].type!=="dots"&&z.unshift(F[X].value);y=wze(z,r),g.backtrack=!0}if(b.comma!==!0&&b.dots!==!0){let F=g.output.slice(0,b.outputIndex),z=g.tokens.slice(b.tokensIndex);b.value=b.output="\\{",Z=y="\\}",g.output=F;for(let X of z)g.output+=X.output||X.value}ke({type:"brace",value:Z,output:y}),Ve("braces"),ye.pop();continue}if(Z==="|"){we.length>0&&we[we.length-1].conditions++,ke({type:"text",value:Z});continue}if(Z===","){let b=Z,y=ye[ye.length-1];y&&Ae[Ae.length-1]==="braces"&&(y.comma=!0,b="|"),ke({type:"comma",value:Z,output:b});continue}if(Z==="/"){if(se.type==="dot"&&g.index===g.start+1){g.start=g.index+1,g.consumed="",g.output="",c.pop(),se=n;continue}ke({type:"slash",value:Z,output:P});continue}if(Z==="."){if(g.braces>0&&se.type==="dot"){se.value==="."&&(se.output=C);let b=ye[ye.length-1];se.type="dots",se.output+=Z,se.value+=Z,b.dots=!0;continue}if(g.braces+g.parens===0&&se.type!=="bos"&&se.type!=="slash"){ke({type:"text",value:Z,output:C});continue}ke({type:"dot",value:Z,output:C});continue}if(Z==="?"){if(!(se&&se.value==="(")&&r.noextglob!==!0&&Re()==="("&&Re(2)!=="?"){it("qmark",Z);continue}if(se&&se.type==="paren"){let y=Re(),F=Z;if(y==="<"&&!Gl.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(se.value==="("&&!/[!=<:]/.test(y)||y==="<"&&!/<([!=]|\w+>)/.test(j()))&&(F=`\\${Z}`),ke({type:"text",value:Z,output:F});continue}if(r.dot!==!0&&(se.type==="slash"||se.type==="bos")){ke({type:"qmark",value:Z,output:ie});continue}ke({type:"qmark",value:Z,output:ee});continue}if(Z==="!"){if(r.noextglob!==!0&&Re()==="("&&(Re(2)!=="?"||!/[!=<:]/.test(Re(3)))){it("negate",Z);continue}if(r.nonegate!==!0&&g.index===0){Ne();continue}}if(Z==="+"){if(r.noextglob!==!0&&Re()==="("&&Re(2)!=="?"){it("plus",Z);continue}if(se&&se.value==="("||r.regex===!1){ke({type:"plus",value:Z,output:S});continue}if(se&&(se.type==="bracket"||se.type==="paren"||se.type==="brace")||g.parens>0){ke({type:"plus",value:Z});continue}ke({type:"plus",value:S});continue}if(Z==="@"){if(r.noextglob!==!0&&Re()==="("&&Re(2)!=="?"){ke({type:"at",extglob:!0,value:Z,output:""});continue}ke({type:"text",value:Z});continue}if(Z!=="*"){(Z==="$"||Z==="^")&&(Z=`\\${Z}`);let b=Ize.exec(j());b&&(Z+=b[0],g.index+=b[0].length),ke({type:"text",value:Z});continue}if(se&&(se.type==="globstar"||se.star===!0)){se.type="star",se.star=!0,se.value+=Z,se.output=Ce,g.backtrack=!0,g.globstar=!0,rt(Z);continue}let x=j();if(r.noextglob!==!0&&/^\([^?]/.test(x)){it("star",Z);continue}if(se.type==="star"){if(r.noglobstar===!0){rt(Z);continue}let b=se.prev,y=b.prev,F=b.type==="slash"||b.type==="bos",z=y&&(y.type==="star"||y.type==="globstar");if(r.bash===!0&&(!F||x[0]&&x[0]!=="/")){ke({type:"star",value:Z,output:""});continue}let X=g.braces>0&&(b.type==="comma"||b.type==="brace"),$=we.length&&(b.type==="pipe"||b.type==="paren");if(!F&&b.type!=="paren"&&!X&&!$){ke({type:"star",value:Z,output:""});continue}for(;x.slice(0,3)==="/**";){let oe=t[g.index+4];if(oe&&oe!=="/")break;x=x.slice(3),rt("/**",3)}if(b.type==="bos"&&De()){se.type="globstar",se.value+=Z,se.output=me(r),g.output=se.output,g.globstar=!0,rt(Z);continue}if(b.type==="slash"&&b.prev.type!=="bos"&&!z&&De()){g.output=g.output.slice(0,-(b.output+se.output).length),b.output=`(?:${b.output}`,se.type="globstar",se.output=me(r)+(r.strictSlashes?")":"|$)"),se.value+=Z,g.globstar=!0,g.output+=b.output+se.output,rt(Z);continue}if(b.type==="slash"&&b.prev.type!=="bos"&&x[0]==="/"){let oe=x[1]!==void 0?"|$":"";g.output=g.output.slice(0,-(b.output+se.output).length),b.output=`(?:${b.output}`,se.type="globstar",se.output=`${me(r)}${P}|${P}${oe})`,se.value+=Z,g.output+=b.output+se.output,g.globstar=!0,rt(Z+mt()),ke({type:"slash",value:"/",output:""});continue}if(b.type==="bos"&&x[0]==="/"){se.type="globstar",se.value+=Z,se.output=`(?:^|${P}|${me(r)}${P})`,g.output=se.output,g.globstar=!0,rt(Z+mt()),ke({type:"slash",value:"/",output:""});continue}g.output=g.output.slice(0,-se.output.length),se.type="globstar",se.output=me(r),se.value+=Z,g.output+=se.output,g.globstar=!0,rt(Z);continue}let w={type:"star",value:Z,output:Ce};if(r.bash===!0){w.output=".*?",(se.type==="bos"||se.type==="slash")&&(w.output=pe+w.output),ke(w);continue}if(se&&(se.type==="bracket"||se.type==="paren")&&r.regex===!0){w.output=Z,ke(w);continue}(g.index===g.start||se.type==="slash"||se.type==="dot")&&(se.type==="dot"?(g.output+=U,se.output+=U):r.dot===!0?(g.output+=W,se.output+=W):(g.output+=pe,se.output+=pe),Re()!=="*"&&(g.output+=I,se.output+=I)),ke(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(FE("closing","]"));g.output=Gl.escapeLast(g.output,"["),Ve("brackets")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(FE("closing",")"));g.output=Gl.escapeLast(g.output,"("),Ve("parens")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(FE("closing","}"));g.output=Gl.escapeLast(g.output,"{"),Ve("braces")}if(r.strictSlashes!==!0&&(se.type==="star"||se.type==="bracket")&&ke({type:"maybe_slash",value:"",output:`${P}?`}),g.backtrack===!0){g.output="";for(let x of g.tokens)g.output+=x.output!=null?x.output:x.value,x.suffix&&(g.output+=x.suffix)}return g};m4.fastpaths=(t,e)=>{let r={...e},s=typeof r.maxLength=="number"?Math.min(gk,r.maxLength):gk,a=t.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);t=Joe[t]||t;let n=Gl.isWindows(e),{DOT_LITERAL:c,SLASH_LITERAL:f,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:C,NO_DOTS_SLASH:S,STAR:P,START_ANCHOR:I}=hk.globChars(n),R=r.dot?C:E,N=r.dot?S:E,U=r.capture?"":"?:",W={negated:!1,prefix:""},ee=r.bash===!0?".*?":P;r.capture&&(ee=`(${ee})`);let ie=pe=>pe.noglobstar===!0?ee:`(${U}(?:(?!${I}${pe.dot?h:c}).)*?)`,ue=pe=>{switch(pe){case"*":return`${R}${p}${ee}`;case".*":return`${c}${p}${ee}`;case"*.*":return`${R}${ee}${c}${p}${ee}`;case"*/*":return`${R}${ee}${f}${p}${N}${ee}`;case"**":return R+ie(r);case"**/*":return`(?:${R}${ie(r)}${f})?${N}${p}${ee}`;case"**/*.*":return`(?:${R}${ie(r)}${f})?${N}${ee}${c}${p}${ee}`;case"**/.*":return`(?:${R}${ie(r)}${f})?${c}${p}${ee}`;default:{let Be=/^(.*?)\.(\w+)$/.exec(pe);if(!Be)return;let Ce=ue(Be[1]);return Ce?Ce+c+Be[2]:void 0}}},le=Gl.removePrefix(t,W),me=ue(le);return me&&r.strictSlashes!==!0&&(me+=`${f}?`),me};Koe.exports=m4});var Zoe=_((dFt,Xoe)=>{"use strict";var Bze=Ie("path"),vze=Voe(),y4=zoe(),E4=IB(),Sze=EB(),Dze=t=>t&&typeof t=="object"&&!Array.isArray(t),Zi=(t,e,r=!1)=>{if(Array.isArray(t)){let E=t.map(S=>Zi(S,e,r));return S=>{for(let P of E){let I=P(S);if(I)return I}return!1}}let s=Dze(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!s)throw new TypeError("Expected pattern to be a non-empty string");let a=e||{},n=E4.isWindows(e),c=s?Zi.compileRe(t,e):Zi.makeRe(t,e,!1,!0),f=c.state;delete c.state;let p=()=>!1;if(a.ignore){let E={...e,ignore:null,onMatch:null,onResult:null};p=Zi(a.ignore,E,r)}let h=(E,C=!1)=>{let{isMatch:S,match:P,output:I}=Zi.test(E,c,e,{glob:t,posix:n}),R={glob:t,state:f,regex:c,posix:n,input:E,output:I,match:P,isMatch:S};return typeof a.onResult=="function"&&a.onResult(R),S===!1?(R.isMatch=!1,C?R:!1):p(E)?(typeof a.onIgnore=="function"&&a.onIgnore(R),R.isMatch=!1,C?R:!1):(typeof a.onMatch=="function"&&a.onMatch(R),C?R:!0)};return r&&(h.state=f),h};Zi.test=(t,e,r,{glob:s,posix:a}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let n=r||{},c=n.format||(a?E4.toPosixSlashes:null),f=t===s,p=f&&c?c(t):t;return f===!1&&(p=c?c(t):t,f=p===s),(f===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?f=Zi.matchBase(t,e,r,a):f=e.exec(p)),{isMatch:!!f,match:f,output:p}};Zi.matchBase=(t,e,r,s=E4.isWindows(r))=>(e instanceof RegExp?e:Zi.makeRe(e,r)).test(Bze.basename(t));Zi.isMatch=(t,e,r)=>Zi(e,r)(t);Zi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Zi.parse(r,e)):y4(t,{...e,fastpaths:!1});Zi.scan=(t,e)=>vze(t,e);Zi.compileRe=(t,e,r=!1,s=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?"":"^",c=a.contains?"":"$",f=`${n}(?:${t.output})${c}`;t&&t.negated===!0&&(f=`^(?!${f}).*$`);let p=Zi.toRegex(f,e);return s===!0&&(p.state=t),p};Zi.makeRe=(t,e={},r=!1,s=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a.output=y4.fastpaths(t,e)),a.output||(a=y4(t,e)),Zi.compileRe(a,e,r,s)};Zi.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Zi.constants=Sze;Xoe.exports=Zi});var eae=_((mFt,$oe)=>{"use strict";$oe.exports=Zoe()});var Go=_((yFt,iae)=>{"use strict";var rae=Ie("util"),nae=Foe(),Jf=eae(),I4=IB(),tae=t=>t===""||t==="./",xi=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let s=new Set,a=new Set,n=new Set,c=0,f=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E!s.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(E=>E.replace(/\\/g,"")):e}return h};xi.match=xi;xi.matcher=(t,e)=>Jf(t,e);xi.isMatch=(t,e,r)=>Jf(e,r)(t);xi.any=xi.isMatch;xi.not=(t,e,r={})=>{e=[].concat(e).map(String);let s=new Set,a=[],n=f=>{r.onResult&&r.onResult(f),a.push(f.output)},c=new Set(xi(t,e,{...r,onResult:n}));for(let f of a)c.has(f)||s.add(f);return[...s]};xi.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${rae.inspect(t)}"`);if(Array.isArray(e))return e.some(s=>xi.contains(t,s,r));if(typeof e=="string"){if(tae(t)||tae(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return xi.isMatch(t,e,{...r,contains:!0})};xi.matchKeys=(t,e,r)=>{if(!I4.isObject(t))throw new TypeError("Expected the first argument to be an object");let s=xi(Object.keys(t),e,r),a={};for(let n of s)a[n]=t[n];return a};xi.some=(t,e,r)=>{let s=[].concat(t);for(let a of[].concat(e)){let n=Jf(String(a),r);if(s.some(c=>n(c)))return!0}return!1};xi.every=(t,e,r)=>{let s=[].concat(t);for(let a of[].concat(e)){let n=Jf(String(a),r);if(!s.every(c=>n(c)))return!1}return!0};xi.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${rae.inspect(t)}"`);return[].concat(e).every(s=>Jf(s,r)(t))};xi.capture=(t,e,r)=>{let s=I4.isWindows(r),n=Jf.makeRe(String(t),{...r,capture:!0}).exec(s?I4.toPosixSlashes(e):e);if(n)return n.slice(1).map(c=>c===void 0?"":c)};xi.makeRe=(...t)=>Jf.makeRe(...t);xi.scan=(...t)=>Jf.scan(...t);xi.parse=(t,e)=>{let r=[];for(let s of[].concat(t||[]))for(let a of nae(String(s),e))r.push(Jf.parse(a,e));return r};xi.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:nae(t,e)};xi.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return xi.braces(t,{...e,expand:!0})};iae.exports=xi});var oae=_((EFt,sae)=>{"use strict";sae.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var dk=_((IFt,aae)=>{"use strict";var bze=oae();aae.exports=t=>typeof t=="string"?t.replace(bze(),""):t});function lae(t){return Number.isSafeInteger(t)&&t>=0}var cae=Xe(()=>{});function uae(t){return t!=null&&typeof t!="function"&&lae(t.length)}var fae=Xe(()=>{cae()});function bc(t){return t==="__proto__"}var wB=Xe(()=>{});function NE(t){switch(typeof t){case"number":case"symbol":return!1;case"string":return t.includes(".")||t.includes("[")||t.includes("]")}}var mk=Xe(()=>{});function OE(t){return typeof t=="string"||typeof t=="symbol"?t:Object.is(t?.valueOf?.(),-0)?"-0":String(t)}var yk=Xe(()=>{});function Mu(t){let e=[],r=t.length;if(r===0)return e;let s=0,a="",n="",c=!1;for(t.charCodeAt(0)===46&&(e.push(""),s++);s{});function va(t,e,r){if(t==null)return r;switch(typeof e){case"string":{if(bc(e))return r;let s=t[e];return s===void 0?NE(e)?va(t,Mu(e),r):r:s}case"number":case"symbol":{typeof e=="number"&&(e=OE(e));let s=t[e];return s===void 0?r:s}default:{if(Array.isArray(e))return Pze(t,e,r);if(Object.is(e?.valueOf(),-0)?e="-0":e=String(e),bc(e))return r;let s=t[e];return s===void 0?r:s}}}function Pze(t,e,r){if(e.length===0)return r;let s=t;for(let a=0;a{wB();mk();yk();LE()});function C4(t){return t!==null&&(typeof t=="object"||typeof t=="function")}var Aae=Xe(()=>{});function ME(t){return t==null||typeof t!="object"&&typeof t!="function"}var Ik=Xe(()=>{});function Ck(t,e){return t===e||Number.isNaN(t)&&Number.isNaN(e)}var w4=Xe(()=>{});function Wd(t){return Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e))}var wk=Xe(()=>{});function Yd(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}var Bk=Xe(()=>{});var vk,UE,_E,HE,Vd,Sk,Dk,bk,Pk,xk,pae,kk,jE,hae,Qk,Tk,Rk,Fk,Nk,gae,Ok,Lk,Mk,dae,Uk,_k,Hk=Xe(()=>{vk="[object RegExp]",UE="[object String]",_E="[object Number]",HE="[object Boolean]",Vd="[object Arguments]",Sk="[object Symbol]",Dk="[object Date]",bk="[object Map]",Pk="[object Set]",xk="[object Array]",pae="[object Function]",kk="[object ArrayBuffer]",jE="[object Object]",hae="[object Error]",Qk="[object DataView]",Tk="[object Uint8Array]",Rk="[object Uint8ClampedArray]",Fk="[object Uint16Array]",Nk="[object Uint32Array]",gae="[object BigUint64Array]",Ok="[object Int8Array]",Lk="[object Int16Array]",Mk="[object Int32Array]",dae="[object BigInt64Array]",Uk="[object Float32Array]",_k="[object Float64Array]"});function GE(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}var jk=Xe(()=>{});function mae(t,e){return u0(t,void 0,t,new Map,e)}function u0(t,e,r,s=new Map,a=void 0){let n=a?.(t,e,r,s);if(n!=null)return n;if(ME(t))return t;if(s.has(t))return s.get(t);if(Array.isArray(t)){let c=new Array(t.length);s.set(t,c);for(let f=0;f{wk();Bk();Hk();Ik();jk()});function yae(t){return u0(t,void 0,t,new Map,void 0)}var Eae=Xe(()=>{B4()});function Iae(t,e){return mae(t,(r,s,a,n)=>{let c=e?.(r,s,a,n);if(c!=null)return c;if(typeof t=="object")switch(Object.prototype.toString.call(t)){case _E:case UE:case HE:{let f=new t.constructor(t?.valueOf());return c0(f,t),f}case Vd:{let f={};return c0(f,t),f.length=t.length,f[Symbol.iterator]=t[Symbol.iterator],f}default:return}})}var Cae=Xe(()=>{B4();Hk()});function f0(t){return Iae(t)}var v4=Xe(()=>{Cae()});function Gk(t,e=Number.MAX_SAFE_INTEGER){switch(typeof t){case"number":return Number.isInteger(t)&&t>=0&&t{kze=/^(?:0|[1-9]\d*)$/});function BB(t){return t!==null&&typeof t=="object"&&Yd(t)==="[object Arguments]"}var D4=Xe(()=>{Bk()});function vB(t,e){let r;if(Array.isArray(e)?r=e:typeof e=="string"&&NE(e)&&t?.[e]==null?r=Mu(e):r=[e],r.length===0)return!1;let s=t;for(let a=0;a{mk();S4();D4();LE()});function P4(t){return typeof t=="object"&&t!==null}var wae=Xe(()=>{});function Bae(t){return typeof t=="symbol"||t instanceof Symbol}var vae=Xe(()=>{});function Sae(t,e){return Array.isArray(t)?!1:typeof t=="number"||typeof t=="boolean"||t==null||Bae(t)?!0:typeof t=="string"&&(Tze.test(t)||!Qze.test(t))||e!=null&&Object.hasOwn(e,t)}var Qze,Tze,Dae=Xe(()=>{vae();Qze=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Tze=/^\w*$/});function A0(t,e){if(t==null)return!0;switch(typeof e){case"symbol":case"number":case"object":{if(Array.isArray(e))return bae(t,e);if(typeof e=="number"?e=OE(e):typeof e=="object"&&(Object.is(e?.valueOf(),-0)?e="-0":e=String(e)),bc(e))return!1;if(t?.[e]===void 0)return!0;try{return delete t[e],!0}catch{return!1}}case"string":{if(t?.[e]===void 0&&NE(e))return bae(t,Mu(e));if(bc(e))return!1;try{return delete t[e],!0}catch{return!1}}}}function bae(t,e){let r=va(t,e.slice(0,-1),t),s=e[e.length-1];if(r?.[s]===void 0)return!0;if(bc(s))return!1;try{return delete r[s],!0}catch{return!1}}var x4=Xe(()=>{Ek();wB();mk();yk();LE()});function Pae(t){return t==null}var xae=Xe(()=>{});var kae,Qae=Xe(()=>{w4();kae=(t,e,r)=>{let s=t[e];(!(Object.hasOwn(t,e)&&Ck(s,r))||r===void 0&&!(e in t))&&(t[e]=r)}});function Tae(t,e,r,s){if(t==null&&!C4(t))return t;let a=Sae(e,t)?[e]:Array.isArray(e)?e:typeof e=="string"?Mu(e):[e],n=t;for(let c=0;c{wB();Qae();S4();Dae();yk();Aae();LE()});function Jd(t,e,r){return Tae(t,e,()=>r,()=>{})}var k4=Xe(()=>{Rae()});function Fae(t,e=0,r={}){typeof r!="object"&&(r={});let s=null,a=null,n=null,c=0,f=null,p,{leading:h=!1,trailing:E=!0,maxWait:C}=r,S="maxWait"in r,P=S?Math.max(Number(C)||0,e):0,I=ue=>(s!==null&&(p=t.apply(a,s)),s=a=null,c=ue,p),R=ue=>(c=ue,f=setTimeout(ee,e),h&&s!==null?I(ue):p),N=ue=>(f=null,E&&s!==null?I(ue):p),U=ue=>{if(n===null)return!0;let le=ue-n,me=le>=e||le<0,pe=S&&ue-c>=P;return me||pe},W=ue=>{let le=n===null?0:ue-n,me=e-le,pe=P-(ue-c);return S?Math.min(me,pe):me},ee=()=>{let ue=Date.now();if(U(ue))return N(ue);f=setTimeout(ee,W(ue))},ie=function(...ue){let le=Date.now(),me=U(le);if(s=ue,a=this,n=le,me){if(f===null)return R(le);if(S)return clearTimeout(f),f=setTimeout(ee,e),I(le)}return f===null&&(f=setTimeout(ee,e)),p};return ie.cancel=()=>{f!==null&&clearTimeout(f),c=0,n=s=a=f=null},ie.flush=()=>f===null?p:N(Date.now()),ie}var Nae=Xe(()=>{});function Q4(t,e=0,r={}){let{leading:s=!0,trailing:a=!0}=r;return Fae(t,e,{leading:s,maxWait:e,trailing:a})}var Oae=Xe(()=>{Nae()});function T4(t){if(t==null)return"";if(typeof t=="string")return t;if(Array.isArray(t))return t.map(T4).join(",");let e=String(t);return e==="0"&&Object.is(Number(t),-0)?"-0":e}var Lae=Xe(()=>{});function R4(t){if(!t||typeof t!="object")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.prototype||Object.getPrototypeOf(e)===null?Object.prototype.toString.call(t)==="[object Object]":!1}var Mae=Xe(()=>{});function Uae(t,e,r){return SB(t,e,void 0,void 0,void 0,void 0,r)}function SB(t,e,r,s,a,n,c){let f=c(t,e,r,s,a,n);if(f!==void 0)return f;if(typeof t==typeof e)switch(typeof t){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return t===e;case"number":return t===e||Object.is(t,e);case"function":return t===e;case"object":return DB(t,e,n,c)}return DB(t,e,n,c)}function DB(t,e,r,s){if(Object.is(t,e))return!0;let a=Yd(t),n=Yd(e);if(a===Vd&&(a=jE),n===Vd&&(n=jE),a!==n)return!1;switch(a){case UE:return t.toString()===e.toString();case _E:{let p=t.valueOf(),h=e.valueOf();return Ck(p,h)}case HE:case Dk:case Sk:return Object.is(t.valueOf(),e.valueOf());case vk:return t.source===e.source&&t.flags===e.flags;case pae:return t===e}r=r??new Map;let c=r.get(t),f=r.get(e);if(c!=null&&f!=null)return c===e;r.set(t,e),r.set(e,t);try{switch(a){case bk:{if(t.size!==e.size)return!1;for(let[p,h]of t.entries())if(!e.has(p)||!SB(h,e.get(p),p,t,e,r,s))return!1;return!0}case Pk:{if(t.size!==e.size)return!1;let p=Array.from(t.values()),h=Array.from(e.values());for(let E=0;ESB(C,P,void 0,t,e,r,s));if(S===-1)return!1;h.splice(S,1)}return!0}case xk:case Tk:case Rk:case Fk:case Nk:case gae:case Ok:case Lk:case Mk:case dae:case Uk:case _k:{if(typeof Buffer<"u"&&Buffer.isBuffer(t)!==Buffer.isBuffer(e)||t.length!==e.length)return!1;for(let p=0;p{Mae();wk();Bk();Hk();w4()});function Hae(){}var jae=Xe(()=>{});function F4(t,e){return Uae(t,e,Hae)}var Gae=Xe(()=>{_ae();jae()});function qae(t){return GE(t)}var Wae=Xe(()=>{jk()});function Yae(t){if(typeof t!="object"||t==null)return!1;if(Object.getPrototypeOf(t)===null)return!0;if(Object.prototype.toString.call(t)!=="[object Object]"){let r=t[Symbol.toStringTag];return r==null||!Object.getOwnPropertyDescriptor(t,Symbol.toStringTag)?.writable?!1:t.toString()===`[object ${r}]`}let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}var Vae=Xe(()=>{});function Jae(t){if(ME(t))return t;if(Array.isArray(t)||GE(t)||t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer)return t.slice(0);let e=Object.getPrototypeOf(t),r=e.constructor;if(t instanceof Date||t instanceof Map||t instanceof Set)return new r(t);if(t instanceof RegExp){let s=new r(t);return s.lastIndex=t.lastIndex,s}if(t instanceof DataView)return new r(t.buffer.slice(0));if(t instanceof Error){let s=new r(t.message);return s.stack=t.stack,s.name=t.name,s.cause=t.cause,s}if(typeof File<"u"&&t instanceof File)return new r([t],t.name,{type:t.type,lastModified:t.lastModified});if(typeof t=="object"){let s=Object.create(e);return Object.assign(s,t)}return t}var Kae=Xe(()=>{Ik();jk()});function N4(t,...e){let r=e.slice(0,-1),s=e[e.length-1],a=t;for(let n=0;n{v4();wB();Kae();Ik();wk();D4();wae();Vae();Wae()});function O4(t,...e){if(t==null)return{};let r=yae(t);for(let s=0;s{x4();Eae()});function Kd(t,...e){if(Pae(t))return{};let r={};for(let s=0;s{Ek();b4();k4();fae();xae()});function $ae(t){return t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()}var ele=Xe(()=>{});function bB(t){return $ae(T4(t))}var tle=Xe(()=>{ele();Lae()});var ql=Xe(()=>{Oae();Gae();v4();Ek();b4();zae();Xae();Zae();k4();x4();tle();LE()});var je={};Vt(je,{AsyncActions:()=>U4,BufferStream:()=>M4,CachingStrategy:()=>fle,DefaultStream:()=>_4,allSettledSafe:()=>Uu,assertNever:()=>G4,bufferStream:()=>WE,buildIgnorePattern:()=>Uze,convertMapsToIndexableObjects:()=>Yk,dynamicRequire:()=>Pp,escapeRegExp:()=>Fze,getArrayWithDefault:()=>xB,getFactoryWithDefault:()=>Yl,getMapWithDefault:()=>q4,getSetWithDefault:()=>bp,groupBy:()=>jze,isIndexableObject:()=>L4,isPathLike:()=>_ze,isTaggedYarnVersion:()=>Rze,makeDeferred:()=>lle,mapAndFilter:()=>Wl,mapAndFind:()=>p0,mergeIntoTarget:()=>ple,overrideType:()=>Nze,parseBoolean:()=>kB,parseDuration:()=>Jk,parseInt:()=>YE,parseOptionalBoolean:()=>Ale,plural:()=>Wk,prettifyAsyncErrors:()=>qE,prettifySyncErrors:()=>W4,releaseAfterUseAsync:()=>Lze,replaceEnvVariables:()=>Vk,sortMap:()=>qs,toMerged:()=>Hze,tryParseOptionalBoolean:()=>Y4,validateEnum:()=>Oze});function Rze(t){return!!(sle.default.valid(t)&&t.match(/^[^-]+(-rc\.[0-9]+)?$/))}function Wk(t,{one:e,more:r,zero:s=r}){return t===0?s:t===1?e:r}function Fze(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Nze(t){}function G4(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function Oze(t,e){let r=Object.values(t);if(!r.includes(e))throw new nt(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(s=>JSON.stringify(s)).join(", ")})`);return e}function Wl(t,e){let r=[];for(let s of t){let a=e(s);a!==ole&&r.push(a)}return r}function p0(t,e){for(let r of t){let s=e(r);if(s!==ale)return s}}function L4(t){return typeof t=="object"&&t!==null}async function Uu(t){let e=await Promise.allSettled(t),r=[];for(let s of e){if(s.status==="rejected")throw s.reason;r.push(s.value)}return r}function Yk(t){if(t instanceof Map&&(t=Object.fromEntries(t)),L4(t))for(let e of Object.keys(t)){let r=t[e];L4(r)&&(t[e]=Yk(r))}return t}function Yl(t,e,r){let s=t.get(e);return typeof s>"u"&&t.set(e,s=r()),s}function xB(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=[]),r}function bp(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Set),r}function q4(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Map),r}async function Lze(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function qE(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function W4(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function WE(t){return await new Promise((e,r)=>{let s=[];t.on("error",a=>{r(a)}),t.on("data",a=>{s.push(a)}),t.on("end",()=>{e(Buffer.concat(s))})})}function lle(){let t,e;return{promise:new Promise((s,a)=>{t=s,e=a}),resolve:t,reject:e}}function cle(t){return PB(fe.fromPortablePath(t))}function ule(path){let physicalPath=fe.fromPortablePath(path),currentCacheEntry=PB.cache[physicalPath];delete PB.cache[physicalPath];let result;try{result=cle(physicalPath);let freshCacheEntry=PB.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{PB.cache[physicalPath]=currentCacheEntry}return result}function Mze(t){let e=rle.get(t),r=ce.statSync(t);if(e?.mtime===r.mtimeMs)return e.instance;let s=ule(t);return rle.set(t,{mtime:r.mtimeMs,instance:s}),s}function Pp(t,{cachingStrategy:e=2}={}){switch(e){case 0:return ule(t);case 1:return Mze(t);case 2:return cle(t);default:throw new Error("Unsupported caching strategy")}}function qs(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];for(let n of e)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function Uze(t){return t.length===0?null:t.map(e=>`(${nle.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function Vk(t,{env:e}){let r=/\\?\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(s,...a)=>{if(s.startsWith("\\"))return s.slice(1);let{variableName:n,colon:c,fallback:f}=a[a.length-1],p=Object.hasOwn(e,n),h=e[n];if(h||p&&!c)return h;if(f!=null)return f;throw new nt(`Environment variable not found (${n})`)})}function kB(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function Ale(t){return typeof t>"u"?t:kB(t)}function Y4(t){try{return Ale(t)}catch{return null}}function _ze(t){return!!(fe.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}function ple(t,...e){let r=c=>({value:c}),s=r(t),a=e.map(c=>r(c)),{value:n}=N4(s,...a,(c,f)=>{if(Array.isArray(c)&&Array.isArray(f)){for(let p of f)c.find(h=>F4(h,p))||c.push(p);return c}});return n}function Hze(...t){return ple({},...t)}function jze(t,e){let r=Object.create(null);for(let s of t){let a=s[e];r[a]??=[],r[a].push(s)}return r}function YE(t){return typeof t=="string"?Number.parseInt(t,10):t}function Jk(t,e){let r=Gze.exec(t)?.groups;if(!r)throw new Error(`Couldn't parse "${t}" as a duration`);if(r.unit===void 0)return parseFloat(r.num);let s=H4[r.unit];if(!s)throw new Error(`Invalid duration unit "${r.unit}"`);return parseFloat(r.num)*s/H4[e]}var nle,ile,sle,j4,ole,ale,M4,U4,_4,PB,rle,fle,H4,Gze,Pc=Xe(()=>{Dt();Yt();ql();nle=ut(Go()),ile=ut(Ld()),sle=ut(Ai()),j4=Ie("stream");ole=Symbol();Wl.skip=ole;ale=Symbol();p0.skip=ale;M4=class extends j4.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};U4=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,ile.default)(e)}set(e,r){let s=this.deferred.get(e);typeof s>"u"&&this.deferred.set(e,s=lle());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&s.resolve()},n=>{this.promises.get(e)===a&&s.reject(n)}),s.promise}reduce(e,r){let s=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(s))}async wait(){await Promise.all(this.promises.values())}},_4=class extends j4.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},PB=eval("require");rle=new Map;fle=(s=>(s[s.NoCache=0]="NoCache",s[s.FsTime=1]="FsTime",s[s.Node=2]="Node",s))(fle||{});H4={ms:1,s:1e3,m:60*1e3,h:60*60*1e3,d:24*60*60*1e3,w:7*24*60*60*1e3},Gze=new RegExp(`^(?\\d*\\.?\\d+)(?${Object.keys(H4).join("|")})?$`)});var VE,V4,J4,hle=Xe(()=>{VE=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(VE||{}),V4=(s=>(s.Dependency="Dependency",s.PeerDependency="PeerDependency",s.PeerDependencyMeta="PeerDependencyMeta",s))(V4||{}),J4=(s=>(s.Inactive="inactive",s.Redundant="redundant",s.Active="active",s))(J4||{})});var he={};Vt(he,{LogLevel:()=>eQ,Style:()=>Xk,Type:()=>ht,addLogFilterSupport:()=>RB,applyColor:()=>ri,applyHyperlink:()=>KE,applyStyle:()=>zd,json:()=>Xd,jsonOrPretty:()=>Yze,mark:()=>$4,pretty:()=>Ht,prettyField:()=>Kf,prettyList:()=>Z4,prettyTruncatedLocatorList:()=>$k,stripAnsi:()=>JE.default,supportsColor:()=>Zk,supportsHyperlinks:()=>X4,tuple:()=>_u});function gle(t){let e=["KiB","MiB","GiB","TiB"],r=e.length;for(;r>1&&t<1024**r;)r-=1;let s=1024**r;return`${Math.floor(t*100/s)/100} ${e[r-1]}`}function Kk(t,e){if(Array.isArray(e))return e.length===0?ri(t,"[]",ht.CODE):ri(t,"[ ",ht.CODE)+e.map(r=>Kk(t,r)).join(", ")+ri(t," ]",ht.CODE);if(typeof e=="string")return ri(t,JSON.stringify(e),ht.STRING);if(typeof e=="number")return ri(t,JSON.stringify(e),ht.NUMBER);if(typeof e=="boolean")return ri(t,JSON.stringify(e),ht.BOOLEAN);if(e===null)return ri(t,"null",ht.NULL);if(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype){let r=Object.entries(e);return r.length===0?ri(t,"{}",ht.CODE):ri(t,"{ ",ht.CODE)+r.map(([s,a])=>`${Kk(t,s)}: ${Kk(t,a)}`).join(", ")+ri(t," }",ht.CODE)}if(typeof e>"u")return ri(t,"undefined",ht.NULL);throw new Error("Assertion failed: The value doesn't seem to be a valid JSON object")}function _u(t,e){return[e,t]}function zd(t,e,r){return t.get("enableColors")&&r&2&&(e=TB.default.bold(e)),e}function ri(t,e,r){if(!t.get("enableColors"))return e;let s=qze.get(r);if(s===null)return e;let a=typeof s>"u"?r:z4.level>=3?s[0]:s[1],n=typeof a=="number"?K4.ansi256(a):a.startsWith("#")?K4.hex(a):K4[a];if(typeof n!="function")throw new Error(`Invalid format type ${a}`);return n(e)}function KE(t,e,r){return t.get("enableHyperlinks")?Wze?`\x1B]8;;${r}\x1B\\${e}\x1B]8;;\x1B\\`:`\x1B]8;;${r}\x07${e}\x1B]8;;\x07`:e}function Ht(t,e,r){if(e===null)return ri(t,"null",ht.NULL);if(Object.hasOwn(zk,r))return zk[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return ri(t,e,r)}function Z4(t,e,r,{separator:s=", "}={}){return[...e].map(a=>Ht(t,a,r)).join(s)}function Xd(t,e){if(t===null)return null;if(Object.hasOwn(zk,e))return zk[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function Yze(t,e,[r,s]){return t?Xd(r,s):Ht(e,r,s)}function $4(t){return{Check:ri(t,"\u2713","green"),Cross:ri(t,"\u2718","red"),Question:ri(t,"?","cyan")}}function Kf(t,{label:e,value:[r,s]}){return`${Ht(t,e,ht.CODE)}: ${Ht(t,r,s)}`}function $k(t,e,r){let s=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=`${Yr(t,h)}, `,C=e3(h).length+2;if(s.length>0&&nh).join("").slice(0,-2);let c="X".repeat(a.length.toString().length),f=`and ${c} more.`,p=a.length;for(;s.length>1&&nh).join(""),f.replace(c,Ht(t,p,ht.NUMBER))].join("")}function RB(t,{configuration:e}){let r=e.get("logFilters"),s=new Map,a=new Map,n=[];for(let C of r){let S=C.get("level");if(typeof S>"u")continue;let P=C.get("code");typeof P<"u"&&s.set(P,S);let I=C.get("text");typeof I<"u"&&a.set(I,S);let R=C.get("pattern");typeof R<"u"&&n.push([dle.default.matcher(R,{contains:!0}),S])}n.reverse();let c=(C,S,P)=>{if(C===null||C===0)return P;let I=a.size>0||n.length>0?(0,JE.default)(S):S;if(a.size>0){let R=a.get(I);if(typeof R<"u")return R??P}if(n.length>0){for(let[R,N]of n)if(R(I))return N??P}if(s.size>0){let R=s.get(Yf(C));if(typeof R<"u")return R??P}return P},f=t.reportInfo,p=t.reportWarning,h=t.reportError,E=function(C,S,P,I){switch(c(S,P,I)){case"info":f.call(C,S,P);break;case"warning":p.call(C,S??0,P);break;case"error":h.call(C,S??0,P);break}};t.reportInfo=function(...C){return E(this,...C,"info")},t.reportWarning=function(...C){return E(this,...C,"warning")},t.reportError=function(...C){return E(this,...C,"error")}}var TB,QB,dle,JE,ht,Xk,z4,Zk,X4,K4,qze,qo,zk,Wze,eQ,xc=Xe(()=>{Dt();TB=ut(TE()),QB=ut(Fd());Yt();dle=ut(Go()),JE=ut(dk());Gx();Wo();ht={NO_HINT:"NO_HINT",ID:"ID",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",STRING:"STRING",BOOLEAN:"BOOLEAN",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",INSPECT:"INSPECT",DURATION:"DURATION",SIZE:"SIZE",SIZE_DIFF:"SIZE_DIFF",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN",MARKDOWN_INLINE:"MARKDOWN_INLINE"},Xk=(e=>(e[e.BOLD=2]="BOLD",e))(Xk||{}),z4=QB.default.GITHUB_ACTIONS?{level:2}:TB.default.supportsColor?{level:TB.default.supportsColor.level}:{level:0},Zk=z4.level!==0,X4=Zk&&!QB.default.GITHUB_ACTIONS&&!QB.default.CIRCLE&&!QB.default.GITLAB,K4=new TB.default.Instance(z4),qze=new Map([[ht.NO_HINT,null],[ht.NULL,["#a853b5",129]],[ht.SCOPE,["#d75f00",166]],[ht.NAME,["#d7875f",173]],[ht.RANGE,["#00afaf",37]],[ht.REFERENCE,["#87afff",111]],[ht.NUMBER,["#ffd700",220]],[ht.STRING,["#b4bd68",32]],[ht.BOOLEAN,["#faa023",209]],[ht.PATH,["#d75fd7",170]],[ht.URL,["#d75fd7",170]],[ht.ADDED,["#5faf00",70]],[ht.REMOVED,["#ff3131",160]],[ht.CODE,["#87afff",111]],[ht.SIZE,["#ffd700",220]]]),qo=t=>t;zk={[ht.ID]:qo({pretty:(t,e)=>typeof e=="number"?ri(t,`${e}`,ht.NUMBER):ri(t,e,ht.CODE),json:t=>t}),[ht.INSPECT]:qo({pretty:(t,e)=>Kk(t,e),json:t=>t}),[ht.NUMBER]:qo({pretty:(t,e)=>ri(t,`${e}`,ht.NUMBER),json:t=>t}),[ht.IDENT]:qo({pretty:(t,e)=>$i(t,e),json:t=>un(t)}),[ht.LOCATOR]:qo({pretty:(t,e)=>Yr(t,e),json:t=>ll(t)}),[ht.DESCRIPTOR]:qo({pretty:(t,e)=>ni(t,e),json:t=>al(t)}),[ht.RESOLUTION]:qo({pretty:(t,{descriptor:e,locator:r})=>FB(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:al(t),locator:e!==null?ll(e):null})}),[ht.DEPENDENT]:qo({pretty:(t,{locator:e,descriptor:r})=>t3(t,e,r),json:({locator:t,descriptor:e})=>({locator:ll(t),descriptor:al(e)})}),[ht.PACKAGE_EXTENSION]:qo({pretty:(t,e)=>{switch(e.type){case"Dependency":return`${$i(t,e.parentDescriptor)} \u27A4 ${ri(t,"dependencies",ht.CODE)} \u27A4 ${$i(t,e.descriptor)}`;case"PeerDependency":return`${$i(t,e.parentDescriptor)} \u27A4 ${ri(t,"peerDependencies",ht.CODE)} \u27A4 ${$i(t,e.descriptor)}`;case"PeerDependencyMeta":return`${$i(t,e.parentDescriptor)} \u27A4 ${ri(t,"peerDependenciesMeta",ht.CODE)} \u27A4 ${$i(t,Sa(e.selector))} \u27A4 ${ri(t,e.key,ht.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case"Dependency":return`${un(t.parentDescriptor)} > ${un(t.descriptor)}`;case"PeerDependency":return`${un(t.parentDescriptor)} >> ${un(t.descriptor)}`;case"PeerDependencyMeta":return`${un(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[ht.SETTING]:qo({pretty:(t,e)=>(t.get(e),KE(t,ri(t,e,ht.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[ht.DURATION]:qo({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),s=Math.ceil((e-r*60*1e3)/1e3);return s===0?`${r}m`:`${r}m ${s}s`}else{let r=Math.floor(e/1e3),s=e-r*1e3;return s===0?`${r}s`:`${r}s ${s}ms`}},json:t=>t}),[ht.SIZE]:qo({pretty:(t,e)=>ri(t,gle(e),ht.NUMBER),json:t=>t}),[ht.SIZE_DIFF]:qo({pretty:(t,e)=>{let r=e>=0?"+":"-",s=r==="+"?ht.REMOVED:ht.ADDED;return ri(t,`${r} ${gle(Math.max(Math.abs(e),1))}`,s)},json:t=>t}),[ht.PATH]:qo({pretty:(t,e)=>ri(t,fe.fromPortablePath(e),ht.PATH),json:t=>fe.fromPortablePath(t)}),[ht.MARKDOWN]:qo({pretty:(t,{text:e,format:r,paragraphs:s})=>Ho(e,{format:r,paragraphs:s}),json:({text:t})=>t}),[ht.MARKDOWN_INLINE]:qo({pretty:(t,e)=>(e=e.replace(/(`+)((?:.|[\n])*?)\1/g,(r,s,a)=>Ht(t,s+a+s,ht.CODE)),e=e.replace(/(\*\*)((?:.|[\n])*?)\1/g,(r,s,a)=>zd(t,a,2)),e),json:t=>t})};Wze=!!process.env.KONSOLE_VERSION;eQ=(a=>(a.Error="error",a.Warning="warning",a.Info="info",a.Discard="discard",a))(eQ||{})});var mle=_(zE=>{"use strict";Object.defineProperty(zE,"__esModule",{value:!0});zE.splitWhen=zE.flatten=void 0;function Vze(t){return t.reduce((e,r)=>[].concat(e,r),[])}zE.flatten=Vze;function Jze(t,e){let r=[[]],s=0;for(let a of t)e(a)?(s++,r[s]=[]):r[s].push(a);return r}zE.splitWhen=Jze});var yle=_(tQ=>{"use strict";Object.defineProperty(tQ,"__esModule",{value:!0});tQ.isEnoentCodeError=void 0;function Kze(t){return t.code==="ENOENT"}tQ.isEnoentCodeError=Kze});var Ele=_(rQ=>{"use strict";Object.defineProperty(rQ,"__esModule",{value:!0});rQ.createDirentFromStats=void 0;var r3=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function zze(t,e){return new r3(t,e)}rQ.createDirentFromStats=zze});var Ble=_(cs=>{"use strict";Object.defineProperty(cs,"__esModule",{value:!0});cs.convertPosixPathToPattern=cs.convertWindowsPathToPattern=cs.convertPathToPattern=cs.escapePosixPath=cs.escapeWindowsPath=cs.escape=cs.removeLeadingDotSegment=cs.makeAbsolute=cs.unixify=void 0;var Xze=Ie("os"),Zze=Ie("path"),Ile=Xze.platform()==="win32",$ze=2,eXe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,tXe=/(\\?)([()[\]{}]|^!|[!+@](?=\())/g,rXe=/^\\\\([.?])/,nXe=/\\(?![!()+@[\]{}])/g;function iXe(t){return t.replace(/\\/g,"/")}cs.unixify=iXe;function sXe(t,e){return Zze.resolve(t,e)}cs.makeAbsolute=sXe;function oXe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice($ze)}return t}cs.removeLeadingDotSegment=oXe;cs.escape=Ile?n3:i3;function n3(t){return t.replace(tXe,"\\$2")}cs.escapeWindowsPath=n3;function i3(t){return t.replace(eXe,"\\$2")}cs.escapePosixPath=i3;cs.convertPathToPattern=Ile?Cle:wle;function Cle(t){return n3(t).replace(rXe,"//$1").replace(nXe,"/")}cs.convertWindowsPathToPattern=Cle;function wle(t){return i3(t)}cs.convertPosixPathToPattern=wle});var Sle=_((JOt,vle)=>{vle.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var Ple=_((KOt,ble)=>{var aXe=Sle(),Dle={"{":"}","(":")","[":"]"},lXe=function(t){if(t[0]==="!")return!0;for(var e=0,r=-2,s=-2,a=-2,n=-2,c=-2;ee&&(c===-1||c>s||(c=t.indexOf("\\",e),c===-1||c>s)))||a!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(a=t.indexOf("}",e),a>e&&(c=t.indexOf("\\",e),c===-1||c>a))||n!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(n=t.indexOf(")",e),n>e&&(c=t.indexOf("\\",e),c===-1||c>n))||r!==-1&&t[e]==="("&&t[e+1]!=="|"&&(rr&&(c=t.indexOf("\\",r),c===-1||c>n))))return!0;if(t[e]==="\\"){var f=t[e+1];e+=2;var p=Dle[f];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]==="!")return!0}else e++}return!1},cXe=function(t){if(t[0]==="!")return!0;for(var e=0;e{"use strict";var uXe=Ple(),fXe=Ie("path").posix.dirname,AXe=Ie("os").platform()==="win32",s3="/",pXe=/\\/g,hXe=/[\{\[].*[\}\]]$/,gXe=/(^|[^\\])([\{\[]|\([^\)]+$)/,dXe=/\\([\!\*\?\|\[\]\(\)\{\}])/g;xle.exports=function(e,r){var s=Object.assign({flipBackslashes:!0},r);s.flipBackslashes&&AXe&&e.indexOf(s3)<0&&(e=e.replace(pXe,s3)),hXe.test(e)&&(e+=s3),e+="a";do e=fXe(e);while(uXe(e)||gXe.test(e));return e.replace(dXe,"$1")}});var Mle=_(jr=>{"use strict";Object.defineProperty(jr,"__esModule",{value:!0});jr.removeDuplicateSlashes=jr.matchAny=jr.convertPatternsToRe=jr.makeRe=jr.getPatternParts=jr.expandBraceExpansion=jr.expandPatternsWithBraceExpansion=jr.isAffectDepthOfReadingPattern=jr.endsWithSlashGlobStar=jr.hasGlobStar=jr.getBaseDirectory=jr.isPatternRelatedToParentDirectory=jr.getPatternsOutsideCurrentDirectory=jr.getPatternsInsideCurrentDirectory=jr.getPositivePatterns=jr.getNegativePatterns=jr.isPositivePattern=jr.isNegativePattern=jr.convertToNegativePattern=jr.convertToPositivePattern=jr.isDynamicPattern=jr.isStaticPattern=void 0;var mXe=Ie("path"),yXe=kle(),o3=Go(),Qle="**",EXe="\\",IXe=/[*?]|^!/,CXe=/\[[^[]*]/,wXe=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,BXe=/[!*+?@]\([^(]*\)/,vXe=/,|\.\./,SXe=/(?!^)\/{2,}/g;function Tle(t,e={}){return!Rle(t,e)}jr.isStaticPattern=Tle;function Rle(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.includes(EXe)||IXe.test(t)||CXe.test(t)||wXe.test(t)||e.extglob!==!1&&BXe.test(t)||e.braceExpansion!==!1&&DXe(t))}jr.isDynamicPattern=Rle;function DXe(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf("}",e+1);if(r===-1)return!1;let s=t.slice(e,r);return vXe.test(s)}function bXe(t){return nQ(t)?t.slice(1):t}jr.convertToPositivePattern=bXe;function PXe(t){return"!"+t}jr.convertToNegativePattern=PXe;function nQ(t){return t.startsWith("!")&&t[1]!=="("}jr.isNegativePattern=nQ;function Fle(t){return!nQ(t)}jr.isPositivePattern=Fle;function xXe(t){return t.filter(nQ)}jr.getNegativePatterns=xXe;function kXe(t){return t.filter(Fle)}jr.getPositivePatterns=kXe;function QXe(t){return t.filter(e=>!a3(e))}jr.getPatternsInsideCurrentDirectory=QXe;function TXe(t){return t.filter(a3)}jr.getPatternsOutsideCurrentDirectory=TXe;function a3(t){return t.startsWith("..")||t.startsWith("./..")}jr.isPatternRelatedToParentDirectory=a3;function RXe(t){return yXe(t,{flipBackslashes:!1})}jr.getBaseDirectory=RXe;function FXe(t){return t.includes(Qle)}jr.hasGlobStar=FXe;function Nle(t){return t.endsWith("/"+Qle)}jr.endsWithSlashGlobStar=Nle;function NXe(t){let e=mXe.basename(t);return Nle(t)||Tle(e)}jr.isAffectDepthOfReadingPattern=NXe;function OXe(t){return t.reduce((e,r)=>e.concat(Ole(r)),[])}jr.expandPatternsWithBraceExpansion=OXe;function Ole(t){let e=o3.braces(t,{expand:!0,nodupes:!0,keepEscaping:!0});return e.sort((r,s)=>r.length-s.length),e.filter(r=>r!=="")}jr.expandBraceExpansion=Ole;function LXe(t,e){let{parts:r}=o3.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r}jr.getPatternParts=LXe;function Lle(t,e){return o3.makeRe(t,e)}jr.makeRe=Lle;function MXe(t,e){return t.map(r=>Lle(r,e))}jr.convertPatternsToRe=MXe;function UXe(t,e){return e.some(r=>r.test(t))}jr.matchAny=UXe;function _Xe(t){return t.replace(SXe,"/")}jr.removeDuplicateSlashes=_Xe});var jle=_((ZOt,Hle)=>{"use strict";var HXe=Ie("stream"),Ule=HXe.PassThrough,jXe=Array.prototype.slice;Hle.exports=GXe;function GXe(){let t=[],e=jXe.call(arguments),r=!1,s=e[e.length-1];s&&!Array.isArray(s)&&s.pipe==null?e.pop():s={};let a=s.end!==!1,n=s.pipeError===!0;s.objectMode==null&&(s.objectMode=!0),s.highWaterMark==null&&(s.highWaterMark=64*1024);let c=Ule(s);function f(){for(let E=0,C=arguments.length;E0||(r=!1,p())}function P(I){function R(){I.removeListener("merge2UnpipeEnd",R),I.removeListener("end",R),n&&I.removeListener("error",N),S()}function N(U){c.emit("error",U)}if(I._readableState.endEmitted)return S();I.on("merge2UnpipeEnd",R),I.on("end",R),n&&I.on("error",N),I.pipe(c,{end:!1}),I.resume()}for(let I=0;I{"use strict";Object.defineProperty(iQ,"__esModule",{value:!0});iQ.merge=void 0;var qXe=jle();function WXe(t){let e=qXe(t);return t.forEach(r=>{r.once("error",s=>e.emit("error",s))}),e.once("close",()=>Gle(t)),e.once("end",()=>Gle(t)),e}iQ.merge=WXe;function Gle(t){t.forEach(e=>e.emit("close"))}});var Wle=_(XE=>{"use strict";Object.defineProperty(XE,"__esModule",{value:!0});XE.isEmpty=XE.isString=void 0;function YXe(t){return typeof t=="string"}XE.isString=YXe;function VXe(t){return t===""}XE.isEmpty=VXe});var xp=_(Yo=>{"use strict";Object.defineProperty(Yo,"__esModule",{value:!0});Yo.string=Yo.stream=Yo.pattern=Yo.path=Yo.fs=Yo.errno=Yo.array=void 0;var JXe=mle();Yo.array=JXe;var KXe=yle();Yo.errno=KXe;var zXe=Ele();Yo.fs=zXe;var XXe=Ble();Yo.path=XXe;var ZXe=Mle();Yo.pattern=ZXe;var $Xe=qle();Yo.stream=$Xe;var eZe=Wle();Yo.string=eZe});var Kle=_(Vo=>{"use strict";Object.defineProperty(Vo,"__esModule",{value:!0});Vo.convertPatternGroupToTask=Vo.convertPatternGroupsToTasks=Vo.groupPatternsByBaseDirectory=Vo.getNegativePatternsAsPositive=Vo.getPositivePatterns=Vo.convertPatternsToTasks=Vo.generate=void 0;var Hu=xp();function tZe(t,e){let r=Yle(t,e),s=Yle(e.ignore,e),a=Vle(r),n=Jle(r,s),c=a.filter(E=>Hu.pattern.isStaticPattern(E,e)),f=a.filter(E=>Hu.pattern.isDynamicPattern(E,e)),p=l3(c,n,!1),h=l3(f,n,!0);return p.concat(h)}Vo.generate=tZe;function Yle(t,e){let r=t;return e.braceExpansion&&(r=Hu.pattern.expandPatternsWithBraceExpansion(r)),e.baseNameMatch&&(r=r.map(s=>s.includes("/")?s:`**/${s}`)),r.map(s=>Hu.pattern.removeDuplicateSlashes(s))}function l3(t,e,r){let s=[],a=Hu.pattern.getPatternsOutsideCurrentDirectory(t),n=Hu.pattern.getPatternsInsideCurrentDirectory(t),c=c3(a),f=c3(n);return s.push(...u3(c,e,r)),"."in f?s.push(f3(".",n,e,r)):s.push(...u3(f,e,r)),s}Vo.convertPatternsToTasks=l3;function Vle(t){return Hu.pattern.getPositivePatterns(t)}Vo.getPositivePatterns=Vle;function Jle(t,e){return Hu.pattern.getNegativePatterns(t).concat(e).map(Hu.pattern.convertToPositivePattern)}Vo.getNegativePatternsAsPositive=Jle;function c3(t){let e={};return t.reduce((r,s)=>{let a=Hu.pattern.getBaseDirectory(s);return a in r?r[a].push(s):r[a]=[s],r},e)}Vo.groupPatternsByBaseDirectory=c3;function u3(t,e,r){return Object.keys(t).map(s=>f3(s,t[s],e,r))}Vo.convertPatternGroupsToTasks=u3;function f3(t,e,r,s){return{dynamic:s,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Hu.pattern.convertToNegativePattern))}}Vo.convertPatternGroupToTask=f3});var Xle=_(sQ=>{"use strict";Object.defineProperty(sQ,"__esModule",{value:!0});sQ.read=void 0;function rZe(t,e,r){e.fs.lstat(t,(s,a)=>{if(s!==null){zle(r,s);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){A3(r,a);return}e.fs.stat(t,(n,c)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){zle(r,n);return}A3(r,a);return}e.markSymbolicLink&&(c.isSymbolicLink=()=>!0),A3(r,c)})})}sQ.read=rZe;function zle(t,e){t(e)}function A3(t,e){t(null,e)}});var Zle=_(oQ=>{"use strict";Object.defineProperty(oQ,"__esModule",{value:!0});oQ.read=void 0;function nZe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let s=e.fs.statSync(t);return e.markSymbolicLink&&(s.isSymbolicLink=()=>!0),s}catch(s){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw s}}oQ.read=nZe});var $le=_(h0=>{"use strict";Object.defineProperty(h0,"__esModule",{value:!0});h0.createFileSystemAdapter=h0.FILE_SYSTEM_ADAPTER=void 0;var aQ=Ie("fs");h0.FILE_SYSTEM_ADAPTER={lstat:aQ.lstat,stat:aQ.stat,lstatSync:aQ.lstatSync,statSync:aQ.statSync};function iZe(t){return t===void 0?h0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},h0.FILE_SYSTEM_ADAPTER),t)}h0.createFileSystemAdapter=iZe});var ece=_(h3=>{"use strict";Object.defineProperty(h3,"__esModule",{value:!0});var sZe=$le(),p3=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=sZe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};h3.default=p3});var Zd=_(g0=>{"use strict";Object.defineProperty(g0,"__esModule",{value:!0});g0.statSync=g0.stat=g0.Settings=void 0;var tce=Xle(),oZe=Zle(),g3=ece();g0.Settings=g3.default;function aZe(t,e,r){if(typeof e=="function"){tce.read(t,d3(),e);return}tce.read(t,d3(e),r)}g0.stat=aZe;function lZe(t,e){let r=d3(e);return oZe.read(t,r)}g0.statSync=lZe;function d3(t={}){return t instanceof g3.default?t:new g3.default(t)}});var ice=_((lLt,nce)=>{var rce;nce.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:global):t=>(rce||(rce=Promise.resolve())).then(t).catch(e=>setTimeout(()=>{throw e},0))});var oce=_((cLt,sce)=>{sce.exports=uZe;var cZe=ice();function uZe(t,e){let r,s,a,n=!0;Array.isArray(t)?(r=[],s=t.length):(a=Object.keys(t),r={},s=a.length);function c(p){function h(){e&&e(p,r),e=null}n?cZe(h):h()}function f(p,h,E){r[p]=E,(--s===0||h)&&c(h)}s?a?a.forEach(function(p){t[p](function(h,E){f(p,h,E)})}):t.forEach(function(p,h){p(function(E,C){f(h,E,C)})}):c(null),n=!1}});var m3=_(cQ=>{"use strict";Object.defineProperty(cQ,"__esModule",{value:!0});cQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var lQ=process.versions.node.split(".");if(lQ[0]===void 0||lQ[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var ace=Number.parseInt(lQ[0],10),fZe=Number.parseInt(lQ[1],10),lce=10,AZe=10,pZe=ace>lce,hZe=ace===lce&&fZe>=AZe;cQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=pZe||hZe});var cce=_(uQ=>{"use strict";Object.defineProperty(uQ,"__esModule",{value:!0});uQ.createDirentFromStats=void 0;var y3=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function gZe(t,e){return new y3(t,e)}uQ.createDirentFromStats=gZe});var E3=_(fQ=>{"use strict";Object.defineProperty(fQ,"__esModule",{value:!0});fQ.fs=void 0;var dZe=cce();fQ.fs=dZe});var I3=_(AQ=>{"use strict";Object.defineProperty(AQ,"__esModule",{value:!0});AQ.joinPathSegments=void 0;function mZe(t,e,r){return t.endsWith(r)?t+e:t+r+e}AQ.joinPathSegments=mZe});var gce=_(d0=>{"use strict";Object.defineProperty(d0,"__esModule",{value:!0});d0.readdir=d0.readdirWithFileTypes=d0.read=void 0;var yZe=Zd(),uce=oce(),EZe=m3(),fce=E3(),Ace=I3();function IZe(t,e,r){if(!e.stats&&EZe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){pce(t,e,r);return}hce(t,e,r)}d0.read=IZe;function pce(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(s,a)=>{if(s!==null){pQ(r,s);return}let n=a.map(f=>({dirent:f,name:f.name,path:Ace.joinPathSegments(t,f.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){C3(r,n);return}let c=n.map(f=>CZe(f,e));uce(c,(f,p)=>{if(f!==null){pQ(r,f);return}C3(r,p)})})}d0.readdirWithFileTypes=pce;function CZe(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(s,a)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){r(s);return}r(null,t);return}t.dirent=fce.fs.createDirentFromStats(t.name,a),r(null,t)})}}function hce(t,e,r){e.fs.readdir(t,(s,a)=>{if(s!==null){pQ(r,s);return}let n=a.map(c=>{let f=Ace.joinPathSegments(t,c,e.pathSegmentSeparator);return p=>{yZe.stat(f,e.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let C={name:c,path:f,dirent:fce.fs.createDirentFromStats(c,E)};e.stats&&(C.stats=E),p(null,C)})}});uce(n,(c,f)=>{if(c!==null){pQ(r,c);return}C3(r,f)})})}d0.readdir=hce;function pQ(t,e){t(e)}function C3(t,e){t(null,e)}});var Ice=_(m0=>{"use strict";Object.defineProperty(m0,"__esModule",{value:!0});m0.readdir=m0.readdirWithFileTypes=m0.read=void 0;var wZe=Zd(),BZe=m3(),dce=E3(),mce=I3();function vZe(t,e){return!e.stats&&BZe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?yce(t,e):Ece(t,e)}m0.read=vZe;function yce(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(s=>{let a={dirent:s,name:s.name,path:mce.joinPathSegments(t,s.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=dce.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}m0.readdirWithFileTypes=yce;function Ece(t,e){return e.fs.readdirSync(t).map(s=>{let a=mce.joinPathSegments(t,s,e.pathSegmentSeparator),n=wZe.statSync(a,e.fsStatSettings),c={name:s,path:a,dirent:dce.fs.createDirentFromStats(s,n)};return e.stats&&(c.stats=n),c})}m0.readdir=Ece});var Cce=_(y0=>{"use strict";Object.defineProperty(y0,"__esModule",{value:!0});y0.createFileSystemAdapter=y0.FILE_SYSTEM_ADAPTER=void 0;var ZE=Ie("fs");y0.FILE_SYSTEM_ADAPTER={lstat:ZE.lstat,stat:ZE.stat,lstatSync:ZE.lstatSync,statSync:ZE.statSync,readdir:ZE.readdir,readdirSync:ZE.readdirSync};function SZe(t){return t===void 0?y0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},y0.FILE_SYSTEM_ADAPTER),t)}y0.createFileSystemAdapter=SZe});var wce=_(B3=>{"use strict";Object.defineProperty(B3,"__esModule",{value:!0});var DZe=Ie("path"),bZe=Zd(),PZe=Cce(),w3=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=PZe.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,DZe.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new bZe.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};B3.default=w3});var hQ=_(E0=>{"use strict";Object.defineProperty(E0,"__esModule",{value:!0});E0.Settings=E0.scandirSync=E0.scandir=void 0;var Bce=gce(),xZe=Ice(),v3=wce();E0.Settings=v3.default;function kZe(t,e,r){if(typeof e=="function"){Bce.read(t,S3(),e);return}Bce.read(t,S3(e),r)}E0.scandir=kZe;function QZe(t,e){let r=S3(e);return xZe.read(t,r)}E0.scandirSync=QZe;function S3(t={}){return t instanceof v3.default?t:new v3.default(t)}});var Sce=_((ELt,vce)=>{"use strict";function TZe(t){var e=new t,r=e;function s(){var n=e;return n.next?e=n.next:(e=new t,r=e),n.next=null,n}function a(n){r.next=n,r=n}return{get:s,release:a}}vce.exports=TZe});var bce=_((ILt,D3)=>{"use strict";var RZe=Sce();function Dce(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),!(r>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");var s=RZe(FZe),a=null,n=null,c=0,f=null,p={push:R,drain:kc,saturated:kc,pause:E,paused:!1,get concurrency(){return r},set concurrency(ue){if(!(ue>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");if(r=ue,!p.paused)for(;a&&c=r||p.paused?n?(n.next=me,n=me):(a=me,n=me,p.saturated()):(c++,e.call(t,me.value,me.worked))}function N(ue,le){var me=s.get();me.context=t,me.release=U,me.value=ue,me.callback=le||kc,me.errorHandler=f,c>=r||p.paused?a?(me.next=a,a=me):(a=me,n=me,p.saturated()):(c++,e.call(t,me.value,me.worked))}function U(ue){ue&&s.release(ue);var le=a;le&&c<=r?p.paused?c--:(n===a&&(n=null),a=le.next,le.next=null,e.call(t,le.value,le.worked),n===null&&p.empty()):--c===0&&p.drain()}function W(){a=null,n=null,p.drain=kc}function ee(){a=null,n=null,p.drain(),p.drain=kc}function ie(ue){f=ue}}function kc(){}function FZe(){this.value=null,this.callback=kc,this.next=null,this.release=kc,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,s){var a=t.callback,n=t.errorHandler,c=t.value;t.value=null,t.callback=kc,t.errorHandler&&n(r,c),a.call(t.context,r,s),t.release(t)}}function NZe(t,e,r){typeof t=="function"&&(r=e,e=t,t=null);function s(E,C){e.call(this,E).then(function(S){C(null,S)},C)}var a=Dce(t,s,r),n=a.push,c=a.unshift;return a.push=f,a.unshift=p,a.drained=h,a;function f(E){var C=new Promise(function(S,P){n(E,function(I,R){if(I){P(I);return}S(R)})});return C.catch(kc),C}function p(E){var C=new Promise(function(S,P){c(E,function(I,R){if(I){P(I);return}S(R)})});return C.catch(kc),C}function h(){if(a.idle())return new Promise(function(S){S()});var E=a.drain,C=new Promise(function(S){a.drain=function(){E(),S()}});return C}}D3.exports=Dce;D3.exports.promise=NZe});var gQ=_(zf=>{"use strict";Object.defineProperty(zf,"__esModule",{value:!0});zf.joinPathSegments=zf.replacePathSegmentSeparator=zf.isAppliedFilter=zf.isFatalError=void 0;function OZe(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}zf.isFatalError=OZe;function LZe(t,e){return t===null||t(e)}zf.isAppliedFilter=LZe;function MZe(t,e){return t.split(/[/\\]/).join(e)}zf.replacePathSegmentSeparator=MZe;function UZe(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}zf.joinPathSegments=UZe});var x3=_(P3=>{"use strict";Object.defineProperty(P3,"__esModule",{value:!0});var _Ze=gQ(),b3=class{constructor(e,r){this._root=e,this._settings=r,this._root=_Ze.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};P3.default=b3});var T3=_(Q3=>{"use strict";Object.defineProperty(Q3,"__esModule",{value:!0});var HZe=Ie("events"),jZe=hQ(),GZe=bce(),dQ=gQ(),qZe=x3(),k3=class extends qZe.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=jZe.scandir,this._emitter=new HZe.EventEmitter,this._queue=GZe(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let s={directory:e,base:r};this._queue.push(s,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(s,a)=>{if(s!==null){r(s,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!dQ.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let s=e.path;r!==void 0&&(e.path=dQ.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),dQ.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&dQ.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(s,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};Q3.default=k3});var Pce=_(F3=>{"use strict";Object.defineProperty(F3,"__esModule",{value:!0});var WZe=T3(),R3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new WZe.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{YZe(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{VZe(e,this._storage)}),this._reader.read()}};F3.default=R3;function YZe(t,e){t(e)}function VZe(t,e){t(null,e)}});var xce=_(O3=>{"use strict";Object.defineProperty(O3,"__esModule",{value:!0});var JZe=Ie("stream"),KZe=T3(),N3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new KZe.default(this._root,this._settings),this._stream=new JZe.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};O3.default=N3});var kce=_(M3=>{"use strict";Object.defineProperty(M3,"__esModule",{value:!0});var zZe=hQ(),mQ=gQ(),XZe=x3(),L3=class extends XZe.default{constructor(){super(...arguments),this._scandir=zZe.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let s=this._scandir(e,this._settings.fsScandirSettings);for(let a of s)this._handleEntry(a,r)}catch(s){this._handleError(s)}}_handleError(e){if(mQ.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let s=e.path;r!==void 0&&(e.path=mQ.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),mQ.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&mQ.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(s,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};M3.default=L3});var Qce=_(_3=>{"use strict";Object.defineProperty(_3,"__esModule",{value:!0});var ZZe=kce(),U3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new ZZe.default(this._root,this._settings)}read(){return this._reader.read()}};_3.default=U3});var Tce=_(j3=>{"use strict";Object.defineProperty(j3,"__esModule",{value:!0});var $Ze=Ie("path"),e$e=hQ(),H3=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,$Ze.sep),this.fsScandirSettings=new e$e.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};j3.default=H3});var EQ=_(Xf=>{"use strict";Object.defineProperty(Xf,"__esModule",{value:!0});Xf.Settings=Xf.walkStream=Xf.walkSync=Xf.walk=void 0;var Rce=Pce(),t$e=xce(),r$e=Qce(),G3=Tce();Xf.Settings=G3.default;function n$e(t,e,r){if(typeof e=="function"){new Rce.default(t,yQ()).read(e);return}new Rce.default(t,yQ(e)).read(r)}Xf.walk=n$e;function i$e(t,e){let r=yQ(e);return new r$e.default(t,r).read()}Xf.walkSync=i$e;function s$e(t,e){let r=yQ(e);return new t$e.default(t,r).read()}Xf.walkStream=s$e;function yQ(t={}){return t instanceof G3.default?t:new G3.default(t)}});var IQ=_(W3=>{"use strict";Object.defineProperty(W3,"__esModule",{value:!0});var o$e=Ie("path"),a$e=Zd(),Fce=xp(),q3=class{constructor(e){this._settings=e,this._fsStatSettings=new a$e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return o$e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let s={name:r,path:r,dirent:Fce.fs.createDirentFromStats(r,e)};return this._settings.stats&&(s.stats=e),s}_isFatalError(e){return!Fce.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};W3.default=q3});var J3=_(V3=>{"use strict";Object.defineProperty(V3,"__esModule",{value:!0});var l$e=Ie("stream"),c$e=Zd(),u$e=EQ(),f$e=IQ(),Y3=class extends f$e.default{constructor(){super(...arguments),this._walkStream=u$e.walkStream,this._stat=c$e.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let s=e.map(this._getFullEntryPath,this),a=new l$e.PassThrough({objectMode:!0});a._write=(n,c,f)=>this._getEntry(s[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===s.length-1&&a.end(),f()}).catch(f);for(let n=0;nthis._makeEntry(a,r)).catch(a=>{if(s.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,s)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):s(a))})}};V3.default=Y3});var Nce=_(z3=>{"use strict";Object.defineProperty(z3,"__esModule",{value:!0});var A$e=EQ(),p$e=IQ(),h$e=J3(),K3=class extends p$e.default{constructor(){super(...arguments),this._walkAsync=A$e.walk,this._readerStream=new h$e.default(this._settings)}dynamic(e,r){return new Promise((s,a)=>{this._walkAsync(e,r,(n,c)=>{n===null?s(c):a(n)})})}async static(e,r){let s=[],a=this._readerStream.static(e,r);return new Promise((n,c)=>{a.once("error",c),a.on("data",f=>s.push(f)),a.once("end",()=>n(s))})}};z3.default=K3});var Oce=_(Z3=>{"use strict";Object.defineProperty(Z3,"__esModule",{value:!0});var NB=xp(),X3=class{constructor(e,r,s){this._patterns=e,this._settings=r,this._micromatchOptions=s,this._storage=[],this._fillStorage()}_fillStorage(){for(let e of this._patterns){let r=this._getPatternSegments(e),s=this._splitSegmentsIntoSections(r);this._storage.push({complete:s.length<=1,pattern:e,segments:r,sections:s})}}_getPatternSegments(e){return NB.pattern.getPatternParts(e,this._micromatchOptions).map(s=>NB.pattern.isDynamicPattern(s,this._settings)?{dynamic:!0,pattern:s,patternRe:NB.pattern.makeRe(s,this._micromatchOptions)}:{dynamic:!1,pattern:s})}_splitSegmentsIntoSections(e){return NB.array.splitWhen(e,r=>r.dynamic&&NB.pattern.hasGlobStar(r.pattern))}};Z3.default=X3});var Lce=_(e8=>{"use strict";Object.defineProperty(e8,"__esModule",{value:!0});var g$e=Oce(),$3=class extends g$e.default{match(e){let r=e.split("/"),s=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>s);for(let n of a){let c=n.sections[0];if(!n.complete&&s>c.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};e8.default=$3});var Mce=_(r8=>{"use strict";Object.defineProperty(r8,"__esModule",{value:!0});var CQ=xp(),d$e=Lce(),t8=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,s){let a=this._getMatcher(r),n=this._getNegativePatternsRe(s);return c=>this._filter(e,c,a,n)}_getMatcher(e){return new d$e.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(CQ.pattern.isAffectDepthOfReadingPattern);return CQ.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,s,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=CQ.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,s)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let s=r.split("/").length;if(e==="")return s;let a=e.split("/").length;return s-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!CQ.pattern.matchAny(e,r)}};r8.default=t8});var Uce=_(i8=>{"use strict";Object.defineProperty(i8,"__esModule",{value:!0});var $d=xp(),n8=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let s=$d.pattern.convertPatternsToRe(e,this._micromatchOptions),a=$d.pattern.convertPatternsToRe(r,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return n=>this._filter(n,s,a)}_filter(e,r,s){let a=$d.path.removeLeadingDotSegment(e.path);if(this._settings.unique&&this._isDuplicateEntry(a)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(a,s))return!1;let n=e.dirent.isDirectory(),c=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(a,s,n);return this._settings.unique&&c&&this._createIndexRecord(a),c}_isDuplicateEntry(e){return this.index.has(e)}_createIndexRecord(e){this.index.set(e,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let s=$d.path.makeAbsolute(this._settings.cwd,e);return $d.pattern.matchAny(s,r)}_isMatchToPatterns(e,r,s){let a=$d.pattern.matchAny(e,r);return!a&&s?$d.pattern.matchAny(e+"/",r):a}};i8.default=n8});var _ce=_(o8=>{"use strict";Object.defineProperty(o8,"__esModule",{value:!0});var m$e=xp(),s8=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return m$e.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};o8.default=s8});var jce=_(l8=>{"use strict";Object.defineProperty(l8,"__esModule",{value:!0});var Hce=xp(),a8=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=Hce.path.makeAbsolute(this._settings.cwd,r),r=Hce.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};l8.default=a8});var wQ=_(u8=>{"use strict";Object.defineProperty(u8,"__esModule",{value:!0});var y$e=Ie("path"),E$e=Mce(),I$e=Uce(),C$e=_ce(),w$e=jce(),c8=class{constructor(e){this._settings=e,this.errorFilter=new C$e.default(this._settings),this.entryFilter=new I$e.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new E$e.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new w$e.default(this._settings)}_getRootDirectory(e){return y$e.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};u8.default=c8});var Gce=_(A8=>{"use strict";Object.defineProperty(A8,"__esModule",{value:!0});var B$e=Nce(),v$e=wQ(),f8=class extends v$e.default{constructor(){super(...arguments),this._reader=new B$e.default(this._settings)}async read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e);return(await this.api(r,e,s)).map(n=>s.transform(n))}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};A8.default=f8});var qce=_(h8=>{"use strict";Object.defineProperty(h8,"__esModule",{value:!0});var S$e=Ie("stream"),D$e=J3(),b$e=wQ(),p8=class extends b$e.default{constructor(){super(...arguments),this._reader=new D$e.default(this._settings)}read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e),a=this.api(r,e,s),n=new S$e.Readable({objectMode:!0,read:()=>{}});return a.once("error",c=>n.emit("error",c)).on("data",c=>n.emit("data",s.transform(c))).once("end",()=>n.emit("end")),n.once("close",()=>a.destroy()),n}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};h8.default=p8});var Wce=_(d8=>{"use strict";Object.defineProperty(d8,"__esModule",{value:!0});var P$e=Zd(),x$e=EQ(),k$e=IQ(),g8=class extends k$e.default{constructor(){super(...arguments),this._walkSync=x$e.walkSync,this._statSync=P$e.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let s=[];for(let a of e){let n=this._getFullEntryPath(a),c=this._getEntry(n,a,r);c===null||!r.entryFilter(c)||s.push(c)}return s}_getEntry(e,r,s){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(s.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};d8.default=g8});var Yce=_(y8=>{"use strict";Object.defineProperty(y8,"__esModule",{value:!0});var Q$e=Wce(),T$e=wQ(),m8=class extends T$e.default{constructor(){super(...arguments),this._reader=new Q$e.default(this._settings)}read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e);return this.api(r,e,s).map(s.transform)}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};y8.default=m8});var Vce=_(eI=>{"use strict";Object.defineProperty(eI,"__esModule",{value:!0});eI.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var $E=Ie("fs"),R$e=Ie("os"),F$e=Math.max(R$e.cpus().length,1);eI.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:$E.lstat,lstatSync:$E.lstatSync,stat:$E.stat,statSync:$E.statSync,readdir:$E.readdir,readdirSync:$E.readdirSync};var E8=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,F$e),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},eI.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};eI.default=E8});var BQ=_((WLt,Kce)=>{"use strict";var Jce=Kle(),N$e=Gce(),O$e=qce(),L$e=Yce(),I8=Vce(),Qc=xp();async function C8(t,e){ju(t);let r=w8(t,N$e.default,e),s=await Promise.all(r);return Qc.array.flatten(s)}(function(t){t.glob=t,t.globSync=e,t.globStream=r,t.async=t;function e(h,E){ju(h);let C=w8(h,L$e.default,E);return Qc.array.flatten(C)}t.sync=e;function r(h,E){ju(h);let C=w8(h,O$e.default,E);return Qc.stream.merge(C)}t.stream=r;function s(h,E){ju(h);let C=[].concat(h),S=new I8.default(E);return Jce.generate(C,S)}t.generateTasks=s;function a(h,E){ju(h);let C=new I8.default(E);return Qc.pattern.isDynamicPattern(h,C)}t.isDynamicPattern=a;function n(h){return ju(h),Qc.path.escape(h)}t.escapePath=n;function c(h){return ju(h),Qc.path.convertPathToPattern(h)}t.convertPathToPattern=c;let f;(function(h){function E(S){return ju(S),Qc.path.escapePosixPath(S)}h.escapePath=E;function C(S){return ju(S),Qc.path.convertPosixPathToPattern(S)}h.convertPathToPattern=C})(f=t.posix||(t.posix={}));let p;(function(h){function E(S){return ju(S),Qc.path.escapeWindowsPath(S)}h.escapePath=E;function C(S){return ju(S),Qc.path.convertWindowsPathToPattern(S)}h.convertPathToPattern=C})(p=t.win32||(t.win32={}))})(C8||(C8={}));function w8(t,e,r){let s=[].concat(t),a=new I8.default(r),n=Jce.generate(s,a),c=new e(a);return n.map(c.read,c)}function ju(t){if(![].concat(t).every(s=>Qc.string.isString(s)&&!Qc.string.isEmpty(s)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}Kce.exports=C8});var Nn={};Vt(Nn,{checksumFile:()=>SQ,checksumPattern:()=>DQ,makeHash:()=>us});function us(...t){let e=(0,vQ.createHash)("sha512"),r="";for(let s of t)typeof s=="string"?r+=s:s&&(r&&(e.update(r),r=""),e.update(s));return r&&e.update(r),e.digest("hex")}async function SQ(t,{baseFs:e,algorithm:r}={baseFs:ce,algorithm:"sha512"}){let s=await e.openPromise(t,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,vQ.createHash)(r),f=0;for(;(f=await e.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await e.closePromise(s)}}async function DQ(t,{cwd:e}){let s=(await(0,B8.default)(t,{cwd:fe.fromPortablePath(e),onlyDirectories:!0})).map(f=>`${f}/**/*`),a=await(0,B8.default)([t,...s],{cwd:fe.fromPortablePath(e),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async f=>{let p=[Buffer.from(f)],h=J.join(e,fe.toPortablePath(f)),E=await ce.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await ce.readlinkPromise(h))):E.isFile()&&p.push(await ce.readFilePromise(h)),p.join("\0")})),c=(0,vQ.createHash)("sha512");for(let f of n)c.update(f);return c.digest("hex")}var vQ,B8,I0=Xe(()=>{Dt();vQ=Ie("crypto"),B8=ut(BQ())});var G={};Vt(G,{allPeerRequests:()=>qB,areDescriptorsEqual:()=>eue,areIdentsEqual:()=>UB,areLocatorsEqual:()=>_B,areVirtualPackagesEquivalent:()=>Y$e,bindDescriptor:()=>q$e,bindLocator:()=>W$e,convertDescriptorToLocator:()=>bQ,convertLocatorToDescriptor:()=>S8,convertPackageToLocator:()=>H$e,convertToIdent:()=>_$e,convertToManifestRange:()=>ret,copyPackage:()=>LB,devirtualizeDescriptor:()=>MB,devirtualizeLocator:()=>rI,ensureDevirtualizedDescriptor:()=>j$e,ensureDevirtualizedLocator:()=>G$e,getIdentVendorPath:()=>x8,isPackageCompatible:()=>TQ,isVirtualDescriptor:()=>kp,isVirtualLocator:()=>Gu,makeDescriptor:()=>On,makeIdent:()=>Da,makeLocator:()=>Ws,makeRange:()=>kQ,parseDescriptor:()=>C0,parseFileStyleRange:()=>eet,parseIdent:()=>Sa,parseLocator:()=>Qp,parseRange:()=>em,prettyDependent:()=>t3,prettyDescriptor:()=>ni,prettyIdent:()=>$i,prettyLocator:()=>Yr,prettyLocatorNoColors:()=>e3,prettyRange:()=>iI,prettyReference:()=>jB,prettyResolution:()=>FB,prettyWorkspace:()=>GB,renamePackage:()=>D8,slugifyIdent:()=>v8,slugifyLocator:()=>nI,sortDescriptors:()=>sI,stringifyDescriptor:()=>al,stringifyIdent:()=>un,stringifyLocator:()=>ll,tryParseDescriptor:()=>HB,tryParseIdent:()=>tue,tryParseLocator:()=>xQ,tryParseRange:()=>$$e,unwrapIdentFromScope:()=>iet,virtualizeDescriptor:()=>b8,virtualizePackage:()=>P8,wrapIdentIntoScope:()=>net});function Da(t,e){if(t?.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:us(t,e),scope:t,name:e}}function On(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:us(t.identHash,e),range:e}}function Ws(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:us(t.identHash,e),reference:e}}function _$e(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function bQ(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function S8(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function H$e(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function D8(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function LB(t){return D8(t,t)}function b8(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return On(t,`virtual:${e}#${t.range}`)}function P8(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return D8(t,Ws(t,`virtual:${e}#${t.reference}`))}function kp(t){return t.range.startsWith(OB)}function Gu(t){return t.reference.startsWith(OB)}function MB(t){if(!kp(t))throw new Error("Not a virtual descriptor");return On(t,t.range.replace(PQ,""))}function rI(t){if(!Gu(t))throw new Error("Not a virtual descriptor");return Ws(t,t.reference.replace(PQ,""))}function j$e(t){return kp(t)?On(t,t.range.replace(PQ,"")):t}function G$e(t){return Gu(t)?Ws(t,t.reference.replace(PQ,"")):t}function q$e(t,e){return t.range.includes("::")?t:On(t,`${t.range}::${tI.default.stringify(e)}`)}function W$e(t,e){return t.reference.includes("::")?t:Ws(t,`${t.reference}::${tI.default.stringify(e)}`)}function UB(t,e){return t.identHash===e.identHash}function eue(t,e){return t.descriptorHash===e.descriptorHash}function _B(t,e){return t.locatorHash===e.locatorHash}function Y$e(t,e){if(!Gu(t))throw new Error("Invalid package type");if(!Gu(e))throw new Error("Invalid package type");if(!UB(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let s=e.dependencies.get(r.identHash);if(!s||!eue(r,s))return!1}return!0}function Sa(t){let e=tue(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function tue(t){let e=t.match(V$e);if(!e)return null;let[,r,s]=e;return Da(typeof r<"u"?r:null,s)}function C0(t,e=!1){let r=HB(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function HB(t,e=!1){let r=e?t.match(J$e):t.match(K$e);if(!r)return null;let[,s,a,n]=r;if(n==="unknown")throw new Error(`Invalid range (${t})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:"unknown";return On(Da(c,a),f)}function Qp(t,e=!1){let r=xQ(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function xQ(t,e=!1){let r=e?t.match(z$e):t.match(X$e);if(!r)return null;let[,s,a,n]=r;if(n==="unknown")throw new Error(`Invalid reference (${t})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:"unknown";return Ws(Da(c,a),f)}function em(t,e){let r=t.match(Z$e);if(r===null)throw new Error(`Invalid range (${t})`);let s=typeof r[1]<"u"?r[1]:null;if(typeof e?.requireProtocol=="string"&&s!==e.requireProtocol)throw new Error(`Invalid protocol (${s})`);if(e?.requireProtocol&&s===null)throw new Error(`Missing protocol (${s})`);let a=typeof r[3]<"u"?decodeURIComponent(r[2]):null;if(e?.requireSource&&a===null)throw new Error(`Missing source (${t})`);let n=typeof r[3]<"u"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),c=e?.parseSelector?tI.default.parse(n):n,f=typeof r[4]<"u"?tI.default.parse(r[4]):null;return{protocol:s,source:a,selector:c,params:f}}function $$e(t,e){try{return em(t,e)}catch{return null}}function eet(t,{protocol:e}){let{selector:r,params:s}=em(t,{requireProtocol:e,requireBindings:!0});if(typeof s.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Qp(s.locator,!0),path:r}}function zce(t){return t=t.replaceAll("%","%25"),t=t.replaceAll(":","%3A"),t=t.replaceAll("#","%23"),t}function tet(t){return t===null?!1:Object.entries(t).length>0}function kQ({protocol:t,source:e,selector:r,params:s}){let a="";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${zce(e)}#`),a+=zce(r),tet(s)&&(a+=`::${tI.default.stringify(s)}`),a}function ret(t){let{params:e,protocol:r,source:s,selector:a}=em(t);for(let n in e)n.startsWith("__")&&delete e[n];return kQ({protocol:r,source:s,params:e,selector:a})}function un(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function net(t,e){return t.scope?Da(e,`${t.scope}__${t.name}`):Da(e,t.name)}function iet(t,e){if(t.scope!==e)return t;let r=t.name.indexOf("__");if(r===-1)return Da(null,t.name);let s=t.name.slice(0,r),a=t.name.slice(r+2);return Da(s,a)}function al(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function ll(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function v8(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function nI(t){let{protocol:e,selector:r}=em(t.reference),s=e!==null?e.replace(set,""):"exotic",a=Xce.default.valid(r),n=a!==null?`${s}-${a}`:`${s}`,c=10;return t.scope?`${v8(t)}-${n}-${t.locatorHash.slice(0,c)}`:`${v8(t)}-${n}-${t.locatorHash.slice(0,c)}`}function $i(t,e){return e.scope?`${Ht(t,`@${e.scope}/`,ht.SCOPE)}${Ht(t,e.name,ht.NAME)}`:`${Ht(t,e.name,ht.NAME)}`}function QQ(t){if(t.startsWith(OB)){let e=QQ(t.substring(t.indexOf("#")+1)),r=t.substring(OB.length,OB.length+M$e);return`${e} [${r}]`}else return t.replace(oet,"?[...]")}function iI(t,e){return`${Ht(t,QQ(e),ht.RANGE)}`}function ni(t,e){return`${$i(t,e)}${Ht(t,"@",ht.RANGE)}${iI(t,e.range)}`}function jB(t,e){return`${Ht(t,QQ(e),ht.REFERENCE)}`}function Yr(t,e){return`${$i(t,e)}${Ht(t,"@",ht.REFERENCE)}${jB(t,e.reference)}`}function e3(t){return`${un(t)}@${QQ(t.reference)}`}function sI(t){return qs(t,[e=>un(e),e=>e.range])}function GB(t,e){return $i(t,e.anchoredLocator)}function FB(t,e,r){let s=kp(e)?MB(e):e;return r===null?`${ni(t,s)} \u2192 ${$4(t).Cross}`:s.identHash===r.identHash?`${ni(t,s)} \u2192 ${jB(t,r.reference)}`:`${ni(t,s)} \u2192 ${Yr(t,r)}`}function t3(t,e,r){return r===null?`${Yr(t,e)}`:`${Yr(t,e)} (via ${iI(t,r.range)})`}function x8(t){return`node_modules/${un(t)}`}function TQ(t,e){return t.conditions?U$e(t.conditions,r=>{let[,s,a]=r.match($ce),n=e[s];return n?n.includes(a):!0}):!0}function qB(t){let e=new Set;if("children"in t)e.add(t);else for(let r of t.requests.values())e.add(r);for(let r of e)for(let s of r.children.values())e.add(s);return e}var tI,Xce,Zce,OB,M$e,$ce,U$e,PQ,V$e,J$e,K$e,z$e,X$e,Z$e,set,oet,Wo=Xe(()=>{tI=ut(Ie("querystring")),Xce=ut(Ai()),Zce=ut(Ise());xc();I0();Pc();Wo();OB="virtual:",M$e=5,$ce=/(os|cpu|libc)=([a-z0-9_-]+)/,U$e=(0,Zce.makeParser)($ce);PQ=/^[^#]*#/;V$e=/^(?:@([^/]+?)\/)?([^@/]+)$/;J$e=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,K$e=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;z$e=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,X$e=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;Z$e=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;set=/:$/;oet=/\?.*/});var rue,nue=Xe(()=>{Wo();rue={hooks:{reduceDependency:(t,e,r,s,{resolver:a,resolveOptions:n})=>{for(let{pattern:c,reference:f}of e.topLevelWorkspace.manifest.resolutions){if(c.from&&(c.from.fullName!==un(r)||e.configuration.normalizeLocator(Ws(Sa(c.from.fullName),c.from.description??r.reference)).locatorHash!==r.locatorHash)||c.descriptor.fullName!==un(t)||e.configuration.normalizeDependency(On(Qp(c.descriptor.fullName),c.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(On(t,f)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let s=GB(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${s}: ${n}`),reportError:(a,n)=>e.reportError(a,`${s}: ${n}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let s of r.errors)e.reportWarning(57,s.message)}}}});var Ei,tm=Xe(()=>{Ei=class t{static{this.protocol="workspace:"}supportsDescriptor(e,r){return!!(e.range.startsWith(t.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(t.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){return[s.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let s=r.project.getWorkspaceByCwd(e.reference.slice(t.protocol.length));return{...e,version:s.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...s.manifest.dependencies,...s.manifest.devDependencies])),peerDependencies:new Map([...s.manifest.peerDependencies]),dependenciesMeta:s.manifest.dependenciesMeta,peerDependenciesMeta:s.manifest.peerDependenciesMeta,bin:s.manifest.bin}}}});var Fr={};Vt(Fr,{SemVer:()=>lue.SemVer,clean:()=>cet,getComparator:()=>oue,mergeComparators:()=>k8,satisfiesWithPrereleases:()=>Zf,simplifyRanges:()=>Q8,stringifyComparator:()=>aue,validRange:()=>cl});function Zf(t,e,r=!1){if(!t)return!1;let s=`${e}${r}`,a=iue.get(s);if(typeof a>"u")try{a=new Tp.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{iue.set(s,a||null)}else if(a===null)return!1;let n;try{n=new Tp.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(c=>{for(let f of c)f.semver.prerelease&&(f.semver.prerelease=[]);return c.every(f=>f.test(n))}))}function cl(t){if(t.indexOf(":")!==-1)return null;let e=sue.get(t);if(typeof e<"u")return e;try{e=new Tp.default.Range(t)}catch{e=null}return sue.set(t,e),e}function cet(t){let e=aet.exec(t);return e?e[1]:null}function oue(t){if(t.semver===Tp.default.Comparator.ANY)return{gt:null,lt:null};switch(t.operator){case"":return{gt:[">=",t.semver],lt:["<=",t.semver]};case">":case">=":return{gt:[t.operator,t.semver],lt:null};case"<":case"<=":return{gt:null,lt:[t.operator,t.semver]};default:throw new Error(`Assertion failed: Unexpected comparator operator (${t.operator})`)}}function k8(t){if(t.length===0)return null;let e=null,r=null;for(let s of t){if(s.gt){let a=e!==null?Tp.default.compare(s.gt[1],e[1]):null;(a===null||a>0||a===0&&s.gt[0]===">")&&(e=s.gt)}if(s.lt){let a=r!==null?Tp.default.compare(s.lt[1],r[1]):null;(a===null||a<0||a===0&&s.lt[0]==="<")&&(r=s.lt)}}if(e&&r){let s=Tp.default.compare(e[1],r[1]);if(s===0&&(e[0]===">"||r[0]==="<")||s>0)return null}return{gt:e,lt:r}}function aue(t){if(t.gt&&t.lt){if(t.gt[0]===">="&&t.lt[0]==="<="&&t.gt[1].version===t.lt[1].version)return t.gt[1].version;if(t.gt[0]===">="&&t.lt[0]==="<"){if(t.lt[1].version===`${t.gt[1].major+1}.0.0-0`)return`^${t.gt[1].version}`;if(t.lt[1].version===`${t.gt[1].major}.${t.gt[1].minor+1}.0-0`)return`~${t.gt[1].version}`}}let e=[];return t.gt&&e.push(t.gt[0]+t.gt[1].version),t.lt&&e.push(t.lt[0]+t.lt[1].version),e.length?e.join(" "):"*"}function Q8(t){let e=t.map(uet).map(s=>cl(s).set.map(a=>a.map(n=>oue(n)))),r=e.shift().map(s=>k8(s)).filter(s=>s!==null);for(let s of e){let a=[];for(let n of r)for(let c of s){let f=k8([n,...c]);f!==null&&a.push(f)}r=a}return r.length===0?null:r.map(s=>aue(s)).join(" || ")}function uet(t){let e=t.split("||");if(e.length>1){let r=new Set;for(let s of e)e.some(a=>a!==s&&Tp.default.subset(s,a))||r.add(s);if(r.size{Tp=ut(Ai()),lue=ut(Ai()),iue=new Map;sue=new Map;aet=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/});function cue(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function uue(t){return t.charCodeAt(0)===65279?t.slice(1):t}function ba(t){return t.replace(/\\/g,"/")}function RQ(t,{yamlCompatibilityMode:e}){return e?Y4(t):typeof t>"u"||typeof t=="boolean"?t:null}function fue(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let s=r%2===0?"":"!",a=e.slice(r);return`${s}${t}=${a}`}function T8(t,e){return e.length===1?fue(t,e[0]):`(${e.map(r=>fue(t,r)).join(" | ")})`}var Aue,Ut,oI=Xe(()=>{Dt();wc();Aue=ut(Ai());tm();Pc();Rp();Wo();Ut=class t{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static{this.fileName="package.json"}static{this.allDependencies=["dependencies","devDependencies","peerDependencies"]}static{this.hardDependencies=["dependencies","devDependencies"]}static async tryFind(e,{baseFs:r=new Yn}={}){let s=J.join(e,"package.json");try{return await t.fromFile(s,{baseFs:r})}catch(a){if(a.code==="ENOENT")return null;throw a}}static async find(e,{baseFs:r}={}){let s=await t.tryFind(e,{baseFs:r});if(s===null)throw new Error("Manifest not found");return s}static async fromFile(e,{baseFs:r=new Yn}={}){let s=new t;return await s.loadFile(e,{baseFs:r}),s}static fromText(e){let r=new t;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(uue(e)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(r),this.indent=cue(e)}async loadFile(e,{baseFs:r=new Yn}){let s=await r.readFilePromise(e,"utf8"),a;try{a=JSON.parse(uue(s)||"{}")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=cue(s)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let s=[];if(this.name=null,typeof e.name=="string")try{this.name=Sa(e.name)}catch{s.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let c of e.os)typeof c!="string"?s.push(new Error("Parsing failed for the 'os' field")):n.push(c)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let c of e.cpu)typeof c!="string"?s.push(new Error("Parsing failed for the 'cpu' field")):n.push(c)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let c of e.libc)typeof c!="string"?s.push(new Error("Parsing failed for the 'libc' field")):n.push(c)}else this.libc=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=ba(e.main):this.main=null,typeof e.module=="string"?this.module=ba(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=ba(e.browser);else{this.browser=new Map;for(let[n,c]of Object.entries(e.browser))this.browser.set(ba(n),typeof c=="string"?ba(c):c)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")e.bin.trim()===""?s.push(new Error("Invalid bin field")):this.name!==null?this.bin.set(this.name.name,ba(e.bin)):s.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[n,c]of Object.entries(e.bin)){if(typeof c!="string"||c.trim()===""){s.push(new Error(`Invalid bin definition for '${n}'`));continue}let f=Sa(n);this.bin.set(f.name,ba(c))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[n,c]of Object.entries(e.scripts)){if(typeof c!="string"){s.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,c)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[n,c]of Object.entries(e.dependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[n,c]of Object.entries(e.devDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[n,c]of Object.entries(e.peerDependencies)){let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof c!="string"||!c.startsWith(Ei.protocol)&&!cl(c))&&(s.push(new Error(`Invalid dependency range for '${n}'`)),c="*");let p=On(f,c);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces=="object"&&e.workspaces!==null&&e.workspaces.nohoist&&s.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let a=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!="string"){s.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[n,c]of Object.entries(e.dependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}`));continue}let f=C0(n),p=this.ensureDependencyMeta(f),h=RQ(c.built,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=RQ(c.optional,{yamlCompatibilityMode:r});if(E===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}let C=RQ(c.unplugged,{yamlCompatibilityMode:r});if(C===null){s.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:C})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[n,c]of Object.entries(e.peerDependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}'`));continue}let f=C0(n),p=this.ensurePeerDependencyMeta(f),h=RQ(c.optional,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[n,c]of Object.entries(e.resolutions)){if(typeof c!="string"){s.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:px(n),reference:c})}catch(f){s.push(f);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!="string"){s.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=ba(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=ba(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=ba(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,c]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(ba(n),typeof c=="string"?ba(c):c)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.provenance=="boolean"&&(this.publishConfig.provenance=e.publishConfig.provenance),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,ba(e.publishConfig.bin)]]):s.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,c]of Object.entries(e.publishConfig.bin)){if(typeof c!="string"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,ba(c))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!="string"){s.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(ba(n))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:s.push(new Error("Invalid hoisting limits definition")):n=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:s.push(new Error("Invalid selfReferences definition, must be a boolean value")):s.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[n,c]of Object.entries(e.optionalDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.dependencies.set(p.identHash,p);let h=On(f,"unknown"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=s}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(T8("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(T8("cpu",this.cpu)),this.libc&&this.libc.length>0&&e.push(T8("libc",this.libc)),e.length>0?e.join(" & "):null}ensureDependencyMeta(e){if(e.range!=="unknown"&&!Aue.default.valid(e.range))throw new Error(`Invalid meta field range for '${al(e)}'`);let r=un(e),s=e.range!=="unknown"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(s);return n||a.set(s,n={}),n}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${al(e)}'`);let r=un(e),s=this.peerDependenciesMeta.get(r);return s||this.peerDependenciesMeta.set(r,s={}),s}setRawField(e,r,{after:s=[]}={}){let a=new Set(s.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,e))this.raw[e]=r;else{let n=this.raw,c=this.raw={},f=!1;for(let p of Object.keys(n))c[p]=n[p],f||(a.delete(p),a.size===0&&(c[e]=r,f=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=un(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let n=this.browser;typeof n=="string"?e.browser=n:n instanceof Map&&(e.browser=Object.assign({},...Array.from(n.keys()).sort().map(c=>({[c]:n.get(c)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:e.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let s=[],a=[];for(let n of this.dependencies.values()){let c=this.dependenciesMeta.get(un(n)),f=!1;if(r&&c){let p=c.get(null);p&&p.optional&&(f=!0)}f?a.push(n):s.push(n)}s.length>0?e.dependencies=Object.assign({},...sI(s).map(n=>({[un(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...sI(a).map(n=>({[un(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...sI(this.devDependencies.values()).map(n=>({[un(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...sI(this.peerDependencies.values()).map(n=>({[un(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,c]of qs(this.dependenciesMeta.entries(),([f,p])=>f))for(let[f,p]of qs(c.entries(),([h,E])=>h!==null?`0${h}`:"1")){let h=f!==null?al(On(Sa(n),f)):n,E={...p};r&&f===null&&delete E.optional,Object.keys(E).length!==0&&(e.dependenciesMeta[h]=E)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...qs(this.peerDependenciesMeta.entries(),([n,c])=>n).map(([n,c])=>({[n]:c}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:c})=>({[hx(n)]:c}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){e.scripts??={};for(let n of Object.keys(e.scripts))this.scripts.has(n)||delete e.scripts[n];for(let[n,c]of this.scripts.entries())e.scripts[n]=c}else delete e.scripts;return e}}});function Aet(t){return typeof t.reportCode<"u"}var pue,hue,fet,jt,Ao,Tc=Xe(()=>{ql();pue=Ie("stream"),hue=Ie("string_decoder"),fet=15,jt=class extends Error{constructor(r,s,a){super(s);this.reportExtra=a;this.reportCode=r}};Ao=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(e){this.cacheHits.add(e.locatorHash)}reportCacheMiss(e,r){this.cacheMisses.add(e.locatorHash)}static progressViaCounter(e){let r=0,s,a=new Promise(p=>{s=p}),n=p=>{let h=s;a=new Promise(E=>{s=E}),r=p,h()},c=(p=0)=>{n(r+1)},f=async function*(){for(;r{r=c}),a=Q4(c=>{let f=r;s=new Promise(p=>{r=p}),e=c,f()},1e3/fet),n=async function*(){for(;;)await s,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let s=this.reportProgress(e);try{return await r(e)}finally{s.stop()}}startProgressSync(e,r){let s=this.reportProgress(e);try{return r(e)}finally{s.stop()}}reportInfoOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),s?.reportExtra?.(this))}reportWarningOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),s?.reportExtra?.(this))}reportErrorOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),s?.reportExtra?.(this))}reportExceptionOnce(e){Aet(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let r=new pue.PassThrough,s=new hue.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` -`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var aI,R8=Xe(()=>{Tc();Wo();aI=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));return s||null}getFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));if(!s)throw new jt(11,`${Yr(r.project.configuration,e)} isn't supported by any available fetcher`);return s}}});var rm,F8=Xe(()=>{Wo();rm=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.getResolverByDescriptor(e,s).bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,s){return await this.getResolverByDescriptor(e,s).getCandidates(e,r,s)}async getSatisfying(e,r,s,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,s,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));return s||null}getResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!s)throw new Error(`${ni(r.project.configuration,e)} isn't supported by any available resolver`);return s}tryResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));return s||null}getResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));if(!s)throw new Error(`${Yr(r.project.configuration,e)} isn't supported by any available resolver`);return s}}});var lI,N8=Xe(()=>{Dt();Wo();lI=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let s=e.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(s+1),n=Ws(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let s=e.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(s+1),n=Ws(e,a),c=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,c,r)}getLocatorFilename(e){return nI(e)}async ensureVirtualLink(e,r,s){let a=r.packageFs.getRealPath(),n=s.project.configuration.get("virtualFolder"),c=this.getLocatorFilename(e),f=uo.makeVirtualPath(n,c,a),p=new _f(f,{baseFs:r.packageFs,pathUtils:J});return{...r,packageFs:p}}}});var FQ,gue=Xe(()=>{FQ=class t{static{this.protocol="virtual:"}static isVirtualDescriptor(e){return!!e.range.startsWith(t.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(t.protocol)}supportsDescriptor(e,r){return t.isVirtualDescriptor(e)}supportsLocator(e,r){return t.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,s){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,s,a){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}}});var cI,O8=Xe(()=>{Dt();tm();cI=class{supports(e){return!!e.reference.startsWith(Ei.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let s=this.getWorkspace(e,r).cwd;return{packageFs:new Sn(s),prefixPath:vt.dot,localPath:s}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Ei.protocol.length))}}});function WB(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function due(t){return typeof t>"u"?3:WB(t)?0:Array.isArray(t)?1:2}function U8(t,e){return Object.hasOwn(t,e)}function het(t){return WB(t)&&U8(t,"onConflict")&&typeof t.onConflict=="string"}function get(t){if(typeof t>"u")return{onConflict:"default",value:t};if(!het(t))return{onConflict:"default",value:t};if(U8(t,"value"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function mue(t,e){let r=WB(t)&&U8(t,e)?t[e]:void 0;return get(r)}function uI(t,e){return[t,e,yue]}function _8(t){return Array.isArray(t)?t[2]===yue:!1}function L8(t,e){if(WB(t)){let r={};for(let s of Object.keys(t))r[s]=L8(t[s],e);return uI(e,r)}return Array.isArray(t)?uI(e,t.map(r=>L8(r,e))):uI(e,t)}function M8(t,e,r,s,a){let n,c=[],f=a,p=0;for(let E=a-1;E>=s;--E){let[C,S]=t[E],{onConflict:P,value:I}=mue(S,r),R=due(I);if(R!==3){if(n??=R,R!==n||P==="hardReset"){p=f;break}if(R===2)return uI(C,I);if(c.unshift([C,I]),P==="reset"){p=E;break}P==="extend"&&E===s&&(s=0),f=E}}if(typeof n>"u")return null;let h=c.map(([E])=>E).join(", ");switch(n){case 1:return uI(h,new Array().concat(...c.map(([E,C])=>C.map(S=>L8(S,E)))));case 0:{let E=Object.assign({},...c.map(([,R])=>R)),C=Object.keys(E),S={},P=t.map(([R,N])=>[R,mue(N,r).value]),I=pet(P,([R,N])=>{let U=due(N);return U!==0&&U!==3});if(I!==-1){let R=P.slice(I+1);for(let N of C)S[N]=M8(R,e,N,0,R.length)}else for(let R of C)S[R]=M8(P,e,R,p,P.length);return uI(h,S)}default:throw new Error("Assertion failed: Non-extendable value type")}}function Eue(t){return M8(t.map(([e,r])=>[e,{".":r}]),[],".",0,t.length)}function YB(t){return _8(t)?t[1]:t}function NQ(t){let e=_8(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>NQ(r));if(WB(e)){let r={};for(let[s,a]of Object.entries(e))r[s]=NQ(a);return r}return e}function H8(t){return _8(t)?t[0]:null}var pet,yue,Iue=Xe(()=>{pet=(t,e,r)=>{let s=[...t];return s.reverse(),s.findIndex(e,r)};yue=Symbol()});var OQ={};Vt(OQ,{getDefaultGlobalFolder:()=>G8,getHomeFolder:()=>fI,isFolderInside:()=>q8});function G8(){if(process.platform==="win32"){let t=fe.toPortablePath(process.env.LOCALAPPDATA||fe.join((0,j8.homedir)(),"AppData","Local"));return J.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=fe.toPortablePath(process.env.XDG_DATA_HOME);return J.resolve(t,"yarn/berry")}return J.resolve(fI(),".yarn/berry")}function fI(){return fe.toPortablePath((0,j8.homedir)()||"/usr/local/share")}function q8(t,e){let r=J.relative(e,t);return r&&!r.startsWith("..")&&!J.isAbsolute(r)}var j8,LQ=Xe(()=>{Dt();j8=Ie("os")});var Bue=_((EMt,wue)=>{"use strict";var W8=Ie("https"),Y8=Ie("http"),{URL:Cue}=Ie("url"),V8=class extends Y8.Agent{constructor(e){let{proxy:r,proxyRequestOptions:s,...a}=e;super(a),this.proxy=typeof r=="string"?new Cue(r):r,this.proxyRequestOptions=s||{}}createConnection(e,r){let s={...this.proxyRequestOptions,method:"CONNECT",host:this.proxy.hostname,port:this.proxy.port,path:`${e.host}:${e.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?"keep-alive":"close",host:`${e.host}:${e.port}`},agent:!1,timeout:e.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||"")}:${decodeURIComponent(this.proxy.password||"")}`).toString("base64");s.headers["proxy-authorization"]=`Basic ${n}`}this.proxy.protocol==="https:"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol==="http:"?Y8:W8).request(s);a.once("connect",(n,c,f)=>{a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200?r(null,c):(c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null))}),a.once("timeout",()=>{a.destroy(new Error("Proxy timeout"))}),a.once("error",n=>{a.removeAllListeners(),r(n,null)}),a.end()}},J8=class extends W8.Agent{constructor(e){let{proxy:r,proxyRequestOptions:s,...a}=e;super(a),this.proxy=typeof r=="string"?new Cue(r):r,this.proxyRequestOptions=s||{}}createConnection(e,r){let s={...this.proxyRequestOptions,method:"CONNECT",host:this.proxy.hostname,port:this.proxy.port,path:`${e.host}:${e.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?"keep-alive":"close",host:`${e.host}:${e.port}`},agent:!1,timeout:e.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||"")}:${decodeURIComponent(this.proxy.password||"")}`).toString("base64");s.headers["proxy-authorization"]=`Basic ${n}`}this.proxy.protocol==="https:"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol==="http:"?Y8:W8).request(s);a.once("connect",(n,c,f)=>{if(a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200){let p=super.createConnection({...e,socket:c});r(null,p)}else c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null)}),a.once("timeout",()=>{a.destroy(new Error("Proxy timeout"))}),a.once("error",n=>{a.removeAllListeners(),r(n,null)}),a.end()}};wue.exports={HttpProxyAgent:V8,HttpsProxyAgent:J8}});var K8,vue,Sue,Due=Xe(()=>{K8=ut(Bue(),1),vue=K8.default.HttpProxyAgent,Sue=K8.default.HttpsProxyAgent});var Np=_((Fp,MQ)=>{"use strict";Object.defineProperty(Fp,"__esModule",{value:!0});var bue=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function met(t){return bue.includes(t)}var yet=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Blob","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...bue];function Eet(t){return yet.includes(t)}var Iet=["null","undefined","string","number","bigint","boolean","symbol"];function Cet(t){return Iet.includes(t)}function AI(t){return e=>typeof e===t}var{toString:Pue}=Object.prototype,VB=t=>{let e=Pue.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&be.domElement(t))return"HTMLElement";if(Eet(e))return e},pi=t=>e=>VB(e)===t;function be(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(be.observable(t))return"Observable";if(be.array(t))return"Array";if(be.buffer(t))return"Buffer";let e=VB(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}be.undefined=AI("undefined");be.string=AI("string");var wet=AI("number");be.number=t=>wet(t)&&!be.nan(t);be.bigint=AI("bigint");be.function_=AI("function");be.null_=t=>t===null;be.class_=t=>be.function_(t)&&t.toString().startsWith("class ");be.boolean=t=>t===!0||t===!1;be.symbol=AI("symbol");be.numericString=t=>be.string(t)&&!be.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));be.array=(t,e)=>Array.isArray(t)?be.function_(e)?t.every(e):!0:!1;be.buffer=t=>{var e,r,s,a;return(a=(s=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||s===void 0?void 0:s.call(r,t))!==null&&a!==void 0?a:!1};be.blob=t=>pi("Blob")(t);be.nullOrUndefined=t=>be.null_(t)||be.undefined(t);be.object=t=>!be.null_(t)&&(typeof t=="object"||be.function_(t));be.iterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};be.asyncIterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};be.generator=t=>{var e,r;return be.iterable(t)&&be.function_((e=t)===null||e===void 0?void 0:e.next)&&be.function_((r=t)===null||r===void 0?void 0:r.throw)};be.asyncGenerator=t=>be.asyncIterable(t)&&be.function_(t.next)&&be.function_(t.throw);be.nativePromise=t=>pi("Promise")(t);var Bet=t=>{var e,r;return be.function_((e=t)===null||e===void 0?void 0:e.then)&&be.function_((r=t)===null||r===void 0?void 0:r.catch)};be.promise=t=>be.nativePromise(t)||Bet(t);be.generatorFunction=pi("GeneratorFunction");be.asyncGeneratorFunction=t=>VB(t)==="AsyncGeneratorFunction";be.asyncFunction=t=>VB(t)==="AsyncFunction";be.boundFunction=t=>be.function_(t)&&!t.hasOwnProperty("prototype");be.regExp=pi("RegExp");be.date=pi("Date");be.error=pi("Error");be.map=t=>pi("Map")(t);be.set=t=>pi("Set")(t);be.weakMap=t=>pi("WeakMap")(t);be.weakSet=t=>pi("WeakSet")(t);be.int8Array=pi("Int8Array");be.uint8Array=pi("Uint8Array");be.uint8ClampedArray=pi("Uint8ClampedArray");be.int16Array=pi("Int16Array");be.uint16Array=pi("Uint16Array");be.int32Array=pi("Int32Array");be.uint32Array=pi("Uint32Array");be.float32Array=pi("Float32Array");be.float64Array=pi("Float64Array");be.bigInt64Array=pi("BigInt64Array");be.bigUint64Array=pi("BigUint64Array");be.arrayBuffer=pi("ArrayBuffer");be.sharedArrayBuffer=pi("SharedArrayBuffer");be.dataView=pi("DataView");be.enumCase=(t,e)=>Object.values(e).includes(t);be.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;be.urlInstance=t=>pi("URL")(t);be.urlString=t=>{if(!be.string(t))return!1;try{return new URL(t),!0}catch{return!1}};be.truthy=t=>!!t;be.falsy=t=>!t;be.nan=t=>Number.isNaN(t);be.primitive=t=>be.null_(t)||Cet(typeof t);be.integer=t=>Number.isInteger(t);be.safeInteger=t=>Number.isSafeInteger(t);be.plainObject=t=>{if(Pue.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};be.typedArray=t=>met(VB(t));var vet=t=>be.safeInteger(t)&&t>=0;be.arrayLike=t=>!be.nullOrUndefined(t)&&!be.function_(t)&&vet(t.length);be.inRange=(t,e)=>{if(be.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(be.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var Det=1,bet=["innerHTML","ownerDocument","style","attributes","nodeValue"];be.domElement=t=>be.object(t)&&t.nodeType===Det&&be.string(t.nodeName)&&!be.plainObject(t)&&bet.every(e=>e in t);be.observable=t=>{var e,r,s,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(s=t)["@@observable"])===null||a===void 0?void 0:a.call(s)):!1};be.nodeStream=t=>be.object(t)&&be.function_(t.pipe)&&!be.observable(t);be.infinite=t=>t===1/0||t===-1/0;var xue=t=>e=>be.integer(e)&&Math.abs(e%2)===t;be.evenInteger=xue(0);be.oddInteger=xue(1);be.emptyArray=t=>be.array(t)&&t.length===0;be.nonEmptyArray=t=>be.array(t)&&t.length>0;be.emptyString=t=>be.string(t)&&t.length===0;var Pet=t=>be.string(t)&&!/\S/.test(t);be.emptyStringOrWhitespace=t=>be.emptyString(t)||Pet(t);be.nonEmptyString=t=>be.string(t)&&t.length>0;be.nonEmptyStringAndNotWhitespace=t=>be.string(t)&&!be.emptyStringOrWhitespace(t);be.emptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length===0;be.nonEmptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length>0;be.emptySet=t=>be.set(t)&&t.size===0;be.nonEmptySet=t=>be.set(t)&&t.size>0;be.emptyMap=t=>be.map(t)&&t.size===0;be.nonEmptyMap=t=>be.map(t)&&t.size>0;be.propertyKey=t=>be.any([be.string,be.number,be.symbol],t);be.formData=t=>pi("FormData")(t);be.urlSearchParams=t=>pi("URLSearchParams")(t);var kue=(t,e,r)=>{if(!be.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};be.any=(t,...e)=>(be.array(t)?t:[t]).some(s=>kue(Array.prototype.some,s,e));be.all=(t,...e)=>kue(Array.prototype.every,t,e);var _t=(t,e,r,s={})=>{if(!t){let{multipleValues:a}=s,n=a?`received values of types ${[...new Set(r.map(c=>`\`${be(c)}\``))].join(", ")}`:`received value of type \`${be(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${n}.`)}};Fp.assert={undefined:t=>_t(be.undefined(t),"undefined",t),string:t=>_t(be.string(t),"string",t),number:t=>_t(be.number(t),"number",t),bigint:t=>_t(be.bigint(t),"bigint",t),function_:t=>_t(be.function_(t),"Function",t),null_:t=>_t(be.null_(t),"null",t),class_:t=>_t(be.class_(t),"Class",t),boolean:t=>_t(be.boolean(t),"boolean",t),symbol:t=>_t(be.symbol(t),"symbol",t),numericString:t=>_t(be.numericString(t),"string with a number",t),array:(t,e)=>{_t(be.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>_t(be.buffer(t),"Buffer",t),blob:t=>_t(be.blob(t),"Blob",t),nullOrUndefined:t=>_t(be.nullOrUndefined(t),"null or undefined",t),object:t=>_t(be.object(t),"Object",t),iterable:t=>_t(be.iterable(t),"Iterable",t),asyncIterable:t=>_t(be.asyncIterable(t),"AsyncIterable",t),generator:t=>_t(be.generator(t),"Generator",t),asyncGenerator:t=>_t(be.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>_t(be.nativePromise(t),"native Promise",t),promise:t=>_t(be.promise(t),"Promise",t),generatorFunction:t=>_t(be.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>_t(be.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>_t(be.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>_t(be.boundFunction(t),"Function",t),regExp:t=>_t(be.regExp(t),"RegExp",t),date:t=>_t(be.date(t),"Date",t),error:t=>_t(be.error(t),"Error",t),map:t=>_t(be.map(t),"Map",t),set:t=>_t(be.set(t),"Set",t),weakMap:t=>_t(be.weakMap(t),"WeakMap",t),weakSet:t=>_t(be.weakSet(t),"WeakSet",t),int8Array:t=>_t(be.int8Array(t),"Int8Array",t),uint8Array:t=>_t(be.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>_t(be.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>_t(be.int16Array(t),"Int16Array",t),uint16Array:t=>_t(be.uint16Array(t),"Uint16Array",t),int32Array:t=>_t(be.int32Array(t),"Int32Array",t),uint32Array:t=>_t(be.uint32Array(t),"Uint32Array",t),float32Array:t=>_t(be.float32Array(t),"Float32Array",t),float64Array:t=>_t(be.float64Array(t),"Float64Array",t),bigInt64Array:t=>_t(be.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>_t(be.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>_t(be.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>_t(be.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>_t(be.dataView(t),"DataView",t),enumCase:(t,e)=>_t(be.enumCase(t,e),"EnumCase",t),urlInstance:t=>_t(be.urlInstance(t),"URL",t),urlString:t=>_t(be.urlString(t),"string with a URL",t),truthy:t=>_t(be.truthy(t),"truthy",t),falsy:t=>_t(be.falsy(t),"falsy",t),nan:t=>_t(be.nan(t),"NaN",t),primitive:t=>_t(be.primitive(t),"primitive",t),integer:t=>_t(be.integer(t),"integer",t),safeInteger:t=>_t(be.safeInteger(t),"integer",t),plainObject:t=>_t(be.plainObject(t),"plain object",t),typedArray:t=>_t(be.typedArray(t),"TypedArray",t),arrayLike:t=>_t(be.arrayLike(t),"array-like",t),domElement:t=>_t(be.domElement(t),"HTMLElement",t),observable:t=>_t(be.observable(t),"Observable",t),nodeStream:t=>_t(be.nodeStream(t),"Node.js Stream",t),infinite:t=>_t(be.infinite(t),"infinite number",t),emptyArray:t=>_t(be.emptyArray(t),"empty array",t),nonEmptyArray:t=>_t(be.nonEmptyArray(t),"non-empty array",t),emptyString:t=>_t(be.emptyString(t),"empty string",t),emptyStringOrWhitespace:t=>_t(be.emptyStringOrWhitespace(t),"empty string or whitespace",t),nonEmptyString:t=>_t(be.nonEmptyString(t),"non-empty string",t),nonEmptyStringAndNotWhitespace:t=>_t(be.nonEmptyStringAndNotWhitespace(t),"non-empty string and not whitespace",t),emptyObject:t=>_t(be.emptyObject(t),"empty object",t),nonEmptyObject:t=>_t(be.nonEmptyObject(t),"non-empty object",t),emptySet:t=>_t(be.emptySet(t),"empty set",t),nonEmptySet:t=>_t(be.nonEmptySet(t),"non-empty set",t),emptyMap:t=>_t(be.emptyMap(t),"empty map",t),nonEmptyMap:t=>_t(be.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>_t(be.propertyKey(t),"PropertyKey",t),formData:t=>_t(be.formData(t),"FormData",t),urlSearchParams:t=>_t(be.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>_t(be.evenInteger(t),"even integer",t),oddInteger:t=>_t(be.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>_t(be.directInstanceOf(t,e),"T",t),inRange:(t,e)=>_t(be.inRange(t,e),"in range",t),any:(t,...e)=>_t(be.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>_t(be.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(be,{class:{value:be.class_},function:{value:be.function_},null:{value:be.null_}});Object.defineProperties(Fp.assert,{class:{value:Fp.assert.class_},function:{value:Fp.assert.function_},null:{value:Fp.assert.null_}});Fp.default=be;MQ.exports=be;MQ.exports.default=be;MQ.exports.assert=Fp.assert});var Que=_((CMt,z8)=>{"use strict";var UQ=class extends Error{constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},_Q=class t{static fn(e){return(...r)=>new t((s,a,n)=>{r.push(n),e(...r).then(s,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,s)=>{this._reject=s;let a=f=>{this._isPending=!1,r(f)},n=f=>{this._isPending=!1,s(f)},c=f=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(f)};return Object.defineProperties(c,{shouldReject:{get:()=>this._rejectOnCancel,set:f=>{this._rejectOnCancel=f}}}),e(a,n,c)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new UQ(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(_Q.prototype,Promise.prototype);z8.exports=_Q;z8.exports.CancelError=UQ});var Tue=_((Z8,$8)=>{"use strict";Object.defineProperty(Z8,"__esModule",{value:!0});function xet(t){return t.encrypted}var X8=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let s=typeof r.connect=="function",a=typeof r.secureConnect=="function",n=typeof r.close=="function",c=()=>{s&&r.connect(),xet(t)&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),n&&t.once("close",r.close)};t.writable&&!t.connecting?c():t.connecting?t.once("connect",c):t.destroyed&&n&&r.close(t._hadError)};Z8.default=X8;$8.exports=X8;$8.exports.default=X8});var Rue=_((tH,rH)=>{"use strict";Object.defineProperty(tH,"__esModule",{value:!0});var ket=Tue(),Qet=Number(process.versions.node.split(".")[0]),eH=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=c=>{let f=c.emit.bind(c);c.emit=(p,...h)=>(p==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,c.emit=f),f(p,...h))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||Qet>=13)&&(e.phases.total=Date.now()-e.start)});let s=c=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let f=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};c.prependOnceListener("lookup",f),ket.default(c,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(c.removeListener("lookup",f),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?s(t.socket):t.prependOnceListener("socket",s);let a=()=>{var c;e.upload=Date.now(),e.phases.request=e.upload-(c=e.secureConnect,c??e.connect)};return(typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))?a():t.prependOnceListener("finish",a),t.prependOnceListener("response",c=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,c.timings=e,r(c),c.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};tH.default=eH;rH.exports=eH;rH.exports.default=eH});var _ue=_((wMt,sH)=>{"use strict";var{V4MAPPED:Tet,ADDRCONFIG:Ret,ALL:Uue,promises:{Resolver:Fue},lookup:Fet}=Ie("dns"),{promisify:nH}=Ie("util"),Net=Ie("os"),pI=Symbol("cacheableLookupCreateConnection"),iH=Symbol("cacheableLookupInstance"),Nue=Symbol("expires"),Oet=typeof Uue=="number",Oue=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},Let=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},Lue=()=>{let t=!1,e=!1;for(let r of Object.values(Net.networkInterfaces()))for(let s of r)if(!s.internal&&(s.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Met=t=>Symbol.iterator in t,Mue={ttl:!0},Uet={all:!0},HQ=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:s=3600,errorTtl:a=.15,resolver:n=new Fue,lookup:c=Fet}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=nH(c),this._resolver instanceof Fue?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=nH(this._resolver.resolve4.bind(this._resolver)),this._resolve6=nH(this._resolver.resolve6.bind(this._resolver))),this._iface=Lue(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,s<1)this._fallback=!1;else{this._fallback=!0;let f=setInterval(()=>{this._hostnamesToFallback.clear()},s*1e3);f.unref&&f.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,s){if(typeof r=="function"?(s=r,r={}):typeof r=="number"&&(r={family:r}),!s)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(a=>{r.all?s(null,a):s(null,a.address,a.family,a.expires,a.ttl)},s)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let s=await this.query(e);if(r.family===6){let a=s.filter(n=>n.family===6);r.hints&Tet&&(Oet&&r.hints&Uue||a.length===0)?Let(s):s=a}else r.family===4&&(s=s.filter(a=>a.family===4));if(r.hints&Ret){let{_iface:a}=this;s=s.filter(n=>n.family===6?a.has6:a.has4)}if(s.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code="ENOTFOUND",a.hostname=e,a}return r.all?s:s[0]}async query(e){let r=await this._cache.get(e);if(!r){let s=this._pending[e];if(s)r=await s;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(s=>({...s})),r}async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code==="ENODATA"||E.code==="ENOTFOUND")return[];throw E}},[s,a]=await Promise.all([this._resolve4(e,Mue),this._resolve6(e,Mue)].map(h=>r(h))),n=0,c=0,f=0,p=Date.now();for(let h of s)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,c=Math.max(c,h.ttl);return s.length>0?a.length>0?f=Math.min(n,c):f=n:f=c,{entries:[...s,...a],cacheTtl:f}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,s){if(this.maxTtl>0&&s>0){s=Math.min(s,this.maxTtl)*1e3,r[Nue]=Date.now()+s;try{await this._cache.set(e,r,s)}catch(a){this.lookupAsync=async()=>{let n=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw n.cause=a,n}}Met(this._cache)&&this._tick(s)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Uet);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let s=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,s),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let s=1/0,a=Date.now();for(let[n,c]of this._cache){let f=c[Nue];a>=f?this._cache.delete(n):f("lookup"in r||(r.lookup=this.lookup),e[pI](r,s))}uninstall(e){if(Oue(e),e[pI]){if(e[iH]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[pI],delete e[pI],delete e[iH]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=Lue(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};sH.exports=HQ;sH.exports.default=HQ});var Gue=_((BMt,oH)=>{"use strict";var _et=typeof URL>"u"?Ie("url").URL:URL,Het="text/plain",jet="us-ascii",Hue=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),Get=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let s=r[1].split(";"),a=r[2],n=e?"":r[3],c=!1;s[s.length-1]==="base64"&&(s.pop(),c=!0);let f=(s.shift()||"").toLowerCase(),h=[...s.map(E=>{let[C,S=""]=E.split("=").map(P=>P.trim());return C==="charset"&&(S=S.toLowerCase(),S===jet)?"":`${C}${S?`=${S}`:""}`}).filter(Boolean)];return c&&h.push("base64"),(h.length!==0||f&&f!==Het)&&h.unshift(f),`data:${h.join(";")},${c?a.trim():a}${n?`#${n}`:""}`},jue=(t,e)=>{if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return Get(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new _et(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash&&(a.hash=""),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\/{2,}/g,(n,c)=>/^(?!\/)/g.test(c)?`${c}/`:"/")),a.pathname&&(a.pathname=decodeURI(a.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let n=a.pathname.split("/"),c=n[n.length-1];Hue(c,e.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let n of[...a.searchParams.keys()])Hue(n,e.removeQueryParameters)&&a.searchParams.delete(n);return e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,"")),t=a.toString(),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};oH.exports=jue;oH.exports.default=jue});var Yue=_((vMt,Wue)=>{Wue.exports=que;function que(t,e){if(t&&e)return que(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(s){r[s]=t[s]}),r;function r(){for(var s=new Array(arguments.length),a=0;a{var Vue=Yue();aH.exports=Vue(jQ);aH.exports.strict=Vue(Jue);jQ.proto=jQ(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return jQ(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Jue(this)},configurable:!0})});function jQ(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function Jue(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var cH=_((DMt,zue)=>{var qet=lH(),Wet=function(){},Yet=function(t){return t.setHeader&&typeof t.abort=="function"},Vet=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},Kue=function(t,e,r){if(typeof e=="function")return Kue(t,null,e);e||(e={}),r=qet(r||Wet);var s=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,c=e.writable||e.writable!==!1&&t.writable,f=function(){t.writable||p()},p=function(){c=!1,n||r.call(t)},h=function(){n=!1,c||r.call(t)},E=function(I){r.call(t,I?new Error("exited with error code: "+I):null)},C=function(I){r.call(t,I)},S=function(){if(n&&!(a&&a.ended))return r.call(t,new Error("premature close"));if(c&&!(s&&s.ended))return r.call(t,new Error("premature close"))},P=function(){t.req.on("finish",p)};return Yet(t)?(t.on("complete",p),t.on("abort",S),t.req?P():t.on("request",P)):c&&!s&&(t.on("end",f),t.on("close",f)),Vet(t)&&t.on("exit",E),t.on("end",h),t.on("finish",p),e.error!==!1&&t.on("error",C),t.on("close",S),function(){t.removeListener("complete",p),t.removeListener("abort",S),t.removeListener("request",P),t.req&&t.req.removeListener("finish",p),t.removeListener("end",f),t.removeListener("close",f),t.removeListener("finish",p),t.removeListener("exit",E),t.removeListener("end",h),t.removeListener("error",C),t.removeListener("close",S)}};zue.exports=Kue});var $ue=_((bMt,Zue)=>{var Jet=lH(),Ket=cH(),uH=Ie("fs"),JB=function(){},zet=/^v?\.0/.test(process.version),GQ=function(t){return typeof t=="function"},Xet=function(t){return!zet||!uH?!1:(t instanceof(uH.ReadStream||JB)||t instanceof(uH.WriteStream||JB))&&GQ(t.close)},Zet=function(t){return t.setHeader&&GQ(t.abort)},$et=function(t,e,r,s){s=Jet(s);var a=!1;t.on("close",function(){a=!0}),Ket(t,{readable:e,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,Xet(t))return t.close(JB);if(Zet(t))return t.abort();if(GQ(t.destroy))return t.destroy();s(c||new Error("stream was destroyed"))}}},Xue=function(t){t()},ett=function(t,e){return t.pipe(e)},ttt=function(){var t=Array.prototype.slice.call(arguments),e=GQ(t[t.length-1]||JB)&&t.pop()||JB;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,s=t.map(function(a,n){var c=n0;return $et(a,c,f,function(p){r||(r=p),p&&s.forEach(Xue),!c&&(s.forEach(Xue),e(r))})});return t.reduce(ett)};Zue.exports=ttt});var tfe=_((PMt,efe)=>{"use strict";var{PassThrough:rtt}=Ie("stream");efe.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,s=r==="buffer",a=!1;e?a=!(r||s):r=r||"utf8",s&&(r=null);let n=new rtt({objectMode:a});r&&n.setEncoding(r);let c=0,f=[];return n.on("data",p=>{f.push(p),a?c=f.length:c+=p.length}),n.getBufferedValue=()=>e?f:s?Buffer.concat(f,c):f.join(""),n.getBufferedLength=()=>c,n}});var rfe=_((xMt,hI)=>{"use strict";var ntt=$ue(),itt=tfe(),qQ=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function WQ(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,s;return await new Promise((a,n)=>{let c=f=>{f&&(f.bufferedData=s.getBufferedValue()),n(f)};s=ntt(t,itt(e),f=>{if(f){c(f);return}a()}),s.on("data",()=>{s.getBufferedLength()>r&&c(new qQ)})}),s.getBufferedValue()}hI.exports=WQ;hI.exports.default=WQ;hI.exports.buffer=(t,e)=>WQ(t,{...e,encoding:"buffer"});hI.exports.array=(t,e)=>WQ(t,{...e,array:!0});hI.exports.MaxBufferError=qQ});var ife=_((QMt,nfe)=>{"use strict";var stt=new Set([200,203,204,206,300,301,308,404,405,410,414,501]),ott=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),att=new Set([500,502,503,504]),ltt={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},ctt={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function nm(t){let e=parseInt(t,10);return isFinite(e)?e:0}function utt(t){return t?att.has(t.status):!0}function fH(t){let e={};if(!t)return e;let r=t.trim().split(/,/);for(let s of r){let[a,n]=s.split(/=/,2);e[a.trim()]=n===void 0?!0:n.trim().replace(/^"|"$/g,"")}return e}function ftt(t){let e=[];for(let r in t){let s=t[r];e.push(s===!0?r:r+"="+s)}if(e.length)return e.join(", ")}nfe.exports=class{constructor(e,r,{shared:s,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:c,_fromObject:f}={}){if(f){this._fromObject(f);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=s!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=fH(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=fH(e.headers["cache-control"]),c&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":ftt(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers["cache-control"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&ott.has(this._status)&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc["max-age"]||this._isShared&&this._rescc["s-maxage"]||this._rescc.public||stt.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=fH(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let s of r)if(e.headers[s]!==this._reqHeaders[s])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let s in e)ltt[s]||(r[s]=e[s]);if(e.connection){let s=e.connection.trim().split(/\s*,\s*/);for(let a of s)delete r[a]}if(r.warning){let s=r.warning.split(/,/).filter(a=>!/^\s*1[0-9][0-9]/.test(a));s.length?r.warning=s.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){return nm(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return nm(this._rescc["s-maxage"])}if(this._rescc["max-age"])return nm(this._rescc["max-age"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let s=Date.parse(this._resHeaders.expires);return Number.isNaN(s)||ss)return Math.max(e,(r-s)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+nm(this._rescc["stale-if-error"]),s=e+nm(this._rescc["stale-while-revalidate"]);return Math.max(0,e,r,s)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+nm(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+nm(this._rescc["stale-while-revalidate"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let a=r["if-none-match"].split(/,/).filter(n=>!/^\s*W\//.test(n));a.length?r["if-none-match"]=a.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&utt(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error("Response headers missing");let s=!1;if(r.status!==void 0&&r.status!=304?s=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?s=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?s=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?s=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(s=!0),!s)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let c in this._resHeaders)a[c]=c in r.headers&&!ctt[c]?r.headers[c]:this._resHeaders[c];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var YQ=_((TMt,sfe)=>{"use strict";sfe.exports=t=>{let e={};for(let[r,s]of Object.entries(t))e[r.toLowerCase()]=s;return e}});var afe=_((RMt,ofe)=>{"use strict";var Att=Ie("stream").Readable,ptt=YQ(),AH=class extends Att{constructor(e,r,s,a){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(s instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof a!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=e,this.headers=ptt(r),this.body=s,this.url=a}_read(){this.push(this.body),this.push(null)}};ofe.exports=AH});var cfe=_((FMt,lfe)=>{"use strict";var htt=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];lfe.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(htt));for(let s of r)s in e||(e[s]=typeof t[s]=="function"?t[s].bind(t):t[s])}});var ffe=_((NMt,ufe)=>{"use strict";var gtt=Ie("stream").PassThrough,dtt=cfe(),mtt=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new gtt;return dtt(t,e),t.pipe(e)};ufe.exports=mtt});var Afe=_(pH=>{pH.stringify=function t(e){if(typeof e>"u")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",s=Array.isArray(e);r=s?"[":"{";var a=!0;for(var n in e){var c=typeof e[n]=="function"||!s&&typeof e[n]>"u";Object.hasOwnProperty.call(e,n)&&!c&&(a||(r+=","),a=!1,s?e[n]==null?r+="null":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+":"+t(e[n])))}return r+=s?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e>"u"?"null":JSON.stringify(e)};pH.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var dfe=_((LMt,gfe)=>{"use strict";var ytt=Ie("events"),pfe=Afe(),Ett=t=>{let e={redis:"@keyv/redis",rediss:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql",etcd:"@keyv/etcd",offline:"@keyv/offline",tiered:"@keyv/tiered"};if(t.adapter||t.uri){let r=t.adapter||/^[^:+]*/.exec(t.uri)[0];return new(Ie(e[r]))(t)}return new Map},hfe=["sqlite","postgres","mysql","mongo","redis","tiered"],hH=class extends ytt{constructor(e,{emitErrors:r=!0,...s}={}){if(super(),this.opts={namespace:"keyv",serialize:pfe.stringify,deserialize:pfe.parse,...typeof e=="string"?{uri:e}:e,...s},!this.opts.store){let n={...this.opts};this.opts.store=Ett(n)}if(this.opts.compression){let n=this.opts.compression;this.opts.serialize=n.serialize.bind(n),this.opts.deserialize=n.deserialize.bind(n)}typeof this.opts.store.on=="function"&&r&&this.opts.store.on("error",n=>this.emit("error",n)),this.opts.store.namespace=this.opts.namespace;let a=n=>async function*(){for await(let[c,f]of typeof n=="function"?n(this.opts.store.namespace):n){let p=await this.opts.deserialize(f);if(!(this.opts.store.namespace&&!c.includes(this.opts.store.namespace))){if(typeof p.expires=="number"&&Date.now()>p.expires){this.delete(c);continue}yield[this._getKeyUnprefix(c),p.value]}}};typeof this.opts.store[Symbol.iterator]=="function"&&this.opts.store instanceof Map?this.iterator=a(this.opts.store):typeof this.opts.store.iterator=="function"&&this.opts.store.opts&&this._checkIterableAdaptar()&&(this.iterator=a(this.opts.store.iterator.bind(this.opts.store)))}_checkIterableAdaptar(){return hfe.includes(this.opts.store.opts.dialect)||hfe.findIndex(e=>this.opts.store.opts.url.includes(e))>=0}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}_getKeyPrefixArray(e){return e.map(r=>`${this.opts.namespace}:${r}`)}_getKeyUnprefix(e){return e.split(":").splice(1).join(":")}get(e,r){let{store:s}=this.opts,a=Array.isArray(e),n=a?this._getKeyPrefixArray(e):this._getKeyPrefix(e);if(a&&s.getMany===void 0){let c=[];for(let f of n)c.push(Promise.resolve().then(()=>s.get(f)).then(p=>typeof p=="string"?this.opts.deserialize(p):this.opts.compression?this.opts.deserialize(p):p).then(p=>{if(p!=null)return typeof p.expires=="number"&&Date.now()>p.expires?this.delete(f).then(()=>{}):r&&r.raw?p:p.value}));return Promise.allSettled(c).then(f=>{let p=[];for(let h of f)p.push(h.value);return p})}return Promise.resolve().then(()=>a?s.getMany(n):s.get(n)).then(c=>typeof c=="string"?this.opts.deserialize(c):this.opts.compression?this.opts.deserialize(c):c).then(c=>{if(c!=null)return a?c.map((f,p)=>{if(typeof f=="string"&&(f=this.opts.deserialize(f)),f!=null){if(typeof f.expires=="number"&&Date.now()>f.expires){this.delete(e[p]).then(()=>{});return}return r&&r.raw?f:f.value}}):typeof c.expires=="number"&&Date.now()>c.expires?this.delete(e).then(()=>{}):r&&r.raw?c:c.value})}set(e,r,s){let a=this._getKeyPrefix(e);typeof s>"u"&&(s=this.opts.ttl),s===0&&(s=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let c=typeof s=="number"?Date.now()+s:null;return typeof r=="symbol"&&this.emit("error","symbol cannot be serialized"),r={value:r,expires:c},this.opts.serialize(r)}).then(c=>n.set(a,c,s)).then(()=>!0)}delete(e){let{store:r}=this.opts;if(Array.isArray(e)){let a=this._getKeyPrefixArray(e);if(r.deleteMany===void 0){let n=[];for(let c of a)n.push(r.delete(c));return Promise.allSettled(n).then(c=>c.every(f=>f.value===!0))}return Promise.resolve().then(()=>r.deleteMany(a))}let s=this._getKeyPrefix(e);return Promise.resolve().then(()=>r.delete(s))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}has(e){let r=this._getKeyPrefix(e),{store:s}=this.opts;return Promise.resolve().then(async()=>typeof s.has=="function"?s.has(r):await s.get(r)!==void 0)}disconnect(){let{store:e}=this.opts;if(typeof e.disconnect=="function")return e.disconnect()}};gfe.exports=hH});var Efe=_((UMt,yfe)=>{"use strict";var Itt=Ie("events"),VQ=Ie("url"),Ctt=Gue(),wtt=rfe(),gH=ife(),mfe=afe(),Btt=YQ(),vtt=ffe(),Stt=dfe(),KB=class t{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Stt({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,s)=>{let a;if(typeof r=="string")a=dH(VQ.parse(r)),r={};else if(r instanceof VQ.URL)a=dH(VQ.parse(r.toString())),r={};else{let[C,...S]=(r.path||"").split("?"),P=S.length>0?`?${S.join("?")}`:"";a=dH({...r,pathname:C,search:P})}r={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...Dtt(a)},r.headers=Btt(r.headers);let n=new Itt,c=Ctt(VQ.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),f=`${r.method}:${c}`,p=!1,h=!1,E=C=>{h=!0;let S=!1,P,I=new Promise(N=>{P=()=>{S||(S=!0,N())}}),R=N=>{if(p&&!C.forceRefresh){N.status=N.statusCode;let W=gH.fromObject(p.cachePolicy).revalidatedPolicy(C,N);if(!W.modified){let ee=W.policy.responseHeaders();N=new mfe(p.statusCode,ee,p.body,p.url),N.cachePolicy=W.policy,N.fromCache=!0}}N.fromCache||(N.cachePolicy=new gH(C,N,C),N.fromCache=!1);let U;C.cache&&N.cachePolicy.storable()?(U=vtt(N),(async()=>{try{let W=wtt.buffer(N);if(await Promise.race([I,new Promise(le=>N.once("end",le))]),S)return;let ee=await W,ie={cachePolicy:N.cachePolicy.toObject(),url:N.url,statusCode:N.fromCache?p.statusCode:N.statusCode,body:ee},ue=C.strictTtl?N.cachePolicy.timeToLive():void 0;C.maxTtl&&(ue=ue?Math.min(ue,C.maxTtl):C.maxTtl),await this.cache.set(f,ie,ue)}catch(W){n.emit("error",new t.CacheError(W))}})()):C.cache&&p&&(async()=>{try{await this.cache.delete(f)}catch(W){n.emit("error",new t.CacheError(W))}})(),n.emit("response",U||N),typeof s=="function"&&s(U||N)};try{let N=e(C,R);N.once("error",P),N.once("abort",P),n.emit("request",N)}catch(N){n.emit("error",new t.RequestError(N))}};return(async()=>{let C=async P=>{await Promise.resolve();let I=P.cache?await this.cache.get(f):void 0;if(typeof I>"u")return E(P);let R=gH.fromObject(I.cachePolicy);if(R.satisfiesWithoutRevalidation(P)&&!P.forceRefresh){let N=R.responseHeaders(),U=new mfe(I.statusCode,N,I.body,I.url);U.cachePolicy=R,U.fromCache=!0,n.emit("response",U),typeof s=="function"&&s(U)}else p=I,P.headers=R.revalidationHeaders(P),E(P)},S=P=>n.emit("error",new t.CacheError(P));this.cache.once("error",S),n.on("response",()=>this.cache.removeListener("error",S));try{await C(r)}catch(P){r.automaticFailover&&!h&&E(r),n.emit("error",new t.CacheError(P))}})(),n}}};function Dtt(t){let e={...t};return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function dH(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}KB.RequestError=class extends Error{constructor(t){super(t.message),this.name="RequestError",Object.assign(this,t)}};KB.CacheError=class extends Error{constructor(t){super(t.message),this.name="CacheError",Object.assign(this,t)}};yfe.exports=KB});var Cfe=_((jMt,Ife)=>{"use strict";var btt=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];Ife.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(btt)),s={};for(let a of r)a in e||(s[a]={get(){let n=t[a];return typeof n=="function"?n.bind(t):n},set(n){t[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,s),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var Bfe=_((GMt,wfe)=>{"use strict";var{Transform:Ptt,PassThrough:xtt}=Ie("stream"),mH=Ie("zlib"),ktt=Cfe();wfe.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof mH.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let s=!0,a=new Ptt({transform(f,p,h){s=!1,h(null,f)},flush(f){f()}}),n=new xtt({autoDestroy:!1,destroy(f,p){t.destroy(),p(f)}}),c=r?mH.createBrotliDecompress():mH.createUnzip();return c.once("error",f=>{if(s&&!t.readable){n.end();return}n.destroy(f)}),ktt(t,n),t.pipe(a).pipe(c).pipe(n),n}});var EH=_((qMt,vfe)=>{"use strict";var yH=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[s,a]of this.oldCache.entries())this.onEviction(s,a);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};vfe.exports=yH});var CH=_((WMt,Pfe)=>{"use strict";var Qtt=Ie("events"),Ttt=Ie("tls"),Rtt=Ie("http2"),Ftt=EH(),Pa=Symbol("currentStreamsCount"),Sfe=Symbol("request"),Rc=Symbol("cachedOriginSet"),gI=Symbol("gracefullyClosing"),Ntt=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],Ott=(t,e,r)=>{let s=0,a=t.length;for(;s>>1;r(t[n],e)?s=n+1:a=n}return s},Ltt=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,IH=(t,e)=>{for(let r of t)r[Rc].lengthe[Rc].includes(s))&&r[Pa]+e[Pa]<=e.remoteSettings.maxConcurrentStreams&&bfe(r)},Mtt=(t,e)=>{for(let r of t)e[Rc].lengthr[Rc].includes(s))&&e[Pa]+r[Pa]<=r.remoteSettings.maxConcurrentStreams&&bfe(e)},Dfe=({agent:t,isFree:e})=>{let r={};for(let s in t.sessions){let n=t.sessions[s].filter(c=>{let f=c[im.kCurrentStreamsCount]{t[gI]=!0,t[Pa]===0&&t.close()},im=class t extends Qtt{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:s=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=s,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Ftt({maxSize:a})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let s of Ntt)e[s]&&(r+=`:${e[s]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let s=this.queue[e][r];this._sessionsCount{Array.isArray(s)?(s=[...s],a()):s=[{resolve:a,reject:n}];let c=this.normalizeOptions(r),f=t.normalizeOrigin(e,r&&r.servername);if(f===void 0){for(let{reject:E}of s)E(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(c in this.sessions){let E=this.sessions[c],C=-1,S=-1,P;for(let I of E){let R=I.remoteSettings.maxConcurrentStreams;if(R=R||I[gI]||I.destroyed)continue;P||(C=R),N>S&&(P=I,S=N)}}if(P){if(s.length!==1){for(let{reject:I}of s){let R=new Error(`Expected the length of listeners to be 1, got ${s.length}. -Please report this to https://github.com/szmarczak/http2-wrapper/`);I(R)}return}s[0].resolve(P);return}}if(c in this.queue){if(f in this.queue[c]){this.queue[c][f].listeners.push(...s),this._tryToCreateNewSession(c,f);return}}else this.queue[c]={};let p=()=>{c in this.queue&&this.queue[c][f]===h&&(delete this.queue[c][f],Object.keys(this.queue[c]).length===0&&delete this.queue[c])},h=()=>{let E=`${f}:${c}`,C=!1;try{let S=Rtt.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});S[Pa]=0,S[gI]=!1;let P=()=>S[Pa]{this.tlsSessionCache.set(E,N)}),S.once("error",N=>{for(let{reject:U}of s)U(N);this.tlsSessionCache.delete(E)}),S.setTimeout(this.timeout,()=>{S.destroy()}),S.once("close",()=>{if(C){I&&this._freeSessionsCount--,this._sessionsCount--;let N=this.sessions[c];N.splice(N.indexOf(S),1),N.length===0&&delete this.sessions[c]}else{let N=new Error("Session closed without receiving a SETTINGS frame");N.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:U}of s)U(N);p()}this._tryToCreateNewSession(c,f)});let R=()=>{if(!(!(c in this.queue)||!P())){for(let N of S[Rc])if(N in this.queue[c]){let{listeners:U}=this.queue[c][N];for(;U.length!==0&&P();)U.shift().resolve(S);let W=this.queue[c];if(W[N].listeners.length===0&&(delete W[N],Object.keys(W).length===0)){delete this.queue[c];break}if(!P())break}}};S.on("origin",()=>{S[Rc]=S.originSet,P()&&(R(),IH(this.sessions[c],S))}),S.once("remoteSettings",()=>{if(S.ref(),S.unref(),this._sessionsCount++,h.destroyed){let N=new Error("Agent has been destroyed");for(let U of s)U.reject(N);S.destroy();return}S[Rc]=S.originSet;{let N=this.sessions;if(c in N){let U=N[c];U.splice(Ott(U,S,Ltt),0,S)}else N[c]=[S]}this._freeSessionsCount+=1,C=!0,this.emit("session",S),R(),p(),S[Pa]===0&&this._freeSessionsCount>this.maxFreeSessions&&S.close(),s.length!==0&&(this.getSession(f,r,s),s.length=0),S.on("remoteSettings",()=>{R(),IH(this.sessions[c],S)})}),S[Sfe]=S.request,S.request=(N,U)=>{if(S[gI])throw new Error("The session is gracefully closing. No new streams are allowed.");let W=S[Sfe](N,U);return S.ref(),++S[Pa],S[Pa]===S.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,W.once("close",()=>{if(I=P(),--S[Pa],!S.destroyed&&!S.closed&&(Mtt(this.sessions[c],S),P()&&!S.closed)){I||(this._freeSessionsCount++,I=!0);let ee=S[Pa]===0;ee&&S.unref(),ee&&(this._freeSessionsCount>this.maxFreeSessions||S[gI])?S.close():(IH(this.sessions[c],S),R())}}),W}}catch(S){for(let P of s)P.reject(S);p()}};h.listeners=s,h.completed=!1,h.destroyed=!1,this.queue[c][f]=h,this._tryToCreateNewSession(c,f)})}request(e,r,s,a){return new Promise((n,c)=>{this.getSession(e,r,[{reject:c,resolve:f=>{try{n(f.request(s,a))}catch(p){c(p)}}}])})}createConnection(e,r){return t.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let s=e.port||443,a=e.hostname||e.host;return typeof r.servername>"u"&&(r.servername=a),Ttt.connect(s,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[Pa]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let s of r)s.destroy(e);for(let r of Object.values(this.queue))for(let s of Object.values(r))s.destroyed=!0;this.queue={}}get freeSessions(){return Dfe({agent:this,isFree:!0})}get busySessions(){return Dfe({agent:this,isFree:!1})}};im.kCurrentStreamsCount=Pa;im.kGracefullyClosing=gI;Pfe.exports={Agent:im,globalAgent:new im}});var BH=_((YMt,xfe)=>{"use strict";var{Readable:Utt}=Ie("stream"),wH=class extends Utt{constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};xfe.exports=wH});var vH=_((VMt,kfe)=>{"use strict";kfe.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var Tfe=_((JMt,Qfe)=>{"use strict";Qfe.exports=(t,e,r)=>{for(let s of r)t.on(s,(...a)=>e.emit(s,...a))}});var Ffe=_((KMt,Rfe)=>{"use strict";Rfe.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var Ofe=_((XMt,Nfe)=>{"use strict";var dI=(t,e,r)=>{Nfe.exports[e]=class extends t{constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};dI(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],s=Array.isArray(r);return s&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${s?"one of":"of"} type ${r}. Received ${typeof t[2]}`});dI(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);dI(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);dI(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);dI(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);dI(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var xH=_((ZMt,Gfe)=>{"use strict";var _tt=Ie("http2"),{Writable:Htt}=Ie("stream"),{Agent:Lfe,globalAgent:jtt}=CH(),Gtt=BH(),qtt=vH(),Wtt=Tfe(),Ytt=Ffe(),{ERR_INVALID_ARG_TYPE:SH,ERR_INVALID_PROTOCOL:Vtt,ERR_HTTP_HEADERS_SENT:Mfe,ERR_INVALID_HTTP_TOKEN:Jtt,ERR_HTTP_INVALID_HEADER_VALUE:Ktt,ERR_INVALID_CHAR:ztt}=Ofe(),{HTTP2_HEADER_STATUS:Ufe,HTTP2_HEADER_METHOD:_fe,HTTP2_HEADER_PATH:Hfe,HTTP2_METHOD_CONNECT:Xtt}=_tt.constants,Jo=Symbol("headers"),DH=Symbol("origin"),bH=Symbol("session"),jfe=Symbol("options"),JQ=Symbol("flushedHeaders"),zB=Symbol("jobs"),Ztt=/^[\^`\-\w!#$%&*+.|~]+$/,$tt=/[^\t\u0020-\u007E\u0080-\u00FF]/,PH=class extends Htt{constructor(e,r,s){super({autoDestroy:!1});let a=typeof e=="string"||e instanceof URL;if(a&&(e=qtt(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(s=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[bH]=r.h2session;else if(r.agent===!1)this.agent=new Lfe({maxFreeSessions:0});else if(typeof r.agent>"u"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new Lfe({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=jtt;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new SH("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Vtt(r.protocol,"https:");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,c=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:f}=r;if(r.timeout=void 0,this[Jo]=Object.create(null),this[zB]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!("authorization"in this[Jo])&&(this[Jo].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[jfe]=r,n===443?(this[DH]=`https://${c}`,":authority"in this[Jo]||(this[Jo][":authority"]=c)):(this[DH]=`https://${c}:${n}`,":authority"in this[Jo]||(this[Jo][":authority"]=`${c}:${n}`)),f&&this.setTimeout(f),s&&this.once("response",s),this[JQ]=!1}get method(){return this[Jo][_fe]}set method(e){e&&(this[Jo][_fe]=e.toUpperCase())}get path(){return this[Jo][Hfe]}set path(e){e&&(this[Jo][Hfe]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,s){if(this._mustNotHaveABody){s(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let a=()=>this._request.write(e,r,s);this._request?a():this[zB].push(a)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[zB].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[JQ]||this.destroyed)return;this[JQ]=!0;let e=this.method===Xtt,r=s=>{if(this._request=s,this.destroyed){s.destroy();return}e||Wtt(s,this,["timeout","continue","close","error"]);let a=c=>(...f)=>{!this.writable&&!this.destroyed?c(...f):this.once("finish",()=>{c(...f)})};s.once("response",a((c,f,p)=>{let h=new Gtt(this.socket,s.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=c[Ufe],h.headers=c,h.rawHeaders=p,h.once("end",()=>{this.aborted?(h.aborted=!0,h.emit("aborted")):(h.complete=!0,h.socket=null,h.connection=null)}),e?(h.upgrade=!0,this.emit("connect",h,s,Buffer.alloc(0))?this.emit("close"):s.destroy()):(s.on("data",E=>{!h._dumped&&!h.push(E)&&s.pause()}),s.once("end",()=>{h.push(null)}),this.emit("response",h)||h._dump())})),s.once("headers",a(c=>this.emit("information",{statusCode:c[Ufe]}))),s.once("trailers",a((c,f,p)=>{let{res:h}=this;h.trailers=c,h.rawTrailers=p}));let{socket:n}=s.session;this.socket=n,this.connection=n;for(let c of this[zB])c();this.emit("socket",this.socket)};if(this[bH])try{r(this[bH].request(this[Jo]))}catch(s){this.emit("error",s)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[DH],this[jfe],this[Jo]))}catch(s){this.emit("error",s)}}}getHeader(e){if(typeof e!="string")throw new SH("name","string",e);return this[Jo][e.toLowerCase()]}get headersSent(){return this[JQ]}removeHeader(e){if(typeof e!="string")throw new SH("name","string",e);if(this.headersSent)throw new Mfe("remove");delete this[Jo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new Mfe("set");if(typeof e!="string"||!Ztt.test(e)&&!Ytt(e))throw new Jtt("Header name",e);if(typeof r>"u")throw new Ktt(r,e);if($tt.test(r))throw new ztt("header content",e);this[Jo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let s=()=>this._request.setTimeout(e,r);return this._request?s():this[zB].push(s),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};Gfe.exports=PH});var Wfe=_(($Mt,qfe)=>{"use strict";var ert=Ie("tls");qfe.exports=(t={},e=ert.connect)=>new Promise((r,s)=>{let a=!1,n,c=async()=>{await p,n.off("timeout",f),n.off("error",s),t.resolveSocket?(r({alpnProtocol:n.alpnProtocol,socket:n,timeout:a}),a&&(await Promise.resolve(),n.emit("timeout"))):(n.destroy(),r({alpnProtocol:n.alpnProtocol,timeout:a}))},f=async()=>{a=!0,c()},p=(async()=>{try{n=await e(t,c),n.on("error",s),n.once("timeout",f)}catch(h){s(h)}})()})});var Vfe=_((eUt,Yfe)=>{"use strict";var trt=Ie("net");Yfe.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),trt.isIP(e)?"":e}});var zfe=_((tUt,QH)=>{"use strict";var Jfe=Ie("http"),kH=Ie("https"),rrt=Wfe(),nrt=EH(),irt=xH(),srt=Vfe(),ort=vH(),KQ=new nrt({maxSize:100}),XB=new Map,Kfe=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let s=()=>{t.emit("free",e,r)};e.on("free",s);let a=()=>{t.removeSocket(e,r)};e.on("close",a);let n=()=>{t.removeSocket(e,r),e.off("close",a),e.off("free",s),e.off("agentRemove",n)};e.on("agentRemove",n),t.emit("free",e,r)},art=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!KQ.has(e)){if(XB.has(e))return(await XB.get(e)).alpnProtocol;let{path:r,agent:s}=t;t.path=t.socketPath;let a=rrt(t);XB.set(e,a);try{let{socket:n,alpnProtocol:c}=await a;if(KQ.set(e,c),t.path=r,c==="h2")n.destroy();else{let{globalAgent:f}=kH,p=kH.Agent.prototype.createConnection;s?s.createConnection===p?Kfe(s,n,t):n.destroy():f.createConnection===p?Kfe(f,n,t):n.destroy()}return XB.delete(e),c}catch(n){throw XB.delete(e),n}}return KQ.get(e)};QH.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=ort(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e={ALPNProtocols:["h2","http/1.1"],...t,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let s=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||srt(e),e.port=e.port||(s?443:80),e._defaultAgent=s?kH.globalAgent:Jfe.globalAgent;let a=e.agent;if(a){if(a.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=a[s?"https":"http"]}return s&&await art(e)==="h2"?(a&&(e.agent=a.http2),new irt(e,r)):Jfe.request(e,r)};QH.exports.protocolCache=KQ});var Zfe=_((rUt,Xfe)=>{"use strict";var lrt=Ie("http2"),crt=CH(),TH=xH(),urt=BH(),frt=zfe(),Art=(t,e,r)=>new TH(t,e,r),prt=(t,e,r)=>{let s=new TH(t,e,r);return s.end(),s};Xfe.exports={...lrt,ClientRequest:TH,IncomingMessage:urt,...crt,request:Art,get:prt,auto:frt}});var FH=_(RH=>{"use strict";Object.defineProperty(RH,"__esModule",{value:!0});var $fe=Np();RH.default=t=>$fe.default.nodeStream(t)&&$fe.default.function_(t.getBoundary)});var nAe=_(NH=>{"use strict";Object.defineProperty(NH,"__esModule",{value:!0});var tAe=Ie("fs"),rAe=Ie("util"),eAe=Np(),hrt=FH(),grt=rAe.promisify(tAe.stat);NH.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(eAe.default.string(t))return Buffer.byteLength(t);if(eAe.default.buffer(t))return t.length;if(hrt.default(t))return rAe.promisify(t.getLength.bind(t))();if(t instanceof tAe.ReadStream){let{size:r}=await grt(t.path);return r===0?void 0:r}}});var LH=_(OH=>{"use strict";Object.defineProperty(OH,"__esModule",{value:!0});function drt(t,e,r){let s={};for(let a of r)s[a]=(...n)=>{e.emit(a,...n)},t.on(a,s[a]);return()=>{for(let a of r)t.off(a,s[a])}}OH.default=drt});var iAe=_(MH=>{"use strict";Object.defineProperty(MH,"__esModule",{value:!0});MH.default=()=>{let t=[];return{once(e,r,s){e.once(r,s),t.push({origin:e,event:r,fn:s})},unhandleAll(){for(let e of t){let{origin:r,event:s,fn:a}=e;r.removeListener(s,a)}t.length=0}}}});var oAe=_(ZB=>{"use strict";Object.defineProperty(ZB,"__esModule",{value:!0});ZB.TimeoutError=void 0;var mrt=Ie("net"),yrt=iAe(),sAe=Symbol("reentry"),Ert=()=>{},zQ=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};ZB.TimeoutError=zQ;ZB.default=(t,e,r)=>{if(sAe in t)return Ert;t[sAe]=!0;let s=[],{once:a,unhandleAll:n}=yrt.default(),c=(C,S,P)=>{var I;let R=setTimeout(S,C,C,P);(I=R.unref)===null||I===void 0||I.call(R);let N=()=>{clearTimeout(R)};return s.push(N),N},{host:f,hostname:p}=r,h=(C,S)=>{t.destroy(new zQ(C,S))},E=()=>{for(let C of s)C();n()};if(t.once("error",C=>{if(E(),t.listenerCount("error")===0)throw C}),t.once("close",E),a(t,"response",C=>{a(C,"end",E)}),typeof e.request<"u"&&c(e.request,h,"request"),typeof e.socket<"u"){let C=()=>{h(e.socket,"socket")};t.setTimeout(e.socket,C),s.push(()=>{t.removeListener("timeout",C)})}return a(t,"socket",C=>{var S;let{socketPath:P}=t;if(C.connecting){let I=!!(P??mrt.isIP((S=p??f)!==null&&S!==void 0?S:"")!==0);if(typeof e.lookup<"u"&&!I&&typeof C.address().address>"u"){let R=c(e.lookup,h,"lookup");a(C,"lookup",R)}if(typeof e.connect<"u"){let R=()=>c(e.connect,h,"connect");I?a(C,"connect",R()):a(C,"lookup",N=>{N===null&&a(C,"connect",R())})}typeof e.secureConnect<"u"&&r.protocol==="https:"&&a(C,"connect",()=>{let R=c(e.secureConnect,h,"secureConnect");a(C,"secureConnect",R)})}if(typeof e.send<"u"){let I=()=>c(e.send,h,"send");C.connecting?a(C,"connect",()=>{a(t,"upload-complete",I())}):a(t,"upload-complete",I())}}),typeof e.response<"u"&&a(t,"upload-complete",()=>{let C=c(e.response,h,"response");a(t,"response",C)}),E}});var lAe=_(UH=>{"use strict";Object.defineProperty(UH,"__esModule",{value:!0});var aAe=Np();UH.default=t=>{t=t;let e={protocol:t.protocol,hostname:aAe.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return aAe.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var cAe=_(_H=>{"use strict";Object.defineProperty(_H,"__esModule",{value:!0});var Irt=Ie("url"),Crt=["protocol","host","hostname","port","pathname","search"];_H.default=(t,e)=>{var r,s;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(s=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&s!==void 0?s:""}`}let a=new Irt.URL(t);if(e.path){let n=e.path.indexOf("?");n===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,n),e.search=e.path.slice(n+1)),delete e.path}for(let n of Crt)e[n]&&(a[n]=e[n].toString());return a}});var uAe=_(jH=>{"use strict";Object.defineProperty(jH,"__esModule",{value:!0});var HH=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};jH.default=HH});var qH=_(GH=>{"use strict";Object.defineProperty(GH,"__esModule",{value:!0});var wrt=async t=>{let e=[],r=0;for await(let s of t)e.push(s),r+=Buffer.byteLength(s);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};GH.default=wrt});var AAe=_(sm=>{"use strict";Object.defineProperty(sm,"__esModule",{value:!0});sm.dnsLookupIpVersionToFamily=sm.isDnsLookupIpVersion=void 0;var fAe={auto:0,ipv4:4,ipv6:6};sm.isDnsLookupIpVersion=t=>t in fAe;sm.dnsLookupIpVersionToFamily=t=>{if(sm.isDnsLookupIpVersion(t))return fAe[t];throw new Error("Invalid DNS lookup IP version")}});var WH=_(XQ=>{"use strict";Object.defineProperty(XQ,"__esModule",{value:!0});XQ.isResponseOk=void 0;XQ.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var hAe=_(YH=>{"use strict";Object.defineProperty(YH,"__esModule",{value:!0});var pAe=new Set;YH.default=t=>{pAe.has(t)||(pAe.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var gAe=_(VH=>{"use strict";Object.defineProperty(VH,"__esModule",{value:!0});var Si=Np(),Brt=(t,e)=>{if(Si.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");Si.assert.any([Si.default.string,Si.default.undefined],t.encoding),Si.assert.any([Si.default.boolean,Si.default.undefined],t.resolveBodyOnly),Si.assert.any([Si.default.boolean,Si.default.undefined],t.methodRewriting),Si.assert.any([Si.default.boolean,Si.default.undefined],t.isStream),Si.assert.any([Si.default.string,Si.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:s=>s.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Si.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(s=>s.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):Si.default.number(r)&&(t.retry.limit=r),Si.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(Si.default.number))),Si.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:s}=t;if(!Si.default.function_(s.transform))throw new Error("`options.pagination.transform` must be implemented");if(!Si.default.function_(s.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!Si.default.function_(s.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!Si.default.function_(s.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};VH.default=Brt});var dAe=_($B=>{"use strict";Object.defineProperty($B,"__esModule",{value:!0});$B.retryAfterStatusCodes=void 0;$B.retryAfterStatusCodes=new Set([413,429,503]);var vrt=({attemptCount:t,retryOptions:e,error:r,retryAfter:s})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),c=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!c)return 0;if(r.response){if(s)return e.maxRetryAfter===void 0||s>e.maxRetryAfter?0:s;if(r.response.statusCode===413)return 0}let f=Math.random()*100;return 2**(t-1)*1e3+f};$B.default=vrt});var rv=_(Ln=>{"use strict";Object.defineProperty(Ln,"__esModule",{value:!0});Ln.UnsupportedProtocolError=Ln.ReadError=Ln.TimeoutError=Ln.UploadError=Ln.CacheError=Ln.HTTPError=Ln.MaxRedirectsError=Ln.RequestError=Ln.setNonEnumerableProperties=Ln.knownHookEvents=Ln.withoutBody=Ln.kIsNormalizedAlready=void 0;var mAe=Ie("util"),yAe=Ie("stream"),Srt=Ie("fs"),w0=Ie("url"),EAe=Ie("http"),JH=Ie("http"),Drt=Ie("https"),brt=Rue(),Prt=_ue(),IAe=Efe(),xrt=Bfe(),krt=Zfe(),Qrt=YQ(),at=Np(),Trt=nAe(),CAe=FH(),Rrt=LH(),wAe=oAe(),Frt=lAe(),BAe=cAe(),Nrt=uAe(),Ort=qH(),vAe=AAe(),Lrt=WH(),B0=hAe(),Mrt=gAe(),Urt=dAe(),KH,po=Symbol("request"),eT=Symbol("response"),mI=Symbol("responseSize"),yI=Symbol("downloadedSize"),EI=Symbol("bodySize"),II=Symbol("uploadedSize"),ZQ=Symbol("serverResponsesPiped"),SAe=Symbol("unproxyEvents"),DAe=Symbol("isFromCache"),zH=Symbol("cancelTimeouts"),bAe=Symbol("startedReading"),CI=Symbol("stopReading"),$Q=Symbol("triggerRead"),v0=Symbol("body"),ev=Symbol("jobs"),PAe=Symbol("originalResponse"),xAe=Symbol("retryTimeout");Ln.kIsNormalizedAlready=Symbol("isNormalizedAlready");var _rt=at.default.string(process.versions.brotli);Ln.withoutBody=new Set(["GET","HEAD"]);Ln.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function Hrt(t){for(let e in t){let r=t[e];if(!at.default.string(r)&&!at.default.number(r)&&!at.default.boolean(r)&&!at.default.null_(r)&&!at.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function jrt(t){return at.default.object(t)&&!("statusCode"in t)}var XH=new Nrt.default,Grt=async t=>new Promise((e,r)=>{let s=a=>{r(a)};t.pending||e(),t.once("error",s),t.once("ready",()=>{t.off("error",s),e()})}),qrt=new Set([300,301,302,303,304,307,308]),Wrt=["context","body","json","form"];Ln.setNonEnumerableProperties=(t,e)=>{let r={};for(let s of t)if(s)for(let a of Wrt)a in s&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:s[a]});Object.defineProperties(e,r)};var fs=class extends Error{constructor(e,r,s){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,s instanceof aT?(Object.defineProperty(this,"request",{enumerable:!1,value:s}),Object.defineProperty(this,"response",{enumerable:!1,value:s[eT]}),Object.defineProperty(this,"options",{enumerable:!1,value:s.options})):Object.defineProperty(this,"options",{enumerable:!1,value:s}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,at.default.string(r.stack)&&at.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,c=this.stack.slice(n).split(` -`).reverse(),f=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` -`).reverse();for(;f.length!==0&&f[0]===c[0];)c.shift();this.stack=`${this.stack.slice(0,n)}${c.reverse().join(` -`)}${f.reverse().join(` -`)}`}}};Ln.RequestError=fs;var tT=class extends fs{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}};Ln.MaxRedirectsError=tT;var rT=class extends fs{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}};Ln.HTTPError=rT;var nT=class extends fs{constructor(e,r){super(e.message,e,r),this.name="CacheError"}};Ln.CacheError=nT;var iT=class extends fs{constructor(e,r){super(e.message,e,r),this.name="UploadError"}};Ln.UploadError=iT;var sT=class extends fs{constructor(e,r,s){super(e.message,e,s),this.name="TimeoutError",this.event=e.event,this.timings=r}};Ln.TimeoutError=sT;var tv=class extends fs{constructor(e,r){super(e.message,e,r),this.name="ReadError"}};Ln.ReadError=tv;var oT=class extends fs{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};Ln.UnsupportedProtocolError=oT;var Yrt=["socket","connect","continue","information","upgrade","timeout"],aT=class extends yAe.Duplex{constructor(e,r={},s){super({autoDestroy:!1,highWaterMark:0}),this[yI]=0,this[II]=0,this.requestInitialized=!1,this[ZQ]=new Set,this.redirects=[],this[CI]=!1,this[$Q]=!1,this[ev]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on("pipe",h=>{h.prependListener("data",a),h.on("data",n),h.prependListener("end",a),h.on("end",n)}),this.on("unpipe",h=>{h.off("data",a),h.off("data",n),h.off("end",a),h.off("end",n)}),this.on("pipe",h=>{h instanceof JH.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:c,body:f,form:p}=r;if((c||f||p)&&this._lockWrite(),Ln.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,s)}catch(h){at.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof Srt.ReadStream&&await Grt(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError("Missing `url` property");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[po])===null||h===void 0||h.destroy();return}for(let C of this[ev])C();this[ev].length=0,this.requestInitialized=!0}catch(E){if(E instanceof fs){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(e,r,s){var a,n,c,f,p;let h=r;if(at.default.object(e)&&!at.default.urlInstance(e))r={...s,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...s,...r},e!==void 0&&(r.url=e),at.default.urlInstance(r.url)&&(r.url=new w0.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),at.assert.any([at.default.string,at.default.undefined],r.method),at.assert.any([at.default.object,at.default.undefined],r.headers),at.assert.any([at.default.string,at.default.urlInstance,at.default.undefined],r.prefixUrl),at.assert.any([at.default.object,at.default.undefined],r.cookieJar),at.assert.any([at.default.object,at.default.string,at.default.undefined],r.searchParams),at.assert.any([at.default.object,at.default.string,at.default.undefined],r.cache),at.assert.any([at.default.object,at.default.number,at.default.undefined],r.timeout),at.assert.any([at.default.object,at.default.undefined],r.context),at.assert.any([at.default.object,at.default.undefined],r.hooks),at.assert.any([at.default.boolean,at.default.undefined],r.decompress),at.assert.any([at.default.boolean,at.default.undefined],r.ignoreInvalidCookies),at.assert.any([at.default.boolean,at.default.undefined],r.followRedirect),at.assert.any([at.default.number,at.default.undefined],r.maxRedirects),at.assert.any([at.default.boolean,at.default.undefined],r.throwHttpErrors),at.assert.any([at.default.boolean,at.default.undefined],r.http2),at.assert.any([at.default.boolean,at.default.undefined],r.allowGetBody),at.assert.any([at.default.string,at.default.undefined],r.localAddress),at.assert.any([vAe.isDnsLookupIpVersion,at.default.undefined],r.dnsLookupIpVersion),at.assert.any([at.default.object,at.default.undefined],r.https),at.assert.any([at.default.boolean,at.default.undefined],r.rejectUnauthorized),r.https&&(at.assert.any([at.default.boolean,at.default.undefined],r.https.rejectUnauthorized),at.assert.any([at.default.function_,at.default.undefined],r.https.checkServerIdentity),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.certificateAuthority),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.key),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.certificate),at.assert.any([at.default.string,at.default.undefined],r.https.passphrase),at.assert.any([at.default.string,at.default.buffer,at.default.array,at.default.undefined],r.https.pfx)),at.assert.any([at.default.object,at.default.undefined],r.cacheOptions),at.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===s?.headers?r.headers={...r.headers}:r.headers=Qrt({...s?.headers,...r.headers}),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==s?.searchParams){let P;if(at.default.string(r.searchParams)||r.searchParams instanceof w0.URLSearchParams)P=new w0.URLSearchParams(r.searchParams);else{Hrt(r.searchParams),P=new w0.URLSearchParams;for(let I in r.searchParams){let R=r.searchParams[I];R===null?P.append(I,""):R!==void 0&&P.append(I,R)}}(a=s?.searchParams)===null||a===void 0||a.forEach((I,R)=>{P.has(R)||P.append(R,I)}),r.searchParams=P}if(r.username=(n=r.username)!==null&&n!==void 0?n:"",r.password=(c=r.password)!==null&&c!==void 0?c:"",at.default.undefined(r.prefixUrl)?r.prefixUrl=(f=s?.prefixUrl)!==null&&f!==void 0?f:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),at.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=BAe.default(r.prefixUrl+r.url,r)}else(at.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=BAe.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:P}=r;Object.defineProperty(r,"prefixUrl",{set:R=>{let N=r.url;if(!N.href.startsWith(R))throw new Error(`Cannot change \`prefixUrl\` from ${P} to ${R}: ${N.href}`);r.url=new w0.URL(R+N.href.slice(P.length)),P=R},get:()=>P});let{protocol:I}=r.url;if(I==="unix:"&&(I="http:",r.url=new w0.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),I!=="http:"&&I!=="https:")throw new oT(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:P,getCookieString:I}=E;at.assert.function_(P),at.assert.function_(I),P.length===4&&I.length===0&&(P=mAe.promisify(P.bind(r.cookieJar)),I=mAe.promisify(I.bind(r.cookieJar)),r.cookieJar={setCookie:P,getCookieString:I})}let{cache:C}=r;if(C&&(XH.has(C)||XH.set(C,new IAe((P,I)=>{let R=P[po](P,I);return at.default.promise(R)&&(R.once=(N,U)=>{if(N==="error")R.catch(U);else if(N==="abort")(async()=>{try{(await R).once("abort",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${N}`);return R}),R},C))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)KH||(KH=new Prt.default),r.dnsCache=KH;else if(!at.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${at.default(r.dnsCache)}`);at.default.number(r.timeout)?r.timeout={request:r.timeout}:s&&r.timeout!==s.timeout?r.timeout={...s.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let S=r.hooks===s?.hooks;r.hooks={...r.hooks};for(let P of Ln.knownHookEvents)if(P in r.hooks)if(at.default.array(r.hooks[P]))r.hooks[P]=[...r.hooks[P]];else throw new TypeError(`Parameter \`${P}\` must be an Array, got ${at.default(r.hooks[P])}`);else r.hooks[P]=[];if(s&&!S)for(let P of Ln.knownHookEvents)s.hooks[P].length>0&&(r.hooks[P]=[...s.hooks[P],...r.hooks[P]]);if("family"in r&&B0.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),s?.https&&(r.https={...s.https,...r.https}),"rejectUnauthorized"in r&&B0.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&B0.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&B0.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&B0.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&B0.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&B0.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&B0.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let P in r.agent)if(P!=="http"&&P!=="https"&&P!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${P}\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Ln.setNonEnumerableProperties([s,h],r),Mrt.default(r,s)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,s=!at.default.undefined(e.form),a=!at.default.undefined(e.json),n=!at.default.undefined(e.body),c=s||a||n,f=Ln.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=f,c){if(f)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([n,s,a].filter(p=>p).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(n&&!(e.body instanceof yAe.Readable)&&!at.default.string(e.body)&&!at.default.buffer(e.body)&&!CAe.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(s&&!at.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let p=!at.default.string(r["content-type"]);n?(CAe.default(e.body)&&p&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[v0]=e.body):s?(p&&(r["content-type"]="application/x-www-form-urlencoded"),this[v0]=new w0.URLSearchParams(e.form).toString()):(p&&(r["content-type"]="application/json"),this[v0]=e.stringifyJson(e.json));let h=await Trt.default(this[v0],e.headers);at.default.undefined(r["content-length"])&&at.default.undefined(r["transfer-encoding"])&&!f&&!at.default.undefined(h)&&(r["content-length"]=String(h))}}else f?this._lockWrite():this._unlockWrite();this[EI]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:s}=r;this[PAe]=e,r.decompress&&(e=xrt(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:EAe.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[DAe]=n.isFromCache,this[mI]=Number(e.headers["content-length"])||void 0,this[eT]=e,e.once("end",()=>{this[mI]=this[yI],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",f=>{e.destroy(),this._beforeError(new tv(f,this))}),e.once("aborted",()=>{this._beforeError(new tv({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let c=e.headers["set-cookie"];if(at.default.object(r.cookieJar)&&c){let f=c.map(async p=>r.cookieJar.setCookie(p,s.toString()));r.ignoreInvalidCookies&&(f=f.map(async p=>p.catch(()=>{})));try{await Promise.all(f)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&qrt.has(a)){if(e.resume(),this[po]&&(this[zH](),delete this[po],this[SAe]()),(a===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[v0]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new tT(this));return}try{let p=Buffer.from(e.headers.location,"binary").toString(),h=new w0.URL(p,s),E=h.toString();decodeURI(E),h.hostname!==s.hostname||h.port!==s.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let C of r.hooks.beforeRedirect)await C(r,n);this.emit("redirect",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!Lrt.isResponseOk(n)){this._beforeError(new rT(n));return}e.on("readable",()=>{this[$Q]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let f of this[ZQ])if(!f.headersSent){for(let p in e.headers){let h=r.decompress?p!=="content-encoding":!0,E=e.headers[p];h&&f.setHeader(p,E)}f.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:s,url:a}=r;brt.default(e),this[zH]=wAe.default(e,s,a);let n=r.cache?"cacheableResponse":"response";e.once(n,p=>{this._onResponse(p)}),e.once("error",p=>{var h;e.destroy(),(h=e.res)===null||h===void 0||h.removeAllListeners("end"),p=p instanceof wAe.TimeoutError?new sT(p,this.timings,this):new fs(p.message,p,this),this._beforeError(p)}),this[SAe]=Rrt.default(e,this,Yrt),this[po]=e,this.emit("uploadProgress",this.uploadProgress);let c=this[v0],f=this.redirects.length===0?this:e;at.default.nodeStream(c)?(c.pipe(f),c.once("error",p=>{this._beforeError(new iT(p,this))})):(this._unlockWrite(),at.default.undefined(c)?(this._cannotHaveBody||this._noPipe)&&(f.end(),this._lockWrite()):(this._writeRequest(c,void 0,()=>{}),f.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((s,a)=>{Object.assign(r,Frt.default(e)),delete r.url;let n,c=XH.get(r.cache)(r,async f=>{f._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",f),s(f)});r.url=e,c.once("error",a),c.once("request",async f=>{n=f,s(n)})})}async _makeRequest(){var e,r,s,a,n;let{options:c}=this,{headers:f}=c;for(let U in f)if(at.default.undefined(f[U]))delete f[U];else if(at.default.null_(f[U]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${U}\` header`);if(c.decompress&&at.default.undefined(f["accept-encoding"])&&(f["accept-encoding"]=_rt?"gzip, deflate, br":"gzip, deflate"),c.cookieJar){let U=await c.cookieJar.getCookieString(c.url.toString());at.default.nonEmptyString(U)&&(c.headers.cookie=U)}for(let U of c.hooks.beforeRequest){let W=await U(c);if(!at.default.undefined(W)){c.request=()=>W;break}}c.body&&this[v0]!==c.body&&(this[v0]=c.body);let{agent:p,request:h,timeout:E,url:C}=c;if(c.dnsCache&&!("lookup"in c)&&(c.lookup=c.dnsCache.lookup),C.hostname==="unix"){let U=/(?.+?):(?.+)/.exec(`${C.pathname}${C.search}`);if(U?.groups){let{socketPath:W,path:ee}=U.groups;Object.assign(c,{socketPath:W,path:ee,host:""})}}let S=C.protocol==="https:",P;c.http2?P=krt.auto:P=S?Drt.request:EAe.request;let I=(e=c.request)!==null&&e!==void 0?e:P,R=c.cache?this._createCacheableRequest:I;p&&!c.http2&&(c.agent=p[S?"https":"http"]),c[po]=I,delete c.request,delete c.timeout;let N=c;if(N.shared=(r=c.cacheOptions)===null||r===void 0?void 0:r.shared,N.cacheHeuristic=(s=c.cacheOptions)===null||s===void 0?void 0:s.cacheHeuristic,N.immutableMinTimeToLive=(a=c.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,N.ignoreCargoCult=(n=c.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,c.dnsLookupIpVersion!==void 0)try{N.family=vAe.dnsLookupIpVersionToFamily(c.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}c.https&&("rejectUnauthorized"in c.https&&(N.rejectUnauthorized=c.https.rejectUnauthorized),c.https.checkServerIdentity&&(N.checkServerIdentity=c.https.checkServerIdentity),c.https.certificateAuthority&&(N.ca=c.https.certificateAuthority),c.https.certificate&&(N.cert=c.https.certificate),c.https.key&&(N.key=c.https.key),c.https.passphrase&&(N.passphrase=c.https.passphrase),c.https.pfx&&(N.pfx=c.https.pfx));try{let U=await R(C,N);at.default.undefined(U)&&(U=P(C,N)),c.request=h,c.timeout=E,c.agent=p,c.https&&("rejectUnauthorized"in c.https&&delete N.rejectUnauthorized,c.https.checkServerIdentity&&delete N.checkServerIdentity,c.https.certificateAuthority&&delete N.ca,c.https.certificate&&delete N.cert,c.https.key&&delete N.key,c.https.passphrase&&delete N.passphrase,c.https.pfx&&delete N.pfx),jrt(U)?this._onRequest(U):this.writable?(this.once("finish",()=>{this._onResponse(U)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(U)}catch(U){throw U instanceof IAe.CacheError?new nT(U,this):new fs(U.message,U,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new fs(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[CI])return;let{options:r}=this,s=this.retryCount+1;this[CI]=!0,e instanceof fs||(e=new fs(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await Ort.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let c;try{let f;n&&"retry-after"in n.headers&&(f=Number(n.headers["retry-after"]),Number.isNaN(f)?(f=Date.parse(n.headers["retry-after"])-Date.now(),f<=0&&(f=1)):f*=1e3),c=await r.retry.calculateDelay({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:Urt.default({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:0})})}catch(f){this._error(new fs(f.message,f,this));return}if(c){let f=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,s)}catch(p){this._error(new fs(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",s,e))};this[xAe]=setTimeout(f,c);return}}this._error(a)})()}_read(){this[$Q]=!0;let e=this[eT];if(e&&!this[CI]){e.readableLength&&(this[$Q]=!1);let r;for(;(r=e.read())!==null;){this[yI]+=r.length,this[bAe]=!0;let s=this.downloadProgress;s.percent<1&&this.emit("downloadProgress",s),this.push(r)}}}_write(e,r,s){let a=()=>{this._writeRequest(e,r,s)};this.requestInitialized?a():this[ev].push(a)}_writeRequest(e,r,s){this[po].destroyed||(this._progressCallbacks.push(()=>{this[II]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit("uploadProgress",a)}),this[po].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),s(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(po in this)){e();return}if(this[po].destroyed){e();return}this[po].end(s=>{s||(this[EI]=this[II],this.emit("uploadProgress",this.uploadProgress),this[po].emit("upload-complete")),e(s)})};this.requestInitialized?r():this[ev].push(r)}_destroy(e,r){var s;this[CI]=!0,clearTimeout(this[xAe]),po in this&&(this[zH](),!((s=this[eT])===null||s===void 0)&&s.complete||this[po].destroy()),e!==null&&!at.default.undefined(e)&&!(e instanceof fs)&&(e=new fs(e.message,e,this)),r(e)}get _isAboutToError(){return this[CI]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,s;return((r=(e=this[po])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((s=this[PAe])===null||s===void 0)&&s.complete)}get socket(){var e,r;return(r=(e=this[po])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[mI]?e=this[yI]/this[mI]:this[mI]===this[yI]?e=1:e=0,{percent:e,transferred:this[yI],total:this[mI]}}get uploadProgress(){let e;return this[EI]?e=this[II]/this[EI]:this[EI]===this[II]?e=1:e=0,{percent:e,transferred:this[II],total:this[EI]}}get timings(){var e;return(e=this[po])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[DAe]}pipe(e,r){if(this[bAe])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof JH.ServerResponse&&this[ZQ].add(e),super.pipe(e,r)}unpipe(e){return e instanceof JH.ServerResponse&&this[ZQ].delete(e),super.unpipe(e),this}};Ln.default=aT});var nv=_(qu=>{"use strict";var Vrt=qu&&qu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Jrt=qu&&qu.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Vrt(e,t,r)};Object.defineProperty(qu,"__esModule",{value:!0});qu.CancelError=qu.ParseError=void 0;var kAe=rv(),ZH=class extends kAe.RequestError{constructor(e,r){let{options:s}=r.request;super(`${e.message} in "${s.url.toString()}"`,e,r.request),this.name="ParseError"}};qu.ParseError=ZH;var $H=class extends kAe.RequestError{constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}get isCanceled(){return!0}};qu.CancelError=$H;Jrt(rv(),qu)});var TAe=_(ej=>{"use strict";Object.defineProperty(ej,"__esModule",{value:!0});var QAe=nv(),Krt=(t,e,r,s)=>{let{rawBody:a}=t;try{if(e==="text")return a.toString(s);if(e==="json")return a.length===0?"":r(a.toString());if(e==="buffer")return a;throw new QAe.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(n){throw new QAe.ParseError(n,t)}};ej.default=Krt});var tj=_(S0=>{"use strict";var zrt=S0&&S0.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Xrt=S0&&S0.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&zrt(e,t,r)};Object.defineProperty(S0,"__esModule",{value:!0});var Zrt=Ie("events"),$rt=Np(),ent=Que(),lT=nv(),RAe=TAe(),FAe=rv(),tnt=LH(),rnt=qH(),NAe=WH(),nnt=["request","response","redirect","uploadProgress","downloadProgress"];function OAe(t){let e,r,s=new Zrt.EventEmitter,a=new ent((c,f,p)=>{let h=E=>{let C=new FAe.default(void 0,t);C.retryCount=E,C._noPipe=!0,p(()=>C.destroy()),p.shouldReject=!1,p(()=>f(new lT.CancelError(C))),e=C,C.once("response",async I=>{var R;if(I.retryCount=E,I.request.aborted)return;let N;try{N=await rnt.default(C),I.rawBody=N}catch{return}if(C._isAboutToError)return;let U=((R=I.headers["content-encoding"])!==null&&R!==void 0?R:"").toLowerCase(),W=["gzip","deflate","br"].includes(U),{options:ee}=C;if(W&&!ee.decompress)I.body=N;else try{I.body=RAe.default(I,ee.responseType,ee.parseJson,ee.encoding)}catch(ie){if(I.body=N.toString(),NAe.isResponseOk(I)){C._beforeError(ie);return}}try{for(let[ie,ue]of ee.hooks.afterResponse.entries())I=await ue(I,async le=>{let me=FAe.default.normalizeArguments(void 0,{...le,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},ee);me.hooks.afterResponse=me.hooks.afterResponse.slice(0,ie);for(let Be of me.hooks.beforeRetry)await Be(me);let pe=OAe(me);return p(()=>{pe.catch(()=>{}),pe.cancel()}),pe})}catch(ie){C._beforeError(new lT.RequestError(ie.message,ie,C));return}if(!NAe.isResponseOk(I)){C._beforeError(new lT.HTTPError(I));return}r=I,c(C.options.resolveBodyOnly?I.body:I)});let S=I=>{if(a.isCanceled)return;let{options:R}=C;if(I instanceof lT.HTTPError&&!R.throwHttpErrors){let{response:N}=I;c(C.options.resolveBodyOnly?N.body:N);return}f(I)};C.once("error",S);let P=C.options.body;C.once("retry",(I,R)=>{var N,U;if(P===((N=R.request)===null||N===void 0?void 0:N.options.body)&&$rt.default.nodeStream((U=R.request)===null||U===void 0?void 0:U.options.body)){S(R);return}h(I)}),tnt.default(C,s,nnt)};h(0)});a.on=(c,f)=>(s.on(c,f),a);let n=c=>{let f=(async()=>{await a;let{options:p}=r.request;return RAe.default(r,c,p.parseJson,p.encoding)})();return Object.defineProperties(f,Object.getOwnPropertyDescriptors(a)),f};return a.json=()=>{let{headers:c}=e.options;return!e.writableFinished&&c.accept===void 0&&(c.accept="application/json"),n("json")},a.buffer=()=>n("buffer"),a.text=()=>n("text"),a}S0.default=OAe;Xrt(nv(),S0)});var LAe=_(rj=>{"use strict";Object.defineProperty(rj,"__esModule",{value:!0});var int=nv();function snt(t,...e){let r=(async()=>{if(t instanceof int.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),s=()=>r;return r.json=s,r.text=s,r.buffer=s,r.on=s,r}rj.default=snt});var _Ae=_(nj=>{"use strict";Object.defineProperty(nj,"__esModule",{value:!0});var MAe=Np();function UAe(t){for(let e of Object.values(t))(MAe.default.plainObject(e)||MAe.default.array(e))&&UAe(e);return Object.freeze(t)}nj.default=UAe});var jAe=_(HAe=>{"use strict";Object.defineProperty(HAe,"__esModule",{value:!0})});var ij=_(Nc=>{"use strict";var ont=Nc&&Nc.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),ant=Nc&&Nc.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&ont(e,t,r)};Object.defineProperty(Nc,"__esModule",{value:!0});Nc.defaultHandler=void 0;var GAe=Np(),Fc=tj(),lnt=LAe(),uT=rv(),cnt=_Ae(),unt={RequestError:Fc.RequestError,CacheError:Fc.CacheError,ReadError:Fc.ReadError,HTTPError:Fc.HTTPError,MaxRedirectsError:Fc.MaxRedirectsError,TimeoutError:Fc.TimeoutError,ParseError:Fc.ParseError,CancelError:Fc.CancelError,UnsupportedProtocolError:Fc.UnsupportedProtocolError,UploadError:Fc.UploadError},fnt=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:cT}=uT.default,qAe=(...t)=>{let e;for(let r of t)e=cT(void 0,r,e);return e},Ant=t=>t.isStream?new uT.default(void 0,t):Fc.default(t),pnt=t=>"defaults"in t&&"options"in t.defaults,hnt=["get","post","put","patch","head","delete"];Nc.defaultHandler=(t,e)=>e(t);var WAe=(t,e)=>{if(t)for(let r of t)r(e)},YAe=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(s=>(a,n)=>{let c,f=s(a,p=>(c=n(p),c));if(f!==c&&!a.isStream&&c){let p=f,{then:h,catch:E,finally:C}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(c)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(c)),p.then=h,p.catch=E,p.finally=C}return f});let e=(s,a={},n)=>{var c,f;let p=0,h=E=>t.handlers[p++](E,p===t.handlers.length?Ant:h);if(GAe.default.plainObject(s)){let E={...s,...a};uT.setNonEnumerableProperties([s,a],E),a=E,s=void 0}try{let E;try{WAe(t.options.hooks.init,a),WAe((c=a.hooks)===null||c===void 0?void 0:c.init,a)}catch(S){E=S}let C=cT(s,a,n??t.options);if(C[uT.kIsNormalizedAlready]=!0,E)throw new Fc.RequestError(E.message,E,C);return h(C)}catch(E){if(a.isStream)throw E;return lnt.default(E,t.options.hooks.beforeError,(f=a.hooks)===null||f===void 0?void 0:f.beforeError)}};e.extend=(...s)=>{let a=[t.options],n=[...t._rawHandlers],c;for(let f of s)pnt(f)?(a.push(f.defaults.options),n.push(...f.defaults._rawHandlers),c=f.defaults.mutableDefaults):(a.push(f),"handlers"in f&&n.push(...f.handlers),c=f.mutableDefaults);return n=n.filter(f=>f!==Nc.defaultHandler),n.length===0&&n.push(Nc.defaultHandler),YAe({options:qAe(...a),handlers:n,mutableDefaults:!!c})};let r=async function*(s,a){let n=cT(s,a,t.options);n.resolveBodyOnly=!1;let c=n.pagination;if(!GAe.default.object(c))throw new TypeError("`options.pagination` must be implemented");let f=[],{countLimit:p}=c,h=0;for(;h{let n=[];for await(let c of r(s,a))n.push(c);return n},e.paginate.each=r,e.stream=(s,a)=>e(s,{...a,isStream:!0});for(let s of hnt)e[s]=(a,n)=>e(a,{...n,method:s}),e.stream[s]=(a,n)=>e(a,{...n,method:s,isStream:!0});return Object.assign(e,unt),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:cnt.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=qAe,e};Nc.default=YAe;ant(jAe(),Nc)});var KAe=_((Op,fT)=>{"use strict";var gnt=Op&&Op.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),VAe=Op&&Op.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&gnt(e,t,r)};Object.defineProperty(Op,"__esModule",{value:!0});var dnt=Ie("url"),JAe=ij(),mnt={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let s of e){let a=s.split(";");if(a[1].includes("next")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new dnt.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[JAe.defaultHandler],mutableDefaults:!1},sj=JAe.default(mnt);Op.default=sj;fT.exports=sj;fT.exports.default=sj;fT.exports.__esModule=!0;VAe(ij(),Op);VAe(tj(),Op)});var nn={};Vt(nn,{Method:()=>tpe,del:()=>wnt,get:()=>lj,getNetworkSettings:()=>epe,post:()=>cj,put:()=>Cnt,request:()=>iv});async function oj(t){return Yl(XAe,t,()=>ce.readFilePromise(t).then(e=>(XAe.set(t,e),e)))}function Int({statusCode:t,statusMessage:e},r){let s=Ht(r,t,ht.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return KE(r,`${s}${e?` (${e})`:""}`,a)}async function AT(t,{configuration:e,customErrorMessage:r}){try{return await t}catch(s){if(s.name!=="HTTPError")throw s;let a=r?.(s,e)??s.response.body?.error;a==null&&(s.message.startsWith("Response code")?a="The remote server failed to provide the requested resource":a=s.message),s.code==="ETIMEDOUT"&&s.event==="socket"&&(a+=`(can be increased via ${Ht(e,"httpTimeout",ht.SETTING)})`);let n=new jt(35,a,c=>{s.response&&c.reportError(35,` ${Kf(e,{label:"Response Code",value:_u(ht.NO_HINT,Int(s.response,e))})}`),s.request&&(c.reportError(35,` ${Kf(e,{label:"Request Method",value:_u(ht.NO_HINT,s.request.options.method)})}`),c.reportError(35,` ${Kf(e,{label:"Request URL",value:_u(ht.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&c.reportError(35,` ${Kf(e,{label:"Request Redirects",value:_u(ht.NO_HINT,Z4(e,s.request.redirects,ht.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&c.reportError(35,` ${Kf(e,{label:"Request Retry Count",value:_u(ht.NO_HINT,`${Ht(e,s.request.retryCount,ht.NUMBER)} (can be increased via ${Ht(e,"httpRetry",ht.SETTING)})`)})}`)});throw n.originalError=s,n}}function epe(t,e){let r=[...e.configuration.get("networkSettings")].sort(([c],[f])=>f.length-c.length),s={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(s),n=typeof t=="string"?new URL(t):t;for(let[c,f]of r)if(aj.default.isMatch(n.hostname,c))for(let p of a){let h=f.get(p);h!==null&&typeof s[p]>"u"&&(s[p]=h)}for(let c of a)typeof s[c]>"u"&&(s[c]=e.configuration.get(c));return s}async function iv(t,e,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET",wrapNetworkRequest:f}){let p={target:t,body:e,configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c},h=async()=>await Bnt(t,e,p),E=typeof f<"u"?await f(h,p):h;return await(await r.reduceHook(S=>S.wrapNetworkRequest,E,p))()}async function lj(t,{configuration:e,jsonResponse:r,customErrorMessage:s,wrapNetworkRequest:a,...n}){let c=()=>AT(iv(t,null,{configuration:e,wrapNetworkRequest:a,...n}),{configuration:e,customErrorMessage:s}).then(p=>p.body),f=await(typeof a<"u"?c():Yl(zAe,t,()=>c().then(p=>(zAe.set(t,p),p))));return r?JSON.parse(f.toString()):f}async function Cnt(t,e,{customErrorMessage:r,...s}){return(await AT(iv(t,e,{...s,method:"PUT"}),{customErrorMessage:r,configuration:s.configuration})).body}async function cj(t,e,{customErrorMessage:r,...s}){return(await AT(iv(t,e,{...s,method:"POST"}),{customErrorMessage:r,configuration:s.configuration})).body}async function wnt(t,{customErrorMessage:e,...r}){return(await AT(iv(t,null,{...r,method:"DELETE"}),{customErrorMessage:e,configuration:r.configuration})).body}async function Bnt(t,e,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET"}){let f=typeof t=="string"?new URL(t):t,p=epe(f,{configuration:r});if(p.enableNetwork===!1)throw new jt(80,`Request to '${f.href}' has been blocked because of your configuration settings`);if(f.protocol==="http:"&&!aj.default.isMatch(f.hostname,r.get("unsafeHttpWhitelist")))throw new jt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${f.hostname})`);let h={headers:s,method:c};h.responseType=n?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e=="string"?h.body=e:h.json=e);let E=r.get("httpTimeout"),C=r.get("httpRetry"),S=r.get("enableStrictSsl"),P=p.httpsCaFilePath,I=p.httpsCertFilePath,R=p.httpsKeyFilePath,{default:N}=await Promise.resolve().then(()=>ut(KAe())),U=P?await oj(P):void 0,W=I?await oj(I):void 0,ee=R?await oj(R):void 0,ie={rejectUnauthorized:S,ca:U,cert:W,key:ee},ue={http:p.httpProxy?new vue({proxy:p.httpProxy,proxyRequestOptions:ie}):ynt,https:p.httpsProxy?new Sue({proxy:p.httpsProxy,proxyRequestOptions:ie}):Ent},le=N.extend({timeout:{socket:E},retry:C,agent:ue,https:{rejectUnauthorized:S,certificateAuthority:U,certificate:W,key:ee},...h});return r.getLimit("networkConcurrency")(()=>le(f))}var ZAe,$Ae,aj,zAe,XAe,ynt,Ent,tpe,pT=Xe(()=>{Dt();Due();ZAe=Ie("https"),$Ae=Ie("http"),aj=ut(Go());Tc();xc();Pc();zAe=new Map,XAe=new Map,ynt=new $Ae.Agent({keepAlive:!0}),Ent=new ZAe.Agent({keepAlive:!0});tpe=(a=>(a.GET="GET",a.PUT="PUT",a.POST="POST",a.DELETE="DELETE",a))(tpe||{})});var Ui={};Vt(Ui,{availableParallelism:()=>fj,getArchitecture:()=>sv,getArchitectureName:()=>Pnt,getArchitectureSet:()=>uj,getCaller:()=>Tnt,major:()=>vnt,openUrl:()=>Snt});function bnt(){if(process.platform!=="linux")return null;let t;try{t=ce.readFileSync(Dnt)}catch{}if(typeof t<"u"){if(t&&(t.includes("GLIBC")||t.includes("GNU libc")||t.includes("GNU C Library")))return"glibc";if(t&&t.includes("musl"))return"musl"}let r=(process.report?.getReport()??{}).sharedObjects??[],s=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return p0(r,a=>{let n=a.match(s);if(!n)return p0.skip;if(n[1])return"glibc";if(n[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")})??null}function sv(){return npe=npe??{os:(process.env.YARN_IS_TEST_ENV?process.env.YARN_OS_OVERRIDE:void 0)??process.platform,cpu:(process.env.YARN_IS_TEST_ENV?process.env.YARN_CPU_OVERRIDE:void 0)??process.arch,libc:(process.env.YARN_IS_TEST_ENV?process.env.YARN_LIBC_OVERRIDE:void 0)??bnt()}}function Pnt(t=sv()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function uj(){let t=sv();return ipe=ipe??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function Qnt(t){let e=xnt.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf("native")===0,s=e[2]&&e[2].indexOf("eval")===0,a=knt.exec(e[2]);return s&&a!=null&&(e[2]=a[1],e[3]=a[2],e[4]=a[3]),{file:r?null:e[2],methodName:e[1]||"",arguments:r?[e[2]]:[],line:e[3]?+e[3]:null,column:e[4]?+e[4]:null}}function Tnt(){let e=new Error().stack.split(` -`)[3];return Qnt(e)}function fj(){return typeof hT.default.availableParallelism<"u"?hT.default.availableParallelism():Math.max(1,hT.default.cpus().length)}var hT,vnt,rpe,Snt,Dnt,npe,ipe,xnt,knt,gT=Xe(()=>{Dt();hT=ut(Ie("os"));dT();Pc();vnt=Number(process.versions.node.split(".")[0]),rpe=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),Snt=typeof rpe<"u"?async t=>{try{return await Aj(rpe,[t],{cwd:J.cwd()}),!0}catch{return!1}}:void 0,Dnt="/usr/bin/ldd";xnt=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,knt=/\((\S*)(?::(\d+))(?::(\d+))\)/});function yj(t,e,r,s,a){let n=YB(r);if(s.isArray||s.type==="ANY"&&Array.isArray(n))return Array.isArray(n)?n.map((c,f)=>pj(t,`${e}[${f}]`,c,s,a)):String(n).split(/,/).map(c=>pj(t,e,c,s,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return pj(t,e,r,s,a)}function pj(t,e,r,s,a){let n=YB(r);switch(s.type){case"ANY":return NQ(n);case"SHAPE":return Ont(t,e,r,s,a);case"MAP":return Lnt(t,e,r,s,a)}if(n===null&&!s.isNullable&&s.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if("values"in s&&s.values?.includes(n))return n;let f=(()=>{if(s.type==="BOOLEAN"&&typeof n!="string")return kB(n);if(typeof n!="string")throw new Error(`Expected configuration setting "${e}" to be a string, got ${typeof n}`);let p=Vk(n,{env:t.env});switch(s.type){case"ABSOLUTE_PATH":{let h=a,E=H8(r);return E&&E[0]!=="<"&&(h=J.dirname(E)),J.resolve(h,fe.toPortablePath(p))}case"LOCATOR_LOOSE":return Qp(p,!1);case"NUMBER":return parseInt(p);case"LOCATOR":return Qp(p);case"BOOLEAN":return kB(p);case"DURATION":return Jk(p,s.unit);default:return p}})();if("values"in s&&s.values&&!s.values.includes(f))throw new Error(`Invalid value, expected one of ${s.values.join(", ")}`);return f}function Ont(t,e,r,s,a){let n=YB(r);if(typeof n!="object"||Array.isArray(n))throw new nt(`Object configuration settings "${e}" must be an object`);let c=Ej(t,s,{ignoreArrays:!0});if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=`${e}.${f}`;if(!s.properties[f])throw new nt(`Unrecognized configuration settings found: ${e}.${f} - run "yarn config" to see the list of settings supported in Yarn`);c.set(f,yj(t,h,p,s.properties[f],a))}return c}function Lnt(t,e,r,s,a){let n=YB(r),c=new Map;if(typeof n!="object"||Array.isArray(n))throw new nt(`Map configuration settings "${e}" must be an object`);if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=s.normalizeKeys?s.normalizeKeys(f):f,E=`${e}['${h}']`,C=s.valueDefinition;c.set(h,yj(t,E,p,C,a))}return c}function Ej(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case"SHAPE":{if(e.isArray&&!r)return[];let s=new Map;for(let[a,n]of Object.entries(e.properties))s.set(a,Ej(t,n));return s}case"MAP":return e.isArray&&!r?[]:new Map;case"ABSOLUTE_PATH":return e.default===null?null:t.projectCwd===null?Array.isArray(e.default)?e.default.map(s=>J.normalize(s)):J.isAbsolute(e.default)?J.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(s=>J.resolve(t.projectCwd,s)):J.resolve(t.projectCwd,e.default);case"DURATION":return Jk(e.default,e.unit);default:return e.default}}function yT(t,e,r){if(e.type==="SECRET"&&typeof t=="string"&&r.hideSecrets)return Nnt;if(e.type==="ABSOLUTE_PATH"&&typeof t=="string"&&r.getNativePaths)return fe.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let s=[];for(let a of t)s.push(yT(a,e,r));return s}if(e.type==="MAP"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let c=yT(n,e.valueDefinition,r);typeof c<"u"&&s.set(a,c)}return s}if(e.type==="SHAPE"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let c=e.properties[a],f=yT(n,c,r);typeof f<"u"&&s.set(a,f)}return s}return t}function Mnt(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(ET)&&(e=(0,ope.default)(e.slice(ET.length)),t[e]=r);return t}function gj(){let t=`${ET}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return dj}async function spe(t){try{return await ce.readFilePromise(t)}catch{return Buffer.of()}}async function Unt(t,e){return Buffer.compare(...await Promise.all([spe(t),spe(e)]))===0}async function _nt(t,e){let[r,s]=await Promise.all([ce.statPromise(t),ce.statPromise(e)]);return r.dev===s.dev&&r.ino===s.ino}async function jnt({configuration:t,selfPath:e}){let r=t.get("yarnPath");return t.get("ignorePath")||r===null||r===e||await Hnt(r,e)?null:r}var ope,Lp,ape,lpe,cpe,hj,Rnt,ov,Fnt,Mp,ET,dj,Nnt,wI,upe,mj,IT,mT,Hnt,ze,av=Xe(()=>{Dt();wc();ope=ut(Sre()),Lp=ut(Fd());Yt();ape=ut(yne()),lpe=Ie("module"),cpe=ut(Ld()),hj=Ie("stream");nue();oI();R8();F8();N8();gue();O8();tm();Iue();LQ();xc();I0();pT();Pc();gT();Rp();Wo();Rnt=function(){if(!Lp.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let t=fe.toPortablePath(process.env.GITHUB_EVENT_PATH),e;try{e=ce.readJsonSync(t)}catch{return!1}return!(!("repository"in e)||!e.repository||(e.repository.private??!0))}(),ov=new Set(["@yarnpkg/plugin-constraints","@yarnpkg/plugin-exec","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]),Fnt=new Set(["isTestEnv","injectNpmUser","injectNpmPassword","injectNpm2FaToken","zipDataEpilogue","cacheCheckpointOverride","cacheVersionOverride","lockfileVersionOverride","osOverride","cpuOverride","libcOverride","binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir","registry","ignoreCwd"]),Mp=/^(?!v)[a-z0-9._-]+$/i,ET="yarn_",dj=".yarnrc.yml",Nnt="********",wI=(C=>(C.ANY="ANY",C.BOOLEAN="BOOLEAN",C.ABSOLUTE_PATH="ABSOLUTE_PATH",C.LOCATOR="LOCATOR",C.LOCATOR_LOOSE="LOCATOR_LOOSE",C.NUMBER="NUMBER",C.STRING="STRING",C.DURATION="DURATION",C.SECRET="SECRET",C.SHAPE="SHAPE",C.MAP="MAP",C))(wI||{}),upe=ht,mj=(c=>(c.MILLISECONDS="ms",c.SECONDS="s",c.MINUTES="m",c.HOURS="h",c.DAYS="d",c.WEEKS="w",c))(mj||{}),IT=(r=>(r.JUNCTIONS="junctions",r.SYMLINKS="symlinks",r))(IT||{}),mT={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:"STRING",default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:"ABSOLUTE_PATH",default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:"BOOLEAN",default:!1},globalFolder:{description:"Folder where all system-global files are stored",type:"ABSOLUTE_PATH",default:G8()},cacheFolder:{description:"Folder where the cache files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:"NUMBER",values:["mixed",0,1,2,3,4,5,6,7,8,9],default:0},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:"ABSOLUTE_PATH",default:"./.yarn/__virtual__"},installStatePath:{description:"Path of the file where the install state will be persisted",type:"ABSOLUTE_PATH",default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:"STRING",default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:"STRING",default:gj()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:"BOOLEAN",default:!0},cacheMigrationMode:{description:"Defines the conditions under which Yarn upgrades should cause the cache archives to be regenerated.",type:"STRING",values:["always","match-spec","required-only"],default:"always"},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:"BOOLEAN",default:Zk,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:X4,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:Lp.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:"BOOLEAN",default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:"BOOLEAN",default:!Lp.isCI,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:"BOOLEAN",default:!0},enableTips:{description:"If true, installs will print a helpful message every day of the week",type:"BOOLEAN",default:!Lp.isCI,defaultText:""},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:"BOOLEAN",default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:"BOOLEAN",default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:"STRING",default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:"STRING",default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:"STRING",default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:"BOOLEAN",default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:"SHAPE",properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:"BOOLEAN",default:!0},enableNetwork:{description:"If false, Yarn will refuse to use the network if required to",type:"BOOLEAN",default:!0},enableOfflineMode:{description:"If true, Yarn will attempt to retrieve files and metadata from the global cache rather than the network",type:"BOOLEAN",default:!1},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:"STRING",default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request",type:"DURATION",unit:"ms",default:"1m"},httpRetry:{description:"Retry times on http failure",type:"NUMBER",default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:"NUMBER",default:50},taskPoolConcurrency:{description:"Maximal amount of concurrent heavy task processing",type:"NUMBER",default:fj()},taskPoolMode:{description:"Execution strategy for heavy tasks",type:"STRING",values:["async","workers"],default:"workers"},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{httpsCaFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null}}}},httpsCaFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:"BOOLEAN",default:!0},logFilters:{description:"Overrides for log levels",type:"SHAPE",isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:"STRING",default:void 0},text:{description:"Code of the texts covered by this override",type:"STRING",default:void 0},pattern:{description:"Code of the patterns covered by this override",type:"STRING",default:void 0},level:{description:"Log level override, set to null to remove override",type:"STRING",values:Object.values(eQ),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:"BOOLEAN",default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads",type:"DURATION",unit:"d",default:"7d"},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:"STRING",default:null},enableHardenedMode:{description:"If true, automatically enable --check-resolutions --refresh-lockfile on installs",type:"BOOLEAN",default:Lp.isPR&&Rnt,defaultText:""},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:"BOOLEAN",default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:"BOOLEAN",default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:"BOOLEAN",default:!1},enableCacheClean:{description:"If false, disallows the `cache clean` command",type:"BOOLEAN",default:!0},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:"STRING",default:"throw"},injectEnvironmentFiles:{description:"List of all the environment files that Yarn should inject inside the process when it starts",type:"ABSOLUTE_PATH",default:[".env.yarn?"],isArray:!0},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:"MAP",valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:"SHAPE",properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:"MAP",valueDefinition:{description:"A range",type:"STRING"}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:"MAP",valueDefinition:{description:"A semver range",type:"STRING"}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:"MAP",valueDefinition:{description:"The peerDependency meta",type:"SHAPE",properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:"BOOLEAN",default:!1}}}}}}}};Hnt=process.platform==="win32"?Unt:_nt;ze=class t{constructor(e){this.isCI=Lp.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=e}static{this.deleteProperty=Symbol()}static{this.telemetry=null}static create(e,r,s){let a=new t(e);typeof r<"u"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(mT);let n=typeof s<"u"?s:r instanceof Map?r:new Map;for(let[c,f]of n)a.activatePlugin(c,f);return a}static async find(e,r,{strict:s=!0,usePathCheck:a=null,useRc:n=!0}={}){let c=Mnt();delete c.rcFilename;let f=new t(e),p=await t.findRcFiles(e),h=await t.findFolderRcFile(fI());h&&(p.find(me=>me.path===h.path)||p.unshift(h));let E=Eue(p.map(le=>[le.path,le.data])),C=vt.dot,S=new Set(Object.keys(mT)),P=({yarnPath:le,ignorePath:me,injectEnvironmentFiles:pe})=>({yarnPath:le,ignorePath:me,injectEnvironmentFiles:pe}),I=({yarnPath:le,ignorePath:me,injectEnvironmentFiles:pe,...Be})=>{let Ce={};for(let[g,we]of Object.entries(Be))S.has(g)&&(Ce[g]=we);return Ce},R=({yarnPath:le,ignorePath:me,...pe})=>{let Be={};for(let[Ce,g]of Object.entries(pe))S.has(Ce)||(Be[Ce]=g);return Be};if(f.importSettings(P(mT)),f.useWithSource("",P(c),e,{strict:!1}),E){let[le,me]=E;f.useWithSource(le,P(me),C,{strict:!1})}if(a){if(await jnt({configuration:f,selfPath:a})!==null)return f;f.useWithSource("",{ignorePath:!0},e,{strict:!1,overwrite:!0})}let N=await t.findProjectCwd(e);f.startingCwd=e,f.projectCwd=N;let U=Object.assign(Object.create(null),process.env);f.env=U;let W=await Promise.all(f.get("injectEnvironmentFiles").map(async le=>{let me=le.endsWith("?")?await ce.readFilePromise(le.slice(0,-1),"utf8").catch(()=>""):await ce.readFilePromise(le,"utf8");return(0,ape.parse)(me)}));for(let le of W)for(let[me,pe]of Object.entries(le))f.env[me]=Vk(pe,{env:U});if(f.importSettings(I(mT)),f.useWithSource("",I(c),e,{strict:s}),E){let[le,me]=E;f.useWithSource(le,I(me),C,{strict:s})}let ee=le=>"default"in le?le.default:le,ie=new Map([["@@core",rue]]);if(r!==null)for(let le of r.plugins.keys())ie.set(le,ee(r.modules.get(le)));for(let[le,me]of ie)f.activatePlugin(le,me);let ue=new Map([]);if(r!==null){let le=new Map;for(let[Be,Ce]of r.modules)le.set(Be,()=>Ce);let me=new Set,pe=async(Be,Ce)=>{let{factory:g,name:we}=Pp(Be);if(!g||me.has(we))return;let ye=new Map(le),Ae=Z=>{if((0,lpe.isBuiltin)(Z))return Pp(Z);if(ye.has(Z))return ye.get(Z)();throw new nt(`This plugin cannot access the package referenced via ${Z} which is neither a builtin, nor an exposed entry`)},se=await qE(async()=>ee(await g(Ae)),Z=>`${Z} (when initializing ${we}, defined in ${Ce})`);le.set(we,()=>se),me.add(we),ue.set(we,se)};if(c.plugins)for(let Be of c.plugins.split(";")){let Ce=J.resolve(e,fe.toPortablePath(Be));await pe(Ce,"")}for(let{path:Be,cwd:Ce,data:g}of p)if(n&&Array.isArray(g.plugins))for(let we of g.plugins){let ye=typeof we!="string"?we.path:we,Ae=we?.spec??"",se=we?.checksum??"";if(ov.has(Ae))continue;let Z=J.resolve(Ce,fe.toPortablePath(ye));if(!await ce.existsPromise(Z)){if(!Ae){let mt=Ht(f,J.basename(Z,".cjs"),ht.NAME),j=Ht(f,".gitignore",ht.NAME),rt=Ht(f,f.values.get("rcFilename"),ht.NAME),Fe=Ht(f,"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored",ht.URL);throw new nt(`Missing source for the ${mt} plugin - please try to remove the plugin from ${rt} then reinstall it manually. This error usually occurs because ${j} is incorrect, check ${Fe} to make sure your plugin folder isn't gitignored.`)}if(!Ae.match(/^https?:/)){let mt=Ht(f,J.basename(Z,".cjs"),ht.NAME),j=Ht(f,f.values.get("rcFilename"),ht.NAME);throw new nt(`Failed to recognize the source for the ${mt} plugin - please try to delete the plugin from ${j} then reinstall it manually.`)}let De=await lj(Ae,{configuration:f}),Re=us(De);if(se&&se!==Re){let mt=Ht(f,J.basename(Z,".cjs"),ht.NAME),j=Ht(f,f.values.get("rcFilename"),ht.NAME),rt=Ht(f,`yarn plugin import ${Ae}`,ht.CODE);throw new nt(`Failed to fetch the ${mt} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${j} then run ${rt} to reimport it.`)}await ce.mkdirPromise(J.dirname(Z),{recursive:!0}),await ce.writeFilePromise(Z,De)}await pe(Z,Be)}}for(let[le,me]of ue)f.activatePlugin(le,me);if(f.useWithSource("",R(c),e,{strict:s}),E){let[le,me]=E;f.useWithSource(le,R(me),C,{strict:s})}return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),f}static async findRcFiles(e){let r=gj(),s=[],a=e,n=null;for(;a!==n;){n=a;let c=J.join(n,r);if(ce.existsSync(c)){let f,p;try{p=await ce.readFilePromise(c,"utf8"),f=ls(p)}catch{let h="";throw p?.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(h=" (in particular, make sure you list the colons after each key name)"),new nt(`Parse error when loading ${c}; please check it's proper Yaml${h}`)}s.unshift({path:c,cwd:n,data:f})}a=J.dirname(n)}return s}static async findFolderRcFile(e){let r=J.join(e,Er.rc),s;try{s=await ce.readFilePromise(r,"utf8")}catch(n){if(n.code==="ENOENT")return null;throw n}let a=ls(s);return{path:r,cwd:e,data:a}}static async findProjectCwd(e){let r=null,s=e,a=null;for(;s!==a;){if(a=s,ce.existsSync(J.join(a,Er.lockfile)))return a;ce.existsSync(J.join(a,Er.manifest))&&(r=a),s=J.dirname(a)}return r}static async updateConfiguration(e,r,s={}){let a=gj(),n=J.join(e,a),c=ce.existsSync(n)?ls(await ce.readFilePromise(n,"utf8")):{},f=!1,p;if(typeof r=="function"){try{p=r(c)}catch{p=r({})}if(p===c)return!1}else{p=c;for(let h of Object.keys(r)){let E=c[h],C=r[h],S;if(typeof C=="function")try{S=C(E)}catch{S=C(void 0)}else S=C;E!==S&&(S===t.deleteProperty?delete p[h]:p[h]=S,f=!0)}if(!f)return!1}return await ce.changeFilePromise(n,nl(p),{automaticNewlines:!0}),!0}static async addPlugin(e,r){r.length!==0&&await t.updateConfiguration(e,s=>{let a=s.plugins??[];if(a.length===0)return{...s,plugins:r};let n=[],c=[...r];for(let f of a){let p=typeof f!="string"?f.path:f,h=c.find(E=>E.path===p);h?(n.push(h),c=c.filter(E=>E!==h)):n.push(f)}return n.push(...c),{...s,plugins:n}})}static async updateHomeConfiguration(e){let r=fI();return await t.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<"u"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,s]of Object.entries(e))if(s!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,s),this.values.set(r,Ej(this,s))}}useWithSource(e,r,s,a){try{this.use(e,r,s,a)}catch(n){throw n.message+=` (in ${Ht(this,e,ht.PATH)})`,n}}use(e,r,s,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSettings");for(let c of["enableStrictSettings",...Object.keys(r)]){let f=r[c],p=H8(f);if(p&&(e=p),typeof f>"u"||c==="plugins"||e===""&&Fnt.has(c))continue;if(c==="rcFilename")throw new nt(`The rcFilename settings can only be set via ${`${ET}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(c);if(!h){let C=fI(),S=e[0]!=="<"?J.dirname(e):null;if(a&&!(S!==null?C===S:!1))throw new nt(`Unrecognized or legacy configuration settings found: ${c} - run "yarn config" to see the list of settings supported in Yarn`);this.invalid.set(c,e);continue}if(this.sources.has(c)&&!(n||h.type==="MAP"||h.isArray&&h.concatenateValues))continue;let E;try{E=yj(this,c,f,h,s)}catch(C){throw C.message+=` in ${Ht(this,e,ht.PATH)}`,C}if(c==="enableStrictSettings"&&e!==""){a=E;continue}if(h.type==="MAP"){let C=this.values.get(c);this.values.set(c,new Map(n?[...C,...E]:[...E,...C])),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let C=this.values.get(c);this.values.set(c,n?[...C,...E]:[...E,...C]),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else this.values.set(c,E),this.sources.set(c,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:s=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>"u")throw new nt(`Couldn't find a configuration settings named "${e}"`);return yT(a,n,{hideSecrets:r,getNativePaths:s})}getSubprocessStreams(e,{header:r,prefix:s,report:a}){let n,c,f=ce.createWriteStream(e);if(this.get("enableInlineBuilds")){let p=a.createStreamReporter(`${s} ${Ht(this,"STDOUT","green")}`),h=a.createStreamReporter(`${s} ${Ht(this,"STDERR","red")}`);n=new hj.PassThrough,n.pipe(p),n.pipe(f),c=new hj.PassThrough,c.pipe(h),c.pipe(f)}else n=f,c=f,typeof r<"u"&&n.write(`${r} -`);return{stdout:n,stderr:c}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let s of r.resolvers||[])e.push(new s);return new rm([new FQ,new Ei,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let s of r.fetchers||[])e.push(new s);return new aI([new lI,new cI,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let s of r.linkers||[])e.push(new s);return e}getSupportedArchitectures(){let e=sv(),r=this.get("supportedArchitectures"),s=r.get("os");s!==null&&(s=s.map(c=>c==="current"?e.os:c));let a=r.get("cpu");a!==null&&(a=a.map(c=>c==="current"?e.cpu:c));let n=r.get("libc");return n!==null&&(n=Wl(n,c=>c==="current"?e.libc??Wl.skip:c)),{os:s,cpu:a,libc:n}}isInteractive({interactive:e,stdout:r}){return r.isTTY?e??this.get("preferInteractive"):!1}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let e=this.packageExtensions,r=(s,a,{userProvided:n=!1}={})=>{if(!cl(s.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let c=new Ut;c.load(a,{yamlCompatibilityMode:!0});let f=xB(e,s.identHash),p=[];f.push([s.range,p]);let h={status:"inactive",userProvided:n,parentDescriptor:s};for(let E of c.dependencies.values())p.push({...h,type:"Dependency",descriptor:E});for(let E of c.peerDependencies.values())p.push({...h,type:"PeerDependency",descriptor:E});for(let[E,C]of c.peerDependenciesMeta)for(let[S,P]of Object.entries(C))p.push({...h,type:"PeerDependencyMeta",selector:E,key:S,value:P})};await this.triggerHook(s=>s.registerPackageExtensions,this,r);for(let[s,a]of this.get("packageExtensions"))r(C0(s,!0),Yk(a),{userProvided:!0});return e}normalizeLocator(e){return cl(e.reference)?Ws(e,`${this.get("defaultProtocol")}${e.reference}`):Mp.test(e.reference)?Ws(e,`${this.get("defaultProtocol")}${e.reference}`):e}normalizeDependency(e){return cl(e.range)?On(e,`${this.get("defaultProtocol")}${e.range}`):Mp.test(e.range)?On(e,`${this.get("defaultProtocol")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,s])=>[r,this.normalizeDependency(s)]))}normalizePackage(e,{packageExtensions:r}){let s=LB(e),a=r.get(e.identHash);if(typeof a<"u"){let c=e.version;if(c!==null){for(let[f,p]of a)if(Zf(c,f))for(let h of p)switch(h.status==="inactive"&&(h.status="redundant"),h.type){case"Dependency":typeof s.dependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case"PeerDependency":typeof s.peerDependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case"PeerDependencyMeta":{let E=s.peerDependenciesMeta.get(h.selector);(typeof E>"u"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status="active",Yl(s.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:G4(h)}}}let n=c=>c.scope?`${c.scope}__${c.name}`:`${c.name}`;for(let c of s.peerDependenciesMeta.keys()){let f=Sa(c);s.peerDependencies.has(f.identHash)||s.peerDependencies.set(f.identHash,On(f,"*"))}for(let c of s.peerDependencies.values()){if(c.scope==="types")continue;let f=n(c),p=Da("types",f),h=un(p);s.peerDependencies.has(p.identHash)||s.peerDependenciesMeta.has(h)||s.dependencies.has(p.identHash)||(s.peerDependencies.set(p.identHash,On(p,"*")),s.peerDependenciesMeta.set(h,{optional:!0}))}return s.dependencies=new Map(qs(s.dependencies,([,c])=>al(c))),s.peerDependencies=new Map(qs(s.peerDependencies,([,c])=>al(c))),s}getLimit(e){return Yl(this.limits,e,()=>(0,cpe.default)(this.get(e)))}async triggerHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);n&&await n(...r)}}async triggerMultipleHooks(e,r){for(let s of r)await this.triggerHook(e,...s)}async reduceHook(e,r,...s){let a=r;for(let n of this.plugins.values()){let c=n.hooks;if(!c)continue;let f=e(c);f&&(a=await f(a,...s))}return a}async firstHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);if(!n)continue;let c=await n(...r);if(typeof c<"u")return c}return null}}});var qr={};Vt(qr,{EndStrategy:()=>Bj,ExecError:()=>CT,PipeError:()=>lv,execvp:()=>Aj,pipevp:()=>Wu});function om(t){return t!==null&&typeof t.fd=="number"}function Ij(){}function Cj(){for(let t of am)t.kill()}async function Wu(t,e,{cwd:r,env:s=process.env,strict:a=!1,stdin:n=null,stdout:c,stderr:f,end:p=2}){let h=["pipe","pipe","pipe"];n===null?h[0]="ignore":om(n)&&(h[0]=n),om(c)&&(h[1]=c),om(f)&&(h[2]=f);let E=(0,wj.default)(t,e,{cwd:fe.fromPortablePath(r),env:{...s,PWD:fe.fromPortablePath(r)},stdio:h});am.add(E),am.size===1&&(process.on("SIGINT",Ij),process.on("SIGTERM",Cj)),!om(n)&&n!==null&&n.pipe(E.stdin),om(c)||E.stdout.pipe(c,{end:!1}),om(f)||E.stderr.pipe(f,{end:!1});let C=()=>{for(let S of new Set([c,f]))om(S)||S.end()};return new Promise((S,P)=>{E.on("error",I=>{am.delete(E),am.size===0&&(process.off("SIGINT",Ij),process.off("SIGTERM",Cj)),(p===2||p===1)&&C(),P(I)}),E.on("close",(I,R)=>{am.delete(E),am.size===0&&(process.off("SIGINT",Ij),process.off("SIGTERM",Cj)),(p===2||p===1&&I!==0)&&C(),I===0||!a?S({code:vj(I,R)}):P(new lv({fileName:t,code:I,signal:R}))})})}async function Aj(t,e,{cwd:r,env:s=process.env,encoding:a="utf8",strict:n=!1}){let c=["ignore","pipe","pipe"],f=[],p=[],h=fe.fromPortablePath(r);typeof s.PWD<"u"&&(s={...s,PWD:h});let E=(0,wj.default)(t,e,{cwd:h,env:s,stdio:c});return E.stdout.on("data",C=>{f.push(C)}),E.stderr.on("data",C=>{p.push(C)}),await new Promise((C,S)=>{E.on("error",P=>{let I=ze.create(r),R=Ht(I,t,ht.PATH);S(new jt(1,`Process ${R} failed to spawn`,N=>{N.reportError(1,` ${Kf(I,{label:"Thrown Error",value:_u(ht.NO_HINT,P.message)})}`)}))}),E.on("close",(P,I)=>{let R=a==="buffer"?Buffer.concat(f):Buffer.concat(f).toString(a),N=a==="buffer"?Buffer.concat(p):Buffer.concat(p).toString(a);P===0||!n?C({code:vj(P,I),stdout:R,stderr:N}):S(new CT({fileName:t,code:P,signal:I,stdout:R,stderr:N}))})})}function vj(t,e){let r=Gnt.get(e);return typeof r<"u"?128+r:t??1}function qnt(t,e,{configuration:r,report:s}){s.reportError(1,` ${Kf(r,t!==null?{label:"Exit Code",value:_u(ht.NUMBER,t)}:{label:"Exit Signal",value:_u(ht.CODE,e)})}`)}var wj,Bj,lv,CT,am,Gnt,dT=Xe(()=>{Dt();wj=ut(_U());av();Tc();xc();Bj=(s=>(s[s.Never=0]="Never",s[s.ErrorCode=1]="ErrorCode",s[s.Always=2]="Always",s))(Bj||{}),lv=class extends jt{constructor({fileName:e,code:r,signal:s}){let a=ze.create(J.cwd()),n=Ht(a,e,ht.PATH);super(1,`Child ${n} reported an error`,c=>{qnt(r,s,{configuration:a,report:c})}),this.code=vj(r,s)}},CT=class extends lv{constructor({fileName:e,code:r,signal:s,stdout:a,stderr:n}){super({fileName:e,code:r,signal:s}),this.stdout=a,this.stderr=n}};am=new Set;Gnt=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]])});function Ape(t){fpe=t}function cv(){return typeof Sj>"u"&&(Sj=fpe()),Sj}var Sj,fpe,Dj=Xe(()=>{fpe=()=>{throw new Error("Assertion failed: No libzip instance is available, and no factory was configured")}});var ppe=_((wT,Pj)=>{var Wnt=Object.assign({},Ie("fs")),bj=function(){var t=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(t=t||__filename),function(e){e=e||{};var r=typeof e<"u"?e:{},s,a;r.ready=new Promise(function(Ke,st){s=Ke,a=st});var n={},c;for(c in r)r.hasOwnProperty(c)&&(n[c]=r[c]);var f=[],p="./this.program",h=function(Ke,st){throw st},E=!1,C=!0,S="";function P(Ke){return r.locateFile?r.locateFile(Ke,S):S+Ke}var I,R,N,U;C&&(E?S=Ie("path").dirname(S)+"/":S=__dirname+"/",I=function(st,St){var lr=Me(st);return lr?St?lr:lr.toString():(N||(N=Wnt),U||(U=Ie("path")),st=U.normalize(st),N.readFileSync(st,St?null:"utf8"))},R=function(st){var St=I(st,!0);return St.buffer||(St=new Uint8Array(St)),we(St.buffer),St},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),f=process.argv.slice(2),h=function(Ke){process.exit(Ke)},r.inspect=function(){return"[Emscripten Module object]"});var W=r.print||console.log.bind(console),ee=r.printErr||console.warn.bind(console);for(c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);n=null,r.arguments&&(f=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ie=0,ue=function(Ke){ie=Ke},le;r.wasmBinary&&(le=r.wasmBinary);var me=r.noExitRuntime||!0;typeof WebAssembly!="object"&&rs("no native wasm support detected");function pe(Ke,st,St){switch(st=st||"i8",st.charAt(st.length-1)==="*"&&(st="i32"),st){case"i1":return Ve[Ke>>0];case"i8":return Ve[Ke>>0];case"i16":return mh((Ke>>1)*2);case"i32":return to((Ke>>2)*4);case"i64":return to((Ke>>2)*4);case"float":return Af((Ke>>2)*4);case"double":return dh((Ke>>3)*8);default:rs("invalid type for getValue: "+st)}return null}var Be,Ce=!1,g;function we(Ke,st){Ke||rs("Assertion failed: "+st)}function ye(Ke){var st=r["_"+Ke];return we(st,"Cannot call unknown function "+Ke+", make sure it is exported"),st}function Ae(Ke,st,St,lr,te){var Ee={string:function(qi){var Tn=0;if(qi!=null&&qi!==0){var Ga=(qi.length<<2)+1;Tn=wi(Ga),mt(qi,Tn,Ga)}return Tn},array:function(qi){var Tn=wi(qi.length);return Fe(qi,Tn),Tn}};function Oe(qi){return st==="string"?De(qi):st==="boolean"?!!qi:qi}var dt=ye(Ke),Et=[],bt=0;if(lr)for(var tr=0;tr=St)&&ke[lr];)++lr;return Z.decode(ke.subarray(Ke,lr))}function Re(Ke,st,St,lr){if(!(lr>0))return 0;for(var te=St,Ee=St+lr-1,Oe=0;Oe=55296&&dt<=57343){var Et=Ke.charCodeAt(++Oe);dt=65536+((dt&1023)<<10)|Et&1023}if(dt<=127){if(St>=Ee)break;st[St++]=dt}else if(dt<=2047){if(St+1>=Ee)break;st[St++]=192|dt>>6,st[St++]=128|dt&63}else if(dt<=65535){if(St+2>=Ee)break;st[St++]=224|dt>>12,st[St++]=128|dt>>6&63,st[St++]=128|dt&63}else{if(St+3>=Ee)break;st[St++]=240|dt>>18,st[St++]=128|dt>>12&63,st[St++]=128|dt>>6&63,st[St++]=128|dt&63}}return st[St]=0,St-te}function mt(Ke,st,St){return Re(Ke,ke,st,St)}function j(Ke){for(var st=0,St=0;St=55296&&lr<=57343&&(lr=65536+((lr&1023)<<10)|Ke.charCodeAt(++St)&1023),lr<=127?++st:lr<=2047?st+=2:lr<=65535?st+=3:st+=4}return st}function rt(Ke){var st=j(Ke)+1,St=La(st);return St&&Re(Ke,Ve,St,st),St}function Fe(Ke,st){Ve.set(Ke,st)}function Ne(Ke,st){return Ke%st>0&&(Ke+=st-Ke%st),Ke}var Pe,Ve,ke,it,Ue,x,w,b,y,F;function z(Ke){Pe=Ke,r.HEAP_DATA_VIEW=F=new DataView(Ke),r.HEAP8=Ve=new Int8Array(Ke),r.HEAP16=it=new Int16Array(Ke),r.HEAP32=x=new Int32Array(Ke),r.HEAPU8=ke=new Uint8Array(Ke),r.HEAPU16=Ue=new Uint16Array(Ke),r.HEAPU32=w=new Uint32Array(Ke),r.HEAPF32=b=new Float32Array(Ke),r.HEAPF64=y=new Float64Array(Ke)}var X=r.INITIAL_MEMORY||16777216,$,oe=[],xe=[],Te=[],lt=!1;function Ct(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Pt(r.preRun.shift());Ts(oe)}function qt(){lt=!0,Ts(xe)}function ir(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Pr(r.postRun.shift());Ts(Te)}function Pt(Ke){oe.unshift(Ke)}function gn(Ke){xe.unshift(Ke)}function Pr(Ke){Te.unshift(Ke)}var Ir=0,Or=null,on=null;function ai(Ke){Ir++,r.monitorRunDependencies&&r.monitorRunDependencies(Ir)}function Io(Ke){if(Ir--,r.monitorRunDependencies&&r.monitorRunDependencies(Ir),Ir==0&&(Or!==null&&(clearInterval(Or),Or=null),on)){var st=on;on=null,st()}}r.preloadedImages={},r.preloadedAudios={};function rs(Ke){r.onAbort&&r.onAbort(Ke),Ke+="",ee(Ke),Ce=!0,g=1,Ke="abort("+Ke+"). Build with -s ASSERTIONS=1 for more info.";var st=new WebAssembly.RuntimeError(Ke);throw a(st),st}var $s="data:application/octet-stream;base64,";function Co(Ke){return Ke.startsWith($s)}var ji="data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwDCwJAAkBBEBAJIgUEQCAFIAY7AQogBSAHOwEIIAUgAjYCBCAFQQA2AgAgBkUNASAFIAggBhBjIgY2AgwgBg0CIAUQBgtBACECIAQEQCAEQQA2AgQgBEEONgIACyABEAggAEUNBANAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwECyAFQQA2AgwLAkAgAEUEQCAFIQAMAQsgCSAFNgIACyAFIQkgAS0AAA0ACwsCQCABLQAABH8gASkDECABKQMIUQVBAAsNACABIAEtAAAEfiABKQMIIAEpAxB9BUIACyIKQv////8PgxATIQICQCAKpyIFQQNLDQAgAkUNACACQcEUIAUQPUUNAQtBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAQNAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwBCyABEAggAwRAIAMgADYCAEEBDwtBASECIABFDQADQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsLIAILvgEBBX8gAAR/IAAhAgNAIAIiBCgCACICDQALIAEEQANAIAEiAy8BCCEGIAMoAgAhASAAIQICQAJAA0ACQCACLwEIIAZHDQAgAi8BCiIFIAMvAQpHDQAgBUUNAiACKAIMIAMoAgwgBRA9RQ0CCyACKAIAIgINAAsgA0EANgIAIAQgAzYCACADIQQMAQsgAiACKAIEIAMoAgRBgAZxcjYCBCADQQA2AgAgAygCDBAGIAMQBgsgAQ0ACwsgAAUgAQsLVQICfgF/AkACQCAALQAARQ0AIAApAxAiAkIBfCIDIAJUDQAgAyAAKQMIWA0BCyAAQQA6AAAPCyAAKAIEIgRFBEAPCyAAIAM3AxAgBCACp2ogAToAAAt9AQN/IwBBEGsiAiQAIAIgATYCDEF/IQMCQCAALQAoDQACQCAAKAIAIgRFDQAgBCABEHFBf0oNACAAKAIAIQEgAEEMaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAsMAQsgACACQQxqQgRBExAOQj+HpyEDCyACQRBqJAAgAwvdAQEDfyABIAApAzBaBEAgAEEIagRAIABBADYCDCAAQRI2AggLQX8PCyAAQQhqIQIgAC0AGEECcQRAIAIEQCACQQA2AgQgAkEZNgIAC0F/DwtBfyEDAkAgACABQQAgAhBTIgRFDQAgACgCUCAEIAIQfkUNAAJ/IAEgACkDMFoEQCAAQQhqBEAgAEEANgIMIABBEjYCCAtBfwwBCyABp0EEdCICIAAoAkBqKAIEECAgACgCQCACaiICQQA2AgQgAhBAQQALDQAgACgCQCABp0EEdGpBAToADEEAIQMLIAMLpgIBBX9BfyEFAkAgACABQQBBABAmRQ0AIAAtABhBAnEEQCAAQQhqIgAEQCAAQQA2AgQgAEEZNgIAC0F/DwsCfyAAKAJAIgQgAaciBkEEdGooAgAiBUUEQCADQYCA2I14RyEHQQMMAQsgBSgCRCADRyEHIAUtAAkLIQggBCAGQQR0aiIEIQYgBCgCBCEEQQAgAiAIRiAHG0UEQAJAIAQNACAGIAUQKyIENgIEIAQNACAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0F/DwsgBCADNgJEIAQgAjoACSAEIAQoAgBBEHI2AgBBAA8LQQAhBSAERQ0AIAQgBCgCAEFvcSIANgIAIABFBEAgBBAgIAZBADYCBEEADwsgBCADNgJEIAQgCDoACQsgBQvjCAIFfwR+IAAtABhBAnEEQCAAQQhqBEAgAEEANgIMIABBGTYCCAtCfw8LIAApAzAhCwJAIANBgMAAcQRAIAAgASADQQAQTCIJQn9SDQELAn4CQAJAIAApAzAiCUIBfCIMIAApAzgiClQEQCAAKAJAIQQMAQsgCkIBhiIJQoAIIAlCgAhUGyIJQhAgCUIQVhsgCnwiCadBBHQiBK0gCkIEhkLw////D4NUDQEgACgCQCAEEDQiBEUNASAAIAk3AzggACAENgJAIAApAzAiCUIBfCEMCyAAIAw3AzAgBCAJp0EEdGoiBEIANwIAIARCADcABSAJDAELIABBCGoEQCAAQQA2AgwgAEEONgIIC0J/CyIJQgBZDQBCfw8LAkAgAUUNAAJ/QQAhBCAJIAApAzBaBEAgAEEIagRAIABBADYCDCAAQRI2AggLQX8MAQsgAC0AGEECcQRAIABBCGoEQCAAQQA2AgwgAEEZNgIIC0F/DAELAkAgAUUNACABLQAARQ0AQX8gASABECJB//8DcSADIABBCGoQNSIERQ0BGiADQYAwcQ0AIARBABAjQQNHDQAgBEECNgIICwJAIAAgAUEAQQAQTCIKQgBTIgENACAJIApRDQAgBBAQIABBCGoEQCAAQQA2AgwgAEEKNgIIC0F/DAELAkAgAUEBIAkgClEbRQ0AAkACfwJAIAAoAkAiASAJpyIFQQR0aiIGKAIAIgMEQCADKAIwIAQQYg0BCyAEIAYoAgQNARogBiAGKAIAECsiAzYCBCAEIAMNARogAEEIagRAIABBADYCDCAAQQ42AggLDAILQQEhByAGKAIAKAIwC0EAQQAgAEEIaiIDECUiCEUNAAJAAkAgASAFQQR0aiIFKAIEIgENACAGKAIAIgENAEEAIQEMAQsgASgCMCIBRQRAQQAhAQwBCyABQQBBACADECUiAUUNAQsgACgCUCAIIAlBACADEE1FDQAgAQRAIAAoAlAgAUEAEH4aCyAFKAIEIQMgBwRAIANFDQIgAy0AAEECcUUNAiADKAIwEBAgBSgCBCIBIAEoAgBBfXEiAzYCACADRQRAIAEQICAFQQA2AgQgBBAQQQAMBAsgASAGKAIAKAIwNgIwIAQQEEEADAMLIAMoAgAiAUECcQRAIAMoAjAQECAFKAIEIgMoAgAhAQsgAyAENgIwIAMgAUECcjYCAEEADAILIAQQEEF/DAELIAQQEEEAC0UNACALIAApAzBRBEBCfw8LIAAoAkAgCadBBHRqED4gACALNwMwQn8PCyAJpyIGQQR0IgEgACgCQGoQQAJAAkAgACgCQCIEIAFqIgMoAgAiBUUNAAJAIAMoAgQiAwRAIAMoAgAiAEEBcUUNAQwCCyAFECshAyAAKAJAIgQgBkEEdGogAzYCBCADRQ0CIAMoAgAhAAsgA0F+NgIQIAMgAEEBcjYCAAsgASAEaiACNgIIIAkPCyAAQQhqBEAgAEEANgIMIABBDjYCCAtCfwteAQF/IwBBEGsiAiQAAn8gACgCJEEBRwRAIABBDGoiAARAIABBADYCBCAAQRI2AgALQX8MAQsgAkEANgIIIAIgATcDACAAIAJCEEEMEA5CP4enCyEAIAJBEGokACAAC9oDAQZ/IwBBEGsiBSQAIAUgAjYCDCMAQaABayIEJAAgBEEIakHA8ABBkAEQBxogBCAANgI0IAQgADYCHCAEQX4gAGsiA0H/////ByADQf////8HSRsiBjYCOCAEIAAgBmoiADYCJCAEIAA2AhggBEEIaiEAIwBB0AFrIgMkACADIAI2AswBIANBoAFqQQBBKBAZIAMgAygCzAE2AsgBAkBBACABIANByAFqIANB0ABqIANBoAFqEEpBAEgNACAAKAJMQQBOIQcgACgCACECIAAsAEpBAEwEQCAAIAJBX3E2AgALIAJBIHEhCAJ/IAAoAjAEQCAAIAEgA0HIAWogA0HQAGogA0GgAWoQSgwBCyAAQdAANgIwIAAgA0HQAGo2AhAgACADNgIcIAAgAzYCFCAAKAIsIQIgACADNgIsIAAgASADQcgBaiADQdAAaiADQaABahBKIAJFDQAaIABBAEEAIAAoAiQRAAAaIABBADYCMCAAIAI2AiwgAEEANgIcIABBADYCECAAKAIUGiAAQQA2AhRBAAsaIAAgACgCACAIcjYCACAHRQ0ACyADQdABaiQAIAYEQCAEKAIcIgAgACAEKAIYRmtBADoAAAsgBEGgAWokACAFQRBqJAALUwEDfwJAIAAoAgAsAABBMGtBCk8NAANAIAAoAgAiAiwAACEDIAAgAkEBajYCACABIANqQTBrIQEgAiwAAUEwa0EKTw0BIAFBCmwhAQwACwALIAELuwIAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4KAAECAwQFBgcICQoLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASsDADkDAA8LIAAgAkEAEQcACwubAgAgAEUEQEEADwsCfwJAIAAEfyABQf8ATQ0BAkBB9IIBKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDAQLIAFBgLADT0EAIAFBgEBxQYDAA0cbRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMBAsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMBAsLQYSEAUEZNgIAQX8FQQELDAELIAAgAToAAEEBCwvjAQECfyACQQBHIQMCQAJAAkAgAEEDcUUNACACRQ0AIAFB/wFxIQQDQCAALQAAIARGDQIgAkEBayICQQBHIQMgAEEBaiIAQQNxRQ0BIAINAAsLIANFDQELAkAgAC0AACABQf8BcUYNACACQQRJDQAgAUH/AXFBgYKECGwhAwNAIAAoAgAgA3MiBEF/cyAEQYGChAhrcUGAgYKEeHENASAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0AIAFB/wFxIQEDQCABIAAtAABGBEAgAA8LIABBAWohACACQQFrIgINAAsLQQALeQEBfAJAIABFDQAgACsDECAAKwMgIgIgAUQAAAAAAAAAACABRAAAAAAAAAAAZBsiAUQAAAAAAADwPyABRAAAAAAAAPA/YxsgACsDKCACoaKgIgEgACsDGKFjRQ0AIAAoAgAgASAAKAIMIAAoAgQRDgAgACABOQMYCwtIAQF8AkAgAEUNACAAKwMQIAArAyAiASAAKwMoIAGhoCIBIAArAxihY0UNACAAKAIAIAEgACgCDCAAKAIEEQ4AIAAgATkDGAsLWgICfgF/An8CQAJAIAAtAABFDQAgACkDECIBQgF8IgIgAVQNACACIAApAwhYDQELIABBADoAAEEADAELQQAgACgCBCIDRQ0AGiAAIAI3AxAgAyABp2otAAALC4IEAgZ/AX4gAEEAIAEbRQRAIAIEQCACQQA2AgQgAkESNgIAC0EADwsCQAJAIAApAwhQDQAgACgCECABLQAAIgQEf0Kl6wohCSABIQMDQCAJIAStQv8Bg3whCSADLQABIgQEQCADQQFqIQMgCUL/////D4NCIX4hCQwBCwsgCacFQYUqCyIEIAAoAgBwQQJ0aiIGKAIAIgNFDQADQAJAIAMoAhwgBEcNACABIAMoAgAQOA0AAkAgAykDCEJ/UQRAIAMoAhghAQJAIAUEQCAFIAE2AhgMAQsgBiABNgIACyADEAYgACAAKQMIQgF9Igk3AwggCbogACgCACIBuER7FK5H4XqEP6JjRQ0BIAFBgQJJDQECf0EAIQMgACgCACIGIAFBAXYiBUcEQCAFEDwiB0UEQCACBEAgAkEANgIEIAJBDjYCAAtBAAwCCwJAIAApAwhCACAGG1AEQCAAKAIQIQQMAQsgACgCECEEA0AgBCADQQJ0aigCACIBBEADQCABKAIYIQIgASAHIAEoAhwgBXBBAnRqIggoAgA2AhggCCABNgIAIAIiAQ0ACwsgA0EBaiIDIAZHDQALCyAEEAYgACAFNgIAIAAgBzYCEAtBAQsNAQwFCyADQn83AxALQQEPCyADIgUoAhgiAw0ACwsgAgRAIAJBADYCBCACQQk2AgALC0EAC6UGAgl/AX4jAEHwAGsiBSQAAkACQCAARQ0AAkAgAQRAIAEpAzAgAlYNAQtBACEDIABBCGoEQCAAQQA2AgwgAEESNgIICwwCCwJAIANBCHENACABKAJAIAKnQQR0aiIGKAIIRQRAIAYtAAxFDQELQQAhAyAAQQhqBEAgAEEANgIMIABBDzYCCAsMAgsgASACIANBCHIgBUE4ahCKAUF/TARAQQAhAyAAQQhqBEAgAEEANgIMIABBFDYCCAsMAgsgA0EDdkEEcSADciIGQQRxIQcgBSkDUCEOIAUvAWghCQJAIANBIHFFIAUvAWpBAEdxIgtFDQAgBA0AIAAoAhwiBA0AQQAhAyAAQQhqBEAgAEEANgIMIABBGjYCCAsMAgsgBSkDWFAEQCAAQQBCAEEAEFIhAwwCCwJAIAdFIgwgCUEAR3EiDUEBckUEQEEAIQMgBUEAOwEwIAUgDjcDICAFIA43AxggBSAFKAJgNgIoIAVC3AA3AwAgASgCACAOIAVBACABIAIgAEEIahBeIgYNAQwDC0EAIQMgASACIAYgAEEIaiIGECYiB0UNAiABKAIAIAUpA1ggBUE4aiAHLwEMQQF2QQNxIAEgAiAGEF4iBkUNAgsCfyAGIAE2AiwCQCABKAJEIghBAWoiCiABKAJIIgdJBEAgASgCTCEHDAELIAEoAkwgB0EKaiIIQQJ0EDQiB0UEQCABQQhqBEAgAUEANgIMIAFBDjYCCAtBfwwCCyABIAc2AkwgASAINgJIIAEoAkQiCEEBaiEKCyABIAo2AkQgByAIQQJ0aiAGNgIAQQALQX9MBEAgBhALDAELAkAgC0UEQCAGIQEMAQtBJkEAIAUvAWpBAUYbIgFFBEAgAEEIagRAIABBADYCDCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==";Co(ji)||(ji=P(ji));function eo(Ke){try{if(Ke==ji&&le)return new Uint8Array(le);var st=Me(Ke);if(st)return st;if(R)return R(Ke);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(St){rs(St)}}function wo(Ke,st){var St,lr,te;try{te=eo(Ke),lr=new WebAssembly.Module(te),St=new WebAssembly.Instance(lr,st)}catch(Oe){var Ee=Oe.toString();throw ee("failed to compile wasm module: "+Ee),(Ee.includes("imported Memory")||Ee.includes("memory import"))&&ee("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),Oe}return[St,lr]}function QA(){var Ke={a:cu};function st(te,Ee){var Oe=te.exports;r.asm=Oe,Be=r.asm.g,z(Be.buffer),$=r.asm.W,gn(r.asm.h),Io("wasm-instantiate")}if(ai("wasm-instantiate"),r.instantiateWasm)try{var St=r.instantiateWasm(Ke,st);return St}catch(te){return ee("Module.instantiateWasm callback failed with error: "+te),!1}var lr=wo(ji,Ke);return st(lr[0]),r.asm}function Af(Ke){return F.getFloat32(Ke,!0)}function dh(Ke){return F.getFloat64(Ke,!0)}function mh(Ke){return F.getInt16(Ke,!0)}function to(Ke){return F.getInt32(Ke,!0)}function jn(Ke,st){F.setInt32(Ke,st,!0)}function Ts(Ke){for(;Ke.length>0;){var st=Ke.shift();if(typeof st=="function"){st(r);continue}var St=st.func;typeof St=="number"?st.arg===void 0?$.get(St)():$.get(St)(st.arg):St(st.arg===void 0?null:st.arg)}}function ro(Ke,st){var St=new Date(to((Ke>>2)*4)*1e3);jn((st>>2)*4,St.getUTCSeconds()),jn((st+4>>2)*4,St.getUTCMinutes()),jn((st+8>>2)*4,St.getUTCHours()),jn((st+12>>2)*4,St.getUTCDate()),jn((st+16>>2)*4,St.getUTCMonth()),jn((st+20>>2)*4,St.getUTCFullYear()-1900),jn((st+24>>2)*4,St.getUTCDay()),jn((st+36>>2)*4,0),jn((st+32>>2)*4,0);var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),te=(St.getTime()-lr)/(1e3*60*60*24)|0;return jn((st+28>>2)*4,te),ro.GMTString||(ro.GMTString=rt("GMT")),jn((st+40>>2)*4,ro.GMTString),st}function ou(Ke,st){return ro(Ke,st)}function au(Ke,st,St){ke.copyWithin(Ke,st,st+St)}function lu(Ke){try{return Be.grow(Ke-Pe.byteLength+65535>>>16),z(Be.buffer),1}catch{}}function TA(Ke){var st=ke.length;Ke=Ke>>>0;var St=2147483648;if(Ke>St)return!1;for(var lr=1;lr<=4;lr*=2){var te=st*(1+.2/lr);te=Math.min(te,Ke+100663296);var Ee=Math.min(St,Ne(Math.max(Ke,te),65536)),Oe=lu(Ee);if(Oe)return!0}return!1}function RA(Ke){ue(Ke)}function oa(Ke){var st=Date.now()/1e3|0;return Ke&&jn((Ke>>2)*4,st),st}function aa(){if(aa.called)return;aa.called=!0;var Ke=new Date().getFullYear(),st=new Date(Ke,0,1),St=new Date(Ke,6,1),lr=st.getTimezoneOffset(),te=St.getTimezoneOffset(),Ee=Math.max(lr,te);jn((vl()>>2)*4,Ee*60),jn((Is()>>2)*4,+(lr!=te));function Oe(An){var li=An.toTimeString().match(/\(([A-Za-z ]+)\)$/);return li?li[1]:"GMT"}var dt=Oe(st),Et=Oe(St),bt=rt(dt),tr=rt(Et);te>2)*4,bt),jn((Mi()+4>>2)*4,tr)):(jn((Mi()>>2)*4,tr),jn((Mi()+4>>2)*4,bt))}function FA(Ke){aa();var st=Date.UTC(to((Ke+20>>2)*4)+1900,to((Ke+16>>2)*4),to((Ke+12>>2)*4),to((Ke+8>>2)*4),to((Ke+4>>2)*4),to((Ke>>2)*4),0),St=new Date(st);jn((Ke+24>>2)*4,St.getUTCDay());var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),te=(St.getTime()-lr)/(1e3*60*60*24)|0;return jn((Ke+28>>2)*4,te),St.getTime()/1e3|0}var gr=typeof atob=="function"?atob:function(Ke){var st="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",St="",lr,te,Ee,Oe,dt,Et,bt,tr=0;Ke=Ke.replace(/[^A-Za-z0-9\+\/\=]/g,"");do Oe=st.indexOf(Ke.charAt(tr++)),dt=st.indexOf(Ke.charAt(tr++)),Et=st.indexOf(Ke.charAt(tr++)),bt=st.indexOf(Ke.charAt(tr++)),lr=Oe<<2|dt>>4,te=(dt&15)<<4|Et>>2,Ee=(Et&3)<<6|bt,St=St+String.fromCharCode(lr),Et!==64&&(St=St+String.fromCharCode(te)),bt!==64&&(St=St+String.fromCharCode(Ee));while(tr0||(Ct(),Ir>0))return;function st(){Qn||(Qn=!0,r.calledRun=!0,!Ce&&(qt(),s(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),ir()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),st()},1)):st()}if(r.run=Ac,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return Ac(),e}}();typeof wT=="object"&&typeof Pj=="object"?Pj.exports=bj:typeof define=="function"&&define.amd?define([],function(){return bj}):typeof wT=="object"&&(wT.createModule=bj)});var Up,hpe,gpe,dpe=Xe(()=>{Up=["number","number"],hpe=(Z=>(Z[Z.ZIP_ER_OK=0]="ZIP_ER_OK",Z[Z.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",Z[Z.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",Z[Z.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",Z[Z.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",Z[Z.ZIP_ER_READ=5]="ZIP_ER_READ",Z[Z.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",Z[Z.ZIP_ER_CRC=7]="ZIP_ER_CRC",Z[Z.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",Z[Z.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",Z[Z.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",Z[Z.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",Z[Z.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",Z[Z.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",Z[Z.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",Z[Z.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",Z[Z.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",Z[Z.ZIP_ER_EOF=17]="ZIP_ER_EOF",Z[Z.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",Z[Z.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",Z[Z.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",Z[Z.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",Z[Z.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",Z[Z.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",Z[Z.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",Z[Z.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",Z[Z.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",Z[Z.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",Z[Z.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",Z[Z.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",Z[Z.ZIP_ER_TELL=30]="ZIP_ER_TELL",Z[Z.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",Z))(hpe||{}),gpe=t=>({get HEAPU8(){return t.HEAPU8},errors:hpe,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint32S:t._malloc(4),malloc:t._malloc,free:t._free,getValue:t.getValue,openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...Up,"number","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...Up,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...Up,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...Up,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...Up,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...Up,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number",...Up,"number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...Up,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...Up,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"])},struct:{statS:t.cwrap("zipstruct_statS","number",[]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}})});function xj(t,e){let r=t.indexOf(e);if(r<=0)return null;let s=r;for(;r>=0&&(s=r+e.length,t[s]!==J.sep);){if(t[r-1]===J.sep)return null;r=t.indexOf(e,s)}return t.length>s&&t[s]!==J.sep?null:t.slice(0,s)}var $f,mpe=Xe(()=>{Dt();Dt();eA();$f=class t extends e0{static async openPromise(e,r){let s=new t(r);try{return await e(s)}finally{s.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,s=e.readOnlyArchives,a=typeof r>"u"?f=>xj(f,".zip"):f=>{for(let p of r){let h=xj(f,p);if(h)return h}return null},n=(f,p)=>new As(p,{baseFs:f,readOnly:s,stats:f.statSync(p),customZipImplementation:e.customZipImplementation}),c=async(f,p)=>{let h={baseFs:f,readOnly:s,stats:await f.statPromise(p),customZipImplementation:e.customZipImplementation};return()=>new As(p,h)};super({...e,factorySync:n,factoryPromise:c,getMountPoint:a})}}});var kj,BI,Qj=Xe(()=>{Dj();kj=class extends Error{constructor(e,r){super(e),this.name="Libzip Error",this.code=r}},BI=class{constructor(e){this.filesShouldBeCached=!0;let r="buffer"in e?e.buffer:e.baseFs.readFileSync(e.path);this.libzip=cv();let s=this.libzip.malloc(4);try{let c=0;e.readOnly&&(c|=this.libzip.ZIP_RDONLY);let f=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(f,c,s),this.lzSource=f}catch(p){throw this.libzip.source.free(f),p}if(this.zip===0){let p=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(p,this.libzip.getValue(s,"i32")),this.makeLibzipError(p)}}finally{this.libzip.free(s)}let a=this.libzip.getNumEntries(this.zip,0),n=new Array(a);for(let c=0;c>>0,n=this.libzip.struct.statMtime(r)>>>0,c=this.libzip.struct.statCrc(r)>>>0;return{size:a,mtime:n,crc:c}}makeLibzipError(e){let r=this.libzip.struct.errorCodeZip(e),s=this.libzip.error.strerror(e),a=new kj(s,this.libzip.errors[r]);if(r===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${a.message}`);return a}setFileSource(e,r,s){let a=this.allocateSource(s);try{let n=this.libzip.file.add(this.zip,e,a,this.libzip.ZIP_FL_OVERWRITE);if(n===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(r!==null&&this.libzip.file.setCompression(this.zip,n,0,r[0],r[1])===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return n}catch(n){throw this.libzip.source.free(a),n}}setMtime(e,r){if(this.libzip.file.setMtime(this.zip,e,0,r,0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getExternalAttributes(e){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let s=this.libzip.getValue(this.libzip.uint08S,"i8")>>>0,a=this.libzip.getValue(this.libzip.uint32S,"i32")>>>0;return[s,a]}setExternalAttributes(e,r,s){if(this.libzip.file.setExternalAttributes(this.zip,e,0,0,r,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}locate(e){return this.libzip.name.locate(this.zip,e,0)}getFileSource(e){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statCompSize(r),n=this.libzip.struct.statCompMethod(r),c=this.libzip.malloc(a);try{let f=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(f===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let p=this.libzip.fread(f,c,a,0);if(p===-1)throw this.makeLibzipError(this.libzip.file.getError(f));if(pa)throw new Error("Overread");let h=this.libzip.HEAPU8.subarray(c,c+a);return{data:Buffer.from(h),compressionMethod:n}}finally{this.libzip.fclose(f)}}finally{this.libzip.free(c)}}deleteEntry(e){if(this.libzip.delete(this.zip,e)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}addDirectory(e){let r=this.libzip.dir.add(this.zip,e);if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return r}getBufferAndClose(){try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let e=this.libzip.source.tell(this.lzSource);if(e===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.malloc(e);if(!r)throw new Error("Couldn't allocate enough memory");try{let s=this.libzip.source.read(this.lzSource,r,e);if(s===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(se)throw new Error("Overread");let a=Buffer.from(this.libzip.HEAPU8.subarray(r,r+e));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(a=Buffer.concat([a,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),a}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource)}}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:s,byteLength:a}=this.allocateBuffer(e),n=this.libzip.source.fromUnattachedBuffer(s,a,0,1,r);if(n===0)throw this.libzip.free(r),this.makeLibzipError(r);return n}allocateSource(e){let{buffer:r,byteLength:s}=this.allocateBuffer(e),a=this.libzip.source.fromBuffer(this.zip,r,s,0,1);if(a===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return a}discard(){this.libzip.discard(this.zip)}}});function Ynt(t){if(typeof t=="string"&&String(+t)===t)return+t;if(typeof t=="number"&&Number.isFinite(t))return t<0?Date.now()/1e3:t;if(ype.types.isDate(t))return t.getTime()/1e3;throw new Error("Invalid time")}function BT(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var xa,Tj,ype,Rj,lm,Fj,Nj,Epe,As,vT=Xe(()=>{Dt();Dt();Dt();Dt();Dt();Dt();xa=Ie("fs"),Tj=Ie("stream"),ype=Ie("util"),Rj=ut(Ie("zlib"));Qj();lm=3,Fj=0,Nj=8,Epe="mixed";As=class extends Uf{constructor(r,s={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;s.readOnly&&(this.readOnly=!0);let a=s;this.level=typeof a.level<"u"?a.level:Epe;let n=s.customZipImplementation??BI;if(typeof r=="string"){let{baseFs:f=new Yn}=a;this.baseFs=f,this.path=r}else this.path=null,this.baseFs=null;if(s.stats)this.stats=s.stats;else if(typeof r=="string")try{this.stats=this.baseFs.statSync(r)}catch(f){if(f.code==="ENOENT"&&a.create)this.stats=$a.makeDefaultStats();else throw f}else this.stats=$a.makeDefaultStats();typeof r=="string"?s.create?this.zipImpl=new n({buffer:BT(),readOnly:this.readOnly}):this.zipImpl=new n({path:r,baseFs:this.baseFs,readOnly:this.readOnly,size:this.stats.size}):this.zipImpl=new n({buffer:r??BT(),readOnly:this.readOnly}),this.listings.set(vt.root,new Set);let c=this.zipImpl.getListings();for(let f=0;f{this.closeSync(f)}})}async readPromise(r,s,a,n,c){return this.readSync(r,s,a,n,c)}readSync(r,s,a=0,n=s.byteLength,c=-1){let f=this.fds.get(r);if(typeof f>"u")throw or.EBADF("read");let p=c===-1||c===null?f.cursor:c,h=this.readFileSync(f.p);h.copy(s,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(c===-1||c===null)&&(f.cursor+=E),E}async writePromise(r,s,a,n,c){return typeof s=="string"?this.writeSync(r,s,c):this.writeSync(r,s,a,n,c)}writeSync(r,s,a,n,c){throw typeof this.fds.get(r)>"u"?or.EBADF("read"):new Error("Unimplemented")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>"u")throw or.EBADF("read");this.fds.delete(r)}createReadStream(r,{encoding:s}={}){if(r===null)throw new Error("Unimplemented");let a=this.openSync(r,"r"),n=Object.assign(new Tj.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(f,p)=>{clearImmediate(c),this.closeSync(a),p(f)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),c=setImmediate(async()=>{try{let f=await this.readFilePromise(r,s);n.bytesRead=f.length,n.end(f)}catch(f){n.destroy(f)}});return n}createWriteStream(r,{encoding:s}={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);if(r===null)throw new Error("Unimplemented");let a=[],n=this.openSync(r,"w"),c=Object.assign(new Tj.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(f,p)=>{try{f?p(f):(this.writeFileSync(r,Buffer.concat(a),s),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){c.destroy()},bytesWritten:0,path:r,pending:!1});return c.on("data",f=>{let p=Buffer.from(f);c.bytesWritten+=p.length,a.push(p)}),c}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let s=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`lstat '${r}'`);return s}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw or.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=J.resolve(vt.root,r);return this.entries.has(a)||this.listings.has(a)}let s;try{s=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return s===void 0?!1:this.entries.has(s)||this.listings.has(s)}async accessPromise(r,s){return this.accessSync(r,s)}accessSync(r,s=xa.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`access '${r}'`);if(this.readOnly&&s&xa.constants.W_OK)throw or.EROFS(`access '${r}'`)}async statPromise(r,s={bigint:!1}){return s.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`stat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,s)}}async fstatPromise(r,s){return this.fstatSync(r,s)}fstatSync(r,s){let a=this.fds.get(r);if(typeof a>"u")throw or.EBADF("fstatSync");let{p:n}=a,c=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(c)&&!this.listings.has(c))throw or.ENOENT(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(c))throw or.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,c,s)}async lstatPromise(r,s={bigint:!1}){return s.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`lstat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,s)}}statImpl(r,s,a={}){let n=this.entries.get(s);if(typeof n<"u"){let c=this.zipImpl.stat(n),f=c.crc,p=c.size,h=c.mtime*1e3,E=this.stats.uid,C=this.stats.gid,S=512,P=Math.ceil(c.size/S),I=h,R=h,N=h,U=new Date(I),W=new Date(R),ee=new Date(N),ie=new Date(h),ue=this.listings.has(s)?xa.constants.S_IFDIR:this.isSymbolicLink(n)?xa.constants.S_IFLNK:xa.constants.S_IFREG,le=ue===xa.constants.S_IFDIR?493:420,me=ue|this.getUnixMode(n,le)&511,pe=Object.assign(new $a.StatEntry,{uid:E,gid:C,size:p,blksize:S,blocks:P,atime:U,birthtime:W,ctime:ee,mtime:ie,atimeMs:I,birthtimeMs:R,ctimeMs:N,mtimeMs:h,mode:me,crc:f});return a.bigint===!0?$a.convertToBigIntStats(pe):pe}if(this.listings.has(s)){let c=this.stats.uid,f=this.stats.gid,p=0,h=512,E=0,C=this.stats.mtimeMs,S=this.stats.mtimeMs,P=this.stats.mtimeMs,I=this.stats.mtimeMs,R=new Date(C),N=new Date(S),U=new Date(P),W=new Date(I),ee=xa.constants.S_IFDIR|493,ue=Object.assign(new $a.StatEntry,{uid:c,gid:f,size:p,blksize:h,blocks:E,atime:R,birthtime:N,ctime:U,mtime:W,atimeMs:C,birthtimeMs:S,ctimeMs:P,mtimeMs:I,mode:ee,crc:0});return a.bigint===!0?$a.convertToBigIntStats(ue):ue}throw new Error("Unreachable")}getUnixMode(r,s){let[a,n]=this.zipImpl.getExternalAttributes(r);return a!==lm?s:n>>>16}registerListing(r){let s=this.listings.get(r);if(s)return s;this.registerListing(J.dirname(r)).add(J.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,s){this.registerListing(J.dirname(r)).add(J.basename(r)),this.entries.set(r,s)}unregisterListing(r){this.listings.delete(r),this.listings.get(J.dirname(r))?.delete(J.basename(r))}unregisterEntry(r){this.unregisterListing(r);let s=this.entries.get(r);this.entries.delete(r),!(typeof s>"u")&&(this.fileSources.delete(s),this.isSymbolicLink(s)&&this.symlinkCount--)}deleteEntry(r,s){this.unregisterEntry(r),this.zipImpl.deleteEntry(s)}resolveFilename(r,s,a=!0,n=!0){if(!this.ready)throw or.EBUSY(`archive closed, ${r}`);let c=J.resolve(vt.root,s);if(c==="/")return vt.root;let f=this.entries.get(c);if(a&&f!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(f)){let p=this.getFileSource(f).toString();return this.resolveFilename(r,J.resolve(J.dirname(c),p),!0,n)}else return c;for(;;){let p=this.resolveFilename(r,J.dirname(c),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw or.ENOENT(r)}if(!h)throw or.ENOTDIR(r);if(c=J.resolve(p,J.basename(c)),!a||this.symlinkCount===0)break;let C=this.zipImpl.locate(c.slice(1));if(C===-1)break;if(this.isSymbolicLink(C)){let S=this.getFileSource(C).toString();c=J.resolve(J.dirname(c),S)}else break}return c}setFileSource(r,s){let a=Buffer.isBuffer(s)?s:Buffer.from(s),n=J.relative(vt.root,r),c=null;this.level!=="mixed"&&(c=[this.level===0?Fj:Nj,this.level]);let f=this.zipImpl.setFileSource(n,c,a);return this.fileSources.set(f,a),f}isSymbolicLink(r){if(this.symlinkCount===0)return!1;let[s,a]=this.zipImpl.getExternalAttributes(r);return s!==lm?!1:(a>>>16&xa.constants.S_IFMT)===xa.constants.S_IFLNK}getFileSource(r,s={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<"u")return a;let{data:n,compressionMethod:c}=this.zipImpl.getFileSource(r);if(c===Fj)return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,n),n;if(c===Nj){if(s.asyncDecompress)return new Promise((f,p)=>{Rj.default.inflateRaw(n,(h,E)=>{h?p(h):(this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,E),f(E))})});{let f=Rj.default.inflateRawSync(n);return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,f),f}}else throw new Error(`Unsupported compression method: ${c}`)}async fchmodPromise(r,s){return this.chmodPromise(this.fdToPath(r,"fchmod"),s)}fchmodSync(r,s){return this.chmodSync(this.fdToPath(r,"fchmodSync"),s)}async chmodPromise(r,s){return this.chmodSync(r,s)}chmodSync(r,s){if(this.readOnly)throw or.EROFS(`chmod '${r}'`);s&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>"u")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let f=this.getUnixMode(n,xa.constants.S_IFREG|0)&-512|s;this.zipImpl.setExternalAttributes(n,lm,f<<16)}async fchownPromise(r,s,a){return this.chownPromise(this.fdToPath(r,"fchown"),s,a)}fchownSync(r,s,a){return this.chownSync(this.fdToPath(r,"fchownSync"),s,a)}async chownPromise(r,s,a){return this.chownSync(r,s,a)}chownSync(r,s,a){throw new Error("Unimplemented")}async renamePromise(r,s){return this.renameSync(r,s)}renameSync(r,s){throw new Error("Unimplemented")}async copyFilePromise(r,s,a){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}copyFileSync(r,s,a=0){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=this.getFileSource(n),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}prepareCopyFile(r,s,a=0){if(this.readOnly)throw or.EROFS(`copyfile '${r} -> '${s}'`);if(a&xa.constants.COPYFILE_FICLONE_FORCE)throw or.ENOSYS("unsupported clone operation",`copyfile '${r}' -> ${s}'`);let n=this.resolveFilename(`copyfile '${r} -> ${s}'`,r),c=this.entries.get(n);if(typeof c>"u")throw or.EINVAL(`copyfile '${r}' -> '${s}'`);let f=this.resolveFilename(`copyfile '${r}' -> ${s}'`,s),p=this.entries.get(f);if(a&(xa.constants.COPYFILE_EXCL|xa.constants.COPYFILE_FICLONE_FORCE)&&typeof p<"u")throw or.EEXIST(`copyfile '${r}' -> '${s}'`);return{indexSource:c,resolvedDestP:f,indexDest:p}}async appendFilePromise(r,s,a){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFilePromise(r,s,a)}appendFileSync(r,s,a={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFileSync(r,s,a)}fdToPath(r,s){let a=this.fds.get(r)?.p;if(typeof a>"u")throw or.EBADF(s);return a}async writeFilePromise(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([await this.getFileSource(f,{asyncDecompress:!0}),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&await this.chmodPromise(p,c)}writeFileSync(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([this.getFileSource(f),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&this.chmodSync(p,c)}prepareWriteFile(r,s){if(typeof r=="number"&&(r=this.fdToPath(r,"read")),this.readOnly)throw or.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw or.EISDIR(`open '${r}'`);let n=null,c=null;typeof s=="string"?n=s:typeof s=="object"&&({encoding:n=null,mode:c=null}=s);let f=this.entries.get(a);return{encoding:n,mode:c,resolvedP:a,index:f}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw or.EROFS(`unlink '${r}'`);let s=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(s))throw or.EISDIR(`unlink '${r}'`);let a=this.entries.get(s);if(typeof a>"u")throw or.EINVAL(`unlink '${r}'`);this.deleteEntry(s,a)}async utimesPromise(r,s,a){return this.utimesSync(r,s,a)}utimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,s,a){return this.lutimesSync(r,s,a)}lutimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,s){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error("Unreachable");this.zipImpl.setMtime(a,Ynt(s))}async mkdirPromise(r,s){return this.mkdirSync(r,s)}mkdirSync(r,{mode:s=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:s});if(this.readOnly)throw or.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw or.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,s)}async rmdirPromise(r,s){return this.rmdirSync(r,s)}rmdirSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rmdir '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rmdir '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,c)}async rmPromise(r,s){return this.rmSync(r,s)}rmSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rm '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rm '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rm '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rm '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rm '${r}'`);this.deleteEntry(r,c)}hydrateDirectory(r){let s=this.zipImpl.addDirectory(J.relative(vt.root,r));return this.registerListing(r),this.registerEntry(r,s),s}async linkPromise(r,s){return this.linkSync(r,s)}linkSync(r,s){throw or.EOPNOTSUPP(`link '${r}' -> '${s}'`)}async symlinkPromise(r,s){return this.symlinkSync(r,s)}symlinkSync(r,s){if(this.readOnly)throw or.EROFS(`symlink '${r}' -> '${s}'`);let a=this.resolveFilename(`symlink '${r}' -> '${s}'`,s);if(this.listings.has(a))throw or.EISDIR(`symlink '${r}' -> '${s}'`);if(this.entries.has(a))throw or.EEXIST(`symlink '${r}' -> '${s}'`);let n=this.setFileSource(a,r);this.registerEntry(a,n),this.zipImpl.setExternalAttributes(n,lm,(xa.constants.S_IFLNK|511)<<16),this.symlinkCount+=1}async readFilePromise(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return s?a.toString(s):a}readFileSync(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=this.readFileBuffer(r);return s?a.toString(s):a}readFileBuffer(r,s={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdToPath(r,"read"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`open '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw or.EISDIR("read");let n=this.entries.get(a);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,s)}async readdirPromise(r,s){return this.readdirSync(r,s)}readdirSync(r,s){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`scandir '${r}'`);if(s?.recursive)if(s?.withFileTypes){let c=Array.from(n,f=>Object.assign(this.statImpl("lstat",J.join(r,f)),{name:f,path:vt.dot,parentPath:vt.dot}));for(let f of c){if(!f.isDirectory())continue;let p=J.join(f.path,f.name),h=this.listings.get(J.join(a,p));for(let E of h)c.push(Object.assign(this.statImpl("lstat",J.join(r,p,E)),{name:E,path:p,parentPath:p}))}return c}else{let c=[...n];for(let f of c){let p=this.listings.get(J.join(a,f));if(!(typeof p>"u"))for(let h of p)c.push(J.join(f,h))}return c}else return s?.withFileTypes?Array.from(n,c=>Object.assign(this.statImpl("lstat",J.join(r,c)),{name:c,path:void 0,parentPath:void 0})):[...n]}async readlinkPromise(r){let s=this.prepareReadlink(r);return(await this.getFileSource(s,{asyncDecompress:!0})).toString()}readlinkSync(r){let s=this.prepareReadlink(r);return this.getFileSource(s).toString()}prepareReadlink(r){let s=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`readlink '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(s))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(s))throw or.EINVAL(`readlink '${r}'`);let a=this.entries.get(s);if(a===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(a))throw or.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=await this.getFileSource(n,{asyncDecompress:!0}),f=Buffer.alloc(s,0);return c.copy(f),await this.writeFilePromise(r,f)}truncateSync(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=this.getFileSource(n),f=Buffer.alloc(s,0);return c.copy(f),this.writeFileSync(r,f)}async ftruncatePromise(r,s){return this.truncatePromise(this.fdToPath(r,"ftruncate"),s)}ftruncateSync(r,s){return this.truncateSync(this.fdToPath(r,"ftruncateSync"),s)}watch(r,s,a){let n;switch(typeof s){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=s);break}if(!n)return{on:()=>{},close:()=>{}};let c=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(c)}}}watchFile(r,s,a){let n=J.resolve(vt.root,r);return sE(this,n,s,a)}unwatchFile(r,s){let a=J.resolve(vt.root,r);return md(this,a,s)}}});function Cpe(t,e,r=Buffer.alloc(0),s){let a=new As(r),n=C=>C===e||C.startsWith(`${e}/`)?C.slice(0,e.length):null,c=async(C,S)=>()=>a,f=(C,S)=>a,p={...t},h=new Yn(p),E=new e0({baseFs:h,getMountPoint:n,factoryPromise:c,factorySync:f,magicByte:21,maxAge:1/0,typeCheck:s?.typeCheck});return U2(Ipe.default,new t0(E)),a}var Ipe,wpe=Xe(()=>{Dt();Ipe=ut(Ie("fs"));vT()});var Bpe=Xe(()=>{mpe();vT();wpe()});var Oj,uv,ST,vpe=Xe(()=>{Dt();vT();Oj={CENTRAL_DIRECTORY:33639248,END_OF_CENTRAL_DIRECTORY:101010256},uv=22,ST=class t{constructor(e){this.filesShouldBeCached=!1;if("buffer"in e)throw new Error("Buffer based zip archives are not supported");if(!e.readOnly)throw new Error("Writable zip archives are not supported");this.baseFs=e.baseFs,this.fd=this.baseFs.openSync(e.path,"r");try{this.entries=t.readZipSync(this.fd,this.baseFs,e.size)}catch(r){throw this.baseFs.closeSync(this.fd),this.fd="closed",r}}static readZipSync(e,r,s){if(s=0;N--)if(n.readUInt32LE(N)===Oj.END_OF_CENTRAL_DIRECTORY){a=N;break}if(a===-1)throw new Error("Not a zip archive")}let c=n.readUInt16LE(a+10),f=n.readUInt32LE(a+12),p=n.readUInt32LE(a+16),h=n.readUInt16LE(a+20);if(a+h+uv>n.length)throw new Error("Zip archive inconsistent");if(c==65535||f==4294967295||p==4294967295)throw new Error("Zip 64 is not supported");if(f>s)throw new Error("Zip archive inconsistent");if(c>f/46)throw new Error("Zip archive inconsistent");let E=Buffer.alloc(f);if(r.readSync(e,E,0,E.length,p)!==E.length)throw new Error("Zip archive inconsistent");let C=[],S=0,P=0,I=0;for(;PE.length)throw new Error("Zip archive inconsistent");if(E.readUInt32LE(S)!==Oj.CENTRAL_DIRECTORY)throw new Error("Zip archive inconsistent");let N=E.readUInt16LE(S+4)>>>8;if(E.readUInt16LE(S+8)&1)throw new Error("Encrypted zip files are not supported");let W=E.readUInt16LE(S+10),ee=E.readUInt32LE(S+16),ie=E.readUInt16LE(S+28),ue=E.readUInt16LE(S+30),le=E.readUInt16LE(S+32),me=E.readUInt32LE(S+42),pe=E.toString("utf8",S+46,S+46+ie).replaceAll("\0"," ");if(pe.includes("\0"))throw new Error("Invalid ZIP file");let Be=E.readUInt32LE(S+20),Ce=E.readUInt32LE(S+38);C.push({name:pe,os:N,mtime:fi.SAFE_TIME,crc:ee,compressionMethod:W,isSymbolicLink:N===lm&&(Ce>>>16&fi.S_IFMT)===fi.S_IFLNK,size:E.readUInt32LE(S+24),compressedSize:Be,externalAttributes:Ce,localHeaderOffset:me}),I+=Be,P+=1,S+=46+ie+ue+le}if(I>s)throw new Error("Zip archive inconsistent");if(S!==E.length)throw new Error("Zip archive inconsistent");return C}getExternalAttributes(e){let r=this.entries[e];return[r.os,r.externalAttributes]}getListings(){return this.entries.map(e=>e.name)}getSymlinkCount(){let e=0;for(let r of this.entries)r.isSymbolicLink&&(e+=1);return e}stat(e){let r=this.entries[e];return{crc:r.crc,mtime:r.mtime,size:r.size}}locate(e){for(let r=0;rEpe,DEFLATE:()=>Nj,JsZipImpl:()=>ST,LibZipImpl:()=>BI,STORE:()=>Fj,ZIP_UNIX:()=>lm,ZipFS:()=>As,ZipOpenFS:()=>$f,getArchivePart:()=>xj,getLibzipPromise:()=>Jnt,getLibzipSync:()=>Vnt,makeEmptyArchive:()=>BT,mountMemoryDrive:()=>Cpe});function Vnt(){return cv()}async function Jnt(){return cv()}var Spe,eA=Xe(()=>{Dj();Spe=ut(ppe());dpe();Bpe();vpe();Qj();Ape(()=>{let t=(0,Spe.default)();return gpe(t)})});var Av,Dpe=Xe(()=>{Dt();Yt();pv();Av=class extends ot{constructor(){super(...arguments);this.cwd=ge.String("--cwd",process.cwd(),{description:"The directory to run the command in"});this.commandName=ge.String();this.args=ge.Proxy()}static{this.usage={description:"run a command using yarn's portable shell",details:` - This command will run a command using Yarn's portable shell. - - Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell. - - Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell. - - Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used. - - For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md. - `,examples:[["Run a simple command","$0 echo Hello"],["Run a command with a glob pattern","$0 echo '*.js'"],["Run a command with a redirection","$0 echo Hello World '>' hello.txt"],["Run a command with an escaped glob pattern (The double escape is needed in Unix shells)",`$0 echo '"*.js"'`],["Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)",'$0 "GREETING=Hello echo $GREETING World"']]}}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await vI(r,[],{cwd:fe.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}}});var Vl,bpe=Xe(()=>{Vl=class extends Error{constructor(e){super(e),this.name="ShellError"}}});var PT={};Vt(PT,{fastGlobOptions:()=>kpe,isBraceExpansion:()=>Lj,isGlobPattern:()=>Knt,match:()=>znt,micromatchOptions:()=>bT});function Knt(t){if(!DT.default.scan(t,bT).isGlob)return!1;try{DT.default.parse(t,bT)}catch{return!1}return!0}function znt(t,{cwd:e,baseFs:r}){return(0,Ppe.default)(t,{...kpe,cwd:fe.fromPortablePath(e),fs:ax(xpe.default,new t0(r))})}function Lj(t){return DT.default.scan(t,bT).isBrace}var Ppe,xpe,DT,bT,kpe,Qpe=Xe(()=>{Dt();Ppe=ut(BQ()),xpe=ut(Ie("fs")),DT=ut(Go()),bT={strictBrackets:!0},kpe={onlyDirectories:!1,onlyFiles:!1}});function Mj(){}function Uj(){for(let t of cm)t.kill()}function Npe(t,e,r,s){return a=>{let n=a[0]instanceof tA.Transform?"pipe":a[0],c=a[1]instanceof tA.Transform?"pipe":a[1],f=a[2]instanceof tA.Transform?"pipe":a[2],p=(0,Rpe.default)(t,e,{...s,stdio:[n,c,f]});return cm.add(p),cm.size===1&&(process.on("SIGINT",Mj),process.on("SIGTERM",Uj)),a[0]instanceof tA.Transform&&a[0].pipe(p.stdin),a[1]instanceof tA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof tA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on("error",E=>{switch(cm.delete(p),cm.size===0&&(process.off("SIGINT",Mj),process.off("SIGTERM",Uj)),E.code){case"ENOENT":a[2].write(`command not found: ${t} -`),h(127);break;case"EACCES":a[2].write(`permission denied: ${t} -`),h(128);break;default:a[2].write(`uncaught error: ${E.message} -`),h(1);break}}),p.on("close",E=>{cm.delete(p),cm.size===0&&(process.off("SIGINT",Mj),process.off("SIGTERM",Uj)),h(E!==null?E:129)})})}}}function Ope(t){return e=>{let r=e[0]==="pipe"?new tA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function xT(t,e){return Hj.start(t,e)}function Tpe(t,e=null){let r=new tA.PassThrough,s=new Fpe.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` -`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",t(e!==null?`${e} ${p}`:p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&t(e!==null?`${e} ${n}`:n)}),r}function Lpe(t,{prefix:e}){return{stdout:Tpe(r=>t.stdout.write(`${r} -`),t.stdout.isTTY?e:null),stderr:Tpe(r=>t.stderr.write(`${r} -`),t.stderr.isTTY?e:null)}}var Rpe,tA,Fpe,cm,Oc,_j,Hj,jj=Xe(()=>{Rpe=ut(_U()),tA=Ie("stream"),Fpe=Ie("string_decoder"),cm=new Set;Oc=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},_j=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Hj=class t{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:s,stderr:a}){let n=new t(null,e);return n.stdin=r,n.stdout=s,n.stderr=a,n}pipeTo(e,r=1){let s=new t(this,e),a=new _j;return s.pipe=a,s.stdout=this.stdout,s.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),s}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let s;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");s=this.stderr,e[2]=s.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),s.close(),n))}async run(){let e=[];for(let s=this;s;s=s.ancestor)e.push(s.exec());return(await Promise.all(e))[0]}}});var mv={};Vt(mv,{EntryCommand:()=>Av,ShellError:()=>Vl,execute:()=>vI,globUtils:()=>PT});function Mpe(t,e,r){let s=new Jl.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(s,{end:!1}),(e&2)===2&&r.stdin instanceof Jl.Writable&&s.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stderr,{end:!1});break;default:throw new Vl(`Bad file descriptor: "${t}"`)}return s}function QT(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function Znt(t,e,r){let s=[],a=new Jl.PassThrough;return a.on("data",n=>s.push(n)),await TT(t,e,QT(r,{stdout:a})),Buffer.concat(s).toString().replace(/[\r\n]+$/,"")}async function Upe(t,e,r){let s=t.map(async n=>{let c=await um(n.args,e,r);return{name:n.name,value:c.join(" ")}});return(await Promise.all(s)).reduce((n,c)=>(n[c.name]=c.value,n),{})}function kT(t){return t.match(/[^ \r\n\t]+/g)||[]}async function Wpe(t,e,r,s,a=s){switch(t.name){case"$":s(String(process.pid));break;case"#":s(String(e.args.length));break;case"@":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let c=kT(n);for(let f=0;f=0&&n"u"&&(t.defaultValue?c=(await um(t.defaultValue,e,r)).join(" "):t.alternativeValue&&(c="")),typeof c>"u")throw f?new Vl(`Unbound argument #${n}`):new Vl(`Unbound variable "${t.name}"`);if(t.quoted)s(c);else{let p=kT(c);for(let E=0;Es.push(n));let a=Number(s.join(" "));return Number.isNaN(a)?hv({type:"variable",name:s.join(" ")},e,r):hv({type:"number",value:a},e,r)}else return $nt[t.type](await hv(t.left,e,r),await hv(t.right,e,r))}async function um(t,e,r){let s=new Map,a=[],n=[],c=E=>{n.push(E)},f=()=>{n.length>0&&a.push(n.join("")),n=[]},p=E=>{c(E),f()},h=(E,C,S)=>{let P=JSON.stringify({type:E,fd:C}),I=s.get(P);typeof I>"u"&&s.set(P,I=[]),I.push(S)};for(let E of t){let C=!1;switch(E.type){case"redirection":{let S=await um(E.args,e,r);for(let P of S)h(E.subtype,E.fd,P)}break;case"argument":for(let S of E.segments)switch(S.type){case"text":c(S.text);break;case"glob":c(S.pattern),C=!0;break;case"shell":{let P=await Znt(S.shell,e,r);if(S.quoted)c(P);else{let I=kT(P);for(let R=0;R"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let P=await e.glob.match(S,{cwd:r.cwd,baseFs:e.baseFs});if(P.length===0){let I=Lj(S)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new Vl(`No matches found: "${S}"${I}`)}for(let I of P.sort())p(I)}}if(s.size>0){let E=[];for(let[C,S]of s.entries())E.splice(E.length,0,C,String(S.length),...S);a.splice(0,0,"__ysh_set_redirects",...E,"--")}return a}function gv(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let s=fe.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<"u"&&(a={...a,PWD:s});let[n,...c]=t;if(n==="command")return Npe(c[0],c.slice(1),e,{cwd:s,env:a});let f=e.builtins.get(n);if(typeof f>"u")throw new Error(`Assertion failed: A builtin should exist for "${n}"`);return Ope(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:C,stdout:S,stderr:P}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await f(c,e,r)}finally{r.stdin=C,r.stdout=S,r.stderr=P}})}function eit(t,e,r){return s=>{let a=new Jl.PassThrough,n=TT(t,e,QT(r,{stdin:a}));return{stdin:a,promise:n}}}function tit(t,e,r){return s=>{let a=new Jl.PassThrough,n=TT(t,e,r);return{stdin:a,promise:n}}}function _pe(t,e,r,s){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.hasOwn(s.procedures,a));return s.procedures={...s.procedures},s.procedures[a]=t,gv([...e,"__ysh_run_procedure",a],r,s)}}async function Hpe(t,e,r){let s=t,a=null,n=null;for(;s;){let c=s.then?{...r}:r,f;switch(s.type){case"command":{let p=await um(s.args,e,r),h=await Upe(s.envs,e,r);f=s.envs.length?gv(p,e,QT(c,{environment:h})):gv(p,e,c)}break;case"subshell":{let p=await um(s.args,e,r),h=eit(s.subshell,e,c);f=_pe(h,p,e,c)}break;case"group":{let p=await um(s.args,e,r),h=tit(s.group,e,c);f=_pe(h,p,e,c)}break;case"envs":{let p=await Upe(s.envs,e,r);c.environment={...c.environment,...p},f=gv(["true"],e,c)}break}if(typeof f>"u")throw new Error("Assertion failed: An action should have been generated");if(a===null)n=xT(f,{stdin:new Oc(c.stdin),stdout:new Oc(c.stdout),stderr:new Oc(c.stderr)});else{if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(a){case"|":n=n.pipeTo(f,1);break;case"|&":n=n.pipeTo(f,3);break}}s.then?(a=s.then.type,s=s.then.chain):s=null}if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await n.run()}async function rit(t,e,r,{background:s=!1}={}){function a(n){let c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[n%c.length];return jpe.default.hex(f)}if(s){let n=r.nextBackgroundJobIndex++,c=a(n),f=`[${n}]`,p=c(f),{stdout:h,stderr:E}=Lpe(r,{prefix:p});return r.backgroundJobs.push(Hpe(t,e,QT(r,{stdout:h,stderr:E})).catch(C=>E.write(`${C.message} -`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${c(AE(t))}' has ended -`)})),0}return await Hpe(t,e,r)}async function nit(t,e,r,{background:s=!1}={}){let a,n=f=>{a=f,r.variables["?"]=String(f)},c=async f=>{try{return await rit(f.chain,e,r,{background:s&&typeof f.then>"u"})}catch(p){if(!(p instanceof Vl))throw p;return r.stderr.write(`${p.message} -`),1}};for(n(await c(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":a===0&&n(await c(t.then.line));break;case"||":a!==0&&n(await c(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return a}async function TT(t,e,r){let s=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:c}of t){if(a=await nit(n,e,r,{background:c==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=s,a}function Ype(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>dv(e))||"alternativeValue"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>dv(e));case"arithmetic":return Gj(t.arithmetic);case"shell":return qj(t.shell);default:return!1}}function dv(t){switch(t.type){case"redirection":return t.args.some(e=>dv(e));case"argument":return t.segments.some(e=>Ype(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function Gj(t){switch(t.type){case"variable":return Ype(t);case"number":return!1;default:return Gj(t.left)||Gj(t.right)}}function qj(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let s;switch(r.type){case"subshell":s=qj(r.subshell);break;case"command":s=r.envs.some(a=>a.args.some(n=>dv(n)))||r.args.some(a=>dv(a));break}if(s)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function vI(t,e=[],{baseFs:r=new Yn,builtins:s={},cwd:a=fe.toPortablePath(process.cwd()),env:n=process.env,stdin:c=process.stdin,stdout:f=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=PT}={}){let C={};for(let[I,R]of Object.entries(n))typeof R<"u"&&(C[I]=R);let S=new Map(Xnt);for(let[I,R]of Object.entries(s))S.set(I,R);c===null&&(c=new Jl.PassThrough,c.end());let P=ux(t,E);if(!qj(P)&&P.length>0&&e.length>0){let{command:I}=P[P.length-1];for(;I.then;)I=I.then.line;let R=I.chain;for(;R.then;)R=R.then.chain;R.type==="command"&&(R.args=R.args.concat(e.map(N=>({type:"argument",segments:[{type:"text",text:N}]}))))}return await TT(P,{args:e,baseFs:r,builtins:S,initialStdin:c,initialStdout:f,initialStderr:p,glob:E},{cwd:a,environment:C,exitCode:null,procedures:{},stdin:c,stdout:f,stderr:p,variables:Object.assign({},h,{"?":0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var jpe,Gpe,Jl,qpe,Xnt,$nt,pv=Xe(()=>{Dt();wc();jpe=ut(TE()),Gpe=Ie("os"),Jl=Ie("stream"),qpe=Ie("timers/promises");Dpe();bpe();Qpe();jj();jj();Xnt=new Map([["cd",async([t=(0,Gpe.homedir)(),...e],r,s)=>{let a=J.resolve(s.cwd,fe.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(c=>{throw c.code==="ENOENT"?new Vl(`cd: no such file or directory: ${t}`):c})).isDirectory())throw new Vl(`cd: not a directory: ${t}`);return s.cwd=a,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${fe.fromPortablePath(r.cwd)} -`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,s)=>s.exitCode=parseInt(t??s.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} -`),0)],["sleep",async([t],e,r)=>{if(typeof t>"u")throw new Vl("sleep: missing operand");let s=Number(t);if(Number.isNaN(s))throw new Vl(`sleep: invalid time interval '${t}'`);return await(0,qpe.setTimeout)(1e3*s,0)}],["unset",async(t,e,r)=>{for(let s of t)delete r.environment[s],delete r.variables[s];return 0}],["__ysh_run_procedure",async(t,e,r)=>{let s=r.procedures[t[0]];return await xT(s,{stdin:new Oc(r.stdin),stdout:new Oc(r.stdout),stderr:new Oc(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let s=r.stdin,a=r.stdout,n=r.stderr,c=[],f=[],p=[],h=0;for(;t[h]!=="--";){let C=t[h++],{type:S,fd:P}=JSON.parse(C),I=W=>{switch(P){case null:case 0:c.push(W);break;default:throw new Error(`Unsupported file descriptor: "${P}"`)}},R=W=>{switch(P){case null:case 1:f.push(W);break;case 2:p.push(W);break;default:throw new Error(`Unsupported file descriptor: "${P}"`)}},N=Number(t[h++]),U=h+N;for(let W=h;We.baseFs.createReadStream(J.resolve(r.cwd,fe.toPortablePath(t[W]))));break;case"<<<":I(()=>{let ee=new Jl.PassThrough;return process.nextTick(()=>{ee.write(`${t[W]} -`),ee.end()}),ee});break;case"<&":I(()=>Mpe(Number(t[W]),1,r));break;case">":case">>":{let ee=J.resolve(r.cwd,fe.toPortablePath(t[W]));R(ee==="/dev/null"?new Jl.Writable({autoDestroy:!0,emitClose:!0,write(ie,ue,le){setImmediate(le)}}):e.baseFs.createWriteStream(ee,S===">>"?{flags:"a"}:void 0))}break;case">&":R(Mpe(Number(t[W]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${S}"`)}}if(c.length>0){let C=new Jl.PassThrough;s=C;let S=P=>{if(P===c.length)C.end();else{let I=c[P]();I.pipe(C,{end:!1}),I.on("end",()=>{S(P+1)})}};S(0)}if(f.length>0){let C=new Jl.PassThrough;a=C;for(let S of f)C.pipe(S)}if(p.length>0){let C=new Jl.PassThrough;n=C;for(let S of p)C.pipe(S)}let E=await xT(gv(t.slice(h+1),e,r),{stdin:new Oc(s),stdout:new Oc(a),stderr:new Oc(n)}).run();return await Promise.all(f.map(C=>new Promise((S,P)=>{C.on("error",I=>{P(I)}),C.on("close",()=>{S()}),C.end()}))),await Promise.all(p.map(C=>new Promise((S,P)=>{C.on("error",I=>{P(I)}),C.on("close",()=>{S()}),C.end()}))),E}]]);$nt={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var Vpe=_((S4t,RT)=>{function iit(){var t=0,e=1,r=2,s=3,a=4,n=5,c=6,f=7,p=8,h=9,E=10,C=11,S=12,P=13,I=14,R=15,N=16,U=17,W=0,ee=1,ie=2,ue=3,le=4;function me(g,we){return 55296<=g.charCodeAt(we)&&g.charCodeAt(we)<=56319&&56320<=g.charCodeAt(we+1)&&g.charCodeAt(we+1)<=57343}function pe(g,we){we===void 0&&(we=0);var ye=g.charCodeAt(we);if(55296<=ye&&ye<=56319&&we=1){var Ae=g.charCodeAt(we-1),se=ye;return 55296<=Ae&&Ae<=56319?(Ae-55296)*1024+(se-56320)+65536:se}return ye}function Be(g,we,ye){var Ae=[g].concat(we).concat([ye]),se=Ae[Ae.length-2],Z=ye,De=Ae.lastIndexOf(I);if(De>1&&Ae.slice(1,De).every(function(j){return j==s})&&[s,P,U].indexOf(g)==-1)return ie;var Re=Ae.lastIndexOf(a);if(Re>0&&Ae.slice(1,Re).every(function(j){return j==a})&&[S,a].indexOf(se)==-1)return Ae.filter(function(j){return j==a}).length%2==1?ue:le;if(se==t&&Z==e)return W;if(se==r||se==t||se==e)return Z==I&&we.every(function(j){return j==s})?ie:ee;if(Z==r||Z==t||Z==e)return ee;if(se==c&&(Z==c||Z==f||Z==h||Z==E))return W;if((se==h||se==f)&&(Z==f||Z==p))return W;if((se==E||se==p)&&Z==p)return W;if(Z==s||Z==R)return W;if(Z==n)return W;if(se==S)return W;var mt=Ae.indexOf(s)!=-1?Ae.lastIndexOf(s)-1:Ae.length-2;return[P,U].indexOf(Ae[mt])!=-1&&Ae.slice(mt+1,-1).every(function(j){return j==s})&&Z==I||se==R&&[N,U].indexOf(Z)!=-1?W:we.indexOf(a)!=-1?ie:se==a&&Z==a?W:ee}this.nextBreak=function(g,we){if(we===void 0&&(we=0),we<0)return 0;if(we>=g.length-1)return g.length;for(var ye=Ce(pe(g,we)),Ae=[],se=we+1;se{var sit=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,FT;function oit(){if(FT)return FT;if(typeof Intl.Segmenter<"u"){let t=new Intl.Segmenter("en",{granularity:"grapheme"});return FT=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=Vpe(),e=new t;return FT=r=>e.splitGraphemes(r)}}Jpe.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let s=r-e,a="",n=0,c=0;for(;t.length>0;){let f=t.match(sit)||[t,t,void 0],p=oit()(f[1]),h=Math.min(e-n,p.length);p=p.slice(h);let E=Math.min(s-c,p.length);a+=p.slice(0,E).join(""),n+=h,c+=E,typeof f[2]<"u"&&(a+=f[2]),t=t.slice(f[0].length)}return a}});var fn,yv=Xe(()=>{fn=process.env.YARN_IS_TEST_ENV?"0.0.0":"4.12.0"});function the(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let a=Yf(t===null?0:t);return!r&&t===null?Ht(e,a,"grey"):a}function Wj(t,{configuration:e,json:r}){let s=the(t,{configuration:e,json:r});if(!s||t===null||t===0)return s;let a=Br[t],n=`https://yarnpkg.com/advanced/error-codes#${s}---${a}`.toLowerCase();return KE(e,s,n)}async function SI({configuration:t,stdout:e,forceError:r},s){let a=await Ot.start({configuration:t,stdout:e,includeFooter:!1},async n=>{let c=!1,f=!1;for(let p of s)typeof p.option<"u"&&(p.error||r?(f=!0,n.reportError(50,p.message)):(c=!0,n.reportWarning(50,p.message)),p.callback?.());c&&!f&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var $pe,NT,ait,zpe,Xpe,D0,ehe,Zpe,lit,cit,OT,uit,Ot,Ev=Xe(()=>{$pe=ut(Kpe()),NT=ut(Fd());Gx();Tc();yv();xc();ait="\xB7",zpe=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Xpe=80,D0=NT.default.GITHUB_ACTIONS?{start:t=>`::group::${t} -`,end:t=>`::endgroup:: -`}:NT.default.TRAVIS?{start:t=>`travis_fold:start:${t} -`,end:t=>`travis_fold:end:${t} -`}:NT.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${t} -`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,ehe=D0!==null,Zpe=new Date,lit=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,cit=t=>t,OT=cit({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),uit=lit&&Object.keys(OT).find(t=>{let e=OT[t];return!(e.date&&(e.date[0]!==Zpe.getDate()||e.date[1]!==Zpe.getMonth()+1))})||"default";Ot=class extends Ao{constructor({configuration:r,stdout:s,json:a=!1,forceSectionAlignment:n=!1,includeNames:c=!0,includePrefix:f=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:C=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(RB(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=c,this.includePrefix=f,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=C,this.json=a,this.stdout=s,r.get("enableProgressBars")&&!a&&s.isTTY&&s.columns>22){let S=r.get("progressBarStyle")||uit;if(!Object.hasOwn(OT,S))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=OT[S];let P=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*P/80)}}static async start(r,s){let a=new this(r),n=process.emitWarning;process.emitWarning=(c,f)=>{if(typeof c!="string"){let h=c;c=h.message,f=f??h.name}let p=typeof f<"u"?`${f}: ${c}`:c;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,zd(r.configuration,`Yarn ${fn}`,2));try{await s(a)}catch(c){a.reportExceptionOnce(c)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let s=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,s-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}async startSectionPromise({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}startTimerImpl(r,s,a){return{cb:typeof s=="function"?s:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\u250C ${r}`),this.indent+=1,D0!==null&&!this.json&&this.includeInfos&&this.stdout.write(D0.start(r))},reportFooter:f=>{if(this.indent-=1,D0!==null&&!this.json&&this.includeInfos){this.stdout.write(D0.end(r));for(let p of this.timerFooter)p()}this.configuration.get("enableTimers")&&f>200?this.reportInfo(null,`\u2514 Completed in ${Ht(this.configuration,f,ht.DURATION)}`):this.reportInfo(null,"\u2514 Completed"),this.level-=1},skipIfEmpty:(typeof s=="function"?{}:s).skipIfEmpty}}startTimerSync(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionSync(c,n)}async startTimerPromise(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionPromise(c,n)}reportSeparator(){this.indent===0?this.writeLine(""):this.reportInfo(null,"")}reportInfo(r,s){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"",c=`${this.formatPrefix(n,"blueBright")}${s}`;this.json?this.reportJson({type:"info",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(c)}reportWarning(r,s){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"warning",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"yellowBright")}${s}`)}reportError(r,s){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,s)),this.reportErrorImpl(r,s)}reportErrorImpl(r,s){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"error",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"redBright")}${s}`,{truncate:!1})}reportFold(r,s){if(!D0)return;let a=`${D0.start(r)}${s}${D0.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let s=!1,a=Promise.resolve().then(async()=>{let c={progress:r.hasProgress?0:void 0,title:r.hasTitle?"":void 0};this.progress.set(r,{definition:c,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:f,title:p}of r)s||c.progress===f&&c.title===p||(c.progress=f,c.title=p,this.refreshProgress());n()}),n=()=>{s||(s=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r="";this.errorCount>0?r="Failed with errors":this.warningCount>0?r="Done with warnings":r="Done";let s=Ht(this.configuration,Date.now()-this.startTime,ht.DURATION),a=this.configuration.get("enableTimers")?`${r} in ${s}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:s}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:s})} -`),this.writeProgress()}writeLines(r,{truncate:s}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:s})} -`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let s of r)s.committed=!0,s.action()}clearProgress({delta:r=0,clear:s=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\x1B[${this.progress.size+r}A`),(r>0||s)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>Xpe&&(this.progressFrame=(this.progressFrame+1)%zpe.length,this.progressTime=r);let s=zpe[this.progressFrame];for(let a of this.progress.values()){let n="";if(typeof a.lastScaledSize<"u"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let c=this.formatName(null),f=c?`${c}: `:"",p=a.definition.title?` ${a.definition.title}`:"";this.stdout.write(`${Ht(this.configuration,"\u27A4","blueBright")} ${f}${s}${n}${p} -`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},Xpe)}refreshProgress({delta:r=0,force:s=!1}={}){let a=!1,n=!1;if(s||this.progress.size===0)a=!0;else for(let c of this.progress.values()){let f=typeof c.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*c.definition.progress):void 0,p=c.lastScaledSize;c.lastScaledSize=f;let h=c.lastTitle;if(c.lastTitle=c.definition.title,f!==p||(n=h!==c.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:s}={}){return this.progressStyle===null&&(s=!1),typeof s>"u"&&(s=this.configuration.get("preferTruncatedLines")),s&&(r=(0,$pe.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?the(r,{configuration:this.configuration,json:this.json}):""}formatPrefix(r,s){return this.includePrefix?`${Ht(this.configuration,"\u27A4",s)} ${r}${this.formatIndent()}`:""}formatNameWithHyperlink(r){return this.includeNames?Wj(r,{configuration:this.configuration,json:this.json}):""}formatIndent(){return this.level>0||!this.forceSectionAlignment?"\u2502 ".repeat(this.indent):`${ait} `}}});var In={};Vt(In,{PackageManager:()=>nhe,detectPackageManager:()=>ihe,executePackageAccessibleBinary:()=>che,executePackageScript:()=>LT,executePackageShellcode:()=>Yj,executeWorkspaceAccessibleBinary:()=>mit,executeWorkspaceLifecycleScript:()=>ahe,executeWorkspaceScript:()=>ohe,getPackageAccessibleBinaries:()=>MT,getWorkspaceAccessibleBinaries:()=>lhe,hasPackageScript:()=>hit,hasWorkspaceScript:()=>Vj,isNodeScript:()=>Jj,makeScriptEnv:()=>Iv,maybeExecuteWorkspaceLifecycleScript:()=>dit,prepareExternalProject:()=>pit});async function b0(t,e,r,s=[]){if(process.platform==="win32"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${s.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await ce.writeFilePromise(J.format({dir:t,name:e,ext:".cmd"}),a)}await ce.writeFilePromise(J.join(t,e),`#!/bin/sh -exec "${r}" ${s.map(a=>`'${a.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" -`,{mode:493})}async function ihe(t){let e=await Ut.tryFind(t);if(e?.packageManager){let s=xQ(e.packageManager);if(s?.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=s.reference.split(".");switch(s.name){case"yarn":return{packageManagerField:!0,packageManager:Number(n)===1?"Yarn Classic":"Yarn",reason:a};case"npm":return{packageManagerField:!0,packageManager:"npm",reason:a};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:a}}}}let r;try{r=await ce.readFilePromise(J.join(t,Er.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:ce.existsSync(J.join(t,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:ce.existsSync(J.join(t,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Iv({project:t,locator:e,binFolder:r,ignoreCorepack:s,lifecycleScript:a,baseEnv:n=t?.configuration.env??process.env}){let c={};for(let[E,C]of Object.entries(n))typeof C<"u"&&(c[E.toLowerCase()!=="path"?E:"PATH"]=C);let f=fe.fromPortablePath(r);c.BERRY_BIN_FOLDER=fe.fromPortablePath(f);let p=process.env.COREPACK_ROOT&&!s?fe.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([b0(r,"node",process.execPath),...fn!==null?[b0(r,"run",process.execPath,[p,"run"]),b0(r,"yarn",process.execPath,[p]),b0(r,"yarnpkg",process.execPath,[p]),b0(r,"node-gyp",process.execPath,[p,"run","--top-level","node-gyp"])]:[]]),t&&(c.INIT_CWD=fe.fromPortablePath(t.configuration.startingCwd),c.PROJECT_CWD=fe.fromPortablePath(t.cwd)),c.PATH=c.PATH?`${f}${fe.delimiter}${c.PATH}`:`${f}`,c.npm_execpath=`${f}${fe.sep}yarn`,c.npm_node_execpath=`${f}${fe.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let E=t.tryWorkspaceByLocator(e),C=E?E.manifest.version??"":t.storedPackages.get(e.locatorHash).version??"";c.npm_package_name=un(e),c.npm_package_version=C;let S;if(E)S=E.cwd;else{let P=t.storedPackages.get(e.locatorHash);if(!P)throw new Error(`Package for ${Yr(t.configuration,e)} not found in the project`);let I=t.configuration.getLinkers(),R={project:t,report:new Ot({stdout:new P0.PassThrough,configuration:t.configuration})},N=I.find(U=>U.supportsPackage(P,R));if(!N)throw new Error(`The package ${Yr(t.configuration,P)} isn't supported by any of the available linkers`);S=await N.findPackageLocation(P,R)}c.npm_package_json=fe.fromPortablePath(J.join(S,Er.manifest))}let h=fn!==null?`yarn/${fn}`:`yarn/${Pp("@yarnpkg/core").version}-core`;return c.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(c.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(E=>E.setupScriptEnvironment,t,c,async(E,C,S)=>await b0(r,E,C,S)),c}async function pit(t,e,{configuration:r,report:s,workspace:a=null,locator:n=null}){await Ait(async()=>{await ce.mktempPromise(async c=>{let f=J.join(c,"pack.log"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(f,{prefix:fe.fromPortablePath(t),report:s}),C=n&&Gu(n)?rI(n):n,S=C?ll(C):"an external project";h.write(`Packing ${S} from sources -`);let P=await ihe(t),I;P!==null?(h.write(`Using ${P.packageManager} for bootstrap. Reason: ${P.reason} - -`),I=P.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn - -`),I="Yarn");let R=I==="Yarn"&&!P?.packageManagerField;await ce.mktempPromise(async N=>{let U=await Iv({binFolder:N,ignoreCorepack:R,baseEnv:{...process.env,COREPACK_ENABLE_AUTO_PIN:"0"}}),ee=new Map([["Yarn Classic",async()=>{let ue=a!==null?["workspace",a]:[],le=J.join(t,Er.manifest),me=await ce.readFilePromise(le),pe=await Wu(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed","--yarn-path"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(pe.code!==0)return pe.code;await ce.writeFilePromise(le,me),await ce.appendFilePromise(J.join(t,".npmignore"),`/.yarn -`),h.write(` -`),delete U.NODE_ENV;let Be=await Wu("yarn",["install"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Be.code!==0)return Be.code;h.write(` -`);let Ce=await Wu("yarn",[...ue,"pack","--filename",fe.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return Ce.code!==0?Ce.code:0}],["Yarn",async()=>{let ue=a!==null?["workspace",a]:[];U.YARN_ENABLE_INLINE_BUILDS="1";let le=J.join(t,Er.lockfile);await ce.existsPromise(le)||await ce.writeFilePromise(le,"");let me=await Wu("yarn",[...ue,"pack","--install-if-needed","--filename",fe.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return me.code!==0?me.code:0}],["npm",async()=>{if(a!==null){let we=new P0.PassThrough,ye=WE(we);we.pipe(h,{end:!1});let Ae=await Wu("npm",["--version"],{cwd:t,env:U,stdin:p,stdout:we,stderr:E,end:0});if(we.end(),Ae.code!==0)return h.end(),E.end(),Ae.code;let se=(await ye).toString().trim();if(!Zf(se,">=7.x")){let Z=Da(null,"npm"),De=On(Z,se),Re=On(Z,">=7.x");throw new Error(`Workspaces aren't supported by ${ni(r,De)}; please upgrade to ${ni(r,Re)} (npm has been detected as the primary package manager for ${Ht(r,t,ht.PATH)})`)}}let ue=a!==null?["--workspace",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let le=await Wu("npm",["install","--legacy-peer-deps"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(le.code!==0)return le.code;let me=new P0.PassThrough,pe=WE(me);me.pipe(h);let Be=await Wu("npm",["pack","--silent",...ue],{cwd:t,env:U,stdin:p,stdout:me,stderr:E});if(Be.code!==0)return Be.code;let Ce=(await pe).toString().trim().replace(/^.*\n/s,""),g=J.resolve(t,fe.toPortablePath(Ce));return await ce.renamePromise(g,e),0}]]).get(I);if(typeof ee>"u")throw new Error("Assertion failed: Unsupported workflow");let ie=await ee();if(!(ie===0||typeof ie>"u"))throw ce.detachTemp(c),new jt(58,`Packing the package failed (exit code ${ie}, logs can be found here: ${Ht(r,f,ht.PATH)})`)})})})}async function hit(t,e,{project:r}){let s=r.tryWorkspaceByLocator(t);if(s!==null)return Vj(s,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r.configuration,t)} not found in the project`);return await $f.openPromise(async n=>{let c=r.configuration,f=r.configuration.getLinkers(),p={project:r,report:new Ot({stdout:new P0.PassThrough,configuration:c})},h=f.find(P=>P.supportsPackage(a,p));if(!h)throw new Error(`The package ${Yr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),C=new Sn(E,{baseFs:n});return(await Ut.find(vt.dot,{baseFs:C})).scripts.has(e)})}async function LT(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await ce.mktempPromise(async p=>{let{manifest:h,env:E,cwd:C}=await she(t,{project:a,binFolder:p,cwd:s,lifecycleScript:e}),S=h.scripts.get(e);if(typeof S>"u")return 1;let P=async()=>await vI(S,r,{cwd:C,env:E,stdin:n,stdout:c,stderr:f});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,P,a,t,e,{script:S,args:r,cwd:C,env:E,stdin:n,stdout:c,stderr:f}))()})}async function Yj(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await ce.mktempPromise(async p=>{let{env:h,cwd:E}=await she(t,{project:a,binFolder:p,cwd:s});return await vI(e,r,{cwd:E,env:h,stdin:n,stdout:c,stderr:f})})}async function git(t,{binFolder:e,cwd:r,lifecycleScript:s}){let a=await Iv({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:s});return await Kj(e,await lhe(t)),typeof r>"u"&&(r=J.dirname(await ce.realpathPromise(J.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function she(t,{project:e,binFolder:r,cwd:s,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return git(n,{binFolder:r,cwd:s,lifecycleScript:a});let c=e.storedPackages.get(t.locatorHash);if(!c)throw new Error(`Package for ${Yr(e.configuration,t)} not found in the project`);return await $f.openPromise(async f=>{let p=e.configuration,h=e.configuration.getLinkers(),E={project:e,report:new Ot({stdout:new P0.PassThrough,configuration:p})},C=h.find(N=>N.supportsPackage(c,E));if(!C)throw new Error(`The package ${Yr(e.configuration,c)} isn't supported by any of the available linkers`);let S=await Iv({project:e,locator:t,binFolder:r,lifecycleScript:a});await Kj(r,await MT(t,{project:e}));let P=await C.findPackageLocation(c,E),I=new Sn(P,{baseFs:f}),R=await Ut.find(vt.dot,{baseFs:I});return typeof s>"u"&&(s=P),{manifest:R,binFolder:r,env:S,cwd:s}})}async function ohe(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c}){return await LT(t.anchoredLocator,e,r,{cwd:s,project:t.project,stdin:a,stdout:n,stderr:c})}function Vj(t,e){return t.manifest.scripts.has(e)}async function ahe(t,e,{cwd:r,report:s}){let{configuration:a}=t.project,n=null;await ce.mktempPromise(async c=>{let f=J.join(c,`${e}.log`),p=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${fe.fromPortablePath(t.cwd)}") -`,{stdout:h,stderr:E}=a.getSubprocessStreams(f,{report:s,prefix:Yr(a,t.anchoredLocator),header:p});s.reportInfo(36,`Calling the "${e}" lifecycle script`);let C=await ohe(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),C!==0)throw ce.detachTemp(c),new jt(36,`${bB(e)} script failed (exit code ${Ht(a,C,ht.NUMBER)}, logs can be found here: ${Ht(a,f,ht.PATH)}); run ${Ht(a,`yarn ${e}`,ht.CODE)} to investigate`)})}async function dit(t,e,r){Vj(t,e)&&await ahe(t,e,r)}function Jj(t){let e=J.extname(t);if(e.match(/\.[cm]?[jt]sx?$/))return!0;if(e===".exe"||e===".bin")return!1;let r=Buffer.alloc(4),s;try{s=ce.openSync(t,"r")}catch{return!0}try{ce.readSync(s,r,0,r.length,0)}finally{ce.closeSync(s)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function MT(t,{project:e}){let r=e.configuration,s=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r,t)} not found in the project`);let n=new P0.Writable,c=r.getLinkers(),f={project:e,report:new Ot({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let E of a.dependencies.values()){let C=e.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(`Assertion failed: The resolution (${ni(r,E)}) should have been registered`);p.add(C)}let h=await Promise.all(Array.from(p,async E=>{let C=e.storedPackages.get(E);if(!C)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(C.bin.size===0)return Wl.skip;let S=c.find(I=>I.supportsPackage(C,f));if(!S)return Wl.skip;let P=null;try{P=await S.findPackageLocation(C,f)}catch(I){if(I.code==="LOCATOR_NOT_INSTALLED")return Wl.skip;throw I}return{dependency:C,packageLocation:P}}));for(let E of h){if(E===Wl.skip)continue;let{dependency:C,packageLocation:S}=E;for(let[P,I]of C.bin){let R=J.resolve(S,I);s.set(P,[C,fe.fromPortablePath(R),Jj(R)])}}return s}async function lhe(t){return await MT(t.anchoredLocator,{project:t.project})}async function Kj(t,e){await Promise.all(Array.from(e,([r,[,s,a]])=>a?b0(t,r,process.execPath,[s]):b0(t,r,s,[])))}async function che(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await MT(t,{project:a});let E=h.get(e);if(!E)throw new Error(`Binary not found (${e}) for ${Yr(a.configuration,t)}`);return await ce.mktempPromise(async C=>{let[,S]=E,P=await Iv({project:a,locator:t,binFolder:C});await Kj(P.BERRY_BIN_FOLDER,h);let I=Jj(fe.toPortablePath(S))?Wu(process.execPath,[...p,S,...r],{cwd:s,env:P,stdin:n,stdout:c,stderr:f}):Wu(S,r,{cwd:s,env:P,stdin:n,stdout:c,stderr:f}),R;try{R=await I}finally{await ce.removePromise(P.BERRY_BIN_FOLDER)}return R.code})}async function mit(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f}){return await che(t.anchoredLocator,e,r,{project:t.project,cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f})}var rhe,P0,nhe,fit,Ait,zj=Xe(()=>{Dt();Dt();eA();pv();ql();rhe=ut(Ld()),P0=Ie("stream");oI();Tc();Ev();yv();dT();xc();Pc();Rp();Wo();nhe=(a=>(a.Yarn1="Yarn Classic",a.Yarn2="Yarn",a.Npm="npm",a.Pnpm="pnpm",a))(nhe||{});fit=2,Ait=(0,rhe.default)(fit)});var DI=_((J4t,fhe)=>{"use strict";var uhe=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);fhe.exports=t=>t?Object.keys(t).map(e=>[uhe.has(e)?uhe.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var PI=_((K4t,Ihe)=>{"use strict";var Ahe=typeof process=="object"&&process?process:{stdout:null,stderr:null},yit=Ie("events"),phe=Ie("stream"),hhe=Ie("string_decoder").StringDecoder,_p=Symbol("EOF"),Hp=Symbol("maybeEmitEnd"),x0=Symbol("emittedEnd"),UT=Symbol("emittingEnd"),Cv=Symbol("emittedError"),_T=Symbol("closed"),ghe=Symbol("read"),HT=Symbol("flush"),dhe=Symbol("flushChunk"),ul=Symbol("encoding"),jp=Symbol("decoder"),jT=Symbol("flowing"),wv=Symbol("paused"),bI=Symbol("resume"),Ys=Symbol("bufferLength"),Xj=Symbol("bufferPush"),Zj=Symbol("bufferShift"),Ko=Symbol("objectMode"),zo=Symbol("destroyed"),$j=Symbol("emitData"),mhe=Symbol("emitEnd"),e6=Symbol("emitEnd2"),Gp=Symbol("async"),Bv=t=>Promise.resolve().then(t),yhe=global._MP_NO_ITERATOR_SYMBOLS_!=="1",Eit=yhe&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),Iit=yhe&&Symbol.iterator||Symbol("iterator not implemented"),Cit=t=>t==="end"||t==="finish"||t==="prefinish",wit=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,Bit=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),GT=class{constructor(e,r,s){this.src=e,this.dest=r,this.opts=s,this.ondrain=()=>e[bI](),r.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},t6=class extends GT{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,r,s){super(e,r,s),this.proxyErrors=a=>r.emit("error",a),e.on("error",this.proxyErrors)}};Ihe.exports=class Ehe extends phe{constructor(e){super(),this[jT]=!1,this[wv]=!1,this.pipes=[],this.buffer=[],this[Ko]=e&&e.objectMode||!1,this[Ko]?this[ul]=null:this[ul]=e&&e.encoding||null,this[ul]==="buffer"&&(this[ul]=null),this[Gp]=e&&!!e.async||!1,this[jp]=this[ul]?new hhe(this[ul]):null,this[_p]=!1,this[x0]=!1,this[UT]=!1,this[_T]=!1,this[Cv]=null,this.writable=!0,this.readable=!0,this[Ys]=0,this[zo]=!1}get bufferLength(){return this[Ys]}get encoding(){return this[ul]}set encoding(e){if(this[Ko])throw new Error("cannot set encoding in objectMode");if(this[ul]&&e!==this[ul]&&(this[jp]&&this[jp].lastNeed||this[Ys]))throw new Error("cannot change encoding");this[ul]!==e&&(this[jp]=e?new hhe(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[jp].write(r)))),this[ul]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Ko]}set objectMode(e){this[Ko]=this[Ko]||!!e}get async(){return this[Gp]}set async(e){this[Gp]=this[Gp]||!!e}write(e,r,s){if(this[_p])throw new Error("write after end");if(this[zo])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let a=this[Gp]?Bv:n=>n();return!this[Ko]&&!Buffer.isBuffer(e)&&(Bit(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):wit(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),this[Ko]?(this.flowing&&this[Ys]!==0&&this[HT](!0),this.flowing?this.emit("data",e):this[Xj](e),this[Ys]!==0&&this.emit("readable"),s&&a(s),this.flowing):e.length?(typeof e=="string"&&!(r===this[ul]&&!this[jp].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ul]&&(e=this[jp].write(e)),this.flowing&&this[Ys]!==0&&this[HT](!0),this.flowing?this.emit("data",e):this[Xj](e),this[Ys]!==0&&this.emit("readable"),s&&a(s),this.flowing):(this[Ys]!==0&&this.emit("readable"),s&&a(s),this.flowing)}read(e){if(this[zo])return null;if(this[Ys]===0||e===0||e>this[Ys])return this[Hp](),null;this[Ko]&&(e=null),this.buffer.length>1&&!this[Ko]&&(this.encoding?this.buffer=[this.buffer.join("")]:this.buffer=[Buffer.concat(this.buffer,this[Ys])]);let r=this[ghe](e||null,this.buffer[0]);return this[Hp](),r}[ghe](e,r){return e===r.length||e===null?this[Zj]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Ys]-=e),this.emit("data",r),!this.buffer.length&&!this[_p]&&this.emit("drain"),r}end(e,r,s){return typeof e=="function"&&(s=e,e=null),typeof r=="function"&&(s=r,r="utf8"),e&&this.write(e,r),s&&this.once("end",s),this[_p]=!0,this.writable=!1,(this.flowing||!this[wv])&&this[Hp](),this}[bI](){this[zo]||(this[wv]=!1,this[jT]=!0,this.emit("resume"),this.buffer.length?this[HT]():this[_p]?this[Hp]():this.emit("drain"))}resume(){return this[bI]()}pause(){this[jT]=!1,this[wv]=!0}get destroyed(){return this[zo]}get flowing(){return this[jT]}get paused(){return this[wv]}[Xj](e){this[Ko]?this[Ys]+=1:this[Ys]+=e.length,this.buffer.push(e)}[Zj](){return this.buffer.length&&(this[Ko]?this[Ys]-=1:this[Ys]-=this.buffer[0].length),this.buffer.shift()}[HT](e){do;while(this[dhe](this[Zj]()));!e&&!this.buffer.length&&!this[_p]&&this.emit("drain")}[dhe](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[zo])return;let s=this[x0];return r=r||{},e===Ahe.stdout||e===Ahe.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&e.end():(this.pipes.push(r.proxyErrors?new t6(this,e,r):new GT(this,e,r)),this[Gp]?Bv(()=>this[bI]()):this[bI]()),e}unpipe(e){let r=this.pipes.find(s=>s.dest===e);r&&(this.pipes.splice(this.pipes.indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let s=super.on(e,r);return e==="data"&&!this.pipes.length&&!this.flowing?this[bI]():e==="readable"&&this[Ys]!==0?super.emit("readable"):Cit(e)&&this[x0]?(super.emit(e),this.removeAllListeners(e)):e==="error"&&this[Cv]&&(this[Gp]?Bv(()=>r.call(this,this[Cv])):r.call(this,this[Cv])),s}get emittedEnd(){return this[x0]}[Hp](){!this[UT]&&!this[x0]&&!this[zo]&&this.buffer.length===0&&this[_p]&&(this[UT]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[_T]&&this.emit("close"),this[UT]=!1)}emit(e,r,...s){if(e!=="error"&&e!=="close"&&e!==zo&&this[zo])return;if(e==="data")return r?this[Gp]?Bv(()=>this[$j](r)):this[$j](r):!1;if(e==="end")return this[mhe]();if(e==="close"){if(this[_T]=!0,!this[x0]&&!this[zo])return;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[Cv]=r;let n=super.emit("error",r);return this[Hp](),n}else if(e==="resume"){let n=super.emit("resume");return this[Hp](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...s);return this[Hp](),a}[$j](e){for(let s of this.pipes)s.dest.write(e)===!1&&this.pause();let r=super.emit("data",e);return this[Hp](),r}[mhe](){this[x0]||(this[x0]=!0,this.readable=!1,this[Gp]?Bv(()=>this[e6]()):this[e6]())}[e6](){if(this[jp]){let r=this[jp].end();if(r){for(let s of this.pipes)s.dest.write(r);super.emit("data",r)}}for(let r of this.pipes)r.end();let e=super.emit("end");return this.removeAllListeners("end"),e}collect(){let e=[];this[Ko]||(e.dataLength=0);let r=this.promise();return this.on("data",s=>{e.push(s),this[Ko]||(e.dataLength+=s.length)}),r.then(()=>e)}concat(){return this[Ko]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Ko]?Promise.reject(new Error("cannot concat in objectMode")):this[ul]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(zo,()=>r(new Error("stream destroyed"))),this.on("error",s=>r(s)),this.on("end",()=>e())})}[Eit](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[_p])return Promise.resolve({done:!0});let s=null,a=null,n=h=>{this.removeListener("data",c),this.removeListener("end",f),a(h)},c=h=>{this.removeListener("error",n),this.removeListener("end",f),this.pause(),s({value:h,done:!!this[_p]})},f=()=>{this.removeListener("error",n),this.removeListener("data",c),s({done:!0})},p=()=>n(new Error("stream destroyed"));return new Promise((h,E)=>{a=E,s=h,this.once(zo,p),this.once("error",n),this.once("end",f),this.once("data",c)})}}}[Iit](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[zo]?(e?this.emit("error",e):this.emit(zo),this):(this[zo]=!0,this.buffer.length=0,this[Ys]=0,typeof this.close=="function"&&!this[_T]&&this.close(),e?this.emit("error",e):this.emit(zo),this)}static isStream(e){return!!e&&(e instanceof Ehe||e instanceof phe||e instanceof yit&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var whe=_((z4t,Che)=>{var vit=Ie("zlib").constants||{ZLIB_VERNUM:4736};Che.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},vit))});var m6=_(Kl=>{"use strict";var o6=Ie("assert"),k0=Ie("buffer").Buffer,She=Ie("zlib"),fm=Kl.constants=whe(),Sit=PI(),Bhe=k0.concat,Am=Symbol("_superWrite"),kI=class extends Error{constructor(e){super("zlib: "+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},Dit=Symbol("opts"),vv=Symbol("flushFlag"),vhe=Symbol("finishFlushFlag"),d6=Symbol("fullFlushFlag"),Ii=Symbol("handle"),qT=Symbol("onError"),xI=Symbol("sawError"),r6=Symbol("level"),n6=Symbol("strategy"),i6=Symbol("ended"),X4t=Symbol("_defaultFullFlush"),WT=class extends Sit{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e),this[xI]=!1,this[i6]=!1,this[Dit]=e,this[vv]=e.flush,this[vhe]=e.finishFlush;try{this[Ii]=new She[r](e)}catch(s){throw new kI(s)}this[qT]=s=>{this[xI]||(this[xI]=!0,this.close(),this.emit("error",s))},this[Ii].on("error",s=>this[qT](new kI(s))),this.once("end",()=>this.close)}close(){this[Ii]&&(this[Ii].close(),this[Ii]=null,this.emit("close"))}reset(){if(!this[xI])return o6(this[Ii],"zlib binding closed"),this[Ii].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[d6]),this.write(Object.assign(k0.alloc(0),{[vv]:e})))}end(e,r,s){return e&&this.write(e,r),this.flush(this[vhe]),this[i6]=!0,super.end(null,null,s)}get ended(){return this[i6]}write(e,r,s){if(typeof r=="function"&&(s=r,r="utf8"),typeof e=="string"&&(e=k0.from(e,r)),this[xI])return;o6(this[Ii],"zlib binding closed");let a=this[Ii]._handle,n=a.close;a.close=()=>{};let c=this[Ii].close;this[Ii].close=()=>{},k0.concat=h=>h;let f;try{let h=typeof e[vv]=="number"?e[vv]:this[vv];f=this[Ii]._processChunk(e,h),k0.concat=Bhe}catch(h){k0.concat=Bhe,this[qT](new kI(h))}finally{this[Ii]&&(this[Ii]._handle=a,a.close=n,this[Ii].close=c,this[Ii].removeAllListeners("error"))}this[Ii]&&this[Ii].on("error",h=>this[qT](new kI(h)));let p;if(f)if(Array.isArray(f)&&f.length>0){p=this[Am](k0.from(f[0]));for(let h=1;h{this.flush(a),n()};try{this[Ii].params(e,r)}finally{this[Ii].flush=s}this[Ii]&&(this[r6]=e,this[n6]=r)}}}},a6=class extends qp{constructor(e){super(e,"Deflate")}},l6=class extends qp{constructor(e){super(e,"Inflate")}},s6=Symbol("_portable"),c6=class extends qp{constructor(e){super(e,"Gzip"),this[s6]=e&&!!e.portable}[Am](e){return this[s6]?(this[s6]=!1,e[9]=255,super[Am](e)):super[Am](e)}},u6=class extends qp{constructor(e){super(e,"Gunzip")}},f6=class extends qp{constructor(e){super(e,"DeflateRaw")}},A6=class extends qp{constructor(e){super(e,"InflateRaw")}},p6=class extends qp{constructor(e){super(e,"Unzip")}},YT=class extends WT{constructor(e,r){e=e||{},e.flush=e.flush||fm.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||fm.BROTLI_OPERATION_FINISH,super(e,r),this[d6]=fm.BROTLI_OPERATION_FLUSH}},h6=class extends YT{constructor(e){super(e,"BrotliCompress")}},g6=class extends YT{constructor(e){super(e,"BrotliDecompress")}};Kl.Deflate=a6;Kl.Inflate=l6;Kl.Gzip=c6;Kl.Gunzip=u6;Kl.DeflateRaw=f6;Kl.InflateRaw=A6;Kl.Unzip=p6;typeof She.BrotliCompress=="function"?(Kl.BrotliCompress=h6,Kl.BrotliDecompress=g6):Kl.BrotliCompress=Kl.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var QI=_((e3t,Dhe)=>{var bit=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;Dhe.exports=bit!=="win32"?t=>t:t=>t&&t.replace(/\\/g,"/")});var VT=_((r3t,bhe)=>{"use strict";var Pit=PI(),y6=QI(),E6=Symbol("slurp");bhe.exports=class extends Pit{constructor(e,r,s){switch(super(),this.pause(),this.extended=r,this.globalExtended=s,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=y6(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=y6(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[E6](r),s&&this[E6](s,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let s=this.remain,a=this.blockRemain;return this.remain=Math.max(0,s-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:s>=r?super.write(e):super.write(e.slice(0,s))}[E6](e,r){for(let s in e)e[s]!==null&&e[s]!==void 0&&!(r&&s==="path")&&(this[s]=s==="path"||s==="linkpath"?y6(e[s]):e[s])}}});var I6=_(JT=>{"use strict";JT.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);JT.code=new Map(Array.from(JT.name).map(t=>[t[1],t[0]]))});var Qhe=_((i3t,khe)=>{"use strict";var xit=(t,e)=>{if(Number.isSafeInteger(t))t<0?Qit(t,e):kit(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},kit=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},Qit=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var s=e.length;s>1;s--){var a=t&255;t=Math.floor(t/256),r?e[s-1]=Phe(a):a===0?e[s-1]=0:(r=!0,e[s-1]=xhe(a))}},Tit=t=>{let e=t[0],r=e===128?Fit(t.slice(1,t.length)):e===255?Rit(t):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},Rit=t=>{for(var e=t.length,r=0,s=!1,a=e-1;a>-1;a--){var n=t[a],c;s?c=Phe(n):n===0?c=n:(s=!0,c=xhe(n)),c!==0&&(r-=c*Math.pow(256,e-a-1))}return r},Fit=t=>{for(var e=t.length,r=0,s=e-1;s>-1;s--){var a=t[s];a!==0&&(r+=a*Math.pow(256,e-s-1))}return r},Phe=t=>(255^t)&255,xhe=t=>(255^t)+1&255;khe.exports={encode:xit,parse:Tit}});var RI=_((s3t,Rhe)=>{"use strict";var C6=I6(),TI=Ie("path").posix,The=Qhe(),w6=Symbol("slurp"),zl=Symbol("type"),S6=class{constructor(e,r,s,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[zl]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,s,a):e&&this.set(e)}decode(e,r,s,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=pm(e,r,100),this.mode=Q0(e,r+100,8),this.uid=Q0(e,r+108,8),this.gid=Q0(e,r+116,8),this.size=Q0(e,r+124,12),this.mtime=B6(e,r+136,12),this.cksum=Q0(e,r+148,12),this[w6](s),this[w6](a,!0),this[zl]=pm(e,r+156,1),this[zl]===""&&(this[zl]="0"),this[zl]==="0"&&this.path.substr(-1)==="/"&&(this[zl]="5"),this[zl]==="5"&&(this.size=0),this.linkpath=pm(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=pm(e,r+265,32),this.gname=pm(e,r+297,32),this.devmaj=Q0(e,r+329,8),this.devmin=Q0(e,r+337,8),e[r+475]!==0){let c=pm(e,r+345,155);this.path=c+"/"+this.path}else{let c=pm(e,r+345,130);c&&(this.path=c+"/"+this.path),this.atime=B6(e,r+476,12),this.ctime=B6(e,r+488,12)}let n=8*32;for(let c=r;c=r+512))throw new Error("need 512 bytes for header");let s=this.ctime||this.atime?130:155,a=Nit(this.path||"",s),n=a[0],c=a[1];this.needPax=a[2],this.needPax=hm(e,r,100,n)||this.needPax,this.needPax=T0(e,r+100,8,this.mode)||this.needPax,this.needPax=T0(e,r+108,8,this.uid)||this.needPax,this.needPax=T0(e,r+116,8,this.gid)||this.needPax,this.needPax=T0(e,r+124,12,this.size)||this.needPax,this.needPax=v6(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[zl].charCodeAt(0),this.needPax=hm(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=hm(e,r+265,32,this.uname)||this.needPax,this.needPax=hm(e,r+297,32,this.gname)||this.needPax,this.needPax=T0(e,r+329,8,this.devmaj)||this.needPax,this.needPax=T0(e,r+337,8,this.devmin)||this.needPax,this.needPax=hm(e,r+345,s,c)||this.needPax,e[r+475]!==0?this.needPax=hm(e,r+345,155,c)||this.needPax:(this.needPax=hm(e,r+345,130,c)||this.needPax,this.needPax=v6(e,r+476,12,this.atime)||this.needPax,this.needPax=v6(e,r+488,12,this.ctime)||this.needPax);let f=8*32;for(let p=r;p{let s=t,a="",n,c=TI.parse(t).root||".";if(Buffer.byteLength(s)<100)n=[s,a,!1];else{a=TI.dirname(s),s=TI.basename(s);do Buffer.byteLength(s)<=100&&Buffer.byteLength(a)<=e?n=[s,a,!1]:Buffer.byteLength(s)>100&&Buffer.byteLength(a)<=e?n=[s.substr(0,99),a,!0]:(s=TI.join(TI.basename(a),s),a=TI.dirname(a));while(a!==c&&!n);n||(n=[t.substr(0,99),"",!0])}return n},pm=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),B6=(t,e,r)=>Oit(Q0(t,e,r)),Oit=t=>t===null?null:new Date(t*1e3),Q0=(t,e,r)=>t[e]&128?The.parse(t.slice(e,e+r)):Mit(t,e,r),Lit=t=>isNaN(t)?null:t,Mit=(t,e,r)=>Lit(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Uit={12:8589934591,8:2097151},T0=(t,e,r,s)=>s===null?!1:s>Uit[r]||s<0?(The.encode(s,t.slice(e,e+r)),!0):(_it(t,e,r,s),!1),_it=(t,e,r,s)=>t.write(Hit(s,r),e,r,"ascii"),Hit=(t,e)=>jit(Math.floor(t).toString(8),e),jit=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",v6=(t,e,r,s)=>s===null?!1:T0(t,e,r,s.getTime()/1e3),Git=new Array(156).join("\0"),hm=(t,e,r,s)=>s===null?!1:(t.write(s+Git,e,r,"utf8"),s.length!==Buffer.byteLength(s)||s.length>r);Rhe.exports=S6});var KT=_((o3t,Fhe)=>{"use strict";var qit=RI(),Wit=Ie("path"),Sv=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),s=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(s);for(let n=0;n<512;n++)a[n]=0;new qit({path:("PaxHeader/"+Wit.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(a),a.write(e,512,r,"utf8");for(let n=r+512;n=Math.pow(10,n)&&(n+=1),n+a+s}};Sv.parse=(t,e,r)=>new Sv(Yit(Vit(t),e),r);var Yit=(t,e)=>e?Object.keys(t).reduce((r,s)=>(r[s]=t[s],r),e):t,Vit=t=>t.replace(/\n$/,"").split(` -`).reduce(Jit,Object.create(null)),Jit=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let s=e.split("="),a=s.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!a)return t;let n=s.join("=");return t[a]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};Fhe.exports=Sv});var FI=_((a3t,Nhe)=>{Nhe.exports=t=>{let e=t.length-1,r=-1;for(;e>-1&&t.charAt(e)==="/";)r=e,e--;return r===-1?t:t.slice(0,r)}});var zT=_((l3t,Ohe)=>{"use strict";Ohe.exports=t=>class extends t{warn(e,r,s={}){this.file&&(s.file=this.file),this.cwd&&(s.cwd=this.cwd),s.code=r instanceof Error&&r.code||e,s.tarCode=e,!this.strict&&s.recoverable!==!1?(r instanceof Error&&(s=Object.assign(r,s),r=r.message),this.emit("warn",s.tarCode,r,s)):r instanceof Error?this.emit("error",Object.assign(r,s)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),s))}}});var b6=_((u3t,Lhe)=>{"use strict";var XT=["|","<",">","?",":"],D6=XT.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),Kit=new Map(XT.map((t,e)=>[t,D6[e]])),zit=new Map(D6.map((t,e)=>[t,XT[e]]));Lhe.exports={encode:t=>XT.reduce((e,r)=>e.split(r).join(Kit.get(r)),t),decode:t=>D6.reduce((e,r)=>e.split(r).join(zit.get(r)),t)}});var P6=_((f3t,Uhe)=>{var{isAbsolute:Xit,parse:Mhe}=Ie("path").win32;Uhe.exports=t=>{let e="",r=Mhe(t);for(;Xit(t)||r.root;){let s=t.charAt(0)==="/"&&t.slice(0,4)!=="//?/"?"/":r.root;t=t.substr(s.length),e+=s,r=Mhe(t)}return[e,t]}});var Hhe=_((A3t,_he)=>{"use strict";_he.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&-19),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var M6=_((g3t,t0e)=>{"use strict";var Jhe=PI(),Khe=KT(),zhe=RI(),nA=Ie("fs"),jhe=Ie("path"),rA=QI(),Zit=FI(),Xhe=(t,e)=>e?(t=rA(t).replace(/^\.(\/|$)/,""),Zit(e)+"/"+t):rA(t),$it=16*1024*1024,Ghe=Symbol("process"),qhe=Symbol("file"),Whe=Symbol("directory"),k6=Symbol("symlink"),Yhe=Symbol("hardlink"),Dv=Symbol("header"),ZT=Symbol("read"),Q6=Symbol("lstat"),$T=Symbol("onlstat"),T6=Symbol("onread"),R6=Symbol("onreadlink"),F6=Symbol("openfile"),N6=Symbol("onopenfile"),R0=Symbol("close"),eR=Symbol("mode"),O6=Symbol("awaitDrain"),x6=Symbol("ondrain"),iA=Symbol("prefix"),Vhe=Symbol("hadError"),Zhe=zT(),est=b6(),$he=P6(),e0e=Hhe(),tR=Zhe(class extends Jhe{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=rA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||$it,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=rA(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,this.prefix=r.prefix?rA(r.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let s=!1;if(!this.preservePaths){let[a,n]=$he(this.path);a&&(this.path=n,s=a)}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=est.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=rA(r.absolute||jhe.resolve(this.cwd,e)),this.path===""&&(this.path="./"),s&&this.warn("TAR_ENTRY_INFO",`stripping ${s} from absolute path`,{entry:this,path:s+this.path}),this.statCache.has(this.absolute)?this[$T](this.statCache.get(this.absolute)):this[Q6]()}emit(e,...r){return e==="error"&&(this[Vhe]=!0),super.emit(e,...r)}[Q6](){nA.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[$T](r)})}[$T](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=rst(e),this.emit("stat",e),this[Ghe]()}[Ghe](){switch(this.type){case"File":return this[qhe]();case"Directory":return this[Whe]();case"SymbolicLink":return this[k6]();default:return this.end()}}[eR](e){return e0e(e,this.type==="Directory",this.portable)}[iA](e){return Xhe(e,this.prefix)}[Dv](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new zhe({path:this[iA](this.path),linkpath:this.type==="Link"?this[iA](this.linkpath):this.linkpath,mode:this[eR](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new Khe({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[iA](this.path),linkpath:this.type==="Link"?this[iA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[Whe](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Dv](),this.end()}[k6](){nA.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[R6](r)})}[R6](e){this.linkpath=rA(e),this[Dv](),this.end()}[Yhe](e){this.type="Link",this.linkpath=rA(jhe.relative(this.cwd,e)),this.stat.size=0,this[Dv](),this.end()}[qhe](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[Yhe](r)}this.linkCache.set(e,this.absolute)}if(this[Dv](),this.stat.size===0)return this.end();this[F6]()}[F6](){nA.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[N6](r)})}[N6](e){if(this.fd=e,this[Vhe])return this[R0]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let r=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(r),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[ZT]()}[ZT](){let{fd:e,buf:r,offset:s,length:a,pos:n}=this;nA.read(e,r,s,a,n,(c,f)=>{if(c)return this[R0](()=>this.emit("error",c));this[T6](f)})}[R0](e){nA.close(this.fd,e)}[T6](e){if(e<=0&&this.remain>0){let a=new Error("encountered unexpected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[R0](()=>this.emit("error",a))}if(e>this.remain){let a=new Error("did not encounter expected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[R0](()=>this.emit("error",a))}if(e===this.remain)for(let a=e;athis[x6]())}[O6](e){this.once("drain",e)}write(e){if(this.blockRemaine?this.emit("error",e):this.end());this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[ZT]()}}),L6=class extends tR{[Q6](){this[$T](nA.lstatSync(this.absolute))}[k6](){this[R6](nA.readlinkSync(this.absolute))}[F6](){this[N6](nA.openSync(this.absolute,"r"))}[ZT](){let e=!0;try{let{fd:r,buf:s,offset:a,length:n,pos:c}=this,f=nA.readSync(r,s,a,n,c);this[T6](f),e=!1}finally{if(e)try{this[R0](()=>{})}catch{}}}[O6](e){e()}[R0](e){nA.closeSync(this.fd),e()}},tst=Zhe(class extends Jhe{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix||null,this.path=rA(e.path),this.mode=this[eR](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=rA(e.linkpath),typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let s=!1;if(!this.preservePaths){let[a,n]=$he(this.path);a&&(this.path=n,s=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new zhe({path:this[iA](this.path),linkpath:this.type==="Link"?this[iA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),s&&this.warn("TAR_ENTRY_INFO",`stripping ${s} from absolute path`,{entry:this,path:s+this.path}),this.header.encode()&&!this.noPax&&super.write(new Khe({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[iA](this.path),linkpath:this.type==="Link"?this[iA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[iA](e){return Xhe(e,this.prefix)}[eR](e){return e0e(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});tR.Sync=L6;tR.Tar=tst;var rst=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";t0e.exports=tR});var uR=_((m3t,l0e)=>{"use strict";var lR=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},nst=PI(),ist=m6(),sst=VT(),V6=M6(),ost=V6.Sync,ast=V6.Tar,lst=$x(),r0e=Buffer.alloc(1024),iR=Symbol("onStat"),rR=Symbol("ended"),sA=Symbol("queue"),NI=Symbol("current"),gm=Symbol("process"),nR=Symbol("processing"),n0e=Symbol("processJob"),oA=Symbol("jobs"),U6=Symbol("jobDone"),sR=Symbol("addFSEntry"),i0e=Symbol("addTarEntry"),G6=Symbol("stat"),q6=Symbol("readdir"),oR=Symbol("onreaddir"),aR=Symbol("pipe"),s0e=Symbol("entry"),_6=Symbol("entryOpt"),W6=Symbol("writeEntryClass"),a0e=Symbol("write"),H6=Symbol("ondrain"),cR=Ie("fs"),o0e=Ie("path"),cst=zT(),j6=QI(),J6=cst(class extends nst{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=j6(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[W6]=V6,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new ist.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[H6]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[H6]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[sA]=new lst,this[oA]=0,this.jobs=+e.jobs||4,this[nR]=!1,this[rR]=!1}[a0e](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[rR]=!0,this[gm](),this}write(e){if(this[rR])throw new Error("write after end");return e instanceof sst?this[i0e](e):this[sR](e),this.flowing}[i0e](e){let r=j6(o0e.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let s=new lR(e.path,r,!1);s.entry=new ast(e,this[_6](s)),s.entry.on("end",a=>this[U6](s)),this[oA]+=1,this[sA].push(s)}this[gm]()}[sR](e){let r=j6(o0e.resolve(this.cwd,e));this[sA].push(new lR(e,r)),this[gm]()}[G6](e){e.pending=!0,this[oA]+=1;let r=this.follow?"stat":"lstat";cR[r](e.absolute,(s,a)=>{e.pending=!1,this[oA]-=1,s?this.emit("error",s):this[iR](e,a)})}[iR](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[gm]()}[q6](e){e.pending=!0,this[oA]+=1,cR.readdir(e.absolute,(r,s)=>{if(e.pending=!1,this[oA]-=1,r)return this.emit("error",r);this[oR](e,s)})}[oR](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[gm]()}[gm](){if(!this[nR]){this[nR]=!0;for(let e=this[sA].head;e!==null&&this[oA]this.warn(r,s,a),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[s0e](e){this[oA]+=1;try{return new this[W6](e.path,this[_6](e)).on("end",()=>this[U6](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[H6](){this[NI]&&this[NI].entry&&this[NI].entry.resume()}[aR](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n==="./"?"":n.replace(/\/*$/,"/");this[sR](c+a)});let r=e.entry,s=this.zip;s?r.on("data",a=>{s.write(a)||r.pause()}):r.on("data",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),Y6=class extends J6{constructor(e){super(e),this[W6]=ost}pause(){}resume(){}[G6](e){let r=this.follow?"statSync":"lstatSync";this[iR](e,cR[r](e.absolute))}[q6](e,r){this[oR](e,cR.readdirSync(e.absolute))}[aR](e){let r=e.entry,s=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n==="./"?"":n.replace(/\/*$/,"/");this[sR](c+a)}),s?r.on("data",a=>{s.write(a)}):r.on("data",a=>{super[a0e](a)})}};J6.Sync=Y6;l0e.exports=J6});var GI=_(Pv=>{"use strict";var ust=PI(),fst=Ie("events").EventEmitter,fl=Ie("fs"),X6=fl.writev;if(!X6){let t=process.binding("fs"),e=t.FSReqWrap||t.FSReqCallback;X6=(r,s,a,n)=>{let c=(p,h)=>n(p,h,s),f=new e;f.oncomplete=c,t.writeBuffers(r,s,a,f)}}var HI=Symbol("_autoClose"),Yu=Symbol("_close"),bv=Symbol("_ended"),ii=Symbol("_fd"),c0e=Symbol("_finished"),N0=Symbol("_flags"),K6=Symbol("_flush"),Z6=Symbol("_handleChunk"),$6=Symbol("_makeBuf"),gR=Symbol("_mode"),fR=Symbol("_needDrain"),UI=Symbol("_onerror"),jI=Symbol("_onopen"),z6=Symbol("_onread"),LI=Symbol("_onwrite"),O0=Symbol("_open"),Wp=Symbol("_path"),dm=Symbol("_pos"),aA=Symbol("_queue"),MI=Symbol("_read"),u0e=Symbol("_readSize"),F0=Symbol("_reading"),AR=Symbol("_remain"),f0e=Symbol("_size"),pR=Symbol("_write"),OI=Symbol("_writing"),hR=Symbol("_defaultFlag"),_I=Symbol("_errored"),dR=class extends ust{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[_I]=!1,this[ii]=typeof r.fd=="number"?r.fd:null,this[Wp]=e,this[u0e]=r.readSize||16*1024*1024,this[F0]=!1,this[f0e]=typeof r.size=="number"?r.size:1/0,this[AR]=this[f0e],this[HI]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[ii]=="number"?this[MI]():this[O0]()}get fd(){return this[ii]}get path(){return this[Wp]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[O0](){fl.open(this[Wp],"r",(e,r)=>this[jI](e,r))}[jI](e,r){e?this[UI](e):(this[ii]=r,this.emit("open",r),this[MI]())}[$6](){return Buffer.allocUnsafe(Math.min(this[u0e],this[AR]))}[MI](){if(!this[F0]){this[F0]=!0;let e=this[$6]();if(e.length===0)return process.nextTick(()=>this[z6](null,0,e));fl.read(this[ii],e,0,e.length,null,(r,s,a)=>this[z6](r,s,a))}}[z6](e,r,s){this[F0]=!1,e?this[UI](e):this[Z6](r,s)&&this[MI]()}[Yu](){if(this[HI]&&typeof this[ii]=="number"){let e=this[ii];this[ii]=null,fl.close(e,r=>r?this.emit("error",r):this.emit("close"))}}[UI](e){this[F0]=!0,this[Yu](),this.emit("error",e)}[Z6](e,r){let s=!1;return this[AR]-=e,e>0&&(s=super.write(ethis[jI](e,r))}[jI](e,r){this[hR]&&this[N0]==="r+"&&e&&e.code==="ENOENT"?(this[N0]="w",this[O0]()):e?this[UI](e):(this[ii]=r,this.emit("open",r),this[K6]())}end(e,r){return e&&this.write(e,r),this[bv]=!0,!this[OI]&&!this[aA].length&&typeof this[ii]=="number"&&this[LI](null,0),this}write(e,r){return typeof e=="string"&&(e=Buffer.from(e,r)),this[bv]?(this.emit("error",new Error("write() after end()")),!1):this[ii]===null||this[OI]||this[aA].length?(this[aA].push(e),this[fR]=!0,!1):(this[OI]=!0,this[pR](e),!0)}[pR](e){fl.write(this[ii],e,0,e.length,this[dm],(r,s)=>this[LI](r,s))}[LI](e,r){e?this[UI](e):(this[dm]!==null&&(this[dm]+=r),this[aA].length?this[K6]():(this[OI]=!1,this[bv]&&!this[c0e]?(this[c0e]=!0,this[Yu](),this.emit("finish")):this[fR]&&(this[fR]=!1,this.emit("drain"))))}[K6](){if(this[aA].length===0)this[bv]&&this[LI](null,0);else if(this[aA].length===1)this[pR](this[aA].pop());else{let e=this[aA];this[aA]=[],X6(this[ii],e,this[dm],(r,s)=>this[LI](r,s))}}[Yu](){if(this[HI]&&typeof this[ii]=="number"){let e=this[ii];this[ii]=null,fl.close(e,r=>r?this.emit("error",r):this.emit("close"))}}},tG=class extends mR{[O0](){let e;if(this[hR]&&this[N0]==="r+")try{e=fl.openSync(this[Wp],this[N0],this[gR])}catch(r){if(r.code==="ENOENT")return this[N0]="w",this[O0]();throw r}else e=fl.openSync(this[Wp],this[N0],this[gR]);this[jI](null,e)}[Yu](){if(this[HI]&&typeof this[ii]=="number"){let e=this[ii];this[ii]=null,fl.closeSync(e),this.emit("close")}}[pR](e){let r=!0;try{this[LI](null,fl.writeSync(this[ii],e,0,e.length,this[dm])),r=!1}finally{if(r)try{this[Yu]()}catch{}}}};Pv.ReadStream=dR;Pv.ReadStreamSync=eG;Pv.WriteStream=mR;Pv.WriteStreamSync=tG});var vR=_((I3t,y0e)=>{"use strict";var Ast=zT(),pst=RI(),hst=Ie("events"),gst=$x(),dst=1024*1024,mst=VT(),A0e=KT(),yst=m6(),rG=Buffer.from([31,139]),Lc=Symbol("state"),mm=Symbol("writeEntry"),Yp=Symbol("readEntry"),nG=Symbol("nextEntry"),p0e=Symbol("processEntry"),Mc=Symbol("extendedHeader"),xv=Symbol("globalExtendedHeader"),L0=Symbol("meta"),h0e=Symbol("emitMeta"),Di=Symbol("buffer"),Vp=Symbol("queue"),ym=Symbol("ended"),g0e=Symbol("emittedEnd"),Em=Symbol("emit"),Al=Symbol("unzip"),yR=Symbol("consumeChunk"),ER=Symbol("consumeChunkSub"),iG=Symbol("consumeBody"),d0e=Symbol("consumeMeta"),m0e=Symbol("consumeHeader"),IR=Symbol("consuming"),sG=Symbol("bufferConcat"),oG=Symbol("maybeEnd"),kv=Symbol("writing"),M0=Symbol("aborted"),CR=Symbol("onDone"),Im=Symbol("sawValidEntry"),wR=Symbol("sawNullBlock"),BR=Symbol("sawEOF"),Est=t=>!0;y0e.exports=Ast(class extends hst{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Im]=null,this.on(CR,r=>{(this[Lc]==="begin"||this[Im]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(CR,e.ondone):this.on(CR,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||dst,this.filter=typeof e.filter=="function"?e.filter:Est,this.writable=!0,this.readable=!1,this[Vp]=new gst,this[Di]=null,this[Yp]=null,this[mm]=null,this[Lc]="begin",this[L0]="",this[Mc]=null,this[xv]=null,this[ym]=!1,this[Al]=null,this[M0]=!1,this[wR]=!1,this[BR]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[m0e](e,r){this[Im]===null&&(this[Im]=!1);let s;try{s=new pst(e,r,this[Mc],this[xv])}catch(a){return this.warn("TAR_ENTRY_INVALID",a)}if(s.nullBlock)this[wR]?(this[BR]=!0,this[Lc]==="begin"&&(this[Lc]="header"),this[Em]("eof")):(this[wR]=!0,this[Em]("nullBlock"));else if(this[wR]=!1,!s.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:s});else if(!s.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:s});else{let a=s.type;if(/^(Symbolic)?Link$/.test(a)&&!s.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:s});else if(!/^(Symbolic)?Link$/.test(a)&&s.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:s});else{let n=this[mm]=new mst(s,this[Mc],this[xv]);if(!this[Im])if(n.remain){let c=()=>{n.invalid||(this[Im]=!0)};n.on("end",c)}else this[Im]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[Em]("ignoredEntry",n),this[Lc]="ignore",n.resume()):n.size>0&&(this[L0]="",n.on("data",c=>this[L0]+=c),this[Lc]="meta"):(this[Mc]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[Em]("ignoredEntry",n),this[Lc]=n.remain?"ignore":"header",n.resume()):(n.remain?this[Lc]="body":(this[Lc]="header",n.end()),this[Yp]?this[Vp].push(n):(this[Vp].push(n),this[nG]())))}}}[p0e](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Yp]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",s=>this[nG]()),r=!1)):(this[Yp]=null,r=!1),r}[nG](){do;while(this[p0e](this[Vp].shift()));if(!this[Vp].length){let e=this[Yp];!e||e.flowing||e.size===e.remain?this[kv]||this.emit("drain"):e.once("drain",s=>this.emit("drain"))}}[iG](e,r){let s=this[mm],a=s.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return s.write(n),s.blockRemain||(this[Lc]="header",this[mm]=null,s.end()),n.length}[d0e](e,r){let s=this[mm],a=this[iG](e,r);return this[mm]||this[h0e](s),a}[Em](e,r,s){!this[Vp].length&&!this[Yp]?this.emit(e,r,s):this[Vp].push([e,r,s])}[h0e](e){switch(this[Em]("meta",this[L0]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[Mc]=A0e.parse(this[L0],this[Mc],!1);break;case"GlobalExtendedHeader":this[xv]=A0e.parse(this[L0],this[xv],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[Mc]=this[Mc]||Object.create(null),this[Mc].path=this[L0].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[Mc]=this[Mc]||Object.create(null),this[Mc].linkpath=this[L0].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[M0]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[M0])return;if(this[Al]===null&&e){if(this[Di]&&(e=Buffer.concat([this[Di],e]),this[Di]=null),e.lengththis[yR](n)),this[Al].on("error",n=>this.abort(n)),this[Al].on("end",n=>{this[ym]=!0,this[yR]()}),this[kv]=!0;let a=this[Al][s?"end":"write"](e);return this[kv]=!1,a}}this[kv]=!0,this[Al]?this[Al].write(e):this[yR](e),this[kv]=!1;let r=this[Vp].length?!1:this[Yp]?this[Yp].flowing:!0;return!r&&!this[Vp].length&&this[Yp].once("drain",s=>this.emit("drain")),r}[sG](e){e&&!this[M0]&&(this[Di]=this[Di]?Buffer.concat([this[Di],e]):e)}[oG](){if(this[ym]&&!this[g0e]&&!this[M0]&&!this[IR]){this[g0e]=!0;let e=this[mm];if(e&&e.blockRemain){let r=this[Di]?this[Di].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[Di]&&e.write(this[Di]),e.end()}this[Em](CR)}}[yR](e){if(this[IR])this[sG](e);else if(!e&&!this[Di])this[oG]();else{if(this[IR]=!0,this[Di]){this[sG](e);let r=this[Di];this[Di]=null,this[ER](r)}else this[ER](e);for(;this[Di]&&this[Di].length>=512&&!this[M0]&&!this[BR];){let r=this[Di];this[Di]=null,this[ER](r)}this[IR]=!1}(!this[Di]||this[ym])&&this[oG]()}[ER](e){let r=0,s=e.length;for(;r+512<=s&&!this[M0]&&!this[BR];)switch(this[Lc]){case"begin":case"header":this[m0e](e,r),r+=512;break;case"ignore":case"body":r+=this[iG](e,r);break;case"meta":r+=this[d0e](e,r);break;default:throw new Error("invalid state: "+this[Lc])}r{"use strict";var Ist=DI(),I0e=vR(),qI=Ie("fs"),Cst=GI(),E0e=Ie("path"),aG=FI();w0e.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let s=Ist(t);if(s.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!s.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&Bst(s,e),s.noResume||wst(s),s.file&&s.sync?vst(s):s.file?Sst(s,r):C0e(s)};var wst=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},Bst=(t,e)=>{let r=new Map(e.map(n=>[aG(n),!0])),s=t.filter,a=(n,c)=>{let f=c||E0e.parse(n).root||".",p=n===f?!1:r.has(n)?r.get(n):a(E0e.dirname(n),f);return r.set(n,p),p};t.filter=s?(n,c)=>s(n,c)&&a(aG(n)):n=>a(aG(n))},vst=t=>{let e=C0e(t),r=t.file,s=!0,a;try{let n=qI.statSync(r),c=t.maxReadSize||16*1024*1024;if(n.size{let r=new I0e(t),s=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on("error",f),r.on("end",c),qI.stat(a,(p,h)=>{if(p)f(p);else{let E=new Cst.ReadStream(a,{readSize:s,size:h.size});E.on("error",f),E.pipe(r)}})});return e?n.then(e,e):n},C0e=t=>new I0e(t)});var P0e=_((w3t,b0e)=>{"use strict";var Dst=DI(),DR=uR(),B0e=GI(),v0e=SR(),S0e=Ie("path");b0e.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let s=Dst(t);if(s.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!s.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return s.file&&s.sync?bst(s,e):s.file?Pst(s,e,r):s.sync?xst(s,e):kst(s,e)};var bst=(t,e)=>{let r=new DR.Sync(t),s=new B0e.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(s),D0e(r,e)},Pst=(t,e,r)=>{let s=new DR(t),a=new B0e.WriteStream(t.file,{mode:t.mode||438});s.pipe(a);let n=new Promise((c,f)=>{a.on("error",f),a.on("close",c),s.on("error",f)});return lG(s,e),r?n.then(r,r):n},D0e=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?v0e({file:S0e.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:s=>t.add(s)}):t.add(r)}),t.end()},lG=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return v0e({file:S0e.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:s=>t.add(s)}).then(s=>lG(t,e));t.add(r)}t.end()},xst=(t,e)=>{let r=new DR.Sync(t);return D0e(r,e),r},kst=(t,e)=>{let r=new DR(t);return lG(r,e),r}});var cG=_((B3t,N0e)=>{"use strict";var Qst=DI(),x0e=uR(),Xl=Ie("fs"),k0e=GI(),Q0e=SR(),T0e=Ie("path"),R0e=RI();N0e.exports=(t,e,r)=>{let s=Qst(t);if(!s.file)throw new TypeError("file is required");if(s.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),s.sync?Tst(s,e):Fst(s,e,r)};var Tst=(t,e)=>{let r=new x0e.Sync(t),s=!0,a,n;try{try{a=Xl.openSync(t.file,"r+")}catch(p){if(p.code==="ENOENT")a=Xl.openSync(t.file,"w+");else throw p}let c=Xl.fstatSync(a),f=Buffer.alloc(512);e:for(n=0;nc.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}s=!1,Rst(t,r,n,a,e)}finally{if(s)try{Xl.closeSync(a)}catch{}}},Rst=(t,e,r,s,a)=>{let n=new k0e.WriteStreamSync(t.file,{fd:s,start:r});e.pipe(n),Nst(e,a)},Fst=(t,e,r)=>{e=Array.from(e);let s=new x0e(t),a=(c,f,p)=>{let h=(I,R)=>{I?Xl.close(c,N=>p(I)):p(null,R)},E=0;if(f===0)return h(null,0);let C=0,S=Buffer.alloc(512),P=(I,R)=>{if(I)return h(I);if(C+=R,C<512&&R)return Xl.read(c,S,C,S.length-C,E+C,P);if(E===0&&S[0]===31&&S[1]===139)return h(new Error("cannot append to compressed archives"));if(C<512)return h(null,E);let N=new R0e(S);if(!N.cksumValid)return h(null,E);let U=512*Math.ceil(N.size/512);if(E+U+512>f||(E+=U+512,E>=f))return h(null,E);t.mtimeCache&&t.mtimeCache.set(N.path,N.mtime),C=0,Xl.read(c,S,0,512,E,P)};Xl.read(c,S,0,512,E,P)},n=new Promise((c,f)=>{s.on("error",f);let p="r+",h=(E,C)=>{if(E&&E.code==="ENOENT"&&p==="r+")return p="w+",Xl.open(t.file,p,h);if(E)return f(E);Xl.fstat(C,(S,P)=>{if(S)return Xl.close(C,()=>f(S));a(C,P.size,(I,R)=>{if(I)return f(I);let N=new k0e.WriteStream(t.file,{fd:C,start:R});s.pipe(N),N.on("error",f),N.on("close",c),F0e(s,e)})})};Xl.open(t.file,p,h)});return r?n.then(r,r):n},Nst=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?Q0e({file:T0e.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:s=>t.add(s)}):t.add(r)}),t.end()},F0e=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return Q0e({file:T0e.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:s=>t.add(s)}).then(s=>F0e(t,e));t.add(r)}t.end()}});var L0e=_((v3t,O0e)=>{"use strict";var Ost=DI(),Lst=cG();O0e.exports=(t,e,r)=>{let s=Ost(t);if(!s.file)throw new TypeError("file is required");if(s.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),Mst(s),Lst(s,e,r)};var Mst=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,s)=>e(r,s)&&!(t.mtimeCache.get(r)>s.mtime):(r,s)=>!(t.mtimeCache.get(r)>s.mtime)}});var _0e=_((S3t,U0e)=>{var{promisify:M0e}=Ie("util"),U0=Ie("fs"),Ust=t=>{if(!t)t={mode:511,fs:U0};else if(typeof t=="object")t={mode:511,fs:U0,...t};else if(typeof t=="number")t={mode:t,fs:U0};else if(typeof t=="string")t={mode:parseInt(t,8),fs:U0};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||U0.mkdir,t.mkdirAsync=M0e(t.mkdir),t.stat=t.stat||t.fs.stat||U0.stat,t.statAsync=M0e(t.stat),t.statSync=t.statSync||t.fs.statSync||U0.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||U0.mkdirSync,t};U0e.exports=Ust});var j0e=_((D3t,H0e)=>{var _st=process.platform,{resolve:Hst,parse:jst}=Ie("path"),Gst=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=Hst(t),_st==="win32"){let e=/[*|"<>?:]/,{root:r}=jst(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};H0e.exports=Gst});var V0e=_((b3t,Y0e)=>{var{dirname:G0e}=Ie("path"),q0e=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(s=>s.isDirectory()?r:void 0,s=>s.code==="ENOENT"?q0e(t,G0e(e),e):void 0),W0e=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(s){return s.code==="ENOENT"?W0e(t,G0e(e),e):void 0}};Y0e.exports={findMade:q0e,findMadeSync:W0e}});var AG=_((P3t,K0e)=>{var{dirname:J0e}=Ie("path"),uG=(t,e,r)=>{e.recursive=!1;let s=J0e(t);return s===t?e.mkdirAsync(t,e).catch(a=>{if(a.code!=="EISDIR")throw a}):e.mkdirAsync(t,e).then(()=>r||t,a=>{if(a.code==="ENOENT")return uG(s,e).then(n=>uG(t,e,n));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;return e.statAsync(t).then(n=>{if(n.isDirectory())return r;throw a},()=>{throw a})})},fG=(t,e,r)=>{let s=J0e(t);if(e.recursive=!1,s===t)try{return e.mkdirSync(t,e)}catch(a){if(a.code!=="EISDIR")throw a;return}try{return e.mkdirSync(t,e),r||t}catch(a){if(a.code==="ENOENT")return fG(t,e,fG(s,e,r));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};K0e.exports={mkdirpManual:uG,mkdirpManualSync:fG}});var Z0e=_((x3t,X0e)=>{var{dirname:z0e}=Ie("path"),{findMade:qst,findMadeSync:Wst}=V0e(),{mkdirpManual:Yst,mkdirpManualSync:Vst}=AG(),Jst=(t,e)=>(e.recursive=!0,z0e(t)===t?e.mkdirAsync(t,e):qst(e,t).then(s=>e.mkdirAsync(t,e).then(()=>s).catch(a=>{if(a.code==="ENOENT")return Yst(t,e);throw a}))),Kst=(t,e)=>{if(e.recursive=!0,z0e(t)===t)return e.mkdirSync(t,e);let s=Wst(e,t);try{return e.mkdirSync(t,e),s}catch(a){if(a.code==="ENOENT")return Vst(t,e);throw a}};X0e.exports={mkdirpNative:Jst,mkdirpNativeSync:Kst}});var rge=_((k3t,tge)=>{var $0e=Ie("fs"),zst=process.version,pG=zst.replace(/^v/,"").split("."),ege=+pG[0]>10||+pG[0]==10&&+pG[1]>=12,Xst=ege?t=>t.mkdir===$0e.mkdir:()=>!1,Zst=ege?t=>t.mkdirSync===$0e.mkdirSync:()=>!1;tge.exports={useNative:Xst,useNativeSync:Zst}});var lge=_((Q3t,age)=>{var WI=_0e(),YI=j0e(),{mkdirpNative:nge,mkdirpNativeSync:ige}=Z0e(),{mkdirpManual:sge,mkdirpManualSync:oge}=AG(),{useNative:$st,useNativeSync:eot}=rge(),VI=(t,e)=>(t=YI(t),e=WI(e),$st(e)?nge(t,e):sge(t,e)),tot=(t,e)=>(t=YI(t),e=WI(e),eot(e)?ige(t,e):oge(t,e));VI.sync=tot;VI.native=(t,e)=>nge(YI(t),WI(e));VI.manual=(t,e)=>sge(YI(t),WI(e));VI.nativeSync=(t,e)=>ige(YI(t),WI(e));VI.manualSync=(t,e)=>oge(YI(t),WI(e));age.exports=VI});var gge=_((T3t,hge)=>{"use strict";var Uc=Ie("fs"),Cm=Ie("path"),rot=Uc.lchown?"lchown":"chown",not=Uc.lchownSync?"lchownSync":"chownSync",uge=Uc.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),cge=(t,e,r)=>{try{return Uc[not](t,e,r)}catch(s){if(s.code!=="ENOENT")throw s}},iot=(t,e,r)=>{try{return Uc.chownSync(t,e,r)}catch(s){if(s.code!=="ENOENT")throw s}},sot=uge?(t,e,r,s)=>a=>{!a||a.code!=="EISDIR"?s(a):Uc.chown(t,e,r,s)}:(t,e,r,s)=>s,hG=uge?(t,e,r)=>{try{return cge(t,e,r)}catch(s){if(s.code!=="EISDIR")throw s;iot(t,e,r)}}:(t,e,r)=>cge(t,e,r),oot=process.version,fge=(t,e,r)=>Uc.readdir(t,e,r),aot=(t,e)=>Uc.readdirSync(t,e);/^v4\./.test(oot)&&(fge=(t,e,r)=>Uc.readdir(t,r));var bR=(t,e,r,s)=>{Uc[rot](t,e,r,sot(t,e,r,a=>{s(a&&a.code!=="ENOENT"?a:null)}))},Age=(t,e,r,s,a)=>{if(typeof e=="string")return Uc.lstat(Cm.resolve(t,e),(n,c)=>{if(n)return a(n.code!=="ENOENT"?n:null);c.name=e,Age(t,c,r,s,a)});if(e.isDirectory())gG(Cm.resolve(t,e.name),r,s,n=>{if(n)return a(n);let c=Cm.resolve(t,e.name);bR(c,r,s,a)});else{let n=Cm.resolve(t,e.name);bR(n,r,s,a)}},gG=(t,e,r,s)=>{fge(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code==="ENOENT")return s();if(a.code!=="ENOTDIR"&&a.code!=="ENOTSUP")return s(a)}if(a||!n.length)return bR(t,e,r,s);let c=n.length,f=null,p=h=>{if(!f){if(h)return s(f=h);if(--c===0)return bR(t,e,r,s)}};n.forEach(h=>Age(t,h,e,r,p))})},lot=(t,e,r,s)=>{if(typeof e=="string")try{let a=Uc.lstatSync(Cm.resolve(t,e));a.name=e,e=a}catch(a){if(a.code==="ENOENT")return;throw a}e.isDirectory()&&pge(Cm.resolve(t,e.name),r,s),hG(Cm.resolve(t,e.name),r,s)},pge=(t,e,r)=>{let s;try{s=aot(t,{withFileTypes:!0})}catch(a){if(a.code==="ENOENT")return;if(a.code==="ENOTDIR"||a.code==="ENOTSUP")return hG(t,e,r);throw a}return s&&s.length&&s.forEach(a=>lot(t,a,e,r)),hG(t,e,r)};hge.exports=gG;gG.sync=pge});var Ege=_((R3t,dG)=>{"use strict";var dge=lge(),_c=Ie("fs"),PR=Ie("path"),mge=gge(),Vu=QI(),xR=class extends Error{constructor(e,r){super("Cannot extract through symbolic link"),this.path=r,this.symlink=e}get name(){return"SylinkError"}},kR=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'"),this.path=e,this.code=r}get name(){return"CwdError"}},QR=(t,e)=>t.get(Vu(e)),Qv=(t,e,r)=>t.set(Vu(e),r),cot=(t,e)=>{_c.stat(t,(r,s)=>{(r||!s.isDirectory())&&(r=new kR(t,r&&r.code||"ENOTDIR")),e(r)})};dG.exports=(t,e,r)=>{t=Vu(t);let s=e.umask,a=e.mode|448,n=(a&s)!==0,c=e.uid,f=e.gid,p=typeof c=="number"&&typeof f=="number"&&(c!==e.processUid||f!==e.processGid),h=e.preserve,E=e.unlink,C=e.cache,S=Vu(e.cwd),P=(N,U)=>{N?r(N):(Qv(C,t,!0),U&&p?mge(U,c,f,W=>P(W)):n?_c.chmod(t,a,r):r())};if(C&&QR(C,t)===!0)return P();if(t===S)return cot(t,P);if(h)return dge(t,{mode:a}).then(N=>P(null,N),P);let R=Vu(PR.relative(S,t)).split("/");TR(S,R,a,C,E,S,null,P)};var TR=(t,e,r,s,a,n,c,f)=>{if(!e.length)return f(null,c);let p=e.shift(),h=Vu(PR.resolve(t+"/"+p));if(QR(s,h))return TR(h,e,r,s,a,n,c,f);_c.mkdir(h,r,yge(h,e,r,s,a,n,c,f))},yge=(t,e,r,s,a,n,c,f)=>p=>{p?_c.lstat(t,(h,E)=>{if(h)h.path=h.path&&Vu(h.path),f(h);else if(E.isDirectory())TR(t,e,r,s,a,n,c,f);else if(a)_c.unlink(t,C=>{if(C)return f(C);_c.mkdir(t,r,yge(t,e,r,s,a,n,c,f))});else{if(E.isSymbolicLink())return f(new xR(t,t+"/"+e.join("/")));f(p)}}):(c=c||t,TR(t,e,r,s,a,n,c,f))},uot=t=>{let e=!1,r="ENOTDIR";try{e=_c.statSync(t).isDirectory()}catch(s){r=s.code}finally{if(!e)throw new kR(t,r)}};dG.exports.sync=(t,e)=>{t=Vu(t);let r=e.umask,s=e.mode|448,a=(s&r)!==0,n=e.uid,c=e.gid,f=typeof n=="number"&&typeof c=="number"&&(n!==e.processUid||c!==e.processGid),p=e.preserve,h=e.unlink,E=e.cache,C=Vu(e.cwd),S=N=>{Qv(E,t,!0),N&&f&&mge.sync(N,n,c),a&&_c.chmodSync(t,s)};if(E&&QR(E,t)===!0)return S();if(t===C)return uot(C),S();if(p)return S(dge.sync(t,s));let I=Vu(PR.relative(C,t)).split("/"),R=null;for(let N=I.shift(),U=C;N&&(U+="/"+N);N=I.shift())if(U=Vu(PR.resolve(U)),!QR(E,U))try{_c.mkdirSync(U,s),R=R||U,Qv(E,U,!0)}catch{let ee=_c.lstatSync(U);if(ee.isDirectory()){Qv(E,U,!0);continue}else if(h){_c.unlinkSync(U),_c.mkdirSync(U,s),R=R||U,Qv(E,U,!0);continue}else if(ee.isSymbolicLink())return new xR(U,U+"/"+I.join("/"))}return S(R)}});var yG=_((F3t,Ige)=>{var mG=Object.create(null),{hasOwnProperty:fot}=Object.prototype;Ige.exports=t=>(fot.call(mG,t)||(mG[t]=t.normalize("NFKD")),mG[t])});var vge=_((N3t,Bge)=>{var Cge=Ie("assert"),Aot=yG(),pot=FI(),{join:wge}=Ie("path"),hot=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,got=hot==="win32";Bge.exports=()=>{let t=new Map,e=new Map,r=h=>h.split("/").slice(0,-1).reduce((C,S)=>(C.length&&(S=wge(C[C.length-1],S)),C.push(S||"/"),C),[]),s=new Set,a=h=>{let E=e.get(h);if(!E)throw new Error("function does not have any path reservations");return{paths:E.paths.map(C=>t.get(C)),dirs:[...E.dirs].map(C=>t.get(C))}},n=h=>{let{paths:E,dirs:C}=a(h);return E.every(S=>S[0]===h)&&C.every(S=>S[0]instanceof Set&&S[0].has(h))},c=h=>s.has(h)||!n(h)?!1:(s.add(h),h(()=>f(h)),!0),f=h=>{if(!s.has(h))return!1;let{paths:E,dirs:C}=e.get(h),S=new Set;return E.forEach(P=>{let I=t.get(P);Cge.equal(I[0],h),I.length===1?t.delete(P):(I.shift(),typeof I[0]=="function"?S.add(I[0]):I[0].forEach(R=>S.add(R)))}),C.forEach(P=>{let I=t.get(P);Cge(I[0]instanceof Set),I[0].size===1&&I.length===1?t.delete(P):I[0].size===1?(I.shift(),S.add(I[0])):I[0].delete(h)}),s.delete(h),S.forEach(P=>c(P)),!0};return{check:n,reserve:(h,E)=>{h=got?["win32 parallelization disabled"]:h.map(S=>Aot(pot(wge(S))).toLowerCase());let C=new Set(h.map(S=>r(S)).reduce((S,P)=>S.concat(P)));return e.set(E,{dirs:C,paths:h}),h.forEach(S=>{let P=t.get(S);P?P.push(E):t.set(S,[E])}),C.forEach(S=>{let P=t.get(S);P?P[P.length-1]instanceof Set?P[P.length-1].add(E):P.push(new Set([E])):t.set(S,[new Set([E])])}),c(E)}}}});var bge=_((O3t,Dge)=>{var dot=process.platform,mot=dot==="win32",yot=global.__FAKE_TESTING_FS__||Ie("fs"),{O_CREAT:Eot,O_TRUNC:Iot,O_WRONLY:Cot,UV_FS_O_FILEMAP:Sge=0}=yot.constants,wot=mot&&!!Sge,Bot=512*1024,vot=Sge|Iot|Eot|Cot;Dge.exports=wot?t=>t"w"});var bG=_((L3t,Hge)=>{"use strict";var Sot=Ie("assert"),Dot=vR(),Mn=Ie("fs"),bot=GI(),Jp=Ie("path"),Mge=Ege(),Pge=b6(),Pot=vge(),xot=P6(),Zl=QI(),kot=FI(),Qot=yG(),xge=Symbol("onEntry"),CG=Symbol("checkFs"),kge=Symbol("checkFs2"),NR=Symbol("pruneCache"),wG=Symbol("isReusable"),Hc=Symbol("makeFs"),BG=Symbol("file"),vG=Symbol("directory"),OR=Symbol("link"),Qge=Symbol("symlink"),Tge=Symbol("hardlink"),Rge=Symbol("unsupported"),Fge=Symbol("checkPath"),_0=Symbol("mkdir"),Xo=Symbol("onError"),RR=Symbol("pending"),Nge=Symbol("pend"),JI=Symbol("unpend"),EG=Symbol("ended"),IG=Symbol("maybeClose"),SG=Symbol("skip"),Tv=Symbol("doChown"),Rv=Symbol("uid"),Fv=Symbol("gid"),Nv=Symbol("checkedCwd"),Uge=Ie("crypto"),_ge=bge(),Tot=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Ov=Tot==="win32",Rot=(t,e)=>{if(!Ov)return Mn.unlink(t,e);let r=t+".DELETE."+Uge.randomBytes(16).toString("hex");Mn.rename(t,r,s=>{if(s)return e(s);Mn.unlink(r,e)})},Fot=t=>{if(!Ov)return Mn.unlinkSync(t);let e=t+".DELETE."+Uge.randomBytes(16).toString("hex");Mn.renameSync(t,e),Mn.unlinkSync(e)},Oge=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,Lge=t=>Qot(kot(Zl(t))).toLowerCase(),Not=(t,e)=>{e=Lge(e);for(let r of t.keys()){let s=Lge(r);(s===e||s.indexOf(e+"/")===0)&&t.delete(r)}},Oot=t=>{for(let e of t.keys())t.delete(e)},Lv=class extends Dot{constructor(e){if(e||(e={}),e.ondone=r=>{this[EG]=!0,this[IG]()},super(e),this[Nv]=!1,this.reservations=Pot(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[RR]=0,this[EG]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Ov,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Zl(Jp.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[xge](r))}warn(e,r,s={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(s.recoverable=!1),super.warn(e,r,s)}[IG](){this[EG]&&this[RR]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[Fge](e){if(this.strip){let r=Zl(e.path).split("/");if(r.length=this.strip)e.linkpath=s.slice(this.strip).join("/");else return!1}}if(!this.preservePaths){let r=Zl(e.path),s=r.split("/");if(s.includes("..")||Ov&&/^[a-z]:\.\.$/i.test(s[0]))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;let[a,n]=xot(r);a&&(e.path=n,this.warn("TAR_ENTRY_INFO",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(Jp.isAbsolute(e.path)?e.absolute=Zl(Jp.resolve(e.path)):e.absolute=Zl(Jp.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:Zl(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=Jp.win32.parse(e.absolute);e.absolute=r+Pge.encode(e.absolute.substr(r.length));let{root:s}=Jp.win32.parse(e.path);e.path=s+Pge.encode(e.path.substr(s.length))}return!0}[xge](e){if(!this[Fge](e))return e.resume();switch(Sot.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[CG](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[Rge](e)}}[Xo](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[JI](),r.resume())}[_0](e,r,s){Mge(Zl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},s)}[Tv](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[Rv](e){return Oge(this.uid,e.uid,this.processUid)}[Fv](e){return Oge(this.gid,e.gid,this.processGid)}[BG](e,r){let s=e.mode&4095||this.fmode,a=new bot.WriteStream(e.absolute,{flags:_ge(e.size),mode:s,autoClose:!1});a.on("error",p=>{a.fd&&Mn.close(a.fd,()=>{}),a.write=()=>!0,this[Xo](p,e),r()});let n=1,c=p=>{if(p){a.fd&&Mn.close(a.fd,()=>{}),this[Xo](p,e),r();return}--n===0&&Mn.close(a.fd,h=>{h?this[Xo](h,e):this[JI](),r()})};a.on("finish",p=>{let h=e.absolute,E=a.fd;if(e.mtime&&!this.noMtime){n++;let C=e.atime||new Date,S=e.mtime;Mn.futimes(E,C,S,P=>P?Mn.utimes(h,C,S,I=>c(I&&P)):c())}if(this[Tv](e)){n++;let C=this[Rv](e),S=this[Fv](e);Mn.fchown(E,C,S,P=>P?Mn.chown(h,C,S,I=>c(I&&P)):c())}c()});let f=this.transform&&this.transform(e)||e;f!==e&&(f.on("error",p=>{this[Xo](p,e),r()}),e.pipe(f)),f.pipe(a)}[vG](e,r){let s=e.mode&4095||this.dmode;this[_0](e.absolute,s,a=>{if(a){this[Xo](a,e),r();return}let n=1,c=f=>{--n===0&&(r(),this[JI](),e.resume())};e.mtime&&!this.noMtime&&(n++,Mn.utimes(e.absolute,e.atime||new Date,e.mtime,c)),this[Tv](e)&&(n++,Mn.chown(e.absolute,this[Rv](e),this[Fv](e),c)),c()})}[Rge](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Qge](e,r){this[OR](e,e.linkpath,"symlink",r)}[Tge](e,r){let s=Zl(Jp.resolve(this.cwd,e.linkpath));this[OR](e,s,"link",r)}[Nge](){this[RR]++}[JI](){this[RR]--,this[IG]()}[SG](e){this[JI](),e.resume()}[wG](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!Ov}[CG](e){this[Nge]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,s=>this[kge](e,s))}[NR](e){e.type==="SymbolicLink"?Oot(this.dirCache):e.type!=="Directory"&&Not(this.dirCache,e.absolute)}[kge](e,r){this[NR](e);let s=f=>{this[NR](e),r(f)},a=()=>{this[_0](this.cwd,this.dmode,f=>{if(f){this[Xo](f,e),s();return}this[Nv]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let f=Zl(Jp.dirname(e.absolute));if(f!==this.cwd)return this[_0](f,this.dmode,p=>{if(p){this[Xo](p,e),s();return}c()})}c()},c=()=>{Mn.lstat(e.absolute,(f,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[SG](e),s();return}if(f||this[wG](e,p))return this[Hc](null,e,s);if(p.isDirectory()){if(e.type==="Directory"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,E=C=>this[Hc](C,e,s);return h?Mn.chmod(e.absolute,e.mode,E):E()}if(e.absolute!==this.cwd)return Mn.rmdir(e.absolute,h=>this[Hc](h,e,s))}if(e.absolute===this.cwd)return this[Hc](null,e,s);Rot(e.absolute,h=>this[Hc](h,e,s))})};this[Nv]?n():a()}[Hc](e,r,s){if(e){this[Xo](e,r),s();return}switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[BG](r,s);case"Link":return this[Tge](r,s);case"SymbolicLink":return this[Qge](r,s);case"Directory":case"GNUDumpDir":return this[vG](r,s)}}[OR](e,r,s,a){Mn[s](r,e.absolute,n=>{n?this[Xo](n,e):(this[JI](),e.resume()),a()})}},FR=t=>{try{return[null,t()]}catch(e){return[e,null]}},DG=class extends Lv{[Hc](e,r){return super[Hc](e,r,()=>{})}[CG](e){if(this[NR](e),!this[Nv]){let n=this[_0](this.cwd,this.dmode);if(n)return this[Xo](n,e);this[Nv]=!0}if(e.absolute!==this.cwd){let n=Zl(Jp.dirname(e.absolute));if(n!==this.cwd){let c=this[_0](n,this.dmode);if(c)return this[Xo](c,e)}}let[r,s]=FR(()=>Mn.lstatSync(e.absolute));if(s&&(this.keep||this.newer&&s.mtime>e.mtime))return this[SG](e);if(r||this[wG](e,s))return this[Hc](null,e);if(s.isDirectory()){if(e.type==="Directory"){let c=!this.noChmod&&e.mode&&(s.mode&4095)!==e.mode,[f]=c?FR(()=>{Mn.chmodSync(e.absolute,e.mode)}):[];return this[Hc](f,e)}let[n]=FR(()=>Mn.rmdirSync(e.absolute));this[Hc](n,e)}let[a]=e.absolute===this.cwd?[]:FR(()=>Fot(e.absolute));this[Hc](a,e)}[BG](e,r){let s=e.mode&4095||this.fmode,a=f=>{let p;try{Mn.closeSync(n)}catch(h){p=h}(f||p)&&this[Xo](f||p,e),r()},n;try{n=Mn.openSync(e.absolute,_ge(e.size),s)}catch(f){return a(f)}let c=this.transform&&this.transform(e)||e;c!==e&&(c.on("error",f=>this[Xo](f,e)),e.pipe(c)),c.on("data",f=>{try{Mn.writeSync(n,f,0,f.length)}catch(p){a(p)}}),c.on("end",f=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,E=e.mtime;try{Mn.futimesSync(n,h,E)}catch(C){try{Mn.utimesSync(e.absolute,h,E)}catch{p=C}}}if(this[Tv](e)){let h=this[Rv](e),E=this[Fv](e);try{Mn.fchownSync(n,h,E)}catch(C){try{Mn.chownSync(e.absolute,h,E)}catch{p=p||C}}}a(p)})}[vG](e,r){let s=e.mode&4095||this.dmode,a=this[_0](e.absolute,s);if(a){this[Xo](a,e),r();return}if(e.mtime&&!this.noMtime)try{Mn.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[Tv](e))try{Mn.chownSync(e.absolute,this[Rv](e),this[Fv](e))}catch{}r(),e.resume()}[_0](e,r){try{return Mge.sync(Zl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(s){return s}}[OR](e,r,s,a){try{Mn[s+"Sync"](r,e.absolute),a(),e.resume()}catch(n){return this[Xo](n,e)}}};Lv.Sync=DG;Hge.exports=Lv});var Yge=_((M3t,Wge)=>{"use strict";var Lot=DI(),LR=bG(),Gge=Ie("fs"),qge=GI(),jge=Ie("path"),PG=FI();Wge.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let s=Lot(t);if(s.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!s.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&Mot(s,e),s.file&&s.sync?Uot(s):s.file?_ot(s,r):s.sync?Hot(s):jot(s)};var Mot=(t,e)=>{let r=new Map(e.map(n=>[PG(n),!0])),s=t.filter,a=(n,c)=>{let f=c||jge.parse(n).root||".",p=n===f?!1:r.has(n)?r.get(n):a(jge.dirname(n),f);return r.set(n,p),p};t.filter=s?(n,c)=>s(n,c)&&a(PG(n)):n=>a(PG(n))},Uot=t=>{let e=new LR.Sync(t),r=t.file,s=Gge.statSync(r),a=t.maxReadSize||16*1024*1024;new qge.ReadStreamSync(r,{readSize:a,size:s.size}).pipe(e)},_ot=(t,e)=>{let r=new LR(t),s=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on("error",f),r.on("close",c),Gge.stat(a,(p,h)=>{if(p)f(p);else{let E=new qge.ReadStream(a,{readSize:s,size:h.size});E.on("error",f),E.pipe(r)}})});return e?n.then(e,e):n},Hot=t=>new LR.Sync(t),jot=t=>new LR(t)});var Vge=_(Ps=>{"use strict";Ps.c=Ps.create=P0e();Ps.r=Ps.replace=cG();Ps.t=Ps.list=SR();Ps.u=Ps.update=L0e();Ps.x=Ps.extract=Yge();Ps.Pack=uR();Ps.Unpack=bG();Ps.Parse=vR();Ps.ReadEntry=VT();Ps.WriteEntry=M6();Ps.Header=RI();Ps.Pax=KT();Ps.types=I6()});var xG,Jge,H0,Mv,Uv,Kge=Xe(()=>{xG=ut(Ld()),Jge=Ie("worker_threads"),H0=Symbol("kTaskInfo"),Mv=class{constructor(e,r){this.fn=e;this.limit=(0,xG.default)(r.poolSize)}run(e){return this.limit(()=>this.fn(e))}},Uv=class{constructor(e,r){this.source=e;this.workers=[];this.limit=(0,xG.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let s=this.workers.pop();s?s.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new Jge.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",r=>{if(!e[H0])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[H0].resolve(r),e[H0]=null,e.unref(),this.workers.push(e)}),e.on("error",r=>{e[H0]?.reject(r),e[H0]=null}),e.on("exit",r=>{r!==0&&e[H0]?.reject(new Error(`Worker exited with code ${r}`)),e[H0]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((s,a)=>{r[H0]={resolve:s,reject:a},r.postMessage(e)})})}}});var Xge=_((j3t,zge)=>{var kG;zge.exports.getContent=()=>(typeof kG>"u"&&(kG=Ie("zlib").brotliDecompressSync(Buffer.from("W2xFdgBPZrjSneDvVbLecg9fIhuy4cX6GuF9CJQpmu4RdNt2tSIi3YZAPJzO1Ju/O0dV1bTkYsgCLThVdbatry9HdhTU1geV2ROjsMltUFBZJKzSZoSLXaDMA7MJtfXUZJlq3aQXKbUKncLmJdo5ByJUTvhIXveNwEBNvBd2oxvnpn4bPkVdGHlvHIlNFxsdCpFJELoRwnbMYlM4po2Z06KXwCi1p2pjs9id3NE2aovZB2yHbSj773jMlfchfy8YwvdDUZ/vn38/MrcgKXdhPVyCRIJINOTc+nvG10A05G5fDWBJlRYRLcZ2SJ9KXzV9P+t4bZ/4ta/XzPq/ny+h1gFHGaDHLBUStJHA1I6ePGRc71wTQyYfc9XD5lW9lkNwtRR9fQNnHnpZTidToeBJ1Jm1RF0pyQsV2LW+fcW218zX0zX/IxA45ZhdTxJH79h9EQSUiPkborYYSHZWctm7f//rd+ZPtVfMU6BpdkJgCVQmfvqm+fVbEgYxqmR7xsfeTPDsKih7u8clJ/eEIKB1UIl7ilvT1LKqXzCI9eUZcoOKhSFnla7zhX1BzrDkzGO57PXtznEtQ5DI6RoVcQbKVsRC1v/6verXL2YYcm90hZP2vehoS2TLcW3ZHklOOlVVgmElU0lA2ZUfMcB//6lpq63QR6LxhEs0eyZXsfAPJnM1aQnRmWpTsunAngg8P3/llEf/LfOOuZqsQdCgcRCUxFQtq9rYCAxxd6DQ1POB53uacqH73VQR/fjG1vHQQUpr8fjmM+CgUANS0Y0wBrINE3e/ZGGx+Xz4MEVr7XN2s8kFODQXAtIf2roXIqLa9ogq2qqyBS5z7CeYnNVZchZhFsDSTev96F0FZpBgFPCIpvrj8NtZ6eMDCElwZ9JHVxBmuu6Hpnl4+nDr+/x4u6vOw5XfU7e701UkJJXQQvzDoBWIBB0ce3RguzkawgT8AMPzlHgdDw5idYnj+5NJM9XBL7HSG0M/wsbK7v5iUUOt5+PuLthWduVnVU8PNAbsQUGJ/JPlTUOUBMvIGWn96Efznz4/dnfvRE2e+TxVXd0UA2iBjTJ/E+ZaENTxhknQ/K5h3/EKWn6Wo8yMRhKZla5AvalupPqw5Kso3q/5ebzuH7bEI/DiYAraB7m1PH5xtjTj/2+m9u366oab8TLrfeSCpGGktTbc8Adh1zXvEuWaaAeyuwEMAYLUgJQ4BCGNce++V01VVUOaBsDZA0DaORiOMSZa+fUuC5wNNwyMTcL9/3vTrLb3/R8IBAgmBTJZEqgsk1WebctvO2CkSqmMPX3Uzq16sRHevfe/k/+990OK/yPQiv8j0EJEAEeIAHkKEQCrCYD5fwBkBUBmDpiZVYOkpDqUqTOUqTkse7KqfRKkZpSZ0jmVmVKbVHvVGONSY6xdOXf2bfxYs+r97Gaz7/VidrNczmo5i+X4/79WaRtnVo6UQAk7u1v/33o7HGQdPSpQj/7rqqYgCstG5MTLOF+dsIv//2aWtasTQFXXSGVKy0Ch0FwtLAv5xL+sjMzIJeSZkqQ+090j9RMRiYjIRDMBVHEBdLMPuzhK9ArtKWmta6w91npmkeMIbXl7nz+t0qqu7mqNZH8NgWcOML8gqf5fsvkoWoqCW/Uv9a31Jb231iAdAFq2b0f2AXJIgEFCSX5xeJctKHDjpJQ3m3Urk0iC5/t7U/875277i6mGdxYoptsKpVKptp46HgxpRCOeWYxBRAIkEfH8P2f4vnxABfSq3okFhW7Sh7EOU6Zknm9b/2dQZl1CfrShJVuQKkmDUKRlwEAYpohyd7/uuRO4vjhiW92oa7DifsWphJQsLIonVqN9+X6G95E9gJv1/aVCu6Vysu/NbAvVQJAIkgSLIIEgCcE1iBZvi3Talbv/B95N+2tvY1Qof7OKQVArLUEjJSQhhBgSgWJaCGz+exJ5As24WxMMguChXfbB3r3z09qdsMUgWww4SIpBUgwSMGCKKVKkSDFoiimmuGKFLRY8P+/j/1z/z8vcC0/38z9ixBEjRoTHiLRERESEEhFKHk1poFts2iWWWCLiyP783Pr/f3p9jjDzv+KKLbZo0QLRAoEgGQSZIMgEgSCZEogSJUqUWJmUwG/uv3/60+facZ/fES1atGixxRZhCENEGEpElAhMifCIiMh7RNRARD0osUTmQzS53d7gIWweY/AMx+gtFBHZ+QKBsEAgEAiEnXyTePKGdLaKJm1heyFaU3uzbTmJnADDv5s+/2iBsQLt8213mBZIEC+iwULwYIFUkDqt7977a5EjE/PA5Kn3lAZJ2jN6FtU6hpJswxeRU8EDzmheRavGU+8SAXcv9hs2VHFHpGFd2uSqhHfl+2vjalI8eXtMfadrWGGNgIrP+vNSPghBQhnaYRowg/SWg6qitd+w5dduV3M/w+v7ZmNa2EHT7PCw7b26WSDoIaI+BqiP5p2zrxStV+M2GSTNwLZe7+NuQ2yBmwrOzjTUkFHwTV/eBa16T3gA4/213h/1KeX+30V2dZfwJfquaEB6xymhDz3/VMrY5GD9qnZSnAOdHwOrSiaW52B2t2N16zP70evD5mkQyIw0SkzGfUSC0v6MnmPjA/zDgnWuNgwjo7uqtquP5iVWyxtfYeRFHYCX8Ri+J5QLlWqdxq/rU5NcBfWU0gwJLQozOPn8AKW8O8tlag5jTBhcLinjQ3x+ROz+sC1XeAEFjsiL/RBz5ZaHIRt1Zbw7BI/oqy9GqIvPir/AVOOYmyvYsW4S+OjA6lAao99TaXVi1/zOSY7OsRX/YRjJGmdyzupZMt8/DVsorPED2dvEHJaq3K/NE3bKc+Ilrb/azbMvPOIR2+6+xdd8ma/RzeYh23z26tLr9RU6lUdspWd2NAZvk1KsuWtCCp0djmdRFF8HywmTO5KH5Q7JmWezwwKTluDzWDDEEErDdtCCr0a3/GLiI1+HFJKGSB6KtqRHbbS4nsotDPyRz6MFVsQZEL/84gHTA3INdbmG+IoQeUnuY9jGbwRzWSQPASvKFzPQ8sMX+Ty0xAooDSUYEg2rB2Asi8sg++mGqyPPdcZaQiV7O4lZKh/GtbLxz6f2bTsRiLCS7YyUlJjXyQfUAqv97xnph6+1be14kuOkiiW9yBJa3qGJc/jQpCNb/vnTbiO8xEL8sWjHbz2Bnbw/6u0defDAf0FGLaQbLe/+iCD19fZdW4gLDjOLrMbQ2T9vzdtlMqbVl3aCRT/5cB8G8CCpn5B9Lf3jpPZHybpehwzVihnKVbsZkH26pXEqhZl3TmBX61DuBRGWyjOcuBvMT14I2t2ppPMw9ZDpZixooFP9mAgeVVq/i0VyO1POaBTOdukyymNgYmnefdg99y0VvJTipQXLHiIB+GYJk6iLBUtXC5Eut2DpuKRTvuBkW3pv6b3l9xr3/tvyL7GOfiZJ5G+M1aBLJ8TSrpD/ib7xQ9H4b9AfOQ/uEcDmZB6cL2xC41vkwfpiTmh85keSHMtuqSwHp3CQjy0hCN4mosrShflH0n4J1MoTLAROsfy6R7DbEVIUplDwMc4bwsJzphym5GmaVt3+FVff00PZlpU7E5+eHCn5OBo5v0P3QHYrsHNk0PZ7klsowDlcZtJdJgvEbmwvROEM44XY0SuLhahpubgq3SzjsieuutCgAA3qM4rw/MfmzN6HiA++fyU4Rojl44Jb3lXXiQdVSyENix+uraEeD7BibuDCZyFx7aSSW3MA55ymmgAwipqWKus8ykE9HSnJ7CAcn4q4rnO13Ll54POTEjqOxF+FpSAggq+iW01ABNH0JIpBemwUz1pq6GW5MeY0mCE5NtDFSzPrukTra4iNQgyYuZRHSsz72UwNvCA042mO1PKJUG7b896RNyXM88mIr7W1lyhCT8uigfq1LwQ1zXpPQsUrUocxVC+No06fCYUsGWWUjl0/D4tExtJmp4w1SYeaLpnQJ7CNbVODe+nUys2PIKLyxnBq0kHPfRWcq+THl5c2JS2fQeZBVxYtIn74wmnVXuTeFKjE4apGeJAQWnr5Jum5VD/KXuOoyZRPRtrgkZfqvDIhmlbcO6TcjEIhK7mkfR/ad7WeqFjihp7L40OITvp037LNCGX/L6y51MCmkxcpjKCpzBA0noqXTJW2WtDBHUAiBTBi4eBW4rLSC2L+o208CmJ/sxGolgvDgv6hwNsfmxveCnGodx1iKVgEsUO1vE1JKVnT4SgRTO2dgh9K+H599CAmLZE8YvfNp3nhge3MhwAfna99yEZihxv/XwtnAneD0/eEOhyhBTIjd37wBrwuGTKcNBm0/Mx8mIj73As7n47h25bDP3X6UH6TyhtoUa+4M/rKf5ClWLs9Y21CYGxQE809XrP2Jk3orKEJ6hOiL28/33rVJeS5dVpluNegSJcPZfWrG3wDPe1BG6B5cHPnHbNBlhNozcJdZMyFTFG7UPzgl+oUCXRn+ISQ1WnXACLe4kbKtvvthKJhtUPPc2w70asPUj6hAjfITl0GnlA+vRox2VZA9LnskDs68Tk16hXuKd1zfFgC7b6qnLKaoEVXr+2g/BhWXIgw+GVBoqgnDnVuAp2qiUC6qOG4x6GNRVF5WUi7Odw/iUrK/gQUFTBttWGE+ceQumw2t+2dqUrzOrsHSaolipYpBpeLVPvA+1LureB631Tl56A1Wd0ryu96SzibapY3Nz1TXxbMfhInq7WkbUrgGfVaH2vd/tsicD5w5CYV+eISjPH/omyb0wzec5XMokuSw+38AZ2b9rNMawsYSIHvehmbPWUWUuFHVW7var3Am1LM8YFd+G9VDZuKFOvxqm68LDL8bNbjxFevGsFlTyXE1FAbwNZcd6k29dl6ub5BZ6V/O5cTFBmJtgRrraPr7PoqJUnMj6QIpMIodZLDE57k2i6TROku8ZdH3m6Y1vYJFSWTeioWMDaeNqyKHeN8tlp4nDWkSQxHMqbaON4f71KnQF1IwiOkHHPCMrVw/D5W089eWX3/j60UkkuvoRPJTsumkpFd6wW09GwYBwLMgvEZcBgHED3tGu6bESdiXTBcD8W+EIsfaJeutJZ5THXopIx6YVJDbcsMGmYsZtIXb8bsVjewXzc88FcTZ5lYYoFhIrBcO6ljLt5+dp5HmzXv1Kg2MwCJDrRr7qVlXdraGTP828XfilNRkEJ1GwtTE3I1t/aITjVWiTHgXNljdnMXh5wdZpZcKzszsONMKEJhMh0NK+bDGn+rAJDC3mgiOZxq1OUUXNsxkQWhYW1GFtRiWFZNcNDeLLlIQll0jLYPjE2ynxKXI4lcBwCNsxFW85dwAN0PW2KmOMcI6cTvka8d0LYiqm5TNUQfQJPIoralnyMJ4bt6oiIaYBwZu+k4MkkXTQfL1e90rIWXSgjgUBMgCXkoTn9Rr9HCuegYSj1NaIXnzEQUfbtnz7/FkaUwrNSQpHIL+Jj0VvXs5zg6Gn4hCOMevrvMmTvdBdt6DOzxoF88Zp3bG+juT/Zl9hHsXlZY/IeRVTezaepfT0+FNz8u+rCFX+1LykI9/PPmJIfH8/IRAejJVADY7rGj+r8PWPt4mhxDEd6+n9rB/NPcTe2dTs3pXtOjtNyFndrtwLPSz6s+d+vOkWnztCqcbmMfyfd0LcFRcVF8kjkoWIncdj9IKIfZhh+PP+DeY7TVAGAK++IgvZUF6PTLIJT9EhxpprSPCoWuxThGwP8vmEbDs6kDehX0zWXz47U9+/Hqajad+simdjof8lRabLnIvfxoaVOQL907ZBofU7FPER91ifRhlz9nXfSHyGA+c9sQnfOh/SDUqx+vRyM4oJLJXEyfaISzIFoC6MDWR2JB9vBLhhchIiznCQbr7n4zxaEcvphNcZfivwbIKk4C7kb+IcPA8u66nd2Gb/vUiilkp7G6ydQXj82jFjlebJ0yyezuSSbikTcg/iPlGxcWL0JnPmnSbXtHfKBGopIcI3lir17wt8hz8Tw0UHbloVh1oDnNdFBZVkteweiH42CzircC5ZTif9eeYhieGEnmUuVH7ai/JO7HRhjYEPIibvKkVqM3z0jfZE3TOv0ECUC8NkRhCWEHvAOZQ2Di9cpB1UFmdoTca81BmGHQHV52E9WYKITgpIkjtau2nj2g+/51uj2O1NqXpe7/et2u+ywiRJcxClnpB8zPWr8KpuDNG1On7P5XzL7w4LaThoWCyw51tg67gUiQxAvac5QMfVAg7A9hcPddIYKqXNqHKVTRL1cI18UOJxu71LHOStvahBLKaojwKBgRA37Txbt+RZS2SV8fnhjPK3JtIrQYXS/KbLS+FL65SGQrNoZCPoQ3jPPJ5oGmhVQ7p1HPtUJWZUSK9u52UhHSn7Fz4LaB7f232yKKRJk07LL/FidQB0163aXVWAUV+9Uo0KWhJRPowfH1uqYdJztTXYWif3SQ2veJvBWruwtw9FsVjhQC7panWsvhWmb/auexdM60b7dpZ6YWOyOJa0qT+G9zC+cUTlJul16NOjStrdI5+HmW42OyTZigq9e6wSExmEs9irgKnyuV2XcQjptcAhXGxzo0uId2qEuEZLPpPSpkxKQDdnY2nESOYlFBYmNWyWgXWU1cgMEOrISgwBaXV58jMLxLhTFsomEXb26Cnyiq2J2giU9Fm2absgPt4Rbymjjkcd7KgXAtHaXNVLic47oHHBk8ARny/M5iBziv+H09TI7cjX/4l1dt0YkbjOG67cwvyDnwimukP5zYBXBFF7hxXAov2L5b2RfPdccCG3yiboYvK/mEAdstGcwwoUpM2weBoiRPCYEpRZxbEcXZdI3lGC5+PAl0a9AOvplhycISXApYj/Cb6zYy1K01G+osg1+ehGE0m/zhJpyLJ7Z57DmuoP90ZNkReZoycA3m5rCOFZTV8N6IbLjf5BqGMUl4znKQZT8ehgTTt5IvwXbnJLz/7W2WXCWlXpiwfXydTi/zOvfh/iZZU5gT/fCx3nc4PpiXjU8MdqGAs84cdBbTDHTs/YbHBvUVFzcLVURv20/zNCLGxwIchrqFeEBiuug3jSpTTTU7nE2FRDhL0LYczn6cZASeq3qNqi1zQVYub8kofKMm6437UYd5b3/SO7CKivw4FWFPLCLc4Z8CBcULyQE9K8kclUkMZwxwWqSVYIrnqhl3jFaMYj9xzk4XxZQBOZeTHSYKTGcyN0fb56s9a6UvmqOL8RLP5maDP0skmaEs2VciXWCWkS8gbAyh6gHDIsnXCmDhDERh10JM1UdBGKpt3XYeJrw/+Ox5PFGyCLErC+uRMXw76JlFhorQtT6lEItxakSkm2joAbmHfVOulpr1LyuY5qrCVm7ZV8y6SBu2UYc1R9GKlgLZ0FCB7GyxzUfoiunzAJUkS4CwDLnKYZlJE5rs6JF008a55Dco1ZmpojV5KSQyO3RGmuIu6MJqCkKcv/VWPC5Cmzr77J8L2amlHANFA8v4MLWPFTxCuY9+llLIkHb9KqC6drvO76U/HhzYd4TCrtX3hIMtbCl4wpA/crGvRH0eb0k3lkNxfNADxb3kdLBtYQIKSVtpVDXnukN6/Jdmoy9bYx2lx/ziK38opmSgnSmwC8vM2i8fKZ8MSMatN+ll9Va3rQptqQeOiUWdB5P8j67+kp4MWQFGUJgq/jA2SU0WLYbL3FznrYOcZUA2pFzq8l+c26QbiCbAl8Ch0La9zRiLDPy2srfCpXRVcMOatjv3XJEqv6lQBhL4ygI3GKN8DSMNoacSezvDfw84MD+EGYUFiyxXhVwAcjhmct3ea/nmTEyFPJL03efr5cMR1jXApiV6KATnd6csvUBQIDUUE/gF87lpIhcASzc3FNkongQzQBhyilusxM5JCHhq1vsAHUSGlgfPu3T1LMf8fUvu+nWo1UBLM6eduqghd2CF8y4g+jxwScriC7to9zCH1oCqa+AO4eXSC2V6Ayu3vW127r3ABmlmG7suJd51EhqnAydEaetoL5Z+Ih9DtWAiYG1DSpjkcYPAD5smccfdVDpabrJdAdk1Bwhk2f/0XFt+gZ89z9cWBxBadW17CYPkcnfxboTMe+1Gm9uLOdI72/ZEW8/y0dSUqGtJdXZHqbBgpaZqxg9gdyvqrqrbu6pWaCOvqGZ9bS2aNQDDcttEfa7PXefhfw+AEl08ngtUlua0VZbiX43A5T84leaUEbC5JWu0ClotsUtMv9U9Ma8XonMcneCouY74ROyoXJb2qJ3JxdQ0t2Q4GJsnrM6NKuEQsucEeknJx9Kow/RNlZAi5gmhVfd9kZGBWxrcGjGGclP8Dlyf/begmrKtRtKZ5yBT8yKmq5BbFMBNJ3ipr7VHfJAIAEVxbHyfCVVxhN4Ea+KJOX1kmZaTU/zPKeIuHT9RFhcximF6rOEch4CCeVy0QojIiYrbkxQjbaoz5+dTT2lV8Rvem+gxY85I+O944aZIxHzaH3mJ0YT77dfahgwJEN+Ecac7wiCCIbmkaWV98mdvPxjT8bb5DRzhJR3z2dolyrlyaNktNUvWxPOjxcke/OgOG/FwhyIXgS9DOAEITNdNLXNtuKDHc8plFH43V4UF92UVd917U4OC+UYmM9htdQeQb5I/FQp+3cw6YsWkTBNupvHaX4FOeZk90YqUGUsSz1gWzC1geFSSiYQeEdS0CY6LXPM4KVsvR61UCB4pu70JHkvpAE4e0B7PIba/7aQvUbAr9ZlScVQ3ZXzHatAGkBg+fO4eawSGac8km+CpXbCs+fb7FJ8xW/0Fy3TDoZwOwb6pW+BIv8uCG5EDbNrUSRJ/WUcQn4nnt35rFYyt6GLoroOfLw+6Gcj0pO2fsa+AtutLPb9/jmtx+rXd6t3Ls22SglWOFNbJHGG8r7Q9xIThX+tITsfORZ/N/tf/jGqe2ikQDYq2celmNH7OnXLzSvuO9YNSrDOoTSTs3LlGKochkEZlMW/XAAMt7Yp/jbjIlVq2TSg8sewqPiwvBC23Zm/dTcmPDerVVzsUQcHhB+nzht1kaCTCdTNhdvoWKwvYZ4oSsaqOGGcbb5Fl+rid+q6arHmMR20GI6+uWKihVOIb707/PrT1cPyirhOh3NZKdbTbl0cuJuRSqmEV3BOkAGkr3zd0DUr+L5QTewxGAetWpDipU3AdliEJHg0sdyYLdHyNYQueZGb6g0jlOWQQ5J5v3aM199JVy3Uf/1Ge3bkUt13caf0uBvT8mPeOg705fTxlxlV8YqKpH3Ky0eqPaZDkVLcckyXL+x/Se8g56COoCA+vP5ov6o+Gq0F+INLDEJbG6H7QTc1uS8BzgI5xdRrVjdzNfNl7xrtUcdNhwEyTmciqsCw9t2xIe+RMCZTaG6rH0HSa8IzUrSafJqsbmtZwLNfIT+ipGbS6EDg/AOjP2S0Q7NpnkskF6On9uZfJBNMc/vRuPPO+CgdQfjClqSgsCSMKIdCVJSvc5lo7XijOtAu1+cAnisoJqanxLtNhMiZquTYxAg0RznpnCrQ1N8m5SKv/9Ka54quCMo1bPbNcYTa/iO3IWD+FCky5gplE7yvElfoQPOiy3GB0tsPgZH0HbIeEcx5cI6QO00aSWe8+aiLcg8lMxFwL5rRyH2XFwnT+ZpIDbUYiKNB/G0P3n75pLoHkRmfle8JmO5BO2juC2oc1qe6HJ/TC45AjhJ6czzOtLg0Q99Zri3cs+gIfZMwKN+ZARqPe540Aj0bGZso2NHB1O1t5/RkeDdikWUxkEFPKEMbII7WtZuIc1sFeyNo0fo+No1AljZ40n68sAS64VLmvZ4P5++PAqbMkRjyKYh3PXfxynQI1lAg/kz1Ky+RNG2hK0Lu+tIqLD7o9+gSk4ACGxLoKeLU1+YaI1HXJtoNRuw1pMGcuWfZTpIvUyIatl1l45Elm6xNdbDS02RGC7HxTMmZULCwdGyYXsYp4/RJgdqBWINVf7FKIaio4QYm6H5aZIpV+2XsVIn2ATFIBBq739vS8O10e1CI9Zros+/6UQ2nmCDXg6z3adf3sV9bEp8t+e7piPl0Vn6K+O0ZwZDjsWLVv1mgXeNI1bBh6kk8iojUn7nRitqTJ7o+xfs6NZTQfilDoypCeK/kaNg0+yScxuUa3HXBSpNCIkv8gbspwrErL08UpBDJieyBraCuOA1hAPfmkPFJZ9wWq4uR4fB3I6YYRqJERQ5cGX7At+5Np41bUzSNyjseRMm+HeG/Y4AOTh4sFQ6eZrtDMr6g0N5x4Qj/WEqGJ53g3lPIgwX/BjbkvAN63C4acLsxgdIE6mJCCXUZhvDTnr7Nxa6EAYH4AlflhCVNGE6TM10ypmFEoUVr30VFr5dMlvj1dIZ+iXWpUQpswhGTZ0rUdIE1uAB2ho3IZCUkoAETlgWTYTpeHTq+R59HnIeee8yLnEKghPA6gPynJCqv9EmBxl5DHixNZwGIC+ISIP596tmySz1lKWOfJSzCNvSCsphu1WSjnZ5BhOFZrKuj4Q5BJTEAqjd5FcdDoy7EPgtGmeNT6dAtdPT5oKKNBnrUNt1bmp3X8dGpblRXKqVL6+ReHnjdSY3QaLY1HU/FmqVXaPTFvxYHJxUlqTNMfb/OJaIMHrSXQ6d5QHmVpnSy8xGXfAcd6FdokA1MKAzBqB+j85xb7scozV4FTownJXNbX9hsG6i8VjLYfYfFVwvqdoWg8d49fazKaITx5BOo3bIcHKBdMaTC3DrBju3cwmjGERPEz67R4I+AEDzJIO3z0q/ZjUo9uI6WejbnyrEJp+V/2TkToGvLmdDxPqLdErgttfHueQZ4wRk42tDr1WI8ZUpkTvHvSi0wss9WMPTuTccFYOp7Vc+65+JKgOZUryMKe4H6cmOM0m3GsQxeaOPGNKY9TnaotMkhqAptsqyevZ4uGBuo0ZWacIsUxWpCQz+DT7IwKbQRnd1CSfDDOh1mmV0VZj9xygoOSlrf3TxLf8QylmirPfJRzz0bzs5Rn15+jMml2WhWeddU8AM4eATCKiVf/80RzQzE/HS7HcZBCA7w7y8fl0m+8fuf2BIEPdXRYvXUac2yxwkuOKA77mLoxfFbWKQndw7U8GDJShjJxBIgNBGN+UU14ox0YgJ+IM7vYX5ObmNF8NKUC4CN00gHk+OEuqpI3rCNei6d1kR6KzxyHsQ2bruIRx1VHoFq+zW9Ig0WemXUnkWLSlgPd0Dm+ARifyFS0uujurMDt1a8HpqbYz911nQb4TwHyRqdLsFgm3PLoUmOnDL4udj7Z/97w1eaPfyMtBP0ewBq4l/Xnypqpl4el6OnUYFt4SecDUJjh5B0Hg3uQayutsdsj6iRMwO2hMuVSyPagTWUEh5No3x8CE/QRkQHzxmWErQwksxqj7aIQyRA0obK2FRuX67Fs04IxIWOrytjmMZpyMlZdOQowSjQ2jstNQt9dyGFTjTwsdzQsyj4OQ1SOojVrNBLDUtOyjB36Q88MyXlKDihQT1mhoAElDZhpRAJ1KJkLj2EwzWYaI+3SN/5dVpV5LZftFyzcztT2sLCjuGuAKPgaNxY7Nc2bn2UgA3xIlzlUPE0x5wMiNMa7b4KpKq1kS2RcZXz1l0RJajkZzj5iiSqvqYNE0wvIytCMEQBK8fuOzqNBwV/CBCcfhfuwuq64o6mT4miwYCeoAblNBALa6rhaPPQTiijH4KaYg2bD9IUkWwtoDFhpw2/q+paPxEU3jCQGs/LnZKbNxJoqZecAyVC18y6st4me59Qnfco59MewM7GFrp8eZChAKRvXk1tLx+HFdBacQZHR0oXoXdscR+45nbBRMdY0Jt1QH04iAHUwDO7Iku+pHtupJ/XuNcuDeCgbKlpbAd1u91zwSjAOoE80NFnZX8q1YRnYpbffDudICa6eWt5NSVcKLfl+cbdk+sUIOibTNqBNJjyYHkBbLOfADZHkSI8CCggwbr9goMPQZcvj6cKiR+uOQ4/HK/GAOIzNcVLj8a5bVHwJIbNgV+IosU8kQnt/O6JN4z08ORoYvyN5iOfg4xJgMRceOc3anQf65YOrZTSP0Zq+Rcsyms8Itz+PxKCKxZkYMeVFOKfGYbISW3i7P5Iax0nQH+BW/QAjDik9AJDdDqTFQb1zfgQv2wJ/FO2jTAh2jL6lLnM2dnbL/7BygCU0AWKvBHJbwu+CED04ZVad3yNuNpb93gn+XsopRH5LteJEwkqG+Ekrqy7OJlRyn5UJ4BnpxLRCksfT+YhG57Ay0Ivh6rmqT+9J7yZXr58Eus52M4TYBYndTj3HkRS7OBJ7dUkfcRDKiLrgSRcxZxD1MikpUfnjLYoBgonb3gcE2R/otu25r2+sl8+C/eTRvq4+dTSetKZnL4qG/6D/Im0MDe3VQRr+lkROZBeXPhUhu7hVT5NL512dVCWx71GZo3MherjBXD2vePP+q3poRAc6+bB6IvVW+xcbAVAujruIz8OE3RbaOl1Ugqs/uDJjqJRpZPQ0SlQ9Ivo1WkaqU6R68Mvrt3lPeOvET1iGUQXgTMyshouibO3A/wuZoOjc2hD3B/OdIjSXYkhPII7JCPu3QKMV80nSyM/n4VKY7pdIb6qZhR2JvplYrasbD6F/cIKnNGHvZkbINmSUNy0sdlwHbCEExifPCp+l5HM/2kKUEJzMZluCjiXCNENLG7iyYGLvnhldiknwSxYHZN3NzDk9D8kbcCT2woGofSJem943nDYcmMtyZCpzEMdwsO/loCxz+grJ4MZitO6rDKDHIacWBxibAWoc9BWWwTyoy/kNdOVEloQkyII9AVU18e871tLqGS3CaI3folUwms9IXwEaXE/cqv9yRW4ESOkBgOxmgJYM/6tyrZOHVK8w4pDSA+DB6ZW0ZOhTtGRUjoZEfVEetd9rNOYClETrOvfURb1BWPYd9e9lMmN9edm6qA3CfC/S4BpRLTvrhQw5kfcdLVg/ig29gUiTiPdeo+VHCmwWnCxcl0ZNLYmYOGTBPoLkfUd5/fRqQQVr2ToqcEtoKAc1mT1AXDno0x4vt+vn5WzkXyHLXjI38zzj4ty/MLhuiLqYb0FXHHmQRABZsAOpKkB3CYy8rp6YggkRGyElTkgUR4gqkhCxE57jta3ILH4Gn+nru/dQmojvt1k+R06Ba4lIkp9IDHJ5VWdBdyIFINaQgHe9u1B7PKcdQhGKWcg4sJTW6K90F0JTZChHDNkce5itjJb5yr8O89zqdb632zyIPe0df+TBW2qNtJQt+7585WbdQ2dOlTAnHsQSz002FRKZvcPR8/Qc/fK4lhzqXcgkRtdPoTN7kXOMGRXItT0fr4Zi1GSJvOeB9SzIa1APrT+tTPeDxfHZpd1itV1vgdSXkiUlzxzTS+hJfUoD2UoZphAnfXB5uXoUI8EF2hcXj820hev769o1gsGYtEa1tFPgATELWqPyeV2ZYIzyAl7J+Qo4F/a1N3LqV/OjrnJGpoZo0uI4Y1DW1jf3DRqEzWv7RRdVv5yG4Lnyh7agT/tf+tktBzkd0sPdHFLfP3ZBpI74T8AdJc1Tf2g4TN06i6ziXBnwpqSoypI3u7D/aPNAz/D6tI4YyGUT+cOzJ71ReWL1AerHHOeqeO7CeqEBneqw3DHPhYutpNg4VQ+NMwDTWTzmnjE/97qTUKzdmxox9WPjwyr8/58Bdi4dU5JylYkp9ubriWgYgJYJBF9Qw//H4tSwBgDEJRALURops49OS5z6RZtluLDJ0x9lA799/c34tDHsfWLhDLX8IklPe7Wtp/V4NO89nFMo7i9+6RC8gWUx0FyZIMGGOR/WjiMQ9paDOkxFdRTBSfaVVDA2Gsr0lxDsbwrR863VdxY6i6KQQBLJJV2nGQjU/Mjtwp7+AekN3fW3A/7Dexq8poXDXB3kGW19YXa47n+n9gMpu//ZPwFzWR62lY6J/Tm8pVlB305Smnkl6In+9yEVNsbk1wRrxY7077fU9sjDB6ntBtBpgd2hEdKrv+kraxOWGwjTjOhRX6IQXE17xq3LixEEvQkMM+Ye0BFpOg5jWMCwStz5yGye48bVSa3WvB19O1p7nRv6tXlp9IpT58bvHtjrXsWLLe4QSmL14mnfcL2GmS7BYK/vjDkt4lm8AN3zWxix275LeB7nitYSH3boqqh84JEUlRdUCSqMLxf5cfwC+0KEBfU01o0U2ddbRNFuQICKoT+p8MeYhwZi35FzW5c3BatsW/X09ZfOw2K/XY8NNZ7bW3hPd09j+DhJoFopL2Td1KTEJV199pnPzC1Mv7csySdSqxt52wPq1/vxEY94I+PF/p4w7nn2/maWKq4ij//uPUbPPtz7Iet8uu9+34heqvtT6XaMBcCQA5dmE6YdznFrpM1jhceli/E/VkZsWyo9dL+wWwvPYJeLud2MkvsCQBaTjuwjPqTReNJIMrJAKcvsIuCR1x45zt00mwAMdDhr0uwmz5o/E672l6mxa5uSvi7g6dVUyiyjl+Ki4M8PdC8vnIdK695dhKM/IU1YflL554i+KIFsmpa+vhg1dPxi4pPRf47NVb4nh/b+1BZZyXt8m1BEkHM6OzTEEb7jhtlIZMb1tOgRe12nWf0kp1iu7Y3Zjwtxxi9cscph6+Wpdek9k2NZe6t15LBAOMAA9bM02pYzOjsovPhIrf7cfs7Pa1Or4UaRtUAbKlhl5F/unfqvPMiBnAOil/djhSc4rS0c3Ji1evkgvKI4lyivNmGl70MPpN63Gk1Mix9dtf7pivhKe1Ib1LmcwTNoFNQS2XxhhNIA1gDKgwua/CzrXHScGUBOTb361NcszobHMitEj7TzDDB2266FC1hc0XliJvE0ltDflTsPLq32TMqeA0njyEngPyfkyRXqv39HpwJQZsRBHPrD0Fx2UhF7UTSH675ZD1i9ETygY3cFWcZM6IUJ+J3v5jc0jwzjp0Yr1DTOT4vezCVrqO3TJVoEswD42nl73LYLP03itFGb20YFwZ7zi3SiVmeqwt45dMeut02k0c0o0Lot9LMq64I1WzlSzuXGc45veEqE3SHDeM2WZ1kQRmnpGBpUi9bv+8NbQo7Th+8W2d63Fw42nFzatdTjhWEak2mQF8tkhmhwJYuzf2v33iN68SJPVkzcqiR3znKD1ZXD/ydzLbUdwLltd1Mfbc9w/P9S+4qyDsQ20e/3mfbvRAtCzNLQRm4cN4p2KGwDTxGdnkbSnUOI7uM1LiKXvqWXrOoKc+rxbDC09VyntHsFxIEmCUlRhHU/YTOyP74+KouFO1OF1LfmUzwkF/i1U4/8yTtIqbJKPRltRFFLn7Ld4PjOGFYGNAmd+EGG2P5pFEtTglQu9qPaQg8ZtHIFXQAukCgCpPde4xQoIzaxP+yPQxTA5riD/0FwJ4hED9uhk0W6/Wchrrgw82nl/xaCX8uKIUgLKoacHY+ZmBtbX4JSrV/vUalha6YBUOAH1tMAG7W4VAmCoWNQDLkBMzH49fMDlIO/b6jYig6JCXyhfTiyFGjymkPiyM3p5hvXg0mpQTJsYPtjTjqu1mbeYSWrYh80f90OJHOHOHJahZCL1EEuhUSUR9FiUXNaRpX89llNu8DXdA4xj7doINu8Q6kXN3lvp3fost3vHV7KMdYhtGIpvpx1pVimIu2Gm39hPpK/m6KMKVvhT91EOxJSgQ1TxNtzmt8WV+IfeiutIrRxznlCMrRB9aYamZ0sdMVm2pbCCBeLeArNOWnRQ8r44uYvXqV0MMHl6r8fCp/XFpGYVC6/gNOBclOa1pZkwbmU87FR0wh3DFIvsMqzO8g86q92AVgXKlCDBtZOfX+3SW0vXa/92dBx5L3PMRjFFkbhJRAXzIDOLgv3CZuOiQqD10pHQb7FoqtUS4xfsVCxKgAnW+72X+7PkgNFjPE8WgUgh8eX6W1gvY/UcjnbfPzAd5vjl6DB/TISaX1DFWUWFEkzvM3jer1BwAtKx0B2AOPYGL2DtxvhiW/TuwocAXO/UKtnTvGLWPJCWbwN0f5yTlkUIGNIo707TNY/KbbRWsvKVjYTm2CO/BAtV0XWnW15YA7T+B92yN5IUvGvXl94bN5x49vD5JKuS4yjdcrx+g6JyTxZL1NTFHTkOfIfWUseh69la1YBzdgi7a9WXyzxQrEVDzC1YWqh8rN39vtEbeIBDVEHgH56nsgYq/fauFgbD6u+q1RzO6zaA6D2RAxNGAePqVW0nDzqiZtPCGp8P/GPmID82P9wS/UHKxXbJxfAWsYCENQGbsfydLYzy8vhkTksn3XgNShDELREsxG2VjPi6AJZOwyV8xOO+EqHDmtt/jw/hCIg3XsVvgXPPsTybLbfbbzS0EZ/2+b9zj+1PA87FNYgYrlvvx/V3lMqQ8Hz+s8bnDiSUu2vIL00oMn81NaO1WxIIixPWxlo9WvX8dsw7aNR7kDgCsJppKHso1VBGmvmHqAhiana1+i3yYFETyE1vtPpc6J1QXLUwboWe5/R7cJkOisw6fCPiJBghYzyKL6zc9nahDl+l/xFNCfSJimbUCCP7wp+vDzeCuQ7S4VAPoD9S1dwJHZp3fng8+GCfP7vBIMn7GbdIQRpHv05T2a9+2kp84hZ1Nn6Tc18ueBdXfHcV0C9lPxtPc08HucFChZoyXjCIAsErejHgtEusvRrFk3HA7jXY6EZEL/S29ZFrZ6Km/CGs+fj3M8qkWzMJFb5HyWNCtfBCryU7wQnVm3bIYK3jqBPkkt9nF3sY+f1wTYtgvRA58uqvY1pf8TLanzsaDA3IEhQM12NiVlqFuNwizzh7/6bwIxnzOza9VAeILoQDrVZzVG0+IDA8jNTJ9fKJuwx99dq9p37ZhlqHJeZeMXo8yFEfdE2jZCaou76IAWa9H4dhts7MWKZZ74O0z/f7BoanEpX/aIq/EEKHvPDlKHLSXo145vg7QBkxFSvXmpf+lO/M09T9aPbfIgziu7rnKrRj+4d6kb1zorI6B0nJ8qhMc7+7M7zSh3XSAuQLtWWUSsLXGoSkGMWK3VgT3BOy3F02Gg/9wMw1p9wa6SwkrafkmrpfgN7L2GJbR72nAClVbtye8V8a4DPyQIu0EhmSgo1Oltrp4RVWpS0Xx/UqzodyprcKVDqpERN9RliKi608b1uKy1UyO8G54ZoWIoP3OTJzFh5aCU3ZceHeqFTMzja5JbLsh51q1IIq4MQFyaT1Hq9aojBzuMDlvwwJD6TKp6+rWlSfKUNWYVIQmBkGlgo+CFyfygBgmKKuzxTIxSJdsZf1+FqPFugGUHKZjm8ZP72tG55AIUZpcWdiQ/iE8lKqIKrajmMvGXyzTO3bjaQCZ3rMJaJaap54V9QPftcmAkl2lZfLmS9tbn5mBnkCIRY8tvSowaesopFhUnUOclWirztsmmtqu93W0fRf41ucwSLGiMtgStPNm3WNxtMSHLsMeq8jaFSHZ9kOvZJ6wuT7FEyLD8Yv+uzisUw68n3H5TQQsaL/tjUTwYIkkBML99VKpPdISLwCENHAOANUmcwqI0g+IMUjpy+Nn9Fx1Yr2b0mvqZSEdEm4lBwNgdeuPyhlGru8p5SvbNUDA6YP2MF/TB7xkwIeDIEzqYH5UKymipf76wlfWXxhDxYSjrdnuAGg30N6qzifM8DvBdcRryjmrU+CDMJtLhGuoKZVMBSscgJk9Y/l5ZctkwNwPmKJtRcd4lIq5g1qIu+sefQmeuUmleU0WG3YXalHaQqxdlY80WdMzsp0FtN2Q2UlDsLV1i6fhnTUre7pq0kcQ7hmtpU8VJUsxEMOngMNVuEibhaNZLMr8x11LZoeJ0dpEIvtywIwo4YvPktiRepoD8PLoi0IDzu7ubGEvms6twDJy3JnenAR24eKHclGnNwXEbn8uyxfgTABY3pz+GPQbaWgDyWTY++zP/jg3fRHy7Kxrh6TxvZsC2K0T071qArULYam2hKmhnOCoWJGXXxi9VPOadzx5lj43GN/7fYAFRFNDubI4Eh9vxm01VOZFEI0fHJzHHmuHl9bVjDr6rk/P8cb9c4JhW6vBtXLFJDy/GMplr8MaHAyknKnf2/1CFf6Jo1kW9+iFXItI6Dcw0u8hKZqJWt6QiY6riwjCKlNbBwDI6uYwtYdJTCRt5GE/PO/XBaI6fZHr2+NuiZDiFbkXMCWUwsVe3gDJeyZ66raXNpnzff0JBDH+dQnV5JpeTYqz7nQFDpUdkP9YAM6ZCby+tO3fZDHLobrKhJqsaj5tvBnDDiRXEsLzX6IK2djp9wKKH3vbjd5OZ5wxTRYFWmnCmAHmN8+2zO7mWQANUwBvDpxx44kS2x2d461wJgzA+hnt+VYujuO9J8ab1bz7g08J+XxtrdHMU2Q11sWGtb1ajdvRX7Ycf13NOJlfWdUBpxoN4kfMEmgC4l/4py7Xm9nnkuaWf2o9CJOVLNTWS/X/aOtXoph3sNY27ym0FqAug2/kj7jZJ28dOPYrD5RrnfdXjbU+pSi3VZyj8LJLzZCqYtRB1bOo1Sue/XF3F3pc2dVBq+FHZuod0Rivt3zsE98h99arUCUaYEBPvjmCZqeXtTGQiT0Yeh0iLEnGAfH0dUht9WKOViaxVrqsh+izP6oFdT0ouFvQjVQDFcl+mpeEcUdOpFoHg0JJy3c11gAvurWC8gzBPdtiSewge+BiFZA4AJUlAyZdkO7YFtBxiLmN4l6oTbCAJdv3OspEXBV8vYxoFEjJyMWACi5XM8QmQIoC3oqf+IkHD8SdUhWI1jcxhqk27jbLYY4yox5OIp8XavBwDYAr2Rb6Wc884TqFDh3qYjC3El2lk/AqyCRRnh7siTEuH3VB7Kaqyt8GQ/lzeN5SViIgrDCtM8hvbhCmFPpSH99dE1IS62QU3eflbvuA1SEeClfhqvC/i7YQgOFc7GRfmRyzsgTUAXLPcD8ND34Km5UzfowwTQMWAiu5h1CZ7aN6DhlIDy4iqkSoPlppfyXq5UWgl/baz8ATbywzL5mEAJ6JnGJ6xaCFwnFNkAnDzFnQZqIAPICL9OKyHzSsOEUrYHGHjQelWQEjGojkIZ8ji9sIB7w7xlMd3APfhNODKB51feEbINNvfm7b9oUONTI1dybZxzm9n2kmJgvcw5sF8kJhN3kemSjhZibMxV27jV75hATdrH15J6CroCWB+DOkVH+EOiCdyb6yMTbufK9guzqSbeuJK4hLOmnKIwcTQspZUClg2K7Mf0JtGTeQ/HqZpC7PNYxCzeU0mt5tbrlti1J0MdOQZ33QVJf/n7PbOsAbCO2d06CNQbtAyAdSQrNMXC0NWpnPmSCRoUFFlRJaeZ+Z4SOR6gQAqo/U4DoE5Sbb3AZx4vgZhyrFy6PbzhlkTxWCgrhcDezEZKldMgzVOrPSAsbAHowadGZDEuniZpVvfnPdGL+KZ00NGg1Vs1N40WVs1va07fSuDovh6mAjuCGmXjqCIULnVPsStWPWUq456n6IMmHXOn9vTIb0AV+ERrADpOHYglvFGNj3JJ8hVKSynUPqAclHrQNnkCyX6WtXTJ/GdiBA2HcX4/UA3GpNF70urARZWnYBv1wuaAUqU54MFwvl3KsEPVH8rq9rFPKR0dqm3aLUbZSRhkCUxKCYBicPVYuqQo0V93Aoqo+mkUJzRgqj6RqIVWw+n2kXts59IRMd/wVOYTaEhD1DnfGOmTGNus1E5edrHH/Y+UaerZUTEuEgoFEyTSAAD3IAwNUZ/nm/tKwfIr/2bG1XjYK1a4YhFg+BbjYpXxfvEHngADkXfSAeOQXULQGVY8O4nRqnxFYPZHtdm0DBPlLu/H96SoJ2wT05u1ye8xkVRGQmnwLzNiUdb7UC7sc0oQO1No54IgN2tFG0ZMmOoYlhgmV8+xFl0cL6eCq1lcSntZAd6Q+kZk0ls0fVD08fDVu8Kzem7zfET94w8YcJK41b5/DKVDevEFJPsliIBqUMj+mpnH5Ht6ccyltm8CnB/ZJWECv5StR6y2FqniG7V/26IMzRPd0+UMruS+naD0z7DCdStVfdu+wN7YKxb7YCtilZrWSNJKZG9fjkNx77fRbomr0j7W4w6Z/IVl9Icc8IPfApB+OF2PG66NK731jLUGYWb9HgEazE6l8b5tzCqZ7Z2heyMdgOE8V5pvT99gHP8y++9t0IoYnMJASKHDGM13KGwG8dhLjno6k4A1mXpfQO+N+1oNP1wCZqTLpJ61+jy5jCJb8sGP3NPC5dp2Wc09GKpX/WBq1CWj8906tTk+lB9ytk+A5ZHFhabqGin1lQRN4wmxNEd1CSuiy0k+hg5RORQJF4f8CMXsXxR3E1Dm6F+40ajj8hkCx2ARwO9rw1rnp/kspFw9Y6H71m8FsW9fbNsYt3bCM/g9P+cvNwcSHdwwa3yCAz3t9lUag/6sKdbcBqaqLy9BExuvW8eOcyv7uKMJFlKycAGdjCNCC0h1+mcJqbaf5lrIHJEhTOR5+scW2FzN9kZQZaMsgAbpmEiYy6pej/RnhPesKTP61hCKcR5ERR2f0xWT/JbZev3QBAZ7Z4DjWzlvxIVMVvqTS71FWaobdBnVmW+ZeFXiUUYJ+wJlf2hEGySkL6qtk0yNG8CL/AC9704eCnBepEB9scj9OrJX3kfdaChUHK2UV7F2dOeQuB9I5i9vANRw457YlljMHIeJaDbWe+TiaJ26riL3f1329f3Q2FucOurSIWWQ2jCJ52j6ZSSn/+sYAtocRfTp50EQ8tDUZjFOrVF8OEPWv5xrPf6G4kFNhxzFco+09JikmOpFjTjKWh27NQZiGqlrf5jvkkN+2szHUX8DgE3XbY7OTf5ldJP3zFOGogsH4rsJSstLjxZnSazmsMNQQsm0sjinT+eaNm7PG0j0NSNlGeQ4qPjasFM8y+RnBwGKcbSiNFr2PzsE6I8fFdYJ4IWnjWotZtBZtDqukcucDohIqXMoWhJF4eJcU6Ff9iDCw176pIzLKfh+WyJr7fZm5/tJvyC6nSPyxBT+dgdgUMOnMaz/fH7IZqehJvh2a2T6ZEhnNrqFRny3DkgMal0Z7sGS3Jw58rf1Tf1Uhsk31rItwgsotYpCHuucOO3f4TxC9gMEg9X6GM0AxUBhUa3l+hCXvXDSCSNTOiHxnUH2/MN+rNIWygUiPlmORqhYZ0tvGhJavnaPJTCCxggvqEsul7zhE/JVNAn9C7IVRwkvI/PFAYY7lEAGxpdeDQ+EHWlrM/glBLgb8+VTQmsDrkDsGcKUDFHUpOxbqlg3kJ6ej+y234ABf4gpjGJTr/NtpjBhmC3MarGDlAxpakIsaeoPBZiATv/rhJY6gyIneE80q0E0D3gXlbtZKVcXaYS9rQgRU8B5HIlYFqUfQsbm3oeAkUDBE++iIe0zqrQEPhCA86AsBvWFdEMgzgV0nBnV0bARuDOZhbZa59eN0Ar7ZzsrpNoV8gd9ZJlv5TwyuSu6DMJxAu8nZno/XBFGEm2e+MWiJZYFYfmg4XE/5rMzFLbZ9XiIYp92cBmdYmkwDJN8Pq+TU3T00JmGEbcduvzw+P/a4tY8VM65gdFAIpPNMcLoq6HbY+03j2qA+r+psSEyIUWU3Hv/We8dR3+seisFnkWi0cfgp1NXhh7Aa3QLpIz0wjlGSqdxQIRMioFv7uduNcltFYnu0HLS4MQTTgg2qXkRoc/PQZ5PaZYXQiJlS2H/1EaLUD4oPVGPNTex/ED6/k32yHB+SB6Dwdj80C+uhfT60+lI5NXc8moC9WB7oR5LAfcZRIi1cxTimeIpdJ98kJQF0PjHQhAQ5clWTFamAOqVG8wzCu7RadNvQqM1Mu5rTRqsSgMwVJJnx6RWra+kuT3YIIsALStrOFb9MFInjnh+ZOQGyi8Y7979auPp/EF+x0KKmAaIByCjiQePNoeo4IvljmG6Th6MrmVjtiBgC7RyKnHCNcLKw7x5UeLzcZDhSGcE8NhqXgCfC8DvAZchyih6JxiQLAHp7plvSyAdNQkcJhIm3PLAiHLiqDOuGLpbPaHIGzJfN2k7zgfWBo2R1fX6FHEQSDebBhhMqNVbH8/atmoReisrOgCuVeLgc4ZLesQ5obNElBQbQFBQRpYTFADoNRmwgMF4zGesJb+Skf5bqYg6KOomQZcNLWbnNBpFtrrdwwJKf4tC8133rLcwPbmheDZHfjnJIOz96sr8FKcIR35n5yA++nosoJR2U77fRxwfKlSEtiUxgzh/rhVEk813AY57CS4w/5l4iBxyUQFpWP+ILPgWOHpMiSWTZ5M6rg3WuWIKqG2GBAFIAa81WmDiCRd6g2P/NAAaPEySnz2AffbGZ/PuMlKx+CYQDs/iV3US5w73T8PFVWLcMMWjBY12DM/L2GaGGdxNQXVLmMEhVKi5oyW3eHF1ZzjMlozYk6g7Jk2TEAP5h72HUe+/H4cP+sKY8IJJL2pQT7T/kmIA5UoLZraDBPXY8oFEnRTy01TbC0PYGV++2L0oceQypwwEquHXJSUNPuU+KeChw3qQUIwmbCTULskc+m1FtHQDJxC7Rw5l/Jf/cirjF7/nAHAr91yKyD6ECzge6PiL3fd0aMW+UF0fdMxqd5h5Xyauxv7+rKpEq8oQKlQyouG6u5XKaGg66ZRUgnokQtJKJm8G2/aDkg23ZBXSwV70MAONVIExLPZGWV/d1TW4OatRa4FjL7/F9+2L7GH+N/4NusigrwXcoEqYqCVSTLlxi6LBtvew+9YrLNxfo773YTuhCh1eSGemgpjQVEGN6mq8SvDpffNaNuQHRIMA7oAPuTO/b0v6RgHy6AEG3ZQ2uyF3F/f7B97cPwNLZyFNoOVovg1sUQuM9/uJ2HWiYJsKc6vAyJgo50PFK41+5MXKQYrNCATVspR+lMxyOI6coxpqbLaoRVF4deS3rVy7bTxVxUm7qriOr2jiExdDj3/htp0zKpaQEeTZrIWtJ6p3QBihnzvMMLRbWSHr5CpDNUDeiFJ9kXeSJ7lEo/2R3XBlxSBzv5SoSTKlFAH2MWNofhf4L5qwD+rGgp2FI7/SquPiw2+x9fi8ofZeKbbKjnXuNLejn6mlDlDb4L1VKIea5lxExFFlj2Fo1b4Huozuk1mTiQ9WEYKTNYoE8A+qXFekEXF0Ho300UnSta4RBoO1swiEekYYNJf689Z4eruKWefoYM5mc2OIpqYb1shI+Eb5b82V4h6iDGI+JFb3XooGueQA5Mk9wrjKwSD+k0KbF7aA5L/wejFYxcMvZ3DH1urC+xog3W/1/2oyySIrT6iPRqFMFRtbwhgVc8rAUVkvgQUC6e26yaroEXGhIS5/edUT17dmc2sTePHCnsxLlhfx7KHzu7VXq0zH02j6PVqk5OW172tQJ72Lg4BDXZeKr8mlDAgLIKoGw+RdarEVEYMUqcASNY0vZsJmnXeazGFbJuXSkjEsEf+B5lHhYopRgSFYVD7l2/rmh+sLB+GxSXG8tBobHAjncV5gjGn6o6l4dBe6/85SkRIBBKRQtmCi/kHgh+uzVQczrsAMjd5OVdq2E3r6+cbfA88Oyqp8Q0Qv0Cq9nQptRq4xmfUoy1zr88LmKmH0HFUWdV+HL0aby3yD6BHAanRufB2bz0puq+G56TtfHBiWIVdt/Ggs1oQrLFV5pVJIIheyapbxVMeL6cHg7fGHR7bYJDfaKdZHVuEWasDvkFRR7KY1g4RXDzDOg57exUYPVTnRjk6DvmG3L4Y+ory30leorypJmM4Wf6EUAB7wWOX34s1VcCtB6L6UuDzRSD9hLAWUFdBMUzZywBu3jEuHqVyVXBaov6qr2vfYRN8Xdk91XrcUnOlRqCi6tSA7HLqrAG8izlmvOsogVF8i2kaSTJDAnuo8rVTq8G4K/ZjxwAkYmtw/eYBtI7WjJYzq6921FWhIhV7TUmuOxmgezAAkpGPAWfFofuSTQMgCx/1m2GUaU+WSlbPwP+fLJiVeVrwLaUpzTJWeeekRBvK7JIc5T854+ZEQQP8pr2I1VVkqPHHKX/lDHSD1MCeoWIpoj1gnTqFYwFk6OR85WMSqvGK1uT6ppX7rxo6eZHb2gspPWQ+kIfNGPSnDGNdmC2wYJ8oyhVzNaNOCx1RUxpTteGoGnC50456n3aC7xs+ugeGJpLR5QaofOCf2qjAKzmZYnDnvF/1WWW0nKZMFo1Lf3MT+PeO8zirLRZMzOyu8/VPQ7WYzpzEUrLYHmUvPFBkmrIaHkIQxxR4xJ1oOahd5jLZ9kOoHThbs5z66lR7WUp1ocp8cpPculdPKkRdYgrMRRqaaIVCDp4Cw+JbjbjaEj8yIQEIcjKHN0Tp2muBYroVGXXji14U5Zt8FTzbkqHMp4byJRc0FcF2L+rjRslgumUaNi1PMZ7xVJi3c8IhbyTT2sS9X1NdtwuPjX3EcXeiJhrIZLW3yN6NhyYhVsOch4AuRG6yJMjZlHW46PULXjuPtgYnsjAK5wMzlIU7CIapAZuNGaCWbXgseFqngcRjFa6ZbHnHR4pMgVVyjheGcYeqZ7lv+yjVhKusjsYgGsfEg91ioNKbsFNQCJ7/Pw06iSqz92tvwwxUyr2fECoqDSLUmJgUV/TSeWw00hlsD5hD73UzkL3ACWJ0tsKT0QnhP8WgCmUGVbAUK9wvhN9smcoZwEbCGCkHQzor941LOpfkJdM32c3EuzozmR/lHP4v/MfcO/2lSbN+Vfe0xUMN9JcU0BO32/PCOJ5C2mYgsKKqawVF2UMFgPp8fn6GzMTOtyzIhWeXcJUMXVBLpFaJq6lEI9cYltaBcMtjtgQsO/26ZZOjLdPVjhLYDxvp8YYFofLgAkjmbQhsQcDa38qBcSli22uYA0iTlg+4Pws5FB2vKDFgK3r4Bv2YpwaBwQ5wIk3TxH5JhMw9SPqUAXGpjQ9GG6hC4eGTGR/3Woh4Xwkas4DiLhdHMEQEtUuZo5e4USnZj1k6dFsu8X2cRtbX2aK7Wo7BXpvCN5YdLFAIykmyBw0YiRus7lUx6lR/mafZ1ekJal9iThy7Q0H1SdCIJqthItA4aedoB45I2UJ4NpV2YGOECTc8Iz9CcYZ8g4H62rryPso2tKbEfAxkIZ27Lno2U9jcONseDH+vSz6Y26JbBsIwyYL8KVSg/OefVfOQJVqgWcTyd3su2ZG1quF1SpdWE+eNlMKaN9b9SVQJidb1OS7TSH82J9mf/GNn92SxUnLEkdFJRRPwwGdzRgBa+V4tw7rqmVWXWJdUnyj8vgxkgJ0Xa0Y/jMB72C2aF3LveEPOJpIPQn3bMgqwBGc3CslNoSDEdqgt8n3Y+4ACfZEnZDTrOBEB+8cadmvk8Ci6xW4ek/KrOMHIaQIWyNVMyx7m7RSbIYuokoTetUAtcUpWnTMrNFLntX6FAXlBvJhPls8gi5DgKtmMC5rgECl0X4tyjhC7U9FVkogMpBH1/pEcd+l334uTDgqAGzK13yVFn0gHaXbrGWU+0Shi2K/kx7sTmXEzNjg0usmC9Kvj0nSWuqf+E4HBunQ8wIF0OW/gE9glOykYo3rfStrcYRlcfSs5FRpUap9CcIiCikzNLd4k4LOR69veGmSOds+ZFNz4ShbftUfnw8wvM27bPzeV6H8zE+pIqO1Gz8mzFcqhw6DANr8VL6Lh67tI8lAPMlmNOnI5lOpCUYXpvI/FarqxN2bHMsQdgG6/JjL1Py+D7js6M5WdrrkZ2ovqIHEQvqUlpa6XLumFpayUgXScAr+V5jFa7L4vzEitaOTIO8QR5lKyzNrATn9AsmkC0bRKP1j5YB7a9SP66YtWJL4dbDrdsL+PF57kAZooIyheTMhwOcMBayIGj+bsaNOW87s0DZlzqrslkFa2c7fPaAMtV3ncWpztjTzi97c8Odfa12wtx3UyzMicoZiUxt7DF5tD7bxkfLoyKfdCapQNk4EzvbN0FVO0JGePRaN5/dODIBVJmGhN8qHDlDBRfG2mXefC4eahBFojRskKPUpXa1ArYqHIdaHN5QO4KQ4BDzQwGVk0KmDKAMAYQsTDclQTjfyTIAHhIDWog8s5SUVLHHY0Wo4AzqwTpgyHxABhQP1QAvoNG2+BFjhDhAMxGoXRg9/1WpwEgjvJfjMPYC9gyA9cXzGD1XGtPA0AnONL9jhWI5VlnHYsGdTN2Feq5HXXWZYhQsCslwhLAVDhVU5bdUMXjFUnNjeOpGB530QdqbdDaj6UlPExmeBQkc40IPwlwkg5SKz4HH4qyc8b2nF0qyXuSn5SKVqPxWFFJfkKEqkurmKBsTI2woYiISrv3SGZL4+MU8mZvI6LjzzfBvtjuYXQ67SdRSyU8RnrHS01sKyR2fITg1knC+II82444iVk9UeGDxiTJz1XAfCh8bG0Hw9vcmMJi2MPVs1jq6LqdLPocnn06PYd19D65mB2a7LhTxN6V6eMZwKFoyQm0UY3wXijyjoifO/BlIKxK6GiFqjpVeEfAKAeR/WwkoaZH4ZzeO0SUMEtcxM5gswrFAOIIh9CVDlRaAoaHqWTZLt7g9j5pa6v2w8MfYMUMIAk3v4jSATueDk9U3MLdUH0/qjh1ywHEOLOUohk+FuS9js5qHTsIyRcsODsq7X8kovdbHWzgbBOftCoVdMkxnZN1uied4oK7Brc60QzHQuMlIeq2eazCgCDmSTcx8NGdVO+0+7T1jxQbMkWp5CNjT2PqgaQ0JfQzgeG24P7p/asg0Lp8anDZYjPJ88ddRxe7ExgNs7YI3B34Fhat+fdW2KHjB7SaW81dKXZAhRs3rOaCAlc2jJvuKnTBETKpGW67xwbbnLt09ipyNfzAYlsJ6yGQNnnHgHpvtfx2J7rAaqi/2uMc5XRptsyNFJOhgQb5VebV/SD7io2MejwNLCJRQGBgmc1vNHVAdcBtL6Du13XggvEgZ34I9veqmrgVYWg09zw2hlHuIKbSeGxIZ7Fwz6qjmsx2BiwVJ9rJiopl7cfnE6iFIUBY0dKR6WVaTxUB8QOaLbIu2GINk27++FwOtgVap0bMzCVI8KJK7eTkTBmwL0Jfeby1y1vrpfKF2UeqI0S7ocPrHO4m3kWgtu/YFGYnGIdoOjicp52CNi7P7EzZMjMmG3bjynaGg7xz4MrxKZlQAm5GJRxUlHqE9LFsNQkCByxqxGEG+j2y+aHBnyAI8qQDw4uBJrm4aCWQ33C5no5vsfgzdiYCCsoR7gLwHScxgLAmPxOTJlDSQail9rcC+0n14FIdo0qrSmoyPNBOox7Wv+zIS7qL6DNn9dz5e7Hjn3bjchqBH/sKnNy7dg/WKy40/rrTKywLwjbftwovOqUgClosgqFpHeCAOQlillefGI+/Sf6XUi2CH+ynjHFUf+8ik9q0O93ebMcdkQ9HsU7NEOQ+9xFhvzPRM9E90fvwHPhH2IiTk2BvOvH2ys/qW9z6fwTy06bwMJitnR8HXp3V4pJ2GcbDzmRWuT6J/sgHV98j4v8ATmQ2sLrhCR15j+YCfLhaJIU7YkyRrJn6ZcGF8aZ3oCXTG+IeJiIzCyjFiHOZrDkVLOoc/BiLdUUpskucvq5Fzmlv6qkS6I3HhL6vryG6XViEfsyvqsxA+Mq208JOGGbbk09+0OkFR/YvAeCpChuIC95zYVW+ExMRJLF2Ix0U2W6A2Lun5+Rnf/PMxl82gO8r/y2EyvTXpHLefzU/7wYbCuogUYtisx9L7PoDVapgg/emvB7EOXwXrI2U67GzXF/I27qKEkCF7mCDMsKGap9Rwwxh12yrR1XGlexnIlsHSPYXyOp7jokuht6TNDnijSUVgZykbs4IluMUUnWd7vQlkf3yBCqgTP30Q8cEVQ58PuubMGPjIjaDW23AR4xFs0WiAGByugzWDXx+VTxRIdm5f1B2XEmPUPD0lll6BWeN/4NGWRPZouiP1KBC+oW+a7reSgAqRL9MWWV436LOQh67IXPTTYsSHq1uljwXMkFIB1fUaX5ym0Kc1YUfOtUaCUr6gbvIBcqduJicG89qt1Lm1pzdC5Vl7TAWUAlSOdxtuIAQf5gD+BMm6MES83MeAB8Bl8z6yo1U4vd84IxJaZTXqWTv+aYN9lrBxjyklm0PwML/ulXg7Zv0WWvVwJN9WzqxagM6Kk12OTA+OYJIrXOHYtxOklzBtrqq1AoH4qvokdysJ60/+v/zAMmJGLqWuFn3wgB2G9V/Uh/m32M3XT9Qf7vwx8nZiyJ+WNqcsi8VbsotHVSENJC1DaY4XgL2U8ddj+8H2PGq9v319qaup+9XmUHbblm0paZJ82T+AsJhY4fwjpUtmTmUouTJFm/kl/il2ht9wIFCI7z6EHNX3Gia5/BQK0yRimbJujfZeUDzQusaqDMggRTo5DKIjsZDh3HqK8K5eHwCMK2ee1FdxNnbZxLjbT3/FVj5suDMPhoLGSg+PaeRqmAn6ifao66xcxTxUQG9nCAvmuFTxcL+2dNBwJ6yaBUZPMy0tePe9scNtOIRrj6RquPqJ7W5v+1U76/yQkEF7teG4cDGOj5sWbOdq4OHWlfX2kr+q8dq6T9GquFSFbZbzBBvmArbfp+gn5l6T7Ai/9bOAITxxhn8b1jTQPgdFtvLbKcIhLuIUvkt7pHNFZNLlmrI1j//4iP0TYSomqi/PZ4EIXlvLa99PTKWZ+FkhPFup80IFmpoEybwX0AEfTYho5gmbmIt40QOkxA8fJD+tVl13N4O98sgaH3eZInMJMmI5U+UJ8b0/z5Zo5gtnGpHdl9SQK1xKg5CpBISxYgbnC+02vb4D2VRICQ+rV2l56BFRWQl2jNqYZG/xAH2RYPQmp3F6sM2OO1fnwISvKa1DEhrVfH82JyhEFfAkjLuHVWFjmWba6O7EewTCA35G1Lk+QEsTUmk7hO/9IsYhVSmV9Ri+JwmhAuNVWqaq0YRe+4RoXN9iEuHs0jCWpmm6IM4EO/Mo3So5iM6uGxTDds5WLEEfa76zFyEcr6Iqx4mV9VVO+h568MkU9CXoOLE8YnhF30GY0sdKCoczpvQxCsKTgUQ6qPx8EgWNJIZbFxXizVNcVTTKbqovZFfW0FvdLmniEVM4/5/QrpYXAFbVCEEu0J0pfCGk1vK4jHal8pCM82+shClbWhRbP4ziOiGl66/I4jV3uJJEeu6IK/Df9ygqOtovnmMaSaICNfWeKMgEiKtYKJZ2WZZQZgQVYEdObRP9sEmz1UVBt48Wqv6AJYHqDIvJYk8v1OEXhvJlKo2i+ZfT71l+S4TiDJLNhydJURrLQQlwHNZMKakMwxVi24V61JyvW0p+037zm2yCCPGqJU8NK6NFAKy+enGJpLDC4DHCWAMEEBiApYIRmtgbc7cK8t0LZP10wjlQRqlZrvj+NMJMSUHMwu41YQUAVUX+H4KGj9ZLutUKP9yWk5PIlkc8nRQrOt3jrX5zi6KDcVEv32++o6D0QQwCEsn68NEum5DvwR8kvgHXTlcZdDCkBCwWRPZA5PdXnDG1Y6dT98lu+O+Z4NejVSMWhI54GOCZT7vw3EBjKXl8Q2p7w6g7SX8ZnDMrp8IzRDcQGNxGkzP14FRvxVJnDamGL0a1sEIFsdieRLPQU++q7RwICGpdvYG/fEDWDmeCbCSJGjmmtis6Ma409c+kJGwiCKOLsL12hOX6b3EaU9Z6C32lk8GdFj2YjQuJVKrk3Uam+HDBVous5xZJYhciFGWG/R10+oxfEHerfWDLGFXg2TfPQl9DhYbzpvnyjl4nWxiBMpipIyJackA5h8VPqkiuEJZf0woD/qeFnJ7k6DGDJAhcNwIsy2SSiDOsrHJya8HOZJIYVFNpY15i4yiNMxvqLnFE1ppEEJPAoFfhPnTpmS15GYqqf4Yq47WHhRB3Yi+wfpBTCexINpsDWc9Vwj4E4VN1y3UVz7s9cvrWfSVepMo+hgj/UDHVLTw1qPcE+OUU+1IvUWMNl5bZUE2xGtyLl8ZWxE9hQC8ssihqH0uwUFC7/vTzqBkbfjx6fYrpdfn14cfj3SnnpubC3bNQXsJeot4YUO9urxJdrfQ/CrMaA8Zd+e97v8W6y/DRQlY4FOh3OHumblV29Hm+IZ7pZV7GeXh6fO10N0kIh9e95w/E/9kYKQKRHlCPNvqaBXFTJ3c4TcVyh2EjwTHxmABGNDfkEjrU9lpSUHUYiJP2Nt6fNKvG3X7ppsODhgcQfRW1TmQigS0EgYb+iIG6z/NPL4COclYWIDVRXDFEWpgaYECwggrpC2KgnAdaslISl5KLZa+vdp73X+OV7OFqM+pjueu9XG7fIyh3/XSPidzk1L3r44R6NK7wcJ+XJdmYfr1kvLLQSdNC8XvK79vgAU40yCLy1IFyY9v4qgETv0qlP61A6vIs5yY1ahNFp2wfDFwAlLxntFWt6qCD+RRnNO/fGHnSN32HfVSr4o1Z1dTID4oz+7r5XpgOUYB2T4oWHFUxfZYxc11uRCORyixMI7vKR/UyTM0AIglNvYAzQKb+HQW76Z2yYPnMd4kCowCuxjpQHcfpnmL52IAx95ytVEv5//LlV9OjYMtvXmFOOCmBFisc9xRdAulCODb8T0/z3JgqnnqtHwAaU/7bD0eKoBuQzei1OyXfB81j+4wOi/egyoHoRunYwD6A3jnVaFBOfo0Ds3yph7JwHVP9/bwku0xxwqsXZgRWNogv6r5vKOdS916kmgc6LDQ+mBYuTKuQxAwyHtQz6SAGTtwIk2Qc/tz+qBUxI9Jr/taZPYR4yxNmXGy6YXU2XLh5+68Uw7o0rhKjxfD4V1ROLxL2lC+MbRTCXZ1dEoLiSzllw+ghs2HBSVthh8hNXeCc+3ZEnvuTrtPf5ufwdR+AXnzq3UeOyy03jhcHKsmzWGiP2rONY0VgUNaVEvG/N0bhIvv1bgPiKVQO3Ls0usuYCOtB1WUSsAchHQQTk2I7UoYsuGploBQeKIWmhXG1WJFMc24fONjOn85KxjFlLh80dgtBhv0QiK56iDnJyCdnlcSYGb6UWJImqbQWuGO1W2Z4XZSAkLRtd83wZvfpKYBGUJ3AGJ7spEbwPO2sFnjMqlUhHp9FZMPic7lgJ72/sWbOATLXUb8wVWYJw4XZV5M1DbskjvUdu+qIluO/qdsk+TrbF16zc69gWWf6/hABsERZndhgw6eACxIGTycQS7a9Ew5jOAHGHzQYcuWj+8u9/cjMfqhf46hisR2xqoeLO1CZV1VY+LDSaLojJc5yXwVbvMYMcA8CIscca+CYTmvvXyFvrTX6u7iLjD5VUClfgq8Al8ubHV3ceePWyhiIW2UquAPImGK22ZmHbe7h/iWMHo46hLC2JrXh9kDCH5BRBwS74y8tycMd+zvCVMci16R3kKfF96zzx+9vAIcJiVCPKBCDr7Uc3eDqwHkxgagAz33NAC6hgyCvmjuwJAV8ztii3O5AYZfX/JZoisZ/qF4td8ub+R2zI0kbdIS1GvejepoScGs7V5P1RD1ZJU0JERoi/nrweld1YfaAP8IF/Up3y/v5eGbt9Se/PHuTYOPnthgU5xd46ejr1PYWrLO4VSelbBjVeQxB5vyh9zn8FKO5Gi+0OhDyeSbC3fdsFGPo+ywqW3Ww4kDv3VCom3Y18plV11sZsu0dPuGswyoDQF4nKFm0Cy53tv2+ndXcb/JZ9CINPy04x+uyeGuB+2lVP8OJFsg8h4FRKvYHYHl0hpYD0VFegsd3nYNL7Ulzrc5m8kPrkhVTUE5C/8yQXTuZWBICE6Fbp8g6r4iR0yuB6K9zr5vrwReYOoCaVLWTp86KG4aWOFEdo7hO93sCIfJla7vrIC8wBQRrd5mwFag47us79GwAgrPfTwdmMNFeUfQeH5So1Vgk0M5DAsGoSk0FLhsJ/XF0lcX7447xSN5+Pn00s4PBD/Sl2pbFznqL0Y166wybWbKy1+s7zs1I6+oRvTf0tBxpWZzkn4cGLNezhTnGLJnJ2iogZ1qHA7e3uTf2sMlWwfHh784XJRXsu/jMfEx7tx7ViCeU3GzrjL0AFazslaqRo/Qatkb8IHiPfHu47Ad3wiqvI494lke8TAH0lWkfC9ytdV6PfpnVJJ6ktD9JLsH845XQGX24sUmXyj6gSFc9kwikQ6V+vhfr949YvKgdEKCZZTWAzIjLGZNToY3lnTZJWzmV32SYlP82haTbsU5xSZF1nac+RCmvTwP3qDb6hGOOQrFaQ7cBmFm7FDnGFl2ACmLX0j6QSfWD47WsG0KQubHAt9JvrsJKDag+gPRsQpFYq4QucRAA6mP95Sf9RfTqXA7VrSeBg/cfzEfd/weIl45yeqmVjNVUAY+ENiUyhpbEppm9YbVF6ljKQkSbKOUfdxPCqR0vwG5amMMN9XscvyKb3LRSxE8VN+kjmH62/s/GplOfxCVmpRhFDemyqTuJtkvmhDZmr2QjIV8W8sX/Ci1Jelsr6j9RX6JEihAxROfuG9zm7jgY0YkajA8ANj48JkdZ4QQ/EV//JcdmlsgWCF0fHFU1eHuGSGTw8fxzubYySuRo637fJmpId6imVh4Dul0Xxkw+XRWo5FNLzpbw7TipeuS/iV/iVqzcUJrKcVNHK10tufaJ9do5m5+RvRWfUR0fok5Hha50OBURRedWObHT6qw1BjqnJQIlYu5MhvFQeAY23jMIx4HSzzmgOOgxjWr3ilj8ODrS9D7g6HxgnvJ2hGBteRTbH/7sVYpKnx1EcA+DmwJfe8zzyvlPI8fOLhMvM7fykrCAXXCATmd5cr5zymxK9t3zm0T2LopDGkPI71130tCDoAe018dbCUzpV8m290WI67TwnrfpaBGFUwwFAkyT7H3xG7WEQobVs/lMsbMzz3aoukkFOgemQIVKTqGGOba7EF6fjEHwQoTOU6PvYNc4vxw6lLcdweccmHD/EKxIiPKj8J06UwybFTQ1ltvqx2CqMj06uxuW82a8ViKUfJB31csKMOCq2SjDJ/Z5EHsLs+2bN+k5+pMvn7FedIwOAYoJzXV+/7U/NSwlchc1RiNREtHNOOF3D8uyk+wVKTpvM36vOrq0PUlv/SRmbcy5KIY3/drDL5JUJWvn33LVXbL40mFjIwivr2FaKHDlZFY1apOb+GIMfjmt7tZCoiOCjufSx9uZU/zIbDfe/LO6lLu9d0judEFDsooN2jb0437G6WHd0tCy1hwvnMStPzeWtaHxSCIvgjT40S3/BML47tivCg3anAOFE5WakeID9iCgrGBBlTksuMSm6LTp4icidpU4ZBpnhqYrVzIsLUzua0lBUzzExgDImsy0qKF2oiUuw6MbcOwWnKb+tZh/uKWjqga6EJv59C1DcO04Dauf2MK+lscYbwn1FTqyqDbMAiUqtBChYe7hT2iLwmt3s5hAKwk5OWOy+hvQV1F9/SW8Kejk9+MxQTorcuH3gXI1lmFZJx8Ac4X0u6F6QMhXqnEQekVviAWK3wBaykqAEEdw1SuugAdYuCEHJRqYxbVZPNUE9g8IRekR8z0mlySHqmTSOOwt21ex8D38HBgvH5l84zv2aLnhNY7st55Ch10borHIJZOuuYg1gTnQCPUsUlMQq004Qu2owdInYCvrtnh2GvUJ6zZeDJV9igdXCVh3Bp5A9QbaL1Gnutdgh0VY7S4G1B7EjNyycpOdGqGmbbNPeGVsmxcS8kq1q6BxWukRwBTFiWg+hjgyjX+mB4BTOmTHBummeG6JBWKaMQJHP9xdJQtzLPSMIK2eoFRsxKAH4N+eyT5skyuIMt8AQdbXOcgrA9xugiqLyi8VMlH3ItsZa0rArKdLHi7lEO0g5cq6x7cdiIx+ComcliJA3E4iSzreVhxFtloGDYchPqFVJ3UbXlH8vV3zIJujcFiX7Otw5RWJMMTh9f4+CVbuVWHxIye1lqoqR6muCK0bglwMPhJW03aB6XRNC9Caj961DJt2syzZbIj+RP9+yTX2jsneeA1B7r/UFFd0Nq4qMOiP2QF+t/b+VJWyoZRZV0d8OfiCI/bEMgcgIZAx7G81nq3kt/V53NoO8BhdwVEqLbL92pyforF3ahaX5bh3pv2dFgf25ypJ0dWQKMsM0sfCLq/U13ER21xsdBcLzhtPaBs9P+QNJjfscNTJ8gDo2qQwzbUbLhmwza+cjXQCUlrGIsVII60OtOmbsq1YXrxBFJrotDiJbDJMKBivZFTXHHN+YeL2HSzffjnMccpHJT4whVizD9hIbwagSPzxT4Nyn/IHUMSUQ/sCoo0ieaMNcOH0ulIm5f7eBTgFoG5C3PMgIw7hhy5dkL1n7uBgyRkcW2sBBfcx2z4UeJE/Za+zhz3EiRIrLkID+4hTSHSQYFuHVyDYg3HOjCNjNOI4wzhPdijRkGtFNkoPWcLgqUANyM2OA2Pbjt5co05nA0ATReWW1IC085Dj6+L7i9xzxeUP1yVbhKQhBAn6bOFuHmOXe8cKev+jDY9Bo7byXfHiKwdhC1QXoQ6LqiFjV87Ic/3CljDWoEteGuzPC/6AmbIbQ7KK7ynejfyTokUJjeVKNAL6Uy14lXQKJop7tYdySAu7wML0EdWA7fzGP5mic5TNFTjmrsAGTaOVadL74fdFB1TCUh2y/To5BTJQzuWTvTdFKhJtmCZVhBlpUOjQGs1fZCw4IWBGhmlvKWsUL7yD5wkp9h/clGdYN592+M97VoiZ+H1YOE62Vy7ZEhFM4BJrZjDqjgje29swXPd2VDlejd3CUeCpmNdi8wQNVNcFxjD64ofaTzZVPRh82yyBi53cS+4NLJq7OGpU4ZUixVBzIzAj7VsS+b5cZOn98ftPC71c+Kx9pUqzp/3OMaain4tFxcv+/33qM19LPkMfv/OTBDDO/uDAH9ARZpeJKwReUBxwPYXx3ofbR5NGkAFt976AKs9Wbiy9uRSMnjyEbK2Zynapfke4GVV5RcFsh0Odg8qLv2xXV385xV9Qefhu8DcTnEXmimI1o4ZPvvydergaWdWcW1tzpUeRMlCv01dCEmDiYaxj1tQvYKJCok6IdBctLa5XL10+A+gQr5/OO2KTgvHJ+F3w/JL9Qu0a1njElxJVXgzK1orXSes0rhakFHP8oK2C261nDsTiALuCLo4avykuBkMx4QzpGlgtIjzCFMXhWxI1PBhT/KcaT5LwFz9YqTK9tbnuB2U1FaY/nJ1dg0UThFmfJLUkG3SyxVoUAjrL5RmA4zElppDiDV9Q2Co0OSM6K23ffGYIfhaEGrZa+iTY9KN/xQYGvUq1jKdX7eoblJtBTP2KKFp0o6d2cNJd5fzsvcQdjQV9/GLZ4zCdwuPyaoU32LBWTQhTRZ8+iuGoAzKhVM1tw2MoD5zf4x5ql0E3J6aULhC8NQ/GZooz4R6fA5PpcfsrxByGKc2nVMXUwHUmAvhs0kr7kGU6QT2lRP2r8JNI/pAMJsDw81XNJqQOZRI0V4H5Fjcc4zLTVZtytMfF6bChVg3kILIyJakQr06XrdwYqyfpFBrvTHrsAIDh8ELs6mZTvNNFfxRAvnz+HDqRucTB6YyylRLVYgFDjOt0NMIllIi5UyEEIWP5xW/j7RiH+qZjFNEWvoCiyA2w9lIseiMzisyObBH2ppURL9auW0hmmYFgzinZdiGeNjT4BkmMkywLE0tv0Qu96KQPVqZU7Giir3K8iaVejG/CpZOkGIYNs8hoy4aRT9+c0TDQvmQLzPjMTcy9PtAywWPRCX9lcML3J5uBll6JzvXzZpW+ARXnmFvMg5JLVBqFx+ksEOCS3rEKaWdGUzYc7lzYnqpzb4wD+bsLZPCiMEi9ey1VgfZ7twhZt/aje2NNiRSiWyjy4QBFWktrYr85JFwdPyY4oEWliUDDEknpVn7iAPOAs7+sWUlW3Eu5R+5CirwejT6kiO3cXCGn3agkTHzc1SP25yEp0ZPCJbuDLcFaHE1kzgVLeFDK0AmaSlEsLBHGHEYLOnqYrGd6/B2A5jvkz9GvcmcMOlY5q+bT6YcNj0OBwKrQfB1fHzb/j8RseMumdWe/dsdihuynyzeLJBSAPwMj73b6g3W+uRP6IeXUGAThGvUKWPV9dek/Stzg9jBpoOUu3NR61T4VU09HOCVyPQKwhatlIjGibdAG64yeLdAvNv7KkGzlugUFEelerd5VkX6LzKHEb7WKbykFMLz4v9LAkchdMQkVrQgChs6I4QAJqa3mZGC7CgazReEMF8dKlT601GcMB3ElEKyjJ40Xlf2F46IzW4qiBjTRbPjKIbCaqk9kAxasHslTKnhRVsbwFcgbk0iINOhoVwjlkbEUV6R0DLimAkOEitBcAtMEopViSEXGldzHuf7K4zSYLM3TGJVuIBILtiiOOH9sIZPVx4DWxqqwm3tZ9lOgWJ43fVWnpN//s4mn+wWbD9vHJiQebYDCpSY4Wyaz7js+GRCkE9yWg0EaxxBym+lo1WPRDHv1b943jn0JCMcNeZMdQdtKkEpK8NiZ7yqRKcLlvNbzlCTD++/2bhbwainlm9jHBYT/7oARrT4oHxckgA9hTYKTCYX3L9Vadg1t8LfV6N19vsKDodSgZ8+if579G12SwnMij0CqIjtZQcMKbUSipj7aPYv47+zPf+pNtErza0vs8Z/LQA0gbz7Y0VuJXdrWqrR/7JOb/GW1EfH8vC9bKpZ1Z+MDv9pZ/BniKZviEWxFi7oRvXj6mVHAHmCk6wy9mXasMKKxSVNo6kF87c5VKuBHpby6oBC7iP74aEPjte4fJaqbe2BFhhj7Fs0vL9/FrVX3t0NuHW4fyz73UiiMeWnmqsfy3S+weHtGSX9Ahwx3hPo3obYHtNujr4iMNtOCTRkYXHOvDaDjnPgBgoKEIfnmU6laDHJA91VF1/LHmRQFoIF+z+xu+BwfRjz0eCzHJ2Yq2a+9MlQE9/GWlvH2Pr21+6inbtCMySmwmL+T3Z0GjX9ojoBque9MaEvlUJ7zI0r9PLJMiW5EkuqOLlJGBthHY3YbSL/ZE4T1GhnzLhwA37aPonY4Ek9g7cc8nxTIId+eYUArHKwbZs40512ve4v+btfh6xrqj9tmPTUCLXap/EVVv3O30Z/xHW7dQOsSr72rFVO3EvHqXNtf+M/6TjXqXDFn7ziXreZmtb1LhTH3EM0pt/5W+KFC/zW1OGwb0z28Ik6vONc3UoVWPCBUs+n0s0ZHvS2+x2MN3/I7ffjHYbyx9Ll6IseAir+tpPDm+zWZ8JvUXPmTk1egQLl58RW/pB00e5dMEVH4RhYvp0tKbUDrPcSGqsKk39aW/hEpfytKQVGmGkP9tfqhs/uJ39ZFyhmkED161KVXhT5qbEh3cbV8QTcYl+CT1NcZwhq68Oz3fDF0Yc7kmKcwlq9eSXnWha4v12YXy1jzU6QqZzZbTESuFWYrZCww2Klx2+r34yjowqskqTv8K2DyNYtNTaszvP1ebTgx2h+RSaXvz21xDKv+1OTptqS6OfoezVb12oiDc3FTIACpfjTC9eqKX7kyFYm8eqi1WFl+44ZmQPTU2/zdnYQRQcY1Nn7siFNlUmM3qVlbnRDnbB334QvZdem8y5rIPWoav/L3C8ckxHBafJYBR7vLNJvzov+rhyMV0e81h/8jWe+kQe+kT6wc/DxmQm9lkSZ5ZfLN+9eBDacOtCHktpvsAHvMdXxc93Vl/WjRtRfZeN5hAOW39dOkjdJ4Rt86u8hT/UsScuHa4/jsxJiqODB6ef+mk9qB5ZwtDp+ODBtKhoLYB+KvA2UaMMcpRVzeQeyR8Zcwm8vK88VD7m+4xhpzcf3iFw6NFntNP0KaT+I1PUsHDTomU14ep7aSTz4JAjtvvPjWYgR3Qw6Hrm4knXGl0W8STZn4fOdP3Aap4HgdqLt9l2+8Mt+U52Yy9NIhIoWpWk02ySyq61XXWtwqOqo9rXqavKbrnV/OnUs9tAwpM8+DfHf29GWSdWOzwk+VV1n7Z+q+Q/mzTcy4WYBG9qJ6ex+czepnguyWvy1fhCr1bQpXH2fA29+Dwqc+CBv7Ee+Z/9a323nszyzPtHp38h0hMHB2ETgew0Pxg/5Mp74xWD+HYQY+3uF4LbLPyo4/b0DZ6ez+Iexu6NNzQQPn34ArI9cJGmTulBOSVub8gqfveI1v39ztNk4C2L0UdwUvh5/hX18T5aL3tdHTa2k88+9z+rk7UvMLnzw/2oXmImFbRRXU76hgmnzm1j+FIZvb5tBn56QPtmhnPko/Qi/GrMw6q6nVXza8+eXGuz95pwpwyW/5sf5nMO/GsOH7FmvGM7MzWTvcpRXAu0fkPcLewAk8e9LEgCghee6Q7Polmt2t6Aux8sa5WJfYq+tcYEE8nx3n1B2FQP6Rcr5VSq79dEHSMfMyvea3S/AyGdo5/xR8XrveL3/D17Xjqv79TaGK221mAGma0wDK93imAuMgeBgDdIXaGAFvCIw99BEgpDHdP7+P0gKDAdsg5UPY4hCls1/6qCXeN6uirbMQPlRAE61plrjHqhfMDgCnw7sMYEvR8XfyXCfq/8vnTEDNrXYtIvgwdmhE1cbFW2EhYGRDZsRJle+HhWWEekUsbUWLZhQA+4NeQU22MSSTfzOgzzJ2nVMXJA/bPm6AsErgjIcz4jCcPNxCahhBkpk1sGLhrciwioGZxEMGUAiZSatgvPLBq6WVAoYKwPsVBkGchByOgq2I2FMZOrJdiCoECxhUwbQAhKccglD6fRIGLOzGaB+gjFhA8ONSQXksSDLFYAANyZlIY091uEn0pYYwGZgsiOfcySzV8KX6sL4C9tWgDjilJpqfxDjHywn4nHClITewSfE+IKFEY8rvGel9ywviLHHIiM8Mc4ItS6PiPEvehCeFL9D6ZD4HhbfQVb+zqEQ4xVqI56OOGeljwgMiwn1kciK3wiph0c2sMYx9jUhD7hkpcLLDBYLqoqQF/yFUGnyhRjvUAkhb/hMQnt1HjF+xD4k8i3+QKgC/yPGBfYB0Qt+QajasGejYB832Cuhr1FbfICBXsBnxPgN+1HQj5xd6dUHB+MFvRJe44hlSLzWI5Yr4rUbsQzoXo0QIff718SfM/r0MqI/vfzIcfedy9/YfNyxuT3M1b09f319wq9RjsnXOLR88XKDg9IxlwkHpoe0Gflzw+9eveBPpVXadPgDLb36jd+ZM68esavoLm1qnA785tUGp0RBrhJOSgGKJ4wr/qYuw7iwuV7nrIvbLizv0yaLIEWXaygojhQOET1OswIiSqYZRSHH1WETcExzWKDIQm0yUETCdYwjZUeD3UKhHj9MO7papC0UnQYUwLEdGxhB28nQmUBGjQ6k3Zp7LaCoR9QnCqSa35n3hOuelmbU9N3eoY7mYp1QYT3sfSPIKRghZ5TUTcjpTq/g6LEtjgLlZr1AHIcdO2zCM+wWOojVTh2CoB7RPJFHjQ5hC1V1U6xrFzmQQK/g3sImiQ5Bi+LH1E4oimAHRUOcxqSEgEWCEoGZIkiFHRzFOoENZMnHdN5CoZ5WYJAW9GNRHMlEWCQoKsGJCLUDVmcdVrAUitrQXDonrJoG6eOdx+OYwiaQgc1BFHIFhyIG1PfJkNOKzBT+pFg1aqHGEiKMUPTnE+DZcm7giyMh5WY7QoURDe1BsskMLiSTNxlIEtd2xKpTol/YRXMEWeh/kmYJ7SCh8AXs/arogMYMiuzI8abd7xw5BAERnuQKnhSM0CRozBD84mhwe18ACtTNDVDKCG/biOHMRUbgRXtiol+LJKjv4CRvkbQVCdcxcExHgfoLRKj9kRV1S4ddGY5wfBakkH0bbhtBT7PsKCYWVxBys6aSRy6sQSGLfF7OkzrnIIeVYoFqx7sUJX2xWcJhcjHNg3S4Kh5PpR9gOiIvDmzckbqjC+Ime105u8Ol6kNDK4Hsz+ZMJt5xwgJlqoW6EztiHNezE9Z2Q+j9W/aO3swQ/yTuv3CgM+p3/za9Tx+n2OuSi/IM/CTdLMchRSNb3RfskhJnLRNIX+8Z7ydCy/LijwHYz7YUEC18vCKGQ0TKE6r6Z0C50PcNUryIHQ868NAxTUJhu+jVni8HG3kG9lDlWVkAx9eOnQN3ry87GqDkkfpl3DZahCMKVg1XmKCQYrE4rEcjPEjkNrVIz1ZHN093b5TijdyGZ5y3Fbjus8oheJ0UhnyWQyjg7Q+4dAVFy50hgdsJGX8tE1noIIAiUvxyuk0aXw9HfdqnMQfJBvJLrsoH7Y6jx3eLzIoSWEj/WKCp7tyBDxKKdshiLNKKk1HQB7B+3gOKpsY/4EQQOQhKwtPb2VDSJti9v4qwQM4oRsQcCpmFTYi10GytkPzLfa17JLBqHJiJk0GqxXWf3mlBP3ihrrqhm5L8SL9A+3CSOYieeBFHR2J1PFqRg+CDnzIKguARgoNaEw82PlFUf53F4zQhcSHAj04N7D8KQUJ3BWsNefA9FHAkMEOPDty7GVCUPxYzpw5QxN8U82sfC2CBQiQQlo/QRFU9qEolYLUJ2gCfUdDO9V8AfAOcpdmkEe3O45hUmLQWcG+TRorKedCnsaGuklmkAGTpwGBBS5qMKXntgAYKdSQTlTMvk7azC7SFahCyR0fLUW1ENgEzZ/Q+wcwZnRXnnNZKZHPgyp/Yc1Y7pOxnwhu+xnt4+t1IKzpbZEeNOE5jQZ+T6c0UXuwpUg7aGBHJsrjZMUo2F6TTAOx5HG1Vi5QYDmaW3odIP3pynCadZ4fIX22noEcHXRIAP2cwZ0V99RrFfZhcHAXKBWAHFAD4UQavR9JS/0WSwhw6YG0CUCUGBVoocAFEzAF7qAiGnQBGtjSnfM5oE/6AiDXT+hRgRQksL9ScDmwesL/2oEgWU97cH/1nLw6RqiymSfVsWdH6SvNTynHRBkrtBtykW9U8MI90b0aNVV+RaX+yCFYHcYbFoh3R9ED0Gvd7243aq5o7n1+djKoKrs00kSCRkxBBb6wL+0gnF/GeZtFa+OFfR4nBysKCMjAngYHjM3Mk8KGSGREo6HwYhJppUBBFmzfigmded4Us8XDUMG4CFOVsEEd3EOzI5DhBId2hmif9h3Q1BhR1rPq6KQHP9PZj2hGu04DmAewcNEbqCbDiUiIDt6OdOd4ImuVhE6JPCQFxLcARv9EHuLBBpaWJ3hkyFJjrw4TR1VKNZ3t3xOlHDQN+OHtiuFRTt2kqIb0yEuWC6TZ0oIMEspETfA4Soilww3FGLBvbQQgEIZ72xaizVeTRcBUKYcCX8C7E1nFQrkSmIfC7klThPJ4vKcZnUyhE6sNRY7uRuef5Lml/Oe55ZSTS0YIZC5qZi5/u8euNeOvp3oYuSN192sVe+4thereYGRIzdmB14C3UxOmI4SghzglaDVwmXSyomWaKprg9gtDqci+x3t7uZtCAExzredfpNhrEDw15tNvnMA2GwUBjew+L1V1YIUPKia8qG+MU6aLQH8xaB4u4t4vTQouQ9gZ+QGZ/cQhYm/gajsKAvd9/Kn0BLcVz4h/nRO198sKPVxYawBQufhoxaU4v0t8dScBy7EAndjOCdZ8Wh35orOLodt82A+L122YAHoBpMQ0uXAGdhm6JZZLsc0RU1DhAHLxDFRN2wfRMUiLe8W4/4bRYl8kyOdnPhAWKQt3t7QTNU6TjBQRGPdHRkzjWggRJB7l2cB5WEGnz2hBxhIU+8aDC+ELecuwggVqp7uyQz55xBwn4v5cOf7kaXi6mdJFmptL00CJ/7WB1yDi6YYiuV6BNcxxR1VsbxmVEe217gUxUJlSeY6IyWc08G7wkkVYDjP3v4hJMcaBmJs5GHnBnCmxk9JEJsqeCT06GGKtuLcYAG1BbN3Yesp2qSgYYIz+hRm3j4aTvsDKxAQSH4rELQLaYZSfEfvbyjE4VFt7PGRQ4pMaq13BVX7vnTzDp0zwEBakAQTpCKLZK2UV+D2a93oaDmZo97DIwCUeTLqOhBp+imkOqCVuGk/ehf9Rq55ucKHBK6lEgdpbuMDJcVbCpoXBUUQYwmvewRU+iquxu0Vou1wruk+eizAagtKCtdmw4cTQ99b2+849bc1T13/XrmIrPFxTwQZuc+FQ5uns4b999+4U70WgIBc/XdNK9wBouzahJd6pwbKdJrrTNtgcNHvRjVurcJsRE9zaOxz+wreI4Jwlhr0EjEKesHfszb23kUgHT4hpixYqSFoGcINatYAgxU0DAuTWUHNG/G5pdpNku0S6crHipILybRuqKXU4DLPZMR1M00424Hga1aXjOheMnm6615nxwEIxF2HJjKehp8V/1C2/0Z6slMe3azPhUg+somjyy1V8hkM4XlZvhmI8TDCp8wQjeBGTncXFe6Sy5uFkcHh5KsHRU5kkNAdp+2notVCETsEp0gL2uy0jhIrLtE7fXAPZWCsWtJFic28uJ2/nLxTS24OHCKFvEtlVcFD7q+Gz/chKgxrXDhWDE5hFvpebIM0AWDj2WlT0E7SW2igMtSXIawM2FuKDyY47MTy2gsk8CTdbu7yAyWfqCF6ttSyZVvBIo+FXRNdXMiLTHEp6doFb2pxpdwGEoyldBr4gF0kPaopQ48WLRDbFAvumKUWJ/qqnXPPYR6fzctsRdr4h0fHH30sdw6mwcIlIx0Q2KyFwZQvaf/taM9DV07qJ65oqB9jUJc6GBIc82xvETQzMrNNI5qumHZISIyPm3ifdTAQ60dTLLedHqq8kyQVqSWjf3pxQPl7LZcFZak4Jch6jhIhYy+cZFtJ240B6OvvuXirNH4AJ8kDfcqBodasWRUIhsdCDHrnmA6AxzrYkrw+kdCT38Tkb12LVr+88pPosDavhWR96iCOdU4ac4PZXPTiiarqcHxQ4ijdROEYC1WjrDOnFHTAkH0mDZmZ84amXGrCOGMUeVEs9CFhGqs4J5GfG9HCCwaLS5zi7yjRa6qm+Ua5pUFxqA2IQ97xwqYLU8QONYIUfyXXMgxrebzakJasF/85f0oeBm0aIdBIqSXHIiLfXHPt0J3GU7phyXEQUnOM0RMw5FXDTUsAU9qkkCh+h4IWqQDTsXKpXSvQkLOBvO4xywgFJfayS0DfNAHz0tjq3sap7DsXl/A/J412tj8kD3bSw+Vm4zBjHINkoEsJFQZ7I9cX7YzSxcW8iWYYNv37LI1BAEQTsI7JTI8oVDdSCbDxYLZt4o5faTxcpR6MI3k+/21P3WWLGnqMuoRBQThliQh0uFu2FOsBqaylFcTEUuQFAnMOdZ+e57DAVcgANUXwhjHVVkhvicMJIwMOjDNpL6W2xndnMHyRH84vmFrNrf3kUS/vlcn9JA0aHamcP4DXkrxe2EQ6T/CUmTdH1rEMeVObr0bErCkxoKsOL55/Wo1H6b0yYZG7A6C2jMngwHh9CKMCCIjDXDGNM6TCxFXf5f7sqQgAAHfOyM5aE6glHQOGlBjQ095q3p42Kz7lbI993emrEP5rpAQ6oepzIUP0eJGWesB5KgRhTFIjeA2ykq+luboI1G4xsg5yfIyF2y3j9agT6/+UnJnranwIz0zfZogA0tpTNExZhEd+ct6fp/BKMNwTYdX0xrSn7hNdbOzc2REyajm37mIhyzDg3C9VePkOvdCQSyziEh9aI/2akF09aiiYgGaodM62TUpoRBteHyXlig/cOU6p7TuyUjXygIqWE741mGCJUIu6ADuAdSx4D96gTQCLQ8GMfxz1YO9NkinMbQeIto67rYosxRnfO6HDK3SYqDb8HshGdqREDHkcAQaAQK61pHTICwblJQQJksHgBHucf+wOY7gO1mRscBaLv9oxMDW+2nCxecdYsK9V9lpJ7CSw/jZciQMgtcjRsbGOnABZmUx2CIaXdWSQen4BKs+77g6Jf8IVNZRACK4t7iWh7iSuCgZIiflQoiXUMNdwAZhHqwQMlGnp7PYkhrPXmEQD3SWLfBy+wfz7p2JEc6WhDF/oFiH0iScGIpFtNAqU/u2jQItBHADTCyLnFkVsYujiV+C0bvjdoyQwshKRITcA6OLiTjhJnYoE2RmCaCwEdYbbDzzf0R5gs+2IELD8w3g5n8/+ebMGzD+IYATzjFqrJxbQDH6eB1Km09JQ/zUJo4tGotGwMVioZnKSC2NihWpbYop2yaIRIrXbBAuPdAWz+BKEfEkwLPmBe77j2ourc8JKYGrRA6jHuwM9QskU1RZsiopEhzFogUEp39q8hWN0hQayn1KY34ciiuG2XIbRQk31USJrw7r022IYTUoEmud2fEzbMVZ4D9DB5AzcA20Lb9PCjgjcmaJiarPfD74TNWYwt+H8M4dEEHxrM0ZihBxJMCWcq0E3u1mBZNGlMXtvL9m2aXDBQRqXqcZTtFW8yXP/hn2MRJ36rErjQ2ApYTE4S1zqZILXTaTCakl7uvzZcr0Wso6qDbR+LMAYVYBGWOz83JIELJeh0kmiTCg5C20Hg1B3aWFONEm6tEkfMkCmWY3LpbKc5lcgcqlFzvXDQgW2vHMjgFFkvC21AVg+EcGLQFwlequ0i5hts8uxfiM5W8OMTTfIELXhEdqTCtLOrnAKsbwXqYSp4fgmHnbmfF24pdri9VtoBKCZ18x3kll+utJS83OrzliQL2mskjdnQzYIpvABEUThQKmoTxqf53BJz7Ngpqw/721EwA+/MIrS/AhASqXrA0vhMfg7Cwft98TSarcacDUt807qxywySMLC2psiOSxRK5Urr/ECTaf0dlP1qk8oBR8TIeHeAwCyxdiCdxmiZhBRaEi7xDOO/KdxvYfnU2ESWjJwME8kvtY1ai3+vFSuLrCySAyCS+UOwE47aHCFhU7iJzD2dYitfc3QQFv1ld3/rIXvHtTQSsBJvUU4xM03rUJHOeI7RMixQqZP398jwlUC9RDCOVn0s6kpYtVfNLht3mLhnhoF48qxT+VY9Gxk4eJq++0ouys4ydbNdxoEwcabtfIbKkVPT3Vv1471TunnN3saoxzCCpfNPze545BaPGEpR7IVFqa4o9Q/nb1cAh7yENPoHKVydiEAT4gz+DVrOMCL1pPrtfHC+foAf38METgjj5ISZvmo/u/zcrNJ+SmH1u/nax9Gp2JObTzLvKHcUtoiUmamdquXo8LyE2SQqD2jbapD/NVFUid3Vm0fHX/Ad/KpnbIqper8WaV1Xe4jMZ6HdQRai7LQfGp3nhAkeNt70voiDGkVY12eKo6pp0UWtbbGei48LNy5RoHv1/kVKM2+NccwcoiNZ8+1HHfLuuI/kg/lAH9EWlco3w1xt+F964KiRp/HduyoC96UuTNgiIPvnrx+KBYE6CD0Ju1FgKrUcJsHeLtySWsL/IE5+vOscOTmZVwKXZndb9c62ktnpEYpHVpOPRW1os6q7dhHvBl70y3LqKP9HqOBOnYDn2ti5D/erBfa/6+K4htbpceH42fF9W+I75U09ilbMhKF5Kq3x0wEWED+Ubv7j5Md0py2tChJqHhaugu6vyxAQTYif82VI81d4vkxT8zutc8LIeJ4UpJmp9KWhjYiJ86kLrUUBJTtSiWQYfCH0KdNROkH9I05XAR4mTB8Zd61d6H0GKxmbzH0Swm/am+Xv1pUH78y/7ASM+Epmm+TPWCx+FdSpVqUlfUk0j8FLPMKOdMP1LnUvDag/jE58WQ9v3CNFEK+x/SbuCd85/YHBf+gJpIBAToeMoGF0YZWEFkwEopqZrnvJ2n+7r+v+2+Di+QqVUqgkYTyqjtQdpLpB9WUwN21OMSAM5rl23lrhjAdOsl1ouYKBWUNUWpq4N7hKGf7y+Ec1wiV/GkKBqxyZg81BXkWWUORXvevd34cx/P+P1njwDq8dP+3xNYId07NLvGIzb92ZSBMWxDnBISuK/pOM6COynwg67TdHcPZaNz7ticNui2W7RLehWZvnYy3FrxuBhF5cLPtyEcG3a4O8uGsLOuPDBaPDvGnbKWfcb+3Stqn1fqLiZmkjru/GNCyzVe+lu6f6+hXQtFqxcTm+hKPJFTf0fDSdGodjQAfWI69e/zE9PUeEYpg4dRHGqrOpO0BBeT2cbxMHHcJTrMTKwx96a4qSa/5i+8j4oQneXdBkn8iTSzZHG19LNWh8tNl1C2gKt9S6ILR4paYxoW8DhP5/kkhE1gaoZWHh+LdB5t7MYbAnAsf6R/kER5dMS6ellGtmQtAUU8fy+01F1cTC63D/udkOkjP/DP4E+ciuwOtqC3Aa2Ru78vG+kc8yf8Hf/8EGdUhD9z7dQc0I2RPKgxKMsoV7YJLnxmBPPiIjKVyuI6djOFtLwnWmhz01+3099oZSSBxzbf+uk0rkZUJLrBjyoa6Nei9ea4nFe3D7DzUUU87W12WFklYwSfanV5frihQqP6XFpDA9OJ5L/cIjpZcSnNXxpWEAzrn5H2ZnZP+yviw2po5Kz6XgGJ6DqdrX9DUNNBTDk+PLWtM2MIv/bj2VkQnkW6QQ9PS5Lhw7xvJGs6IlextNgrWshTxPrflbclahfr3790x7K9xvBdTGqsShtQU698Nz+19+535RCj8K/lxF1f3lH0rWNE8s84/cc16Tdz2ZgaN3xln/XcDSWYyzgjnwQKhOhLWubsXg9Gvkdh4pBhcXMeIM/qy0U4grqGluwoCWLjZ74PElI36IXpHEFyF6wWvvQEpiztzQpchv3uqTGBTFmmoQmBsIVZfTDjcwPqlm3IDvdrNaPH0Us9zst5GgOjROSm9AikbXiA0mqc8wR2ceCpF+wptE1PXnwL0D5ZQ5AdNbepA1IZerHp2/dlRZ4oq9f2rOmd2brzQ83TqobGTy9VS71eRdJbXOcj+DQhuI9IlgvW/bVRGfTxhT6PujXI21Cyj8u9vo47D4LwsfxWgFnOkeLQyHGbf3v47sbA2w3zFLNQvG3GF7kERiSKsgXY3WIoDFV14G1mdRpea4CSm6DkEJTPdEQPnofMmHpzXC304AO2ca2x8KEONhhNa7Rwhc4OZMFNhC7MQJ5Qbp0x0rxJSg5MIcnodXQdoUd7A/QS7x72ycsaNZJ2aLBxb7vvy35j0qPjm/pe+1osBVNwZFkaPpgELRhX6t4mc8NRLDc+WbcGm45GB5Odn8AoMXZpuI1fxztknLYV+Vj4Ng6mEADwbdKy2ykU4RgdsDg3Rj96Q6HHzPLMI7E1sVV6fyI7AAK6/FHAJcBHi1QkCJuibfmpthkt/PXdSJfTqia0rGWXuOD2P2Lc7qdT39n5e7awgo6m7YVEhei6tTWcfkEB2Lsjgjtsgqn9jFhxGI6co0NOW3RnkQ97qqECyWQ+P9svcLqMGpNVihs9+yNO482Lv/nG0ibjBkbw3BOA7/GHnD07cB4WrG7AsSPZSjkFszUV2IYOviz5VSe6v1AZYj9XLX2ZkSBtLD1xjWwYmBk4zDXpQXBiFTrF4RrSQ8p5276VizmMF509xKVpuUzQi2nhFCK2wUlWj3Du+A7qYZ0oIfWbWCmkHRthcZ7JNkE/kD04xYx89O1vjpVOjdjm8f9mPq+fL36ufUZMlhnC376z8nvgWJz1m0qE2hoy1dzW/E1kMuDXo6IMxzHp8s5HbPJa5XwhT+5bKyrYOPZvkujzngX20fnpnwDSu3aUgOsgYEXIGDqzUSGBgfin5VDbRXH9OJ8Ol+KHkiqpg3gmZauv8LXmGy3YE48f++o01+4JQJoncPZcN+uJFctHYipbLaym22XTB7UJdXr+xUmzP3S9UWQBJyYUhDf/ej+IQU1suQI8smUpLjQZUn0X9PQX03tfCgStx+/hgWZ/UuRiAmuKIDTg3yND6dYVN/T4qR3vcUInDFOSJq+sOrzZtrQPGa1nXENo1Ab8hAOoVjHNWJiThkhAu7oa9dztzN2TAWdwRSRbRB8KZYc42VpBbXQnRgciruCAPADWNo15O7XRKui11XLq2+rwCB4kzHV9bW+fC4u0TvvbKyP8c/6RZ7pKDvOj7Rk3DTiPXc3MJTSIKixPv7Eq6g8OnyJjAY8uRB/SlPYMJyDGJZYMfmoUMR93ov9mc95aeaQnoTZHp7eYBM7M55pNECE6vNp+N7pOYDs656supWBK9Bi+10Ty6CjTeMEakWhn9NulNehqAMI64mg/QTMcoLUJmV7Fp7x+QOJlf3SjUf4WPPae+fe43QB46f3C9gvV7AnG954CRd5GaaSh9fuCoIFW56mXINwNR6gTcJTOGd692gX+hpaYvVkKEZ6lP3M2GRu54l51AIjrwuZKJCE8zAPqNTrWEcXxv8ycGS9geyTOdpl/3BoeLkmrtcOZuLqHju2aY6ZeWUQo9VaH7oIhS25jGILCFz3uv7X0HTnHS6XtHNk89trAI1zAruV+WIXHMc6bGNZgI4DdZ/TwLY2eCB39lNzlY3cJnTIZBDkZQW63lYQIfEkLXJSTK0SU22FFRoo4cx9SSl93heU9ET8dt0d9G6GTiGs2L3tVElL+Kjq8Rd0LacCeFtLd9H/AbVDB7lExoC6bpSWYszafbuGflRqATo3wUbd6YqjVteDUw5Rx61E5Jgj5OWK/X3n/EeaWlVUYl8XMsVHoVl3mHE7BWn7qODRHDssFud31qgFFPkClOThrmkHKnwhgqUD304JMg6Fm6aIpYauJOns7EO8eWqHWFU6xYWHUlL0ugijD7whcNBfJpESEVv3N70m82k6f7YeKn1zdBZOnv8i6IBfu10P7aAwLm9d41jSGcO4yyhWQ/fRj8CEhKiv6wdYckm96/NAtOy5kGLo39/HHgUaECXkhHE8TWVeVbp6uAZzdoVLJh8zSULjLq/bBnfFjD3ULMp7BiTqZkvEuXpVdesyoz48OmhykbjWJMsPWT/YV3kV9cpjoZKV9W6kEPRUGFkeyVrbInhJ8vmCAPN7kMl+bLIl5JZqZlQtXIByOtppnJjfT2rWWkJkeTG8U+HS5O7tzgoD2fH2hMhI2zc3MrjqWrxcu5nmtQq4tCOwDGOq6hLUxcb0PBUUsLDOW9VrMlKa6Bv/BQiVxeVkUXcC2zGWSczQoENUZWcWKq/LKFWh9kxgTtjBmVA0aRZva2fy9dTqErxbrFpn53XMDbZr3AZ1XPWyLf7TpRUEEb7dtUguyxojJleLK3szonAd/cDeW0vfz/S0jBmaeYUu9oQrMxhUTqfrBe9Vrc1Yt/5p3HTFtNUvQ9GWBGZYtouByZTnvt/o3USgqBi3qdSs1FJG93D21B2tw4SHSbXEEO7Vj8erlmDFQguZGFOkAH2TXrBbTpHFlZVExzCyvOECWTSSKA6hSEGUewgdrB/41MwQapKantwgy1M+yVSQXWG+Gsjrxqjf/f5pRty8OPT8QYxhhTaUEw8VbYY2aSFCXEcdJvdkTRDxoTnzUVg6tQTmWm7nshRKrvg18ElQ55y7hmC7K1l/JAc8i7WHyguZVNbjlbzOHfgtMKb1D0mzddFTL+C8cQ+ao38XmHVjMCI0v1oL8AO4JY48ycMr7FqjBSZ3JLgyF0O/mOWf9guJZKXCGuoS8fKCOMPi3Ml1oKL4MtrR4FsjvN2zN6GCtM6HRzQ93h42gQWwocrlcMqstyGsoEBRiQ07GoVBaq28nBg2WpeMLFunBnsNm9xDIeVihdB8clxkOGiyiansFj97i4c19um4umE3SQ6hGfD7a9b9RVWDUOISMhIY2WMpWi6iIukBTY/Ep5thVxTNx9uZu037Lv1f7UYcdkQkPIzQAC3xRTPkSLp7v4eZrT+/6S2Wt7H2hFErvXs69tebEcflQYCLKKPk6NEr6q2+d8fdulE7ulW836zNk+Jb8vaXBZeK8jitjVYQ6J5qdJ1PX1wJbyMrSh/WZSVxKfGoaWGvrRJUnANSP7V0YjYpRoyFtWuL5/fphqJTBJLWIYIRgzXhThOvKy2ZAV++PZNHi/betb5Vgg7tQmAqTpGAHX1UUAlh/3ENXa3ImA+UJDlBwt+eL0AdcMIiRBz0LQm0U9qKJHWpo5NvkHMAc8kHqEcx2M715sYi3g0EBdaXTgiAAtcBzfqgd5MNrB0ulDUlpSHafrQLx4m1JfnH6MOxQKuoix4pmLjycl4nHQrt6dZAkgEraJc4D7NxPt040TcmOh1BDDCk02COSuzOUZhnRXJcxoaRtc49vSQY90mbzgFwUi7S9f5PR8oJb8K2oaPe64/xgHv5SBk/bI5frgvluNi/7+eFFuqlOej4DqI1usTk8jmWqNs7TIzKiex0zp3Wn/WkzojkkV3iE3mx0VRnePWzre+CHT5bGuV7HbiY24P0fAj5m0v/GcWAzcaQuAC1x0BtstcKfppMtVtQpwk4lyazsdtw01g5bnJNmhPIpd+gtDQyY5ULadSn4lioGSuBgd0MsQZqEicQe1qtnqJGDqiZK9beDLnKPgRFFzViqafJfJ0KQjyburfAsgFKt3wYN4u337JEdDOYNrdvsSDPC68nErgxgAWcwVe304iY3/rXniyNT7lzNcARmKPv6fJOQdf3zD2AK7ykHjZ3lHWip+sgLRyAtrXnaoiJmPXSfDib9i7Symi7E6rprI6H5YeQCVR1tZux5youfVH6/ImwuklPPKkWWO+RAgi71WUd5aIeeBftdwIDNl4ltydzRJqtNh0sLh0IWb2NieHzYEBiXjNqbbQrbIy8iFKsKolqRqYPHn5TxQcs0xHis4UmllssWLr7QmC2WsVFDzmsAGFnL+cclCPbCSQEiPzfORF/mNdJ0oK+uRkMNHRdtbIPXL0wi3bYMRZyFRsDBCOPUy4V1tkH+wY/Cc424ZVGQpeZkGaSNO6FyH5hWvdnlwTzhVCYQ0rN5rMnKESe3tq787RtqTsFIR/NFaCNQ5QGneVN2zMnFjZ7iBx6zW6BhbsuVsvMrWpFMAZ5E556BRGzZ7iEWYmFz+5pRgLhzr7vt8mydjjs3yJUVR+cx//woDbO6/tRW1EvRasxrv4uDrZfn4/1JZVX7N4u37W+ZFNyECkYN427nx12+SSgGLzbUs/VUHEy87emuF/NoRYzM66azvG2kuql9rN6M5xMkwyIKRm8o0GpUBZMK6yyVXmaFyVIBSHy8YSywoKzMEILeZ3p4GeSMl8AJfF6vMbOBeokS9ypoDRSdiaUutI6HOYUU1Li50GOEovFZxiHG0uxDmjRXLip0/YqBiiJhxgZSJj2kyPOLjZkHVJ7VA6CqA8Oh+MpAk7Ubw+Ui6Eg4O1zkpCr71fZQEifFRzSaIXJF/qTDsut2sMHX4gnXn2tCW9K3smEBLKn5GzGhWE1PHU8EPWWoqhUxQGC6G82RckNl9yGlMAsTOahtM6BMqVlvaYjvOkqOdbEh+uSdfCPZ71PFkafMsXj9agn0J0RRsirwai1EgJ+E7Lc2qStusNMUNDYULHFDrV0tb8QwOlQcTh7J7WqIWy4RpMsQmmJASet1b3WRI3YyIPCYJNRMz21kaHnZKUP78N+JEJWMUVvzDnRu5POlYo/vpKFNlBClhh9X0TGdXzTLW1lTilADwh2pWb4mDA4PtSDmmVwOgCTRzHqzYOizjmCe+DtqmUCXoPG72no09mI64oLXPs0N2sGwv/mozbVe6kSNwVBn3rRH1b66FaGNSEx1E4C8Tpl4b5bLBu43hiZKXStvC4L1QSyeUSuHhITrg02GdxaoOtjCQvxFApZeLY81qDz4HVazE1V3TXyTugJNo2smpftr5JkMWeMd/ktrRnIoMl2TIhK3scgxjjzTFi73lgbmg4dwtavJ5JDwt73ZuacqBo7MAQ8BPSCvH7RneCUDJoRy4e/x90M4T8DwdKFDNvkANQZFqAOtxVsRdiqkWeF/XlNIgi+StBxaIIvrQjjkJp8rthY+wCqWFq7XLhRmhzmOoLpn3OcwwZ3Uy0rmY+wcRXzlPU3xa1iTTTEfYaXtHTr3MJ/uuKf6A9IxDHdS7mkFOME2f7TdEtYnmmq6BtnoD8rX0kS2SVEvrhJTNNzshwmzw2tXNqurdDOa1/BTvtjoe0uyDLvL6D79B9X+j/YlWCOgqYprfU/UDTexVhpfDPNBgSdhZgj03ACP8YeoCerF/487EKKPezc7cSAUaipVYk9iDX296ceRwpZqXIhbRJkaqNMUZ+8o40il5m1a+5JxxCkEtOCBn7Va4h6vYa2movddA7rzTOK3ei0Zm4W+hHmKYF5fPPvWPNNtQR/RzKbrhl0tsqSC7e2/eis9qTUNpeN8g5UzL07YoZl8i3pFFzdsAHHUwtvKknl0pTxX5XZvBUZbFFjOKnS7rTl0FoQhos6xjBw7IWGY1b5BT94cHS9iJepy4uJ93jSL1Fzwvp1Iyd1lutEsSV/URz0y4j51tcwUAnpR2IYri7OSaXAPJ7ZubpBYOpcjsil9N7nfEIcAGhvBHbCGU4Ny1OJ6zFoMau7t1GoRxfAtYx7poaZXbR1B0dXPMAnqvNOnt+NzFpv9neLmLD6ba2/1C/zWU5fgDxxOs4KyYTm/b8A9OC+OKoRNOo2rZMZVbtEIzYIalyCjtOU41RL5983HuO4Mfg2U35qLU/mIo5uN6FIAhVh7ww7IggWfS70wgZXAmcdK3YN98Xt3K0MokD+II6nrKhrUYlwtv61ftXnovqEKUoEF+bT06MRDN8yB/1kBu55oKdkrIcks4qXWPpiMI6knb93RQrF4u+K6VfRV/FEg6PQ10izCKJ9nkT0KlD1Mkt1KE8vwFY6/JqbJKgnoSsQiL1vp7QvAMDHmb7PPOFwm8KvfT8qcV7bWnXss8smMXnZXZFaGzK8owFdDpXjGnz03ekdMSxyC0hY2m8tLphS6nIOrNN39uuzH2p/ykuSufGHQg9h9v3K2iGIitjvp/2PqLEqivS++5Ji5Ke/unWn7+VbenOqNyVdvDFPI/r0UnkVqgS1was5a+j2dSLi7C1KFpJMj+wU/8ELkpuvUJeIOl19Ep/+AFwAyPOE3WqmVCn4ikeLajgjKFrqHJ8h22xb47C+1rqKi/24sFncErVG4nS5M9YVnJ0t82fFmcBXExAXfnoqxDi5h/muCrG6EjxYIavvp8o2uPD5qgs3w2tF5xpw0XMHSxcCuQCYoEDLAKCSH6xsIskSLWdkMquSToL9UFsBLtjqVQpzkdK6tsefA1DvhYK7i0WlViHjU1l9RnKM/+OqVvBv7NedCZAUqsLdMriWSj7GkZXdu1oQlQJMvH+D8AhJ3D6QGSWXDpiQqpH6nTf0yA2uxYiCUNHsfDfNjVvUBcjsh/NdRH0SAyh01P5QjZZ76y/pxBPT2kUVDnzdSKsYj0GJcSW7uU3UnMTP0fiBPwvfJUcYGOXbxGFBjGk5E9rj+SGU1N21fw5pkk0b+7D2iMB7Kc5Ij9gBHM1Ymw9Eh6eQXcWxke+rwg5wId/NB68KKN7XHKrMykogMHvXyytYNybgTMPt02iyhfd6xm6vPP/r89SjWS0+3Ogg8YJ8mjb6bqpX+PAmwE6Y3LGp2dBAYSMKxf4WOTA4789KnQT6royDDp5daHnyIIpVFHy6IEslgUTKoPTiLvc6uCv0Jo/LW6H4wEXJvfkonosBGxVusNzbZ0aFEb67b0oyiqCJias2FBpYkWUKAZ/pnmawDf0H76zUIgJmEkiN6+T3ELwDeDYEVIii6H9bKGxptCCcQINdFlpe3U4d1GwzNKxBegGoBFM0dlm6w8gkDi9VppxT6rA0L9jrZG2HAplYlxtBsYIxiRA7YYtQ8ADGrpDLi8gEVgUBbv0btjcB76nNgAHqlgOmr7xQgELKD/nGh1ab8WNwcCBNCrCtiyeWxQkWtkaDGzcJWbta4LFnrLHvEkE3CH119OQrwMc+r95q8Oa1lOdS/ba+P1gIJEsAn+cSxcAtrQFBRPJEFYkot0KimsdeWjAL8DppVX997Gi9S0GbH5TmoQ1hxxzqZFAyVozZAEqtHb71jdn82PAIrJ08fowfemxej/IoJEmCAUHG6EREyiGHkQK+Bq+g7oqiIBC2FvsZlAuPINv4eAu8HOmqq7cNj2le9zQIMVWgwrIFYDsuBw8ln21Xx/Ha2O1vAMB/OXLseX+hMxkEkTDvn2HIqAKDWVO6orI4RbabqXyT2MoymHjaHgRla8HCAJBc5lufvnqjhJQW6ttfIWkAv4bA/eR8uhoJiGiTkhmk0wDpGC8F4qim08nTizSjmVdogGCTTLmT02LuYRDTcYq01KvdTXbKILBC7EfiEH7s5J3Xo6noOKW9gUmMI/v3aaZlAAPCmnP+maco+L0SSp1vNTPee6iP1K8DWcRFxjsNpiNobZR7/w5dUfn5ktR7WaSMjQ3a3p9No4tUnCxuaB1zJAqsSxZabbFqnvZspiAt+z7rOp4nixzHKgLKcHXjnWEEGCggkKzzNOmZbXea6jZSolRqZh8GY8M0HTNLPETyxQUL/phxNAnrt7IuFu+wIVpF6bDkX7EN1olFxf0I7muqRUNxByAx1YlL+lwd7AgogG6qyhSBiCLEFVWC03egEJRWhm8rhRHrKqfQ/B4Sv+d3+XxCPI/83X0BJ3DKhxNkV48p2pKA8ltag/x/dd1sQWpFYhNEbjU2U6kOICPZAhz1ISKZULBkgG3RfOOBVzzsUWsOhEg/iOrVK2/KYu7LDsTr+4AF9BckhTGlOc8/xfpiSyTesBojMy8odz+03h1gNswp6rtta75lY9p0S3UB0orpVNDopR8oTLJl8hRAK2ZLrYQKgAmmbvsrQchq2ZvhzdEDRQ4yZSFwTPAsZ8Q/z6r9UKr2Khv8pkUuOSoxFYEyU610YIv7OwdG/IV524k2g8GUtY+WaeT2qBcUvediMSOuYT1GpvDUFcKL3PRmc/dZsc0PxGXI9mFbGMm3gjht4FEdCgFfvksgpFRiono8/jytqiuBQS00lqruTQZ1quPP9yd14T6CcpCVx9GxXoegqu6hLYdIdDyMQVMvJhpgtpHgSSmK/LFw35fKHN0M52aDAmfKW8LjhXPaw0xiH+zX91tTkGHvy/XG7Bk7tMdwJdWGYVODtX9hFHjG7qqDwm3vbe+YoHjwuwoTPWDDhDHkRkTfZsMqjfAJtCCuSOmRylipd+Y2tI5EpoplO/E9tsAYqMuTMdfAxulNKXJ3k+O9GCqLIWqMWBuJwXHGddWIkP09W7CgZluLJMghMASvVFhLWJZyFptZl+j7UeieY9tWsBRqrfs2DIgCogHgSixKX4n5pZG6P0JLfANQUcx6AQRQJtH3jmkBByIr1Glk656nRmo3ElUxYeo6aCKksyzOEXC0m67TxoTbwA3nzrzuUXt5lIlyae/RktvDiUA2w+I/iNqcqV76NCsbnlE+uEPtbg/E05rMPka7WFCDCcO66RH/g5nDlKD2sIHE6gak3qLFD2aKqIGqFNRgQIGY8GNPfz4kijzn7YV40gq0h2dARTvDxo/86Tm7ECnE4puM5filRT/EprX8Nv7ZwYlRGwpDTKZp8ibfjIYpJteQ56pIJt2Mu+UvN73B+MhpaRWb2qQQm2qWomRZ3g1aXQdB4DyveVCa7pKkx+7gZ5t7s/fBLTHdb2iRQUqyUtB6eyeJNqEaeI7QE3xjZ7+4sPU7wr5XZ+m+86SorObiDnPw208c626f57+cvxTIMFsIIKe34xjmawjTHqbafFPhWAEs8PlESKDW2HxRaYHt3e11dawvI9S73lSbV7z3IyvfG+SQvMw/+dDYZiQKnPjUOINtxvbpGoT8OGSTO6JhdwCCNJd479lwWOR0TX1CQ4lNzrE8bh60pGl4135T72Ome40AEfUwQtLyz8DCAuOafDG6ea2HMvz3V91wPnW1b3ll08tSYAdWPuS/y+9nC4qKsCj5Y9GuBHlHHvuZn0uPDTPDu+DJT1pqHvVwYsDuvNuEAj7wz1oOZSv56NR6msS2LqUwjH2ncOGODEB8cCwyAlw7QYNshzW4K5zFZd1kPEAATSYIbRHQrpcO1hEW6wSIPcI2uolIezHWvd83pRN1zndjzPjQTkcl3G2vp4K97nnpUhl7Fy3X0k1nsANwnOZSwEqW636OnZXfzU1bYd+bYeOKN4633pmSBCUq4OLWw3FxZDdzDvtPI4BySLACUd27Y9rdFtdvgDITP4yIO+YVRiev29o9n4gR3gu1ar3yLGW0Sax2mrG+9EDL49Sb5QJESquRIMeC6MoKaoO9khvFelE/32y9wEck1Fo+J8Om/T7OgchzAuWHbatGIE1UJmkaOyX25/BAlm2/6H7vixABSmD07C8SIN3T2eKa6LgVRMLVPBeCpDfIITA51v0dp08lerDHUnAzhgQENdecGyxKAgxIKSrujE50OMP1RzbAMfI6KU/hkYlcrGX+gQXkWiP4Xl53DpTf8hq50cq52xbWlp24vbcQ+pRo6AW5GaV4fR5g2fON7jNtgkV/qOEQnJLhVsGYwQzZIQfhvYAvjiRyK2JRLDNC/bnMQIhOPCMUUym25prvXBwHxUYZQRWSpHgSd7HETUI7BWupn2IMzCIWCL1dfLyQ2+4FxJoHFCfZISBXko61pmHC80zEjWOBtjFd8BRjrGugE3Eo2TGccfqcp8q2nV2MnrNW4TJbxpSPtDoCCplEo9ySsW+8MgcO8zTUlPa3KzFtxiTR7ohJhG4oTyUxspkNTw2zW2bipVKQdQjsmDiC5tOkGSBz9QJL8v1EybiBr2zEuoC2JMRssMljrDk511BmhY6khjT+g6+Z39ySR8SLNlArlvIIQ4p7d1irOC76deOLKqYgZ3GkQFYAEwuLSj0HSfenZd/L579BP1YufKYMpOEhB2XW+6S9hzjS2sKEZpynTatoW5FgnDyLIBfV2VfYoSYEIPM6gIs+eTF2UlvtQ0tl/dSEaphwo3mFyhBfPrtx6fHPi2l24br805R/WHwjMDfa1KAWujIr+uTTzpBYi2HEdt+Z9Hl9MYgjy73/0n3Xv5gumY304NiP1UiSjqdfQvSOe7LV46j9+fncHD4suUKIJxPvv0ja6v2aKuptyTds9jcHmT7SYysuZ+IYop+TsMKy86DESqkM8HxBHTAJRG2k/tCyCDrele3rMMVQrMKwj59oG7un/RWeArANVxN/wx7CGwqHj0sSXNSH3xbLGBF2sZD/xH3jqyrtf00mCjO/i8zkZkSx1pHFDxupBfkdBvPWkWBgCvv3XAePiwPtMtL0BByNrK3ViheVze6/io0RRWVWyYqzLcPAbdRIM2Odgmjuy8VdppPHtPtEpqDmQbSceShZjTyARgFrJeT3fbyh7bF4ddpcGBl9savCS/MNMrG4topmWv/3QlyyvywVcO+pJ1k+G7NCqVjblK6w43BRBbRYnQ1GulLe3A9Nbb6Euht86KBdhqmpvqADGuHtNjaHrG1FT5RhDTWmekUnhGnL7vvz/VuRlqboysEOmzqd3ki7rEi8gri/mWTqgd02DBrjexrdv0/eq56WfRiW+sq+mmBjBOZCcM4NP9bDjS5gkPKR6a28qoea8HYhNDJfqWKLc3fx6JC33pDUFRK8WP0aEZba/k4WctryDCWzdapwGejBXJUN8+btDhoU28gCzaMClnsN0yjRG8+Ye9SbIjbppETcdqxbibktliYu9CaXnEQrgcKm13TDhbI+n/pOg/VEYWjkaSj0q7UiWwjFCsb05130O5Co5w6MImJ9e2l2ukFCC2cUZ+pOJUhGxPmpaOABu+hmwEq4NJBg0HQGEb32hOi72VrzQ94vaVrOfmFzZGygTcEzv5sfBKs7K4NKKyiAcwQ30TGvXGosvah+ICa7TSS8bXxELbGBfpXbSPJywfjLzrccg38xfAfF6pKQBJFAfAIzRbBdxj0eq0CpFtCwxLpmSY6uPwqwi9IIMYwBDfjfUWbLVBilYPEg/mL6djJ1l4aguDz42UjgzhGvBnhoWDGvHCKbQVwYSWsH2mSazoDt4VLoVWHpDChGD4Tf30BTnBTQNferAO+ZhzfHaT6R9ahaog22CZXblfLE0FzoO1NqZJK/pOLth5yEeS9AR+U5dz/MUyZwvaAtPquEeMdWlT7HIsfMMVSSaT3XvKxP+EMx/KGlPjiBVqoF1CyYB3FbCZd6gI8p9BGHewFGovd1rPyMnZrmKQtZVdV141/MMeeKq9uU4Cs8Zyc7/9OBmdX4jVyxyoPWO5xMZLX1ZGImB8uLBRfx4Gxy2IqLeFxj+uSy1vcOT37kwuFnSaKBAXExgoV6r55aIC1ujOZHxiA4y36TN95ydaXWM3qeGrxLrFioF8hDClYmxMAZQuwjemL5zkTlfNJtHtV2GMEqnMYm1actepyqdx57OF2k9U7QmowzwoDj0VtWsLo6AhJ1jhlSRj8VO2a7i2s2MQUACdvRldIwSUZrfM6LQPaAxgYEixEHhvcoM1U0UoNJ2QE9sug40O4zWxY1ab+gyOqiD3r4xzEInPTLQMTz1M9d0GYtp38OD8HUkBgI5t4ozsNygToPzRRDe7oj0KpB0aLz7TeRDtsLUW3Qlu6bOcVbm16HUNDyxaTZDwNU46Mxb2h/aVfITsZu9pFmc1ueR2VIUJ0y3ANR5unaWJHnfYwLqSoXzq8lL8adqKDddglztPR9Q5JhRbHPdY3mSpiXq95DFvI8nIDZOq3BHPzHWLD7XJMXMqa3lVmdYCkFrIF1WbmnW+jPtw8p1puTl7Y590ey8IntRGrBcAGknuZQy/kCPdpmhU3fJ+uX95b+lLfUb06bMZUrbtIJx4dtYAfYhhvWvCjxtAwJtlXmuzYaV69++77fRMrT9dfvTO5utCHk9iod1eZ76MOwJrGES2KazlgNIsZDs29EKgL09q779xD4wgxYhkVr7NLQs2y0PSzH4I9R8bPut3AzoGCcIrShgnMdgnAsvzYQbs3f5sultRqU53MCm8vCXG6ZVEaIg75WG8rhtvIehtXDB0QAkPQZckEX6Thgq6nNRSw21R6nQCCWy4h1WUjKzwnppYcbChcdJva58ec7mCWiAO6HnEmPjUmYDrt2dDsWll9dUi1TyHi5Zpymcx/e9nOhvQ5OLobeH+fTl56y1ZIRCkPpEQL5impXVbx5Ykjg3ZTF6ItkKF9y+d9AcN5G8o2cLJBbUY9Nff1NRZvX4dvIB5RgLg71aRIeEgoapcKIh+8pDvDTDjnS04KLFAehRblnBeHdGrqd1wvpdSWz5qTn2ERdjTO40PI92ppP2ME0uHvBN0GJIseVYPyDtXUQqcSma5h6bjwak7nSCGs9A7fm3zQN9eQ51rfGak4ZPk3NTLaQgt5YQFMfyxuieSpL0aFA3ifuACUxdf2wFpwbYuCVfNRclTbSXojOAhqBg7i+FiWhki91OcP9+6uhsjiqIu8/yRJxQso72gpB9sqf58GEk8X1vn9ZOmSRND06GOM+SH+bAV102HH1Gk0eD57AEXYTMAI7yqzmYzcpPAjhpyAKfj/G3PrAX5idkx7+zeK5sMYsZr8w2eC/wMzm8gtRD2X7C/PIMnyHbsx/AX7S4776ZDMDbYm7cdTdji6FLk1oTwSzot1Pz0TMdILbv2FqbLgXoh/T3Q9YbWzwQumJiDOXu9EVzrtnt7Jv0y3cwYn7cuqutp7Gl24E27t2gBvnV9/3+Sb/bAL0WeVW/FQa1icjQSv9dJY9ccTJRb+pZJs2Aq9HwXt3XTQ4EHh+cRGh1pLckjC3nZsIXhq9T0cS7e+GLmGuDWOrxFGNCLX88NeAtdvU4U9Ylv9Awt2m4BlzocnLcRlDluzM/otHQZ612E4VkwIbDusRzBjoi98JRqN6aqzmZClMKoW/TZhKSb+VCevSCqraKlwMtlXF5YgLP7IA03RDjBpce4sqvtBVqxTU26E5SHhYENXBL1c/h7ViQmOHpf0DSMS6pBLU21Ta0f8VMCVbFg+zZYwTjx7GnBMVkTBscOXb3jOwZkkkINtebgXwUldYxWT6bdkHGKPtY6gsk4wLkqkM31+yxslD4f4wWa+vocer1LOw5zNF9ihLVDdL9dOSu4T2cVMWOnr8mkGHgwDfALhgBw60a1cuhVkNMgl74NfwS6H4egkR1VwwklKZKjFDbCOvlnjiDlQInRSvycrj0A5tTIpRlhnXvZRWZSleT8+DzVnpsk4hvijl2qHwhGnC2fbRVdkl4V6w83BepqLUzmsaUcKRwj2fNNw3U3vBMgpKevFIOi3pxzC9Zf0SdqSLivDMF7ly36QHKOWRbCNrBCkStkWCxQXurxc/dnTBW/OUTBCqTU2lxJdLiMBIgXnBIog9rIsBzQ2SZ0Snm4vHpDieiTfKewTBheo3HTfoKA30txZ3EZ6UoktEHoyU9z7Ew4OnEKgzGnVXOMlyXvp9QBRsTbQZEvMxcpBjqrzDuJrzkvyzxwt1rrUBEhzvdcpy7etS29SKs7HwrVxAdNtAJeqbVXF4EF0rkVt/5sdnbMadd5daRynC75CthQti9kRHsOtxL0ZdVlcmPoqC+wLgOvVQE15LeG/FxNg4Fr6V60JLqn2q+KLeQrCzLtV5XVrR+A2tJrTXX6+lObAsg7JCHBZBmSbSY0nryqqMgZ0epLcAHH6BCIbHUJHdPWxpbsdE/LYGHGj+Da2in2CDAo9YEuH0+axeM67wDe8pYgLp2ESj6KzH3so7f1sY3FzfKmiBGPmYh+3Vt1v/QwIUjfXv0H58wxMdCcfxje/yckqx0y3og8faGRieBRk2lDJI8ix3e7IYbitWzcvYNL3WSf8TbaP2yowToj12ovNzZEMKJnZMeMsc6EH1Um3t5WeczREkSU0V+zYunaRktgTguJ2L8CGVHjdNxbmcqlaNebK4EoFJbj10WiwK66vPGYZ86J76VaLXAECVCB7pqyfUjCYNXcbGvb584wd/n1aekUEUtVYRlfSPvptQME6NF6F4OaV9vO3TVoKhZyxZFmjzDup+aAYFvSAEIU47EJGOhZjqL3aNvsvpcMHeFJvhiZGoB1Zch94VTnIEZnkH01ZlNq9AJBONAmYlbaR6NYtJlyQVQUXVjd8Wh2pVahgrmpXATTMxDIVoqMTcDJqb0PnigezmmTrnbFWnGSmRU6UNbUbkdDmhgcxiYdW90TgxeVWOWEZSfeiwMutNPYzRIWoY3r3Fx3YXhxmhxs0fKKAi2yb+JjpmPMgNQokqvGFIfUtVmWCRVgaXQ5SbosBawkAWFWdIyMIsZmPA2nqTMikF6GT6ZtQyKCf7FbtQVVYMtVBAtI5bQVuMRDKqy2b1kB6HIwyp6PdaCLzRLGOk3p4SWUysHmkKuGsaLq27bZMLV0890G6XeqEQF20Wq2ZYJYS5AW+LfR/pWn5MOTbIUyOldel1zKFR8Zu8UB158is+Sf0MP7kBBV0NIwPl4O51jyenOaiZW1dBbOrtYNVhOIcxtwKUZ1tZU2hCg3uqifqoGiTGndqxSd1UEvb5/K6z7AXqUpeXFOOfRwUU2XlYiBlRTMBepNwepliv4LmWg7uugR3KFHtWHNu6l8iQ3lCMPVTM08o3jC3XQd0tpMKrB7EXzLZ3Hiqp0o7axN33zMzi1j8pq38U0ceAKaXrVRVXOkI+lwZWJ8eq1YENwuf4Aw8XzgZIHswjdKPbFZaNL7RxYgCBuWrC/SLUWvHh+FLeBKElGLA3/23fDU3dml/8faLCZcMTsmhO3pUxAVjtoG6JoujUROTqVaXE20Zq+YN8phz2Bw+6b9HLCujaekvFqg5dc/2DmAMONBkTZZjXaGoXk9nuKrEfl+p61LJ1/pHjExdaNe0yHaoJLgvlVA/sVm1/q8dzKhKcWsSuGoCgGrr1aLg7frto3vUX8tEMDfdPUmZIWEd5mt/4W+n2uO7mYzWr2vpeKJmUc4o3IxwSB94rbMoNUNF5fIiYmF5QVFpTJUQOVuyS6HFa1YcZ4V4RmLpp2jHa2PoQEuzbJ8ljr50bylh6jh0a7vsaic6xbFBreZuU9aKvem5pW/DysOUM2/nq83z1IDFcoWWQjWzlp3DWTDP4t5ECDa7G6+UdgxzxMFctO5g2GbXvejLjcMpCguoTps082mhyJFsg1gQnm173J7AEyFqCw7eveeTmUyKH9Q+SpZMsnbQyklZGUiRLkSydjKWTsfQykV4m1D0K/mDwju2r/0F7TzADAzFCM+V1Y4vFdq2TFwtEJ8FRbkqG8E97vKRTucCqc04m0TeBp/E/ego8nCwEQ+5st+BZ6EYHDe9FtcArO/PrP5Nc0ukkmok+Hx+inzMTH+m44940PR9tN5z8pj5dh/bbnJhBzbMdBf0M8CCjKK7C2Ft6cqORIjtHEHiL4rKGsCOOXvhnSzr1NQXWawSp+k0QvgmYkUhMMo75SRSluw+XWWEvevPZ9FEflg4OKzMi7IPNgPBRmKsKG8iFHmGD2hKMgkAol3BR9xQhQd4UC4VYhXekE2+/84oEKG74gMpfllbV0Mn+jkpayxp1zVvjUvP6fcP3vchaTg+zZUQtv7HkKJAJaN4IxqrIU+WCGBegf+a79xvxKn2QFLqobkvdo4ftQnrJSfb0IVGNWr5Rg1Arzv02dU1k0PyN0sDuSf7eG7nVjf8PZhn9V64aOg3o/OUSMcAJEuAS+gMMmsB92C6kF5nGrychi1psrXOdhLAU5ip4GfEeHKgo0kDQrq9GydBiIdALWu8yv1M3B7lcz3KHnHQogUAoKb5g429Ek7RKJmub059O+28zBkAUnvG0YvzG2Pp9onBKcf3k8ykNFBx8S7DpiZUQSvMQqk/LQ8a1UxmUUAtDUZCacQccUP09oMMc/KC7YweUjMkE5Zwoze4SV7gPhdnrsPnb22mfJgqOn/HDY8WZ3qi6HYA0bUsxy3kNRZsb2oq5xqB7tXyxnm6pkg1mHzbAzVeVuec8cIWlN1ADsP1rc1K/CatOVgdh1kJ2J7SYVhLT6QbgDnLT0Hsa2HmgbX6DC8wK6nTy6/aGB+31+HDz03l5LhRQUNIJyPQSfdSIllpJPcEXiM11e+p41q0QkeX6w4Ys+tz5D6Q+P/q7jBFtreFgAkiznTW9WPuWGdrKscIjxB6JZGTzecd4g3MFN2iuHN899R8wlgk2ADpkaWPb9+KMITzRvztDUdlPEExcWDE3TcAF1wB3a6fb30bp1YVq5lEsYoka2GFU/dBnD9J8mpGqMrcSI7wA7LxKoPNOp/3+xvU1zmifsmgJi2SGW4luZle/gh8dNLVIoYktoLBpQtDHU5bLi6UpCS6ky5fIy5g6GhzvKYyTYX+ZVE5MCQPo5FJ9J1Bk0hIzSi+uFwqci1uJVo+q0+m3UX+ZimVjkgQdaq4vpmaiRUqCpTgpakacgJEihK05AgwJ4J3yVMeyPy5uCdfP5xQPLWDZW/8iylSSNaOXO4Ojc2eOX0hTeq1NRrDrlQoAO/IFfR66VN5idHJeW8+uoO6uS2DcylTz7gMvLEvOEkseAJICauTDmtp9/kTzfSVF+n/eUvhTMbLfumbKNDI1txKX2XEPCZOa3sb8fmtduQzEjw7DzOLCBU8EpUW835rgXl3arQYV/WqJlcQprTPlYmFAZn5w5ggeMxfwDYxluu33J+UP6hbtw20Quqxt+vhusSoyncnF8msI97byUeam0OG9G9ceWsLMnugxXF30ePG762/TO7cDsZ7Iib7ZWeWWNg/6O/5dMFURuyXpPhgiMOIWwToy+jgE+muREKBdOpz3qYn/gsFCLbbXghvn8XxS0uM93tSPy/QVG5OpxQLCqtToCIaVrT5V3Dq2/w42zsH3Yto17J0ug59t//NqnuKFuzZE1N05kNeA3qU2YNAXQb00ow6M3XD3iqlDWqxvOmUz4q+pRZq78GOS0Bh4L6b9azHtHZS6uMhJ7rnYe1V4MrrHuvNjKpKJ4WXTfSa/WzRNu2r6fRM86ddgFm+TPVqZ7lNh0M7ohj5pcZQOH7XwDiTQdxCuQbdCNwWlk4QiaENFS9VhksVjn1kLntrGkFmtfpPK4HRcnVzfIDzQ2NAG8RaZGa0PuPGEC17UGNOMGtUZd5g518QzcQQDd7xD7xN6nvDP4I/S53waG8tqcBCvlfUBNB62q/a8vdtV1NVvlgUC0Mmd7zYymIqKVjRnh+uLn4Tj0eITwoADu6b2gvDsrlg8+aKJF/zj/sec4dWlj+y9vCrG6knHD5Kf8dJFMqScSh3dh0xeSVVeMRTzgm2E8m6UStBJxUFrTT6wv2sDNS/ztCv48yb8MBqj/Jbex+ek/txZOtM7QMWdtXIOqJ6a2pOvC4yxJeXHBSuQnV4GWZ5fN4GKF9ur2Uxi0l+4d6SLjZ/vbbokqzA2Jin8u4xGK68Y/37sHphX2qKF0jQaWs8/2ticnz25aBwsUKch2NWe80r4+bIWeqV2xCtdoD59Vcda5Ke1I3Ihxn7gc9L48+a9IM7QF2ZyK1A155FTjfQNDrxDGcotOjve8DX23CN7RmfFLW9rDtMRNZKMASNH9D7hyCd84qdRZ9qvflZtTaZm7qaTdGg85E26210nraQZm2aR+o7FF8Z+hJuxrzruRZ4QBsyZ9kJFj7DmiQshvq7t/NTdluGNU8c/5Mnocm+t95JajAPtsew22MXDa1W6o1gB/dkZzxXzzSXeGAjBSNdk2pexLa2qLzjVYQfO1+eKyEITztNPJY0EiaPppFSBjHq2Pm5VJYhutcEoEYaKPD2nyEpwXEBrMRjm14q3KxrYzzvQywsodz9xlqxrek+Z1j4jIXew42wUiVju+3Pw/STy9VgFAvUJmEVvN74sAVNtnW9NB+mP/uilF6hPwCx66aWXXsBe9EIw9AJm0UsvvfRyBOTKlmXTLO7TC3hWBXhWBXhOBLgNueQo1kxubRrn7/OlFV/ay43oVqmS8NMibZbDIP4BgYdsYEAhxWnTX/Hf+00YB+xofh3MePg4wLF9qy8auHCWIDbDDzOuOmYczJ89C1PdC56ugpt22H/ryVsyih36Vqs4vhNpHv/Ayhh1m/CclIl2fQtp+gd67Jqut3jHd2h9wDOfMAzD8KKxoXLExAnFCxor7v0ekS5cbbuewk9CLTGjztUTNB52rOP917u9M0d045lDY0dUjg1OsWEbN7dTynTkIJwQNFdzzyJIMIZu4pp5Cq+/pGL8+L6R0eiUBn3GIKnuusPN9KRBcgNMpEBjYmuO7wvMmBcomvu6mHHngoZGGjLLg+2r+fbMk3nQOM5pbx5GYNE4UdnZ8XKPELm53ycMuXjI/1ika9J2QiiSBRnAYfJ6bV+XEc3khkdFa1gyVsIEuabSBZF72LNi1z4xl/iCgqFHQhTLTBKnYT5HRixtuD1vYxXQTmc2jPoS3NKUBxtPoGd8Z2zCTnbMFkMNLWJzaO2AQczuUFyaEDmfUm8Rb7lOFNmemLRMWhYP7Rkg4/NQUGtkQWuoymzNjMoeRgyxOkM4LQ7tXJlPzgtlBZTUyXFRHNt5MSU/F6d2/pqB34qLdu7MzAfUoR3MYapoBGT2pALX84RpFG4uxNjUiTY41zTWYf19jgQy3OEtR8WBsy/hLFWoi6m++qLdBCFGIEtgupEX4rGLUOnL3KgcuGpnDumU1vnQgPgC5FVvUVhqtM+oxIEHLHbosjS95myaVP6ssWSr6jzzsu5hBA4hp3mTNHXEiuMBc1Jc7EmUW0pcprxlqbIdgJMcpqc9pWGqHOQjHwTlOe0yhw4ISYH2Dft3RnL7Yft0mGKGczBg9CqXCwFfxmN92df9DcZK7qblD5LaAHGT551AsCO5ikBmKZ2FlOtqKHLY0wkXVX0F41vZbRmUFo5jsmVT4w6wB32DC4HSJSlEi4oJAHaQhxSHdq7MJxeFsgJK6uT4uTi282JKfitO7fw1Ax+Ki3buzIy9yVBBKrpy+Cib4hoZSStvjfSzAEthK/J862Kx7VPV7lM9qSfQWkv+GR13Jn7OULWNVhxL5HITQr0vhNngSfDCUgOGICsRxAJqQ1AHeouBbUX10AszZ0ze936zR3Sj2fA8TYszKMEtqSSFxQnSQYAHgT9XaTx1V8wIiRYrPacEs1plexFQ/Y+7D8wKsxEkUaej6Pj+c7L6VDp9kz6/4BVkCwvyD9Mtwx0cd88Wd4ItWytrEX49SZrY94/AmbdE0sJLbNbonBqVN+qNtczq7lPeHbcLGjHzADkDuhGjxHd0XVKA6NvLUA1QG3lOe94V5mAqY4ybM2Mv0lpVQFmCrcapuL6Kp08BnUxES1PM84JqCCJs1RSishk/ksF0qgtzuhQH4N/4W7sJlu33rc2Rjae0cRpld3FT978zgkXwhRODXr8s1kpok+bA0Cpng5KgqrNUYlT+aCXBRQay2y+3iiCnmNLfPLX8ANlGROhbzkBMZqp+L92oZQzi+dX1IZY0+9RVRdJ4yjJFuEgPsmqhKevRDL8QUqANDznxSV0qfA8BCAQhA/iQYxSHcSha7WTyqqEX8EDBDgTVyWeL2icSbtwgx7KQNjZynxNpyOiY80azL3hpB0UQs03uv0GcSmu9KvJisg64UFH0jJR+zgBHzqsBhVnb1RTOK7sZXvNWzl01KeoTFgJVrIWuG8ECESRvhsB8K9KSjQbzg5LLdPXDbdyEeWJTnaqTjDnpSXVg1ddNHZSAcz/M0MrVUnyvSayu2LxpEtr7wjYD0Q5bvUOBjS331HQP0BerRwVgtsFcGS0t7nmmAHwNcy/YCZ4COqCex1lJihg+sZeVoUcXGhHvU61FnYGPW3dNXTbZdMCv6sQ4aUaRD/cDEZCBeYzofB6NmFwKVSz0wb5T6FDoomA3h1H9ZYpJg9EuMKFMsX2X+I8dKT90PgSmFZGoGxG+g6aKymx9fCGoLKaRAzH9zKBerOGC1KOsp1Nf6ndhxuPlpVxYrc+2wBncdZXmbiQmPQWce4FMiqAJLfxsrR1bqsBlx+2CLLF0/LBNwX4odmsFzd6c6eAopL4nTHFBwdAtS19uwxK+5hMHxeDXkVQXRnmQ8Cil6UjAK9xcGUkovo5HnUrVMwbzvjdZEBjXlIlSO1fZysuAV4scwO2DQGQsX9GDOwPbXnqxJtEQq0q2GTICotXRTCuewo3JMuKwaFDJcSG92sSHHG9HDviApDotu6Ru3zlTyZlEyFn7ZKW1tc3Cy89ob5BIFdafLAGxaNF9RCxYavJFd0Ewi8hpgcCE9oWpC2VitnD0YeUt2celrNhZI3TevPFgA2PmMlGJBREWQYqRe1xkHnXweyhxEUjs7R4KXIikgbG8HEoXpbHi0mVHDuwhUSJLQy5MhsA+TaDV/QVaXHLUwntilCQO1vRb+XBy9dmhJWq/gUbigL0AhG8Pb95+bXBLYgqypi3Cg1FnxEKTNl2NgBb8n/61SyYH7EQYnM7mNhbT/WSqMUWYmgErox2GvR60+GpWV69zneWOVXsUSApnr0qN3VIrin8qT97LSY9OK0WBBxSwuGU0//BTqufjHGsAOwJ8IsqrdhCjj4djdctlpCCU8Twn2u9nWuBwSb8xxdYFRm5Ll6unodOt2BorTUIqc1yoOd51vxMZ/WeeBqm9mtfiOf94qOrd+xH6FgeikZNOtSFXsVDl5xJ+He7angXNf7v+13RL8fPI9XJUvf/JZ6/Jku6TXve8J5flam+R/x6u6nIraBLdjDJjO7PMSlwFCMyIrxcyI80KBPgknv+MiJATqHLIggzPfby4SMqas8hExTo/xUD55XY/gWxARE9TnJEkNPVeK7O0xHWCBMdPPwDKLv/ti8YBpxst/v2+jNjetfa4+u/f0/tNfz+oOPz+Fj63Mv9zdHX6v9qTs3jPFXnGIDLnNFM2ZJo/t9ytsKVfjK5GxAsORVIU27yzz2Dj9duShl+koNneQhnp0X6WruzCsfYemdWkiS4m3MPCWInTLiAeclBiEQOFfPp0O8KFO+9GuAZf3hpKgE1yWqhgtMH0YyUFy4BTE5ivP2RK7GdNMQBKSRNaVNkf0YP3BoW5aJFGz8FsC/MYbHBYQD0ae4GhaNYPSLcGExd1oZH80raauqOjuLAubp/kMCv8CYCCl3eiMFRYDblamPqol0C57ybDiAzQ3/aAm7+hMNFs3eIYqYjN2HlORWu0PvJZYf1eoID98XShe6AkPADn4NRXw3n6qPR5qsimqcdhuFhNl2tTwiRcvtkqiBgFl6obDFJCGTwzV2PziATab3rKx9a/JzY1PVL9G0qa9rulYwALqz3YXVlA3gozcYWP9YLSkTRMiMZDx0dt8LJhYsF5pMBBNhILJ9vBXgKVoyheRYKXWOrd9dQG+P7pQ2bRxB4ephvE54jtcw4VKyenaq1AsWeJOqaokhZnkMw49AJb/yKqJn65w4KQ7bmaBEmimDwgiJXBLtUiQeSlgo6u9UmfCXaJPBte1nupEE7FdaAYpflmgaED/fEbRCTPSNy7siqchC9mDHGakKqVp6vhkqG9V/Uq9ayTBe2qaMzM9054EzQA6qszpNd93eGN2zKit7RKtLkkEF5NmXy403DTQju//AVATcxoO6UdDheQtA6zmzDXHlpjs9G7Y0JaNzuyQkBmjKFsi+JS9049EpfEPo4pNNNTqfAPK1Cky+nsGqv2NxP7UWCLuAjgg90BvQA7RaJWRXuCx5ocJReCtIhurSZniQHsI1zWalB6FSRIYB+QcPLWxVIEcJ9F8S0Hn212wVrw+E3KFslIhN0v2cCmGqN2vpJQTh1fFn9+hcnCcG3ThMNFIv/WtHLcf+qhJ7Wm/3esWZKknQK0WTlLD+yQtppplzYOWF1ubvYlsiJdWSfnx2BrDX+vwxATLmJrn5QL0aCX/zUiqwhlIyAaH2v6YXCclxnQhhgv4gSOYQabcAbdoaygU+UwHlJYmDxYcoiFySMQptjS7/hcKKhEZGwNQHguOAfUlgvudSZS2K3LFjlOf4ISoBC8jLHzxYu6ZnTJ8nzbBDxB8eCB3HJnfipl0cO0vF/fbADGjJqQmsr/KbgZvISvb+aRVqe1BKI/ZuW+VZ9RR15yYp+MlfbuNm/LFjufRM0CCelnRKaXS16YYEgT3QncTVhiIiRzKSiKKuWhjG+TtRhzScSOwSE2OyX/xQd6qauSPgYH9Of0eYedO5Opdwcz7nwcmQP0yhKOBaUAHn7F5BPxN+KJxRz22gJjGqA0qD9u0ZmhnwgPE/OWRykavVTJSo81MQDV0hIdWjQvyPAe4ayo9f+R+slKwTMW5+3pHF2Coj1FibLJaR/8v3OKaB4nC3RTBZLXUE8HkaQ2Rp3d2ALhkpAYYLyb98NrI3OifAbFFyJkh0QEVLZz2O6K2OoQ2e3Tgm2SNnyy8Rj9f2islVIj7yKK3RB/uvwfkiTdxPRd7PowEw34Z93E555YFvY1GNeLcVxy680JYcoQ5pBKMjJb9xocqXx+9onJTiOZH6zqz/VYXMehBculYeIZa3u0mIM4vv2Wl/q+77BzvfQIT8sAmkCfwgCy61hlADCM1XI2KRHbOiHbotu+K2mNDUNAbhlmZkGexZxp/N/jKDKvk1I7kduoMFmMg9eSuUQZbUE/Q8tMmuGKNMzQ+I8YnahNFf8Me7+kJNz12GFkTQDnA5mdJaHecTJL4TShl7OhwaIcmjLa+TbZeZO9vvQEFUwzQipNVtLAmnD0PWv0myXoXekwN4QHHi/qRKsVgVaNv+/gu7GzX2uuleYn/KAmckqejSpW/nGI4APeKgWLuQak73qbSNF2LMhhthHrRj10s74YTzrD03TrmtHgTvWNG925HWriAu95nHHXzumVV8sQW/drI/rp9ysFNYah2rFvK0lUAox4cT3r8mVHcO5szJT9B4j87jQ3Lz+MJ5ztFCdMkr63wj6AtFbhPbcPynunCeVWhwXaJUb4wArjte8jhLSXTDUPrZ5ygmA4qXIb4H5nA1wiKVAUbiosm1/FGDYoZXt+sHEr5asUbk4vMUFMr6f0BJjC0lJSocEA6QtH9hsAU8IxPNnOXWGn30XHTSGCa3cwZrt3ylk7YWsVMjzvXTnG7MqryEAz9R4aTAEBwxVuD2p67IhhyCKSdoZ3BQ8bPaEnY5ERNv0eOCN4M/Ux/ndEP4ANuoe5sgWO5Ol6ZPvLzjbsUI0IeN9ix9OarwJXoUMqDzfKw3FKbxfwd4pF4Hyg8DNkq0aTGcDzT6yeSjVgYEhjA8Bt2Ja1DxdtA9Dyo6xTS+qwLggcGTfAXSYOhWoM/sdB9ceVcb0yR5Lfnkk7J0R4wg7ojhk30v0mVm/Z8OuqVEUyq3AGBG6a1EzMzcZAs+kqNM4DCgyxEv3CFNIRmr9ufyVwdPYSU5uR5CkoJDE/bBvyXgORRe6tYCVsWBUmeBlsngceK04BRpBoWazHIa2ewPwoNjfoW90HGaqARVhGJdiTPFyqLIGeAplZlbXyPROWh5g0LWEMAxtwKewRNpGLYAVMTkjFiOk4d+RO3azjsMyFxnfhH8CnMPMBZ7kfHEJYhQGom927fr3EtslAB0e5rtIEYS33Es8GPHt38sQElWGOg2gDTiBq58YLgAbZa3D3NiZzXwix5t46H0cqoqMvQrHm6ECMjUH6GBCLnKRzjwfx0X/62nhU9fzflnRzB7cOGEu0qMEYaBQXGeVAECyREHZAcbI5JUko1m6QYR0mvuU573TgqyMPpg6BWo1g75eRneNOe/eNJzSU5wgmt9pKZCZFy5IQVZsVO1IapTS7jOmmOXOvyw0tuWKp2mJmI9khHOsr3Z+u5lTzXaR7RdxqFlbYgfbKlPa6W4lPrM5lAH1EkX3e8jkQl+/EILVg/nvYWYddswlzj6JSqaNpp0dNo3YkoFTHVYh7dye4FIx0D5dxcnAntYKfhvKSzy0p6C7ZOeB7r4F4Ku4LgKqHkBJQPAGF5ET3Hb/PAbJBR0RkoGI29thvNGRHnJqNc8hZRp2EoKtE302X59myfA/L51SBok5ZQOTBngwtnHZjcPsx8tdJYdbsgHG6fTLaE3/gzj7/szld1boZTCDr059Xt8CALKhq1NJOD6NR3ksQU34DcIDEwu2kc38hbBjH0Nj1wVjRxsh1amaitcxtwlvBworhtTQiIdNDG/QuE77bsDmMwkkkML1GViER4Rcmev2mIoYj9wiIBqFyym9kuWRZgG6B0yLR67pFkdNE1LFO7IP3ruJNQZOZTObkXEXZnxT7m0mstBmXvY8btHa4si+rftZONUN5LQ4OISU69YFLE8yA+RU1cF3dsag/LwntQJcEgxzMXHacbau6j0w+dxd/9E4BzKJaVKWTM1wqKoXgKZoLrJS2show1npI/H/YhNYzNmaC4LnDDVnwZkxsWSenfvCHQOPj9Re571yRsWTPrhtU8ypG18jz1gLjZoWdst72Tkr9pirjbyt+jIqC6Uz9AV59SSBzxT+9EKlG/eRzHQmKF1GMIJSXoD1Ustpzv7i85kn3mJTyIih1ZDo2E/XZsOqqoFzJlkjQDQOnt1lINhpqBkaLpO4k2Ny/SXkqZvwJkXzL1kxk7tJF5zPSC9+hX2j8FSk57LTJ7ZRsZc2V6g7MaEBn7BzBOWDVDkDeNhjU3aiLuyCBmNMVxmH9dVWKtKqZb2mNTU7f2hIIP1PMx+mwCMOVcJfl8mt7NS3FukK68L1/eFcIFneGfShkMWy86KMOsdRZo/tQSChnBTbV+O5Xhu1HbgbT2gpCrCJNJuOwcN8WniZPQxBdf++c/biuEgv1yTMtQNaEYhJ762XVMlezR7O3+r2IwlnJhOMGSoyUuyj0Geu7Qo3FYIQPg+ENMzeDvo2o1QNA/8xLGctSrPZO1JFl0FAkvlaWeyQsR1NubSU4FrtKAndrfJN5TvDiLpjk4zoSTBUQMZTyiTotgYDm2P9MGrzaBjUAmPOhmcTwNyF2WtDkrItBoBhKVfFeGF7htmoRDNQ0rktFBWy4qHblWXmvCuG7sUaOr5j3xQckY40AUjVFFNpRHhQqmBJBwlyVrVNTprQN3tYxTyPGiYfJRvVYSOfkAidNvHHj/SJE2VqxEUHwF/Sde/pE9PkB53+I8XRSXiFmvhFfJk6cu4aJThDclACA5ygdi9SMr/K0+ue7RruovGA9F9hbhIIkbx31Ri6DNTDCSQlw5nfoFW5BdISAnGtk1AbGfxU2WqB9sk1oqv8jHcms1EeX+E4xTXLYoDwncCdLqR+rknN8YMUB4u6usHifyJoZ0NCI+0mRaEs4WNze9gWBzU4sJDBuxSxfEwGIHxOVd8pAQ3ZJpkqPai0ECDjGiruTm0bQBr0uV/aFJUnBkyDuLX4uFoepBI/j65QivbW0qNa0wyUHoC0B7hY2mLBX7hN8mXgCwxrId+lzsNe2zn1iYfKFBdUbF+pnezx1A1CCM4JXG5GNKarzqGPw9G34bSOnYbM+3xOwYj8BgR74QEYGjAEUVGbLCJ47geJveyj+nj0kmqtT8pAsbZzjlapCzPFC3PQJEGXJBRnjQOEpNwyAObhZiyYPuz4NY2/B1QDPR3J/M46G+KOKYbC+H7nzxUkWvwtZymasHgBhbMmRHYx1PA1QTx7UTWXWCKMYd3k3ttZvRBtmqOQ7YvyR+XyPq/8yA7+HQneva/aNBICvTHwxuUcutguxFu4WAfyAHCiogb6e9QLQQcvba1MaMd6Yni+SVT8vaecWCHY5FlLK/QUwXf7WDDJCLzGsr0HYBxo8plSI8M4PL/01olkvGMD0MVBYgM47gn/WI3of0kPm3tpXX9QdjtU0hNj+vi2/y81vNNo4OtPGxWTusBNVeaOg4jD5Djn/53/1SYc7TTeyrDo/pNeAbxSflqmo+MDnoE0iFanEhBhtfgEoUtG9p/GWK3IP7T4Mxo7VUdzp8VUcSWBb8bYCZZhXgViduB7jOxfIb/y7F6eBrBC6E4mW5oKfK41oLwIY14UUvlCtR/FedPUp1I8cFdVHFeowhzpXiekrAnvfqqnNG/7ll2JQgZsONE03bxr8U+u5xz/1dQmExRker060frT8Nv6MzjkwWVPet8Zq8hEfLaudPxssDmEJFO9OUYBfaCikDzj1pH7WQF+r56ntzP08lKSXrIetXTV+2zF4rM3WaNO1fjtoXQnHOrWbKQ8tVMcP/D1yBVC5lQn8Gf0xJvJk5MfONhidyxEg0TsrawtRzJ3i4euvjI22BJF8xlLQXdL/Ne0uH0xQn9vEIepYl92WXC0Wbb+Tp9Uo0ZXvy8n+Jsa6+i8yKelWTimma8h0dNObq8tjdgrhpoZKVLCzJybHwMgwvrfu0UHkmL2riZosFAg4fh0GoAL8dI8H5NHb+GP+s+FP3N5Xq28/ev9Qf+KT+y3N00jZXlC17MEk0bdeD3KQAEIjdoHtS7PFaZYCpvVgpOQWVOGEGpbC7srAjGktIMUNOQe8VhzJSHbBg0E4i3bI0bzOpFQpBaqHDXSBc9oTwZo+Y5dtGgoiNq1+rxnlRVW+T2riAwelrRi8B4/rUcp3Ez8MCSKfFB6TW20yvJ6tXjJ0LCledsT9WsIid7vAZxs0hy0YMmAc3H8vb6uMffMCfPQvLthdrRTnN1iZGcPhdxJnlpt9kwWA1U+6RchD4ygxGg7eKCDgmmteLbYAGZ3l5fP5D7Ym2rWkiONP6ePyxI450+IF7GDdePLYRXhV8omvnrKNgR+8ABJlQn7hKWKY7p0F7VLnkoXao+iXZEaWHaZm9nDYoSej4Kby4VDYI0vr1E6O3i3BzLO81b5T9KskUIg9/DE770BqFuccDJQCvF93yjtyhCA/0TcvQCdUwPRHeEBOFpSW57jCfminreRQfnAebthmxCPo8gGy9FoTu2J7jqwgYc0IIWggnEsDDdruEmWdz0FctECPtbUj0qsP2lgdQpNUFHBiFnfi7CmUqmlgFSybjtp7rFtiOEcsSZORCCaRmAsunB8VFZnIw/uTjI7KuUaEQ8O6c27n43vaH3qshhq/JJZEy9vxkEukbk4YdB1pSZNMaCAG98U847qyKFG3cGlFjWhnb5pBhBp8crOSpBNVqN3rufCcCoTCQBA/ecT9PeuxoPeeRtcc0OXZPTeY4YIePBCM+QCxUEN6qoG977y3P2fpR9hPjjPZ+bWZizaDTc7B/h2g8/LaKdpg1Eq3pG74nITMnb/Ljgdqv9fGfpKTz5II44g9SuL3LYyg0D/+IMhpjCSO83KL/0YK0owdojwkiCQXuBd9MtF+vyBDjT83s/n2ywk74FStjaUEu/8JmDEn8eTox4QE9Tuz8wh1m+G/CzhTHTjydy25OWHxHWc/OQaHUHwlGfRRcz8l/gPj05gQcQC/kD2ruwfUq6STC/8eMscXOcnUDuzXe3Jao7UvHQSVTpc8whXwhXp4sxQLLC0ZJWtkkH15aG573kJ5CQm1wuaoIAU2VUTiODcGIdb93jve8J8D29XQ15VyS21u80Gm7Z5li2t3Tkgmp0gHZaTDiCt85UH3X+/hcCTc+N/pw7Udrmu2yyhJSd7GLR+SNLR1h0A/XgvLuiAGZQqsPzvUNkMJNnb2thcUdNGYDnMRpT7iz1gGI72G9QQ7T3emenOuc2CmVR5LTG4eiHFbAl/bPEI2SJAiTBPp4RaNml1F2y8W/tvpn3eJrI5QNCu11bZFxjWE5bpo/uRaGIj1WaQdrNMZWfHAVy49euuwfG6YqUePP/L6J0e34Hxv9+5P9BKRwcqJOxL8QVqZsrImtvQugjLFdZvgdCXDNpJ6H+tpI+1NiCAefiRjPlxNh/jYGfsJ6bLHgtxFuyPG3UncUKTL6Ge4zyP2AFiFNSE4r3ivuNR6i0rZHR5nPGkIA4O9EzlnFzV2fgr6HdOKm1SFefsMx9Q6/MOZ0pN8YHcwKlhVM4ADzSXWIbDW9DbFTtjmolshfAHn1J3Z5XNlpEKPppSp54JOKSpyZHDZO0r6nkPl5d9o4LOPpPIjkxaYlAOg0pxNcXNSlT03w7n+I7a2YZZZHuOKdUJslnVypY592LJXRMUHrdE8kn94QjfBQFe+yuPm0NCGFI1JkqNU5LZii+tLpwnnbC2fcvVLEFieg30m4F7sCVRwsD71ModjfsYVcRGuvC5OjzNSu/UdXryT1XYS2BkDCDQDlFiSUBVADLlCICwhxz9kqR4p8T7UUn9rej2Hay6CFT/MKOOdPwiyNE0eiMjyi0/SLebZ9Vc5/wSt95dfJFhVygoriEpfVbZvMqCZmCrC+k2qyVCTYxRCeVC9DOCKH1QzNisO/CUjJeOurBxYcFzMbibOg06fq40GNcvaNmdUqVQ9S4N3F/ZMWOjUAqvclM9YwgjpR5A0aSJUlUKW5qjJYi5xUM/qrdhOnVlUxgzRY+mggwFGept707ZHXaVx9LT5kqtFsFulrK3ek/RYQpxN7fErT7/cJirOtyOGEDhtSDs3fnFvkn0ZlDsS9qopgcHJ/ngvrRZ+VP5eh84TqzHYCvRBeA5CGrZNC/KjMKwrfJYvUlBu0UHTrA7hg7yZduYRXd9HhTRHN5gtuNjLHpsbkBy714+jeZqmZF6ihkCy63dqdRdfKJVJzu4MjSP/afc+YZQaNv08bkyZ7b2ndG3VS8tHkT27vyHYoaB01QT0eG1okG9Q2G36Tg84vVf4w82FpIg7oy3Lan/tyO+sji51p6iU7UKOWjulqrQn8qM79/lWOylu5WzGru5o9Ky4Q4pkosZ9mK5ZyTcgrP88QFOXg+mv0wn3bjsWpi02o0/u+oD3o7MEauOunMAFGJVy/41T/B93NTvOfPurKbAekwrf1dUMWhH1NOHKRbEKjwe/8EkLHMH3Yy0MzLaLjeBOPueOpbZdeaVdy53XusvTuwrf3XW/0f9zHF/cWdDgECNXbb7bal/GeLA7dXwfKl+mWOVYsvU5UVnmQO+ciUNbhZrbo+EO9JH5fhG8FS+WEHR/PVqj1MNd2zlu2J7+ppLWlrzOl4Mbk+XKWPhWLgh02wjZhBilstr7LzLzlbc1C7q6Bd312vM1Fn5fXFJg5Te+WZLuZl2omH0r/HraBecMUBjVI5yit12QoKWGFhzkex0CCBQ4glqxTtYHP2E0WJjWn89U2d/jdC68ldtIDDhPVRomJ+VBEEsSV1pcfHjTqKbG/HtoNofR8WaJvbadyfduJZBKBdXw9SKujzrGFuwn1RpZxSdMs/ZZbzOICr+86w3E2KnXlxL+ZkgqjH1vqUhB1ZfUKr7zVKu491G7imGyIln0ISHkbi2xSxqzN8trq/+78VxDlcs4NYkBPmQoiNAeGi0OR8/Rf9sJmhJYji9pF+2QxhXALFn4IEGP6YudV27SvOD8hIh3hLHUKfy5pYMSKRuVUFQlH+8bD5lErhNgNmlD/kZeSJ6iwJHnOTNSiZ4nwzW17Zq5n2DEGTMVvsvry0Qc0+zwZdJ4VoGh1VvQfDWjIukkikpeWrMayTDOlZNeIn6C03QTdT5C7dyJ5aOpu2Tm5QSDZ2QVvrtL57RAez4uU19Fm7vubUIY4RrTUzjCEzAiR1VsQHXQZ49RGX+9UVVAQqrJG99e43zwe80Xs0OK7WrHn4dJqKA+oiN//Wg1GPmhQuf447c26Ynp8vZ+Q8+vIogvhPzh2I8qK7Y9uNxSp83DzByGY0Lwf9Oq70kmTm1CTrS+efkrFSGflNZKexahXk3nX2bNnL4fQx7kSK7lp3D5m9umrMMxP0kKIQLiiMmp/FdyrPl3gs386n9ZW4eHnCcKKL8btw16Eas6x3dehWeR1rvyAe7qVAEsjsKctzV47nJXGwCY2f2oBA0b+9ei2CGyBCJUJHMgT6snXOPIGdsIEOY5wfoZgW0C8iq6HpngmunhZAJMLE/YBmrdNdyzNsM3qHJwpOP8GoWFKNDShCYTvWz+KQuM39sbk22ThlUnUoHDN46iiwcRI6qxPKnHCl7DmHRu2YVnaxT89zvFPOjmsMU9fIleIu0q4w2CQWnwx1vz5yeihHfVMjIcYHQnQkn95OCiPtusK/Nn4HtQsgE5jCRCXNEz6MYzxhTp0c/n/QU22aOG7wUZ+USyHJHPZIMdhI6d0Hwn/0pokD000239GAKcnohyBz/wgJ+XU/mYHjdt6X9mvGQG2AUY3qUpVc8cIEBs0FKn9qhbI+eyJE5vGxflonbHGxFe8fio4GM2aaul+g9s6neYl3DPzIG0pkXpCyZWX7KG6CKxvrdIuof8w2C5nT0vreGrC5ibyOuSTz7SUGb/PI1WjqJIFI/qjs6PMtu5e2PcPNcn0nFuAs3jmdY/Q+56QR8Ag8Ih04PzFFAaAjvXyTJ1H4ZVyZLj4fDVYRJItG+alEyeXtpiyjT45p14FhQFCzLF8CvkoMNUG1dK57ylpI+9zDRWmMiuEUzf4EiiN0bSJWHlqnhGHLNvo8FOqnPw7BBaFGsbJo0s257qMQgvxPmZAKLBIzFs9wAVSknoMOwr0LvGRBGR7z3Bj3BJwAfb8zkxNACkccAFQgbo1OZK4J9mJDBdBLnZlN7X9ebfhfTm66UhqY1cqUkKVypSiKXCl2Iei13KCIYzqIwAQOwJQfsFiLyo9KcFJMyq0zHAw2kyFD39BpDDRAFuCfCMv1nAifwX4T0AY4k07sCgEGaIvpZsVgHFpr083gKw9+rr7nv8/qJyfzhWFws/XPbpLkZpZ5op9Y63Qd62KzeHb4YiOp7wqR98IrAeh4d5MMwmymAqlEhE29XceKEBSLqu7+8u/3w60y6fafE/rNoVTQWm4tCPdAE2aMwHMDpWcDiP0OpfKOFJ9/qvUPjI4S0+/D8Ja0IWPiWsc8Uq/GUKYRMRMdUfMwoylHdRou7rwzUqpqjZRIN4V7fXuGcKYxMtUrqxGumYaklm6PTd403RiQv2q4lqQqry5/5CQMvsrzeqaytDa//Y+qB579GVo0sn7/TeGhi48teQuVvAq6wvMmaKxmM0TP+xCPhPQUGpSiPN68sR5gRPbjsd+THfOsLfv6y6FBm4148emIIYw3EMh4WjDUcdEVVEaERkESHBcDAorH+paURdprS5e/5XX4lQfyRyMYpm6Fnnc76aXVG+0/5LR/MP9yFP6tLBjdrBkjqETK73qIRj/0cKzD+3cAxGZPBBHPj9Vyc69l8++J9fw6BzfDFPs3HwXz7wD2uW/s+WqTVTFz7eSwnOuj60MTwm/F8+2n8Uqqkc6w4USbJWUNG2JrlFJn9kMxB8xSM3E6HIVMjL5+8e1v2Q1LE2fUGMFOfZt4e6TE3r//KBcb3qmFpNWOBf7qmLf4WwOkjolbHlCIgwlpr1WLO2NdmxCWici0d7nmCBnDmmlY6sJ53rttY8xu91s5osOK/h+C/Ow+L1ZlTHv8aB9KMiHsEsMvMNjbv+XiHqW+5Wg+Nb0g2avaoTOO2yomXJV7pwSsf9kPfWVb6DwNt3QWca3/gYs8Y5Sdlw3yyywQ27IzZ6ZyBPFDSODN0mRB0LwPhzadR3JZ7FqOvjSPcYLuUklPIWf00C3uZzfctdJTkSM31bu05CeMHuAZvEOZkIN2AAqW/j17QEJaV164uBJX5chqEXre65X7JNUCKDUq/77VOFxexdfqWii4pJnzzBn3++7Kgcs4zUkggzHI6O0jhWqNWGVoH2oxUWKy2K1OuTt6v/DWtLtgSqDKvbn3nEfAj6xwtpqJg7VBCjAPwgSxiQCvhlR9omY92xPL/ux0jNJc+gDGQW64z0Zf+TSIpg2Y831FAEhWsMhblenoiRMBcVROuEDk3F/isNnQCAp8F2j9oygQ9AdspwddIsCtBXw/mD8kGFDS27wpxvvhLOjN44ffGg8wZ8HoKPc1U0iOhZ+NqaNv6pJ/w1jSw6f1fAsb9pHrNSNz0eHpkW7jxKr/UnwY0b1a4wd3lmDybRuI4jj7Iovuqals4bhERHkah061nh9dEje6/R60UaVt/IWMurmdfYq3amdFdIp6R0W9rq9pSn8j/6+jKgoW74e2UWcsEQ9FAOipltqfJmL0m7JJhL1hkQm138olzstJzR1NRJTPXJnhp1aq/AtWxcGYsxcD/xlH7KQMlYYhnmgNiJZRWK4NKo3RFr/tylcodVR8IXEuQ1cdtKTzOPp8q0KnfN9RwgxEE/1FUVbtyOx/dlvReOmxsRPZoQzyLq08lTAkPeNSqLN/j+LAg7+FE1+KjUSEdtrpA6V7hpoAT6zhMlFw3004XWAxSmEV2CcO6j6kCdqBlfWLsAxUTObX27+8XxHhN9Vj/zocvvrIS3lXRTtZdH5vIQmpTM7enIGPtj8jDtUmgO64XuqGAgCR9/0LrESg9sYjDYVoaGrwWDD7rhk0Bd5BB6UukTon+/NXPxETEpinfsIXasmO9CB4soO8qiqpnZUwCmuOl1kCwLs1vTuMhudTo4WbiTgkVNo3pLRNS7fjoKyuVkRFIuNZ8p+Bzqy50NMLBYQqG3BMLb5hXUex3USosl0ggLAVVWSZwsSol4bZ2gy72iQKjKo4BdK6VGPDGxTYJyTzV6CEUdO1QEftEmRJ87Jym6E3VguhqlwcsJF0e/AC+lIJCDdOf7aDjiWF2cOGcOwUSbLKtKu3HINuzX34wD/crZ2teKcWEv2NU28Wh1GPK1WoH7H+r/Zf6U2MxhuKcTuH6WKuTbvOTJWpJrLG6ndD3MMksziwKtLwCRP71JO8Trjn6tCBu5C8SqQ+J+v8zykBOgQTYeO4ooUzZ/9M18zUB9NRy8Hqw7DgufGUHFAF7UcMxsyUOBVadpzRkBcsC7/QGmABy+x73rjmfxGxCfvdIOjw5NWiZ+ToY6hyvDHQWcrUOS0cEhwX8LXzElhCvX3grDHYv2kNCh5OgHc6G93DRMpKc3wNyM0I5YRFSWG/+RUKXIm7xJFJ6exrlfhQgpUtD6kqBnbhr2lwNlfpikWc67qiNT97vGqd4tpzMbLdf27PHWNlIIOpsejzAD/waRrwQDSdHgsFKpyoG3VTq8feZk/UQvT92nKmR5a6njBdzIu4QdepHRluefkjHd+TLCNAOMeiW8w/cNlRyMHVai8j+O/fvUjHE+M0gmTubu4pH/QsDMENCyd7Er4O95fnAz1m7Vmn6zZA/ZRATJW6U5PU6//ywhD0LbSCgvktkWWvSXNPSl1n/0uFnwwrs01sVegunEzfJIwUEsC6rPbF5HRNZecXi5XozgoVQ93c6J7nN7sYUjTxXg0xbM/i7Ix/HA3pBHETvB+k5RLDXTQJhxr69M/np3Wlt3wYzr95mE1PNReplduGH4XLqJZZkOSjHnN+qMX/uORlSHu9l8SkGQJ631SeoJVv/WsAVHu1ZXRzDubOmdbxMrvvJGJugqVLrsSp5aBDt3lUJPCshk0qhHKWKYqvUxQ+khMD8I1MpSohoyx8ClnMoFFvsd6YPknGuH1MM7Z/z2Q4VWD6hch2Q/b1PrqJADJ4boeNuDF+opP6aDSMf49lumQhX9YIzGQ1kexkd5vwFRhLb2251Ez2sg3z8QtchIWlIOJ3eFGVTNw48j/vGH87CXpG4QZiqUz26MvDVsEHstQsu0eENQpCPXBXV5RHb4yvWeK0o9G+yHR6o7osGxTI4PadDnQYWnyAallMCP9XXa6Vbnqul+ZoBUJIrI0zxnNPfgaVkBxJCoT/wdmZtIFePEfDSUoYGHTZ3wwASXxHzncpG86N/fTV8pr2dit2jkciFFG6Kzx+DA6uY8sLpppvrKmDDgz9FRADgLtnnkjYIoYC3O0b2+hRvVTJ80wLQkrqtMyU1jxuKYWPvHqnBvKE137AqfePLEWE8AeHeklXQf+iLu2ZyBxvkvvRwSY9+PVlA3H3sen5TSrKyVl2d1eYlJ9f31lIbi/ADADrL9+2WsVOVxp71TVkfJElwDA2P2VMmnrdBxGK5QM2uL/n0KmH3mR6U265a7oMVkQC4lgOCfsZDaFEzbmaGMIieKelhcMf+ZnO1zXNs0qDZsOwmPz2ZdKfVP1udRaBCm6VniteQ57vSpf28kNb0qpm2CpJ9a0fwPWg2VzbSSO9ijlFOG4mSiEWld66x2TYk6gQGXqtKZZJhZqiwyNO7QqpGqforWGZ/oX0+tm5L79EsiMhp+/hEhtfhwFbvxHl90hTop85U8zdNPDoHhOj9t6qib9bG+FBOs7tS/6pNZl1/Qft7OQx5eCdJJI3RY0o89aYhFv0T4MKRh1Rbukp7VnUYNKuQWKuXyd5B3TrebDL/hyvyn9GiH2bmE2WgyavxFJq03VsOjFjXcHF/ztEt4fJlNKof8oze+BYKUd/JZQn7SX0MNZG06b1n4he+t4h9BIfOY9XdE7dCVoeYYdgV7x5qvdqyMaee1Zno4AcFRGhvTle7C7Ptd9eySGqWWYNeq9aj7HHrnN4iTUIs/N8rNeOV0NC65+POCm2XaFrrzJvSdhEEos9j5aTsSl5UdHRrlNfAHVDpukFjGwPJAJvPUG2a7SbRqi2s1EQ7TOHsoyVOdwVQNodot3mysUroZLFh6nS9udz100+c6oTb+iWBqr8678NZIXK8uX8eE2cw4XwChoYMteJCktq9kjfbYoLyHKMzusjUrjquNdV4ItQCku9ogwJqMTn4E3AgdXtRHrP1lmsShUjWbrf+n7C5sjcbVLWW/2VjviEdyQii/ovOA82oyZUOUeMZn13f25GbD6QzuJXeFnXrYcphq7HQ63A5ucLpc+hYJ6XPFWeyakA9G62vwHDLffFXJnWcFP4KCmTgv8Fr2Th7RoiHpZ5tjmXeCTyjsFGuImcVq/z5iF/C2rs9mlWnLZpBKrNBzU6Mg5KEXo1fNvue4f0zf26q5GzHln1Up4cUv7Z10L4ZwsVGx3jB9VmDpREZbyB5tD+d6obSATFO+wYtGkO4rjpMi0VEFnPZvStUhCVg2BFPX1gjTvmsjms9Ga+HCma4L7eb05rpWD4H0jEVzlYunJtq3v/8n2ZLjjFoEDUWcQAJUWrNziHuHd+X8T+UL55MdSU/g4CSWePim0MVoiM/GCGqHFJulknQBlYHJlGco3Q6FWKOhc0herQRrx9zXYMW1hkejo4SeZoUxPuJRKF3b9AwSTVeN5lu2a7zzIoLRlTnXTRnnbtCKmqZ+r7C0aTVXQtIG9rm10RQKZxlmrSzadjSGN0e4MIjFxwic9QMxUXaEDlu+u9STG0gRtAfea+TA0vpH2Djalia0raMpndvVJO6Z0TE8vgrXwyd22G5K4Rg4HLYWHf478/He5XIi7BjtmgV+ikrZfhJU6bDpsLpio8CbgFvLQeYg6uKglxmSyUwrGUgOAM+ivRxvFyowjTLkcc3q4BbDL0Ah+q4asrDUElQsdPLiW7EAaapgCG5nZl303RRmgi2xqyJ89do3NJDUeYv/qiRJnqI/3jzK1n4WAG6e/rTG25ylk4SjOvkHJapn7FXLtPFGx19yu7Qj0tm6G8n6DA/rGKXDpCcF+9HTO0Mzm3ZEm9pwZZlRHS+IKTOS6TPCJqaWVn7EB31yUpkvlY4qcB3uoVxtlUIr5v4uhobOZL7iV19kIfnaEjr+MPcgNu1zF8+ayirObcaftmbhp6Dfm0dx2Gdznh4FM0IuRQIDVgEvIlqtw4MgobzrICJ6ADIm/dTIvvBFcDPWavHWplaZjqGPNQe2wB5L7ODXOfTgRk7MBWMI5PVWQRAg65fu2vqgak6inOTofMBusgbnvbcn01oheQjmCYyJ3VA+5TSCJyZdVE/mEFkaJ2JwdwzGecZpkmNzqvOptDYk+s+XEt0V0A0Kf+FTJTPMnTm2omCfMmuXKxmLPMV/twt9S+6gI2Oo0n+TtaJxAZsX5xTg5ATdn7W4RY2Sm5UoHu/oC2MfNWqVCsWRPc8PD1I+tMEN1jYXxg52A4hghTLhN8Yh/yhJ+hEPggvx9KjYbsWGVHpiGscNR+Jg9nOkHS3HmaNUROb4swtMI2F3qHvN2V0xa8MymT/CaY5i5rY8vK2x1EuGlFd5cD1SrsNHR8Mv+ilqBZc9B6MQ7X9V8ZYm/iCDDkMbCiiGsIHbwc1ogKThobH+EYuMp2dslk5mIt99OBUaZFtx9uNr2XrbTqtePQuFZMYyJSvlDh2UsvyBo2SWS7mYT+3JY3GJD6eWMh393C9j1MVZFoTdbOVJ6Gv3+P7IGT6+0KWl0F851k0hfU2cWhmnUeRSRIVk26HWy82sen8qxqD6HdE96jQYgJQDNzRS91e5gFuwBlWXx3uIqzGyq24q38RUoysqPZPWnsKBuZv9NJkuWuv3X0HaL/pu7qsGbWsfgIA03Kq3Jc2p1HRCCfZ+RU0Lu8l07WlSh0GH3eLICmb94PF3SN5hfLKGtdBbpa6PNtQWGYPgKZ1xMnV4+2m08Ett+Wca1CBq+5M2uM38Asu/MjFNdmP0icqeBz98tgYGWbzdpEQk0zaGJwkYiuIykv2y1OMC7yndieAXdrtdOloS6/uUacGlnDTMrq5Oxs1kEknyprcJBKSa1tK2ZXc0HgZ0tKZ+x936M+6bbiIUO4rlFDgVMiVNI4tUOAqM2LQy6oD58b4PQNufxbHWeLs31n8QKT0sTpQxexiB+3f0bPpzmqiN6eW7C61KFExu+nmlGHXt9Yh7nH9dyoZt7diuYE0EmW1tK+yOXFHnRrGVyjEnpqbNsQmisz1jR50K+WdReiNuBSCKhwYLvJVDFzTGO11AgJz1K3l4s+eqHXei4FzkEyRTOvUNTDbCwyuZZB6Y3/b3Y8jdzLmAZN1D2U5u3XSTNX2wzjRQI0ewhH4BO0//0p76I+MM8G96aj2yPFTeQ+nxm9H8w4bJ1Rh1EvLv5GmeuqdCwSYbaT8uD0dLyD8lQtNnfEJRDkEYR6d/bQp/JufkcdZwdKjlw+UCjW7JM4XjlTH6+aq8oZOXcqPYzRQoFd6t3E9Njy9pPEzgFUXkMJkPXHtJ53JVlOmNFtl7KUQ5nrgmL96w2W+tMwZMDFoGLRUd4RBZaEPGxlUuKDvpeGGrzOj38KtyouxD79nl/L3X1k27tO7aMyS3dwqhfD5rc4P1b2ubsApZhiv/GJAdoWIXn10fj/NaiuBIA1XXaWRKGVXFma1VMjnU3fE6eLKM+Ks57OeVUMsfMKLIr10IIVQleZYphy/ZQA8B0yFG8HUNw52rHiEcEs02gWbmI29AaCIiQgeMjjpwR2qAaqibFlsROBMhXcVNKuY80MjB47WZnqw8mndEV9dogO/sVjGMU6glsvfzFSBged5ZMkv/LYo3l8xUjXjvhF7TSku+xEtSsGMF5MXpvQCWo2uO3hWl/OXpwCWRc6WWmoAP7tmUNvyg0pL6z8LEiNm52ImQkSqjPEErMBpOcEMxIqGxUJG73MU9QbQQy0eo54NqjicJBRNh4kpd7jkFYzAZkrY46XQCfJWa4nApxLvgVzxJIH38DtvryIbX+ydieDaakJXJXHDGyQt3R4IeeS6kjDn6TifH6CrvTdp473clu/Z/7ZXJrrD51LnE4KMKLRwbxR1/BXyLNCGuJqlwzq0+k+G05ijCT2/jcIVPx9u0bMN6/3Osr7eN4n9L0EKwtfbfhRZafP6ZirffX8Fj3lfbx/uv8G33HmA7rbHXGiz07Gz1uH3y669J7Zsl+Fjt0ubUnw/olxYeVlPkNBXZHyOpBLbdrPetORc3s63ngDIbKuRQSffXNyGDMWN206ld+fPSLHn7ECR+9Ywr8xVFrpRwfcFIdogq9g0mrjfXMw7xQ3MxqzfsLRVCq76JZNQykgmFgTStBDxtJBhpdSOTJD/LyCQDOqfIzN0swzGPZR6ys8P4RBmYTBmJGsvgwoGnOxD8BkfGL+1B7/D0o10iPtyBLCDeyeqGIgWnhQ1jXVtSrwQMSol8Mc3Y2bX0g8rofFXAyJ2ybqoKTRZlKAm4b+dmrn5NYl7NAtEzcfyhNFp6x1GkrSaCySVPd2aUbZFVSSx7WdTszWYTbL3d2HCVaQC5Lwz6kU/JUcn5/FzrugllT6SEFqkiu4HGFNWZamDVSIbEOzWQgCIRiXOoD/hUHR3kri+R9v/UnApAaGWqGX2WQxTaHj1mRa8FlF7urQWvPuLEmEyuI24CNzEMqUZRLg1XBxA+6y8dBc+bcPj3Dscfj1TSUNAzXkRbQIhnq3VMoyq+0z+j53spISmueX48dyYYW8PQsf1TJE8Mp6KaRjQC/C/niUZNiJGjvxsN46JSRUxJoyIX9mgpqhbqlBeQCY03Mn0Est1NiBaeR0kIHBtYeDN1YbgVPRpTfKylWgl5c6ahOOJ2tuP+ZjxTVNghgNY2v9BvCko2Fcv8bu+xDiU2i7etrrkZXIEhVPTAUPXv49LzORRTuagUYIDWmovn0b6SFadd5x8FPplpjgiNuweVEper3Aru3lDcIL5MuWMUGbnkPNxPE3M/eGzLokKOO7vcstYYfXfs7qhnPNHI19xXpcrLLrjDp31AOGGPtyIu7k05tgHthXFwNhQ6y2483Zrl9EQl98PcOEKv70FbwCSaX368Xo+j2VyWTNw3UevhcTnT3nCw8ZSjiIgO2NIwRB0mDeCdHAA9Hfc28LCI6ibQYuEmtgdkmX2tvv6wr3Kl9zHceRBvuU35bPX5gRQWhQfj2PmnQZUdnKioxqMrFbu4Cdh1NKNXb4G8CchSk4jizhNAneEX5oHnLERcU00Rkc2mSmUsnW/x3AVXbH44JU6wTYP8hCSY2w0vtz0v+JQeY6HtQw8jLsLyKyJm8lfC+yM/GrLRGpjTc28S8QrOna3lGTZw1MK7HW0fp9Ho54d2kysZ4U41jLRRwicLOp0sJK14p8dj81uDaDszdoVKilqiyTYitBeGSGm96hDvEFI/RkVQV0qtPTBn6UFMtow+THv4K+hDuxL6oK2tEAgRLtCANFW7FitP5FZTRDEdYkBU8GDGPRIyurzaKIUHUp8/oNhgY0VXhcJpxy+qKyMzpfoVwihsNAk6mqsB/Ix4flSw/hOzdetDMGqb0GZw8N/C7fNseL+OCh6pVv/Fy4lS/xCqfSqZs+pfxe7Pm0BIJgp5io2sxUZC8zn95O4mqpIW1fxF32NNRFj3JggdmyFvoKp49mchzwnbEwaKExV+4hovScQ85f21mFyRYJ3uis0pfe7vbr8kmUl8O2Xx89uCF3c5LD1ofZY9ekoxfbum7KsBgzpFJMMNGsrCo40ONaaJ/cbEcEf2JPbrh2JZJvDVlqiVfZVQ1se+u2K0jip407S4bmn2qUmqKQwDAeYtwdRY6S1pLznrgWJCzqzCXVbYl8oKAcKHyarp06cpQUOiQ5REIXWOk0GJsrN9KIe+LvVDlT4z9U7jiXjy2Enb4wSoM1p9SbGT4laksfgZ0td+fDqIdk2cMGirG5CUw3NUeJiMijEHw+NPsRXXxVos06BXl2PtyZ0csZQMW7uUNixTkAYOjsPfMblZIX3HOpVslSVPNMH1pNurmXZaH0TSaXScnHAispfGeWWZYBzJ/lntnLxi5gKdBd6DlrjKMH91iJALUsq3yhn0WNNHZZ3UKjRMinc0tKofDnBZAyo7JfODNx2+K4mnFST5taM1808j5kCmSmFc+G33SCyCpnf0TMYZlW2BxmjfITBhISPMyg+o1+tLccPzmDA3dLZKZNfKlNVkY8Ds0sXA+PJRr1zaUtQ+YvNgFaUH4OSEu505p2MfnOOyOqqXn+qp76GYTvzkuTFyphqXTcl5RpdmBzys23+1r3JhK0qJVkm0F0XhdFWlZra94qzoDCC/PK3ISJMp2e9gzTTYVELScULUDF8kIscgnWh9R1CE7nEA1ooEzZ8UREDPALmHo2mS2kDnXj9lrhyJCHhmpzZWp6AiqXqOd7daEdKF/nh8ocCfRW8eJrhD35zonIZT7YOPPmQj2/eMYvIsXACZUmbu3qSPPAPjGbkKKCK2RzO6AF5wMJjF9uO74fIut0sJwyndxbGCtMvT2US2/n/IPbclT/6fTbw5K8+KF9VfrKuVO4mdF2tCA5+qFSO7TvMAlSoVBot680ljUrCBSCGNM8/hh9Igbrr2X1qsy5Ry1RtAMsv6KZREODcu3QDPukEHtUNsa5x5uWP6nHfe27W0zeywNn1m2KAPNHmU+nnsVRB7tIbcyFbCBAtNw9LoaEGrojFpHePnLfbdRmtj0Jkps2HseS4UNGvzZwCwh7C2TfffYSsNQ0NWPOgZjDgyZt3sWpV42pO1KVCCQ9gUOQgIu+h478CcvqUBHgl51Wwd5U2rFm9HOmxwJV51mowcmoIvFHBcyLOWHiDVhJ0usaGnAqA/i3uRncaNyJqeHXoXUCJG9UwPY8hIzeVc1zr7xCLtSpES5mrGrP+dv96h0PEvmDEwIZSJmJNW8eCy+HaMDaDD1GnTGTW9/ie2rSphH17jolvfcnaZ+8wUwBQlQwKxpEJF1eJMtATINl29XBWRCJYywHtEnsQEpYTSszknixECpYpG7sHHfLEnV594EtWGUvPBYbfarH+QCnsUA8FbR/ZPuk54V6lGRMoMVHe6bGeQsWWQbdT65Mz7BX/UI2uei43xawjUbSRGcI0GrzLbQQ8CPKeV0vUpQNCg0hdVG22jvO3Q7kNwh41e+9ExJKfbuW9rJLTvCx1gldUMw00IhamTJ7UOicTYZtrr7WywsKTJ+sgrU6SdaO64wMhFBVIMbo4LpK6gf4lUDyakwlc9R6jw5lCzkrHrxWZkboTNodT2lyWZG18eQUKNZzffrDvQ7nGeXE/xuAv18rPaexF5RtZHKu/AcNVxKTK0zPqwGZMH17oHjdOQ6qY+C4Fq4gmxm37mcrColTxzWrizkhJp0GKPTUmRqOGiJr5AtUNUkEcQ9reCp4BB/TuFESOvtFfPlwu+v1RFJLI+rnMCBVE3fL7I10JHMXEe+0QBpn+w+aOXK+XWen3HRL4McYSjFA07xtIlhkxSIfgy28mvadwVzEWUGvl2x7AcjpO1rZ7/ADK0GkCZrAh8Z77QArpqhHeDtXcPVbwRlVNVDbLsGZyyJZrqHFiNV1I+3xkiJhjTnPWf/v6Oa4eM7SKxPZCpZ+Ouxc6Hy3xilPdSmqKq9fk4HpSdBlKrNKSBAb9eFbafGqHMUfyai5YlQi74Ufj97DvCv/f5+SLfBKPplzzchmDuVRaEUzS8bel3JcKA45VlcM8lIcaPXw8KhPA+NJnwKBAoChMRHhmHwpRd7nGmXHDrhzK77U/G9FXk84fzLlWdOQwFH60jTZWOP5rdniz/tH9920XKVjQQ65x+FGBCv5hwvJEVP7ojzVM/omNR1CaHHadmGAZz1VII0DTx3YdJYVEYfLneXoopBvZUIs/Yx6Tg3HaC3p4nZofJsnBKH3TddtQS1E3gv2AnFAX17PqSYIeLOG/BlohdkZrj8iY3rWbrMQDGQJMOhf48H/H6sk/ENA7S68Fp5dJim9y9PVhFknuAOqX2VOvlqer39J4WDI6LfRM0hrhZT+ytmerKYF4wCG3eJb0WqY68owilztDdY+kjRosL8j8Aoz3Ui4Z2I7WYuLKzfKh1L6DpzRHH3aOhnS1qAK3nkETBNqXluXx0bhO0Wb4ND+l4x47cRg054R9TzUW3B9A3CEW1u4bQLUcRJC9Z8hAhoTq5dLToST38aaqevoUnc7xeNuQ+8G0+/NjdMLT9heoFWSWyUDshAG1lc8N3PdK2jO/ByXnB2nagxzzw89VSaKFXVfYbhiMpg+E0nXbuxO53DrSTq7xbx2k3Lc4v69oYR6pEiGbvEWkl8uR7ihgG2Td5JEKhdgNtHmwVU5nICE6lstZ+Ye/6kEUL8xQ9SbxNEDh2H+e9GuwhwAzwtEdlCpFhbnPAPgbarR6LFBniLUE8r+qKSe1PLh03VhZdA4OpndXU7b5kpUpIGf04EOR0nS3g7u6czr041+6lQBvOh/ZN3YZ/NN2KIpuxKfA34COL6b3oYPBIrho1sogiEpaReLvmH5J6Pl8Xq2MhSwyvsg0Oqaq73w/rWGg5NQbpih1xWJHizC9K9rr0I7M3v5vSu7Ec+6stdKVgBSWC3J65OLRnzpfVJhBqHveKOjjEqg6V3N0rD9wKlw1q6sr+GbXTdsBxrH4AxgQRgv12P316z5p5jtwuon12S3lSJpKgDE38BEP55v0zkXRsj+IPCMNBhPD9lUuUUCQD9qJftJUq49JMedwIs82xTtgt0A760FtKN0L7k9SHbgTtOS3OedE7qBSQmBjR7k4EgKQ8I4wE+qAE6a6UbbQDDeBsttsZFjzFpFq6jQM15YO25adUnaR1RGksD8byTZQ2sGstb6KQcsLPNG89SxSLi9HXpVp8NBtSqUlwJ2zHkBiqcG9RuT/48/C2zcIEXaKf7iCqlGc6tOBMKlw2YCPE2IuGRcUP1s24ruRdB6whHuexi/ZIhLLi1DeBD8Wf91k6p/+LmptN0ujQl/zbppiy963pcsDaZHlwzGwfdZNAGNGeLIpmFcJBj9VyG8c6IKmIhMXm8Z2nhd/8hCQJXjqrvKuL4DISR+ay94/Bh4ft3ou9rHxnCJliHFmG+cu+j96f8nZV1I6h18Fn2iXemezvcLnXaV9AZvNisoHO4RHTJMUItskYSkA2AqolIBkk20uMcU/FiIXIJrKYpJIvDPmRz47Ak+VP/PCkcIEiJcrIpL2iMGgYKoXhJtTOynjT3HHip6pIZxfxiHLBpgYsJ1n2G3oMC2qNq39wU0N8GfnOMsOj+KB1YhW9vm0QK3lKsAIcb0D89CSaTDugntp2ltrH1SbJqqDAaGw6EmyLsKLkw3u0INX8ykHGCww0o1SSyVuXP5jJKA4GiYnvVjNk4fHxYbbFpXJUSt1Kat1F1Ldtqq4FjQDx26Y2Qe42KVlq3ErAEbmzGC5UUwMYyrxp/MdfccUfFqvaD7l17KJvS5VvEmHyySK88d847xOReoY+wDLh6QPsyt74DhEvuB2Lz8Ft2PbehACZglMo+mMz/e2nyNHEwGQ5QWYP+vKpXF10XD0Q9RecCcL9dTJdZyxC94yDUgkDbduqwv4ieFfZqXtvhHwcW3xyju/XhWhvEuY+9yFSWv+x1ov5HhSi3PS2wIYA3SnfLdTEloD1ukxWFoUgQ9mjEQfd8OgNQDBpuUjJywDBOGIPaOGUyzbzG5rXS3VM6T+F65w0WguerjljNSfwBhsANMrySokQWhSHS9vikmE0p4hDCm35FaSizT3lVOU59QSlBWU9NFmf7AgE/WYsfkBk6hsFJcZ0rJFvYMbP83ovXkANiVZKbdKaZCcgO7eWLobFPCoX0qtMOUmO9uBsWQcg8+I59YXGLvnz5gJ5q8QRvE1G44vEdeV+CbXOAdiSWeSHH21RTPLwKLXIp7viDw6OZFqyFYOyTSSQP/hTQ/iPmrDpUny4UKzmf2bCZQ5HRvOq9bjcGH+S0detLeFq4eEcLx3NUjY5pVj/60xatkTLwfqfqONmoWZuB1PiMwM//53/9i9vmZffhqE9qRBHSpoG/rEdNNVogxxYgkE9sSk9E7Eaf5gFNW9jPKcIi7qO6OjGJbmWZldqKKkbhbmMXdieXOY9zpNuzo5vVc0JHFtOfJaYrGh9LIXPl18HKb2B0PnAoOhwPipL/a5+dQv6ERiQcLbDzJIU0wRWTdnIuiV9QI7rw6CFx7opyRRTdeLka0XW6IUBTSY4J8mUIU7Czg3XowYqOa75PrMb85aPJnDbSMgVqKe0LcrSpeQs5Uxfkrm+82cFVPIGX9LkWQsb9R2uSvR10+ay19+LsVz3MG4fqo0X/nweoDlSozaDFqk3EJ7mkuUAfyMLs93WV8M7fjjJkK+HC82gQkeR8lptvZdriqv17rne8CmWuRzA8Mxofx14Q1YlZxnQZRFKznCz9Md1H4gPAxnYqe277m4z3TAbkTI9XKmZFNXrlt4JadEX8IhHFGRmQy7j/GTe0BDKG+S23R5+21KMtxSyubqiUhC1SZ25pw7l5lKPsX6yeWci2mQcmfIEf4ToZmiDlCfwPPIXxrRO4o0U7YLEuRzwYHrl1OybRY1NmxdRWChvIucM+p5q718ukFzYBcvn5VomXi1h6VTaJL4s8ol4KkuLpoKf+2pP/ul6/Kid+MahMIQ/GVOG/Du3MqHQ98x92lPGPTnByRUeRTnZ5Qe7WxgtjFVx+LcxQFi8sW0eZ06VxMaQIEv30taEsaQtkrqN+wj2Xv4w+8e/zBQT/z5d4zhW3zntAuv4tS43syR/buL07C31+GlfWFdofPGIvz8tVVuTErzRGL3Cohj8Em4wVVFBsOK32LK2t3lk7S8km/soa30ci9qb5e7BF2+AY61KnKIFAWsfL0kdK2PvNYx4EDCFxfP1RMdjZx1EjV0Q14DmbcHSoaeorNSMNCBzgQn0wIaJ3wt3PqjJcW5ScFr0tdXAyUzX7tf8UxS5InjSX1ejzf4CASIpiTNQ2AeecWEcY012GnTrrEdCiad2LkZUVbjDqO3zbh0vBYaf82NOdF/GplM/RJrQdbNcZ7GCCC+J1VB++JGRcU6lfiiL6IzH9o2ST5bx7i4aiW6KWqybSH3w1/OjGKYvLYgTH6F70O/6DpnVrDt5MW25LzQ4GcHt/6eBfAOQFxM8Px+4FyKjzPKlob2LP2QPKJCSipojue03fT7PQDHqE9MQOHnMjfplRFX6tucrBLXKQ2IJkTXImXiroZoSLDi3/Dxx6TBb7+IpwRrMpyAlcVGz8eEed15GJjRimj1iDa7Kl78SeW761jPzzw0WjaNNlKhrwwRenQXbBLuR2FblPPVjER1FjY9TXCsHbVPrvAaGH/Xx3AvzHZsCXsdZyALxlHzV35+IfPL/H/XXozW3N3hOfdZvh2y9O05piTlW98SqGxxTazt0xAQR8JtHRPjOGsEnvHkSqeZZoLUBNHjwB2W43fX6+G9RJI90o++9Wcvwhz7hkpd1ZODHMo+0Juf1ycjyGVDT4tqrJlqB18/fC9UWZuMU1v08ekABI5RVGcdvYUYBPcJie1UjlJ6oVT3O6GIIydsVc1DbCW3r+YYdJkFuKABJI/M69/0DoCgiEePhk5tTZ4OJGHly9JSGP8K90wecZvLQltKqYn9+K/aCd3HGyc/i7lCFV3pukXvX0yWbJ/mrhR6qi1Vut9am9r37TbdjLOw3vQWo3dulS89DNp/4+iSC4H015sve93zXERddUgaOAcLJR/5MV0tt6Zdc3tEpc9FDT3ZwUhi2Om2fwlaxVlgyC+Bx+lkQhdmm0daafz+dFVTizcDQ3hRCUQiSL8jeCv1HIEF8Sl3ZIuyc+GkMh8YF8bAzFt6yJuvpc6Dj758ycR5D8FWCIsHcKZJqm+vBVWfzOV3LvQoh3vXCDPiJrvXD1xPUGNQu9rBGyEF/MO/ssFtUagnCUGsm5FiDRZxfQUoC2KexT3IKqbDEtoIywnjGg8cSsWnTlHdNBbNFiTAKiPoYbaVzvyduuXQ0f9y5Qgpbz+kHktEJ4dEX4Op96XtIidAoA+dfNyu4aXA95S37mJbGISKZgeoGYWspuiBM6fOSyZz3gHgBsq5ArITzNcVcUunw5fqvg+BQjNzQoHOiiV4EvmQ9AIzHJx63zVNBct9LDOpv9+AtV/nVWGa2d+74NqHZOzgOLt8M/c6FYPeKmLE3QrZfsGMpJeidlHXWpQ8eHx0Z+8cNvWCU58tmjB0hY5SXej30e6cID7vhlLl6/N8lFiOdHBWuJxWRBJsalnGYZ5beOlZRy6oapVoQY7kZ2cMvr2j549TliM/pMUnTrVC5ZrRUNwbX9bSRIsxj4a9rLIs5lhtPJuj5zIECOOFdrCHUTrvMpE74erDQLTNmkbtnSiC3f1IBTBaUCslMX81KIFAy+BgiNfymZgPgTfUwaUJTll1WS90Ajkkr4O4I93CcQ8zyMtgjAZVRTF93l0SWQKcYouXT+yEealmpz4ER4eusFn/qg4USkd+xFCX2Tir7VeXD/Uaxx4pS7S+jGfYVZGs9RENOkElNsNj1asmNslKBQj++xEFu4zJAGAe0djRTdcZtAzOhIfZHNXTXpUN5s5UmJMAUw7GralnZH5Zh0/REO+beMP+FLV72EpriYumPNNBgi4M6hVpHz8QFl1ZbLT4FW+cqe2jCRFlOh6t7SoxCTS/mPKeqjy7jEcsOlJpJJw/HKDk0Uv0gY+N9gVBPiDchyBbNkQGTiatPAhAiiRbSNS5e25lCg6SKNiairKJ0LeQb/f8kzs5QZ3UdDUPUPdabzunn/+B7fA8gDeWb0gnTmC2sPuvqnmjDQj52OGQl7qkuRoqzFRab8oqxl4xK9QvWtt2pfeaZpZ7puaAQuud9VhHD+rSVPbBfwa5Et9PZmahke2NIrGTikr2+3bxgOfTd5lzT+rQbDFuqNPZ3g43OH5jfSiY11kI71WWlpxLK55TbdFL7v6Zz7DX0wtKxe9yceGCY2Kuu7rs+H7TTA5rLz6e4k99Cp0ac4FgplwE8+YIPqq+552+xBmpK34k29SByGm9CSaoETWYp9lxuCPSHCT2WV5LTbl7ZXu6vZ5tgdlUfdPf0hXlMeUAiSEg0XdLiDCBGqDvpv0Sb/ZjdS/ZwhyMDNYMNG+hafgnd8BgNvEQdqnN/TLRb9MVhSlb+K3kDtNMb/q4baVjy4T/y41RbNeWAoChyBEFMNtdVsVxDUkbKtFuPoOTxgAiGnHm3IgtL27bh8EVBe56iKsKVbhbGqo5Jm9BPslQ1TPVIBXcolcurrNY+9qICRUjkfbOpJqXkzlQrL34T1/wVlTRZPncAjtQHzGMc7iA0JQDBRijqUdEn/W1+Qe/OgJOULwzvgMY/KkagcvhoXfuGlPMbjhnw005FOPka7Q9ida7H44YO91Lie4LnF1e245E6Uy8/fNZjCba+vtFmqbNINcFEH2p6uv1XtmC35utNzAVn2JOIYEn1fZfeEpFTYZKWNuYFgwv4bd34EY5zlTgr0rwqTn4lkudIo0rppjkxMpy1U21EQX0ghSwhrcYeTGzdro2S6XECRzNivIToA50vn/yPMWdgohcsBT4JvuIRE2Up1Fg66ajdEs54eNGALwDF1aZ7rTci3GIT7n2DlsMG17IYOwyGPpbajM/2JMwvasx55uxZflzr5eMsLkYJWBgp8Hv6tH0VXyA/gsxITWeX28Mu5QvJbvHL2Z7+GUBXyif2ToGXAz2qF13Jt9WlYL71TbmXFCF42Ybm1f2AzFvYHN+TEhZ2HhQMv1snXICjUxIIHV3KnB3s7kkB8RzirZYNC6H0aiMqGBnes8p2IbHYSZ7LuYlKcKlOE5it6ixsUlQ8wTFhCU8bf39PKk0uhbtj+h3GUwtW8ZGGlEiltTGsvFs1p0CWRH1MBFnFJAek+DTj7rXnCK8SXLXWLNrjGYmTvN/6GKgVqjLiT9TuSMauIHgRtxMs+TatELHtpk8F0VBrcJD3SYZyYvw/dqxMBfXUoghzvtUSrrudQIrh4//7q1Le+KTDXSH/kSWzatDk+KkWY9Me9dkRwYl5Sidc99nQvEl89XMUzJJPj0UOAgtFi2cS0f2ZDl+Xx+kO7gH9lmGj3cEgd/gisI5oCFP2zRTvoiIzybflptnyPb7UG4J1GNh2eYuOrGq0TzDXFz4d1+kEJXMhdDGXTn6saIXgUSjBYxXozdhoeholAkGBmNfjJn9VLFuW3TW/fMg/eMyRmhuZNFWLWz9p/uTSP5PYK0YvNEaVcGC5mcr178AMDnv3hNx56wqbdd9whLm9wzumoju78cI/Yp8QLwvPRse0HnzVx38bf2U97mx4I9amYWLuRwWrPbC/FmWbB1MylqPqXDovipowpy/w4JIQzE/+O7/GA+SQF/WCzWOtThbmxjdZKCxU6/aMjvfzEwRe9NRsNmxU0WspD9YodTUeO2Io/4ff2RVcDNBZvOhsM0w9JC7FPW5/8NkKC67fZtyeTT+zFEfJ4R1+fmUKbpnwpK10RjCOAum4T4iYFyULUl+urZKABvrniA88F9CwcMWQz3TWSfwlTpLVMazbJDAno0k1dMGDl4Tq7ypBxzjZ8muhmROsvlYahuZ7/8HifzDD9oFdrnamszkth4jL8a2aJLL3GGM9PYPcXvE5xXDjvrGPxxipb3hOcLmFutsTK6p5Mrwsy9IzGfzMoRgLoMKt/V00KXIXZ+uvEY36+RCXbXLpVcTz6GZUkSHeWDkWxYjyEct86UqW0LCsESNCFgyPka9yoDZJTLKrn2nLijzvnRxQO5TwTKHRZ4ItFS33G9swxGbpVnT9FxTa3EE+PlcDhZ9E8r21FclAuASvx8jmlm4m49KKSudi8g5ROq/JAI9ZhMn51uGfctSnYW1oD0zkdzfpxcvcXhZKQZ2BjWwRO//O+VX7zjtOU1StrOIZl6l/MpUaL9kXJzp4mKzapt0EeD0CWFLRX524Koi03IDQKl4eyIwC4k6fLYxyTvPj89CwyJY/6CpTJN69YxobUw0tGheyIeaSw8XTO+klFtOV0Xo6zITjugWZcvcGbpjt0Vm54Vsk7GdqxM/X99fj44yYiFgOBjEw41QKxYYaVKMwJwukNC9i7gG1BztUqIJdUuNgupUaqbfh3dBsBjSlVjvDu9Ba3VaQWrAoEJX+u6lo/91z7mtaxTc1iAO8xMZwRdFHstZS8N3OU12qis4mSB6h9FbUVKnz25de3n+85j44+Rv9q5O4eEsd7tdrh1Q8XHT0RO9bSwe1bYzGd5FlsKp/M8BM/OUkzZZC8NAQmyQ2i1LzK0+ecD8SQKIRRd672RWFmY3mC5lWK66WMH+kafL3w6T4pXJWqCBi13QqIcoXzd3ZHCo4Rb4eIizqEo1gtK0vUfCObhFsCuIL7FwVLxNqJuZiWfg5CKxh6bQW3cyZ1YyfxkYSQUF2YXPMio0PYZk9h6/N+eNtyCgfy0xAeFH3qmpwPGMJ5bGjU46J8vO849ysa9ogPNDIEg2yZaWUUkpFSimlFIKQlJRSSrkS5q6dUbM8z3PD8qYnkoZlmOhlRhIENONYJ0AdYGVuai8oUiyefNHES6SYM7y69Epm9uq4NYwgvHhQpr9s6laBOGDmIKvibQdobfPQLc7Bb/8777ogKL5zdg1NBc9ylXeNPtSKB26GhoBQz8NyzOsj6yB8a6xs+vdofItpgKn+MXB04zwSxDHXnxDFPgzYQ0HWsicmUSDU7GJzkcRy0vR2FfgNIz+lnIpZZsCglTZdSFc7DVwd29nFlwy8ANi4kNGOpEx3BmjZMy4fk//vpcjbljLUuAPYmHkaTRhcHsMyM0eTWzrFDkDnG4cmQvrfYWXfxtuNLscxiARkIJIctbO6KtVYtQCbLXIk/CoO7MzwYoO9r0kRGckPov+G8YCfIVz1EGAN0KSaJNoYHzDK0x5ugVQugDJ/LvG82r2VLH/Ska0/F+tuhTq+GI8UPK3Q+UIEkX7/rDBpKvXl1PB8AbrQBYtHxxEF1tdwBkR+Q2+hI+qjhHTrd4ZxrMfn9lF/Uxmkzz1yT4uza+H7HYTtHpQNIxYMGcBsXr8vLjY6NI92sDS2+8N2jPyRnq0fbGmMeNAE7+8BhxYJq1zzROYxkCb1eOYQGzDWI5gR+6Za4I2HwA4bUXtKGQQ7cwrehS+8l7B8x0zrom4JcYAOaGkyOVuu9sWBJRgQVpFZB0P2XxkcgALrcBsOZQxOpNQq8mfJAWnHKsGmIq+H76WVk6i9doRqwt/HSLwvlXIgpvNbVMkrCgJKdBzZd+D3KqZqH5+NBIL81MLyXJwGC81px7EmL+No2m5ji+BsQkRdKtN8czxkifBGmAVByDWOzN5hShyndUaXdD7wHgwlN7pWw0Bm1wcFg21O32oafYKSbcmPMCooaXRIujKbyUGzIiZFPqCvIGf4C6yNaxqXB/RqSRpjU+gKzAcG5Zr1uPBZ5IksmfWdhmXbpjGe8scruI70w+FMLNy7/tjYB1kEFgMjjZi2MOoRlpRe7e+k7DVb5CT2e30HomX/M17/JHvyf1ZojxpOgqjt9/+Ah3cY7FDWOx8TknK8x2Eumz64GdksMooTdJWCQy/bypWfeodNMbCNVJ9/gh6Uj2GLzKoWHjFw2xVEQgRQ7m2NKOCCkT3ND7eQ80cEkEa2iYuiBEpxGex2bIybJKjLu3Yw8hT1hvc54f/09QT798IweEddJv59jhm2FWlvplkpJ52gnNVGc0P1Mj/mDVJaNLpxDKWfU/DJ6GMVRM/yGqPatUKXG6cWBIvVAzU9EPuSOOSwYxWQxfTq1nonrl4vyoPQM8N2G1Kq1qvAT1MoybGdDNPtpTFV+CzbfxJIPw7tUgHbxwltQunSEax03iLBSjqsvTOmck4mPaDMvOkrlvVMeSdOcRUzytAZvq1+mWSjBMcxBDeMJYYdFd2RZwQuoEBWaesMVFFndkAgjmwcWjJICj/4A2Lu7QlHQf7KoCEAoaNIiHikkJTZyoITvGV9wsmjCl9sCMMbhvgmcW2dqxaM4qX7pJqU6dBleaPqGKRiW8w9+Ytal1tzOk0ZM2LVe82tjjcxNG7cBObkqele/V+ckRPlcjd1qMp8HcltrDl7iVnVulKhbF6834bB+vGw/n0OB2Y1So7xNkAf3E7mkWQoIHMPVhPJMw65z2dpCVcX4mq5xZ/01wfJmXLlaHGY86RSuTlHTpmK9feGQhGRr/ux+qySdXWH316zPqGaJaD+p8aQc6akkU1KAkdLfOyEU6+zvC+TsrxQaudS2OEyGQcMKQmnlGbymAUuXS8bG4EiWupCg2DjAn30HR8iQ4p+nf03oQ5FINCR7A9yX2rf9r3UIkPf7dMnVVBz8Xx8cuQijH/feOh6bDPIdLHmq5mXvwX74Y3+7ecfG6jxyQYTNR0Tp21ZYnU6cx3ElF+9wPufEFRq4de+vOant1Kio0VMr4tppEunUwgd+n6Z6yN9DzugwtSv8L4n0pPTfAvyNIDGXj8X362a1E1sHS9F/Zg/X5y0dmTJZ/yEPFZfE7/ErdIMUOairpe0pfssVw0DQ/ktl1D1h0/xGXqLgqPFDQiL1jctMb6OPfyWt3t+9OojIDTAx1sLVMGFR+YObJ1tN5usEENbs+zLCWlTOlBqhg9K80OGXQdX6up6S5dfci/9CnT5iFl3/6IKhrQm3XKtsdD0mDZljqCxrsHUws3IBgpoZnvptKmhcMG11qWg9xo8pvcEsfoYuDNsmD9XNiwjT/JFyA+RGsQFFXrQkRx22uPkab+BzZ+9TkzPkJ6/QOtda5wr3XBSeefdyZlod9WmDO4ADvWP4UkO+lR4VBj4rmrnuinIV8NRCBFf+9f1kM8bpexUtfnmJpaF44xjWmayGRTq0laZhEKBMDYC5a3AfnYC01yP9f+EiBSlbQm+NGRQEJKS/euMH+yiFqJ4YUzcKgJHhOZv9bR4mIi126dx7l09XDgm/dYIuQw8UuXE2/nAtMPiiazD2OgblTlTamkplnkXXTI9TlFTlENT9Jf3fTc39+Zvu7kJYx8IuN7rj/dtbj5r/xK/jk8hjXkoi/wKsQGAeSZ9YoYD6JRFog63GuNVm3mohTcYX7PQMI3W6owrwxdZN8cQO+JQC1nPmMndnHBQmUvF26XsYJ2TLc8+dWChkyqOEHNgJCcFmHQBm6h8d7zC/dOkXQEFFOHUBaKTQv0Yi5s5EqdOfJAYvbR8JsM8UMcwTxM1VEojFe57vWI9Dr7UYZMnCU2CELzFkRYyjTIKk4BUiebxooP+Wi6vcBpVUu8tw50gBzyZiDlDikXCo01NnfJirrdAbJWfV1UXC/WglgVa7+QBz6Hr3qp4qaymBGaOAdtSUN65nA8+d0939y0YyCOPDPD0U3+hLUKYEogjWoHsaYQU96N2wxRBR7GMitKlAXL8EJHPJgO8tGE/MPabwR3H5B5R+dX4t1IwL7vvb689kuIcLyctD9FWW5HpE4fVzfc+0K+VWJP45UUV91QCwN9rr+mSDCnfY3A2U0pxN+u6OMw6PATzULT8YaQEe13K/DgTn+aurDEs5+bodpb14Xo8QJE2LdJ6NEARpnIRuENRKslssaZS9vE9Bz2yGkkhn7FWdwRzEbKb4InEXRYWngfsTL2dzokVyNE6U8ZYltMkbdzD+DeJUaMAxFI/0AKQEkFQwIYVRHh6LSJeMFYVkZVu1TVyBeJe5CKrAsb18WIe/xqO6/dN6NTiOlJxjX7xlna1a17ebFM2HMN+uBQKrREcegwm/q3rjyQp8GiasCU1Do42Q096s1jbVHtJAIn5yD+aCvCzXJSDJqY8Q+Vrr9T0Z7SqjaPRBpw7EY+nhwkqSHIQQ7bp2VTCQyP05daD0o845ysESLAtf0zkJOB6Nm26PFypQ1MJKT74efKG1HQonJymG5SMTw+Y5EU+WoFR3We3S81dgH8GrzesPSl62Kdivo8035y/68RRfMCXToFSciJVcvjCi+zayRa3QlHFPSZ5+p5L9TqHcabZ0W2OalWFrXTU5R6oDTWWO48640XOzQ58m5XR8kY2ZdBg7EFLh6aR2Bn1u6Bk1jltZqnDjHG1ak26xURHMaRBh136eNXUBiM0aBbCgFH+uXRiKn6cCQCRHZ6mD60Wvo3vEvaCKZyJYVSZguAg3BaGsCMmLJyQqWGYq+jUGBYE3qqinw34bBD88gqaTGNZJUsoZow0iAhXfIGn1/TunGk+42DxWvp9ybaX2ZRMRZZPr9hRig/5GbvE8i4sn8HFwbSf/yHnrU3GUQcp+xoxsUZKg6G5vZz5WWvG8ikUK1pPXULMuH9T0XWsAOzidXiJgR0o6VzfGrobOH7qKljKiYNgC0/OCPz+gFC6weX5NBfmTdhvQlNRGi2NAUXWqNUmh60JUMIVXo1AqhQu1jvCadRZDnBxFMmY3buGiW3jmlU2inn2XFyLygnakVb3/VjDYDrcrOBH94ylMvwUQklIWJy5MfJACzEpw2Yb1+L+8ZEOz4G+jxL4warcy03u1YYlKLE56fTS62Ad+NUgnVdl1PpxTpdgNN3ick46jTKZrD6HApCKQKHkwx6//6DJ/tVJp/z+Jk11xHVBsbd2Las9BwP2QrZ+ym054bvchBWXD6CB7XpsDqHlm9IrQSytFIeekpM/ii7P+fxBTwfuHk9c7U0Kf+LNHoNCvE3nbU6LuZCxhLko1eAmkdftyuJCbT9b9G3LN86YXxpIzQPZMRucJK1AlSulCLkuaeNoamJZJ/8AFDiBcXECs88dHTPAKI+iiMklec3HQm8SgNI6/13J8OV3PePkIL0WllxqUOVGm/p7w+bTTDyBOk1Z8Vr4LrONZZpc/bH8NI++zHbNZ11fgYb9biTcv8yu/PkLQ1wDtriZbbNzj8OZ+TD4Pq5rGc0MpWf9ylA+qa6h9bXtqBaMGnfVnPcvZZWPADy4idwJ3aT2Hh4dt1z1+IOlYb8mYVsfpvLvG4GyY2/ACvNR7Nn6THJfrso6qVLu0bJNYC8nqzd/5KONaLq1b96Qp5P9pFN5jKR/Aj7gSznxOh0NUC0Lr9BzkYgHv87Llvw/p6UTOBxU+5WsMn06PGz6snmX1aWL0LEuLGpH7ur3yvVW+1/LZYyAC0n3IbrK37II9NjLoLK5gvlyewmr9hI13c9FR2jSVNeCrFXQwiHLYKBJ6TEgzUYT1VrHLyL1oQV2Ntgpnzo5FvZFu6IDvVMu23ysMB9F18BOXETxGXjLknvCkz7twKjGBXFcqP1GWTHA7VA3COh4x96fymIlXdTsH6AyiXdBcU7w3TrkpkJKbGniweny1dcjTXk2jXkdtf9bzxhyP++855AZB6qsDcWbvIVpDKSb6oQOFlyWTX2eYL4OvfKejC1wWd/u2wqfQqihrS5HlHQGGUsulHbgFzaRuZPWyboQpH+rQ1+l7y8kU7d7RXk4aNZ1EZdFkdyIDGixTh9UyO5P6jKHIlMJXR5MvCd5Fjqfyq+xEVCyriad9jWyuGnelLBzH8RXcSGP8/7m4bfvP/aw++YD0uAgjMs0OzcL+/WjZK5f1iO3dHvqhp8A1XFcqmZt0YAU38c520UlguiDSPkRbfaHVG6we/sDfdEMvLEjwMNd69Et8vVujrr8ugeWd0jOBDZhEyFTlZjO4NqV3LJdtVOLSwXXQAw/bD3AswCPHTMaB8BX4utGNXtyM7hL20AEIh2JYHe5/ZXDPBn5Efy4QeTo+1Xt3hXKYzD1NDYh8ZAojHqfKZxDme3Eg3YGroVHgdH/yVOFgYFnQG4FKueZS1XLzAKhele8stKBnMWC5OK1438ZifspS51vF4OVVJR6ExH8zj3Ra0Grp5Dtt14W4dnQqwVi/XeTH5jhQ1pUAlIKTOJj5KUEgxjDbufhDyTAsCc4Vzk/adgIuoJyVSIHLWT59mFqDjgpngwPdGe4CX6XdgeF4I8gb0JaJ2S/vQ223VK//fl8+ubt/UksobUfuDxzjHHYhxHULhtT5hH2dnht6kkvSR06jtjdN6O8e2C+gOqi6/KjdMY7rnQTWhjLsh7GJlgE5AhuLAZcjVXBB/WkWnR5mowL+uvUjlAPLLej9r10w8kSSNdVpDrzvVZSMrgKbElMF9FwEYudM26lpxW0x1Cmif0ANTKZHCe9iwwaB549AbRnUwaOtNAwIv3rYhC7P6BZhI0dUipvXtAvyAp+DK/gQPIwcc6CM7t5Q2D1ADyYQ0P1VYHXfQXeK+aEDaES0wZs6hY6+Hi45BW6F4eInaDJpdh/pNPl3xpLFGrPvPGFYLjAhxOMtFN6Lazg8w+bW4cM1tnjyS+TjP6myhjVRnYUHpTyjxkmnjFWDVB69hQuyFRCQNKKWAwAS0Qx9/v7nejNSVFr/jWoGESsI2cgcj/SgczmNF2auR0XC8i1bxy3xyhniKK7nPmFJqMgywdgPT+KO0AVy0M0OH3diQR2ye4doRmuR0zz3xeAs6pYU4rSad9Mhf1m0QtVCiQtAf7Br9l+feO4KzlAU4qxV3oTYkWXZ+6NTvCizoknsaDaPr8+mb7qOH8+NEr+BRWTN/ECOyhO5fh62JRLlGkrPGUMURrm/1+pYB6AQdG+ZJ3foCH3ptXIkUkYnzlWeXDzs24QRvKTeJsFNi6LXQXuBtlxjqiBdjI7mYppU152YYTsyo7FXOseigCvhy3XYLa+Hkd5+MWNCRl9YfeHMMutgSeGStgdEkEpsSVdvtDTIYuXceuhugr6WaEb0cphXdLw9dfkg3Jx1P/ToXhOirTlXwdpIUumMhtrdvYXi/3dbVp3Xz4+XvynGt1ivoDxTmQ2s7Nygoylbliw9DeokgLkWO3kXgM/XHsTFtjJRc5Jc2mk+w6og0wZWg0hqwpVgWMUEHISwYkZ7uRZ+t3zxZBNB7eRAmbgugl2pndCvfvuT0rfqyg/7qFoeaX/+Gl2CFGfHPXDEluaRwZ2hH3ki4qN24i4wkKaAXOl1JDnnJqPeTqBnI95OoE8GiNVoAQi09ZARE9qMPrmSA7N1McoLoXhpc3V4xOD1rXXgXQXeYkrtLNOHPXkT6Q+uCaYVnXB9nX0s7TDUlIf8y6u2Z81p0jBh1UrDRxUSFFK5b+ZxYf9hi9u0cRlG17l7Az3Nr/ZX/bckERglKNIEvrFgdcEjfHS1NHQCdp1sjIo2tD8qyFapwdElTP86PkctBJSBUghlSiCtVXYnGRxWFATeltf+RKpVCtorHUzeFZ6t6VF521x75YimMT919IAmKBpxYuBBOBXvgsB7NW7lh9GpoqxyJ54sLOqOz7V5yE8LiRasKEOvoZ38lx01SetQD4xJ9NxsqnNcPvuCusqwDBJZFIkvGfh/nYRJfCLrcVv6Z0qcmWCrQhUptMJMlkb1wcDjqslduAnN162JXa3F6+T4S03fFFklWTWDoWW0mxGNG+yf4i/8F3QcKUs2brYyaQITA/TAvQSMweIOaLrEvCz9cAuv4NgG+vVSAOM/0EfqrGeVuO9sXTgLJq1cPjhjOIU5KIfydg2PIPVxj04E77fg5bmUMyqh5vUZhWdqbML1AG0dZPFhhZH9exCreUavQuYbYFkCgxSaMBBdE3/kszGPK3zH5Pyp6280wAb3kHguqRuP05ripDeUDJuqjOG8H9aTl+3GFlORAasgWEwG1USjEe3Y2lHOvEYcJ7ytvhcf35l/vyTUKBNskETDVD5agbzJ7vGkEQClbrJd9NfoF6ZS8Sw5vMmsGlRPWGfTHNtvmMg3ugs2kSzrhL/WpgWHVxHPm/P83rTn79NIwpOcEgV/5ejpe99kiwDiRsEqSXI5JoIwAyao8nzNJE/rZQDXnUDmlBE9jXz8Wj9t4us3XAIzfutBQQIM4KTitGG1RjhRlT7pRAQSsEZDqpVrfMVVfyaV+FVzedNvhkJOWKz0Xd2hs84f5dmnTrV1TsdiU4DzL25KSf596l0OoHA3ARRqKhHkisn6Fx5I1yMU0CmyCjlkyuMdmMjk0e6Px3nLyVfEHnZMFGmRiqheUjXCieFbZ8e5ULKRprDjIRArUwtSmw8xc35LHkeAg03PUuIlsmkZzI0qwrYQj/hizoWeI3OcuM84BuRaTGKZxvzQM7sHepdFcBVOmRV1Mhm4MgZXv31ELH6q6EvuMkgGOf/OrBXrP4sJYd4gfW6ki0Yfy4weFYyC0w5AWcYIHJMh7KI8/tRuvxWII/zzzHWpwz4z0zMbkcJtCSvRumk9PSOIEweIIE2kavWQKxP9MZML9YZVNWmV/l0L4zJxZ4J6rsxKh3/R409DO62VWZjvf5p+NdjdbHVT6VRE+rjnQF5/HTYGizJeC+QW9XlvFszciomvO8Y7ljEGivVTO572ueKRoRc0VKYeBIxIStFzp3YByP/GjWAetRaeUXRTXDnczfQaDJe5oldu83TkuGcB2BU1ULr8L4gS1K84ESwfhTdEGzwPDTq4/ESUHRjHURNsLhs8GP82BbFe8ZQS747vU1gsUBL4MN6DdM3Tw1RO6EQ7CCRlgFC5vJ7y8bFu1nMkojTVLs67R8AURc8BMl0fm3JCY5oIXEHcL/usuMQQ/OLmAm4G8hA3sQnOJt98RqGk6OH1FwJkl8tSBGGhWgiJ607LiyVSlxIISuP36akUxlKYq1j+iq5H3R0KaAlRe+vxUwKKzERB31oPepBlk8lgU6qMWqAz1z7tv7yXaQKg2+156MZhjigx/8yDywrwLqVnzIYkmowUiJlMTJUJOiYHPUoQCkpaSXFS9WoRNIMxrRPMgrBcG2Uv6uxdeRExvzt/HZoyDk/Bt3VmaK7bOIFmNc0uJzIKO/spBZxMaNElNfMEXMoJt7JYZWJJpv1vHWe0XsCM8inFr6w307BA9fSMioOVWfnD5Ci3v1373X4v2zQl+qEBydw/b/qHOvQ//hA/lq2T1fv5Bvwn7VXq1P+S0n5Jf+Iv3Ls/SMwx+D/MjcmMO00zRun/S8l4etCgdpnVq9cBL+hI6sy/FM+HjJkk9qYnj1YHhwqyJyxW38NLv8lT9gA0AT/7XmUwST7tbSe7yKpHPTbsYpyRiEddxQXY/SSTmityg4waV6VK3/Tv/UH5z/Ofm8yrIbyH61gtK6SO6l1QcJDE1QiBhKNrWcHtFqs0nsqPYFYPd/k/dyGzc72+s0eWe1XSTMrtp9wLVhhvyb0EMA5ozpSDu8X3hJh2jSPSNX+DCUPZ/jrZK63oHrqr3jRGm6p6fbrron23ChgF/l/d4qAoilEdSCVHx3qhqmzXMlfcpX2Y/WBzheYssAdzz6tJoESlVFofaj88EQJVrlPzRR+ktMw8XJC5yj76T2xKa6v0+JKGxm0ro9jqiy/02DFls83tUUrjcZAfyGWbMEUpK88cLw9VJL8O1b+i937FUXoenJ3/F6Tbdjv7i5/Hcv9xVTZunYOrotWFcVVLDyE/X+yFGiYL5YjAz3/Ciqq8fratk9u+3yIXB//JCMAeht6wyNFKZeU+8Tm2C3ezT58p/8cnLr7Fr8NVLbfpMjRa/m7uX0//y9FqGQm4NON9O6OW2MLerae8LAwR79VCbbRbsVeAiY5Ff/ll2+aum+ab4n4W4K6XRQvc2rP/Z7Y2Zpssi8veIQWqMRPKXK+657ZHKjm2JUn26DnX+BpPWmr88p/1tlaGXgo55Kye2umpHHKZ91/KQDbRPEp18/X9/fN9T3e/unfYfxHkzW4v0oSYO8LmpZG+Mbzmrmz+MKB/P+hxDx6YleZ5zW5R1TiT2m87efojrffFCpqTVGCPyk8h4EeUzoBhZMlXv2qe3sN2+w4yFVYl2QDB1+zoiUH1qwi5gJqL0KtxicFT9svAcwxfD/jY03NglAd1gSk5r89PUwSag7NXNA1k2ERGts0KuLJgNxPhFcPttoheT6XsV6+VoEuuz77fCjzTCRHLeEEemky4xnMCyqqI4CEhMfkCd1lOMQzF48gKdS90yUPUjuQ9U0fem9xI63ZujibjNoSl10hft+FQ/3pPrPihs+BcNWaaiJXqDQCDx8s6HkAZOrfQT8yUrxD45nzfm5jcwx1lR5F/TKJtvdfNYra5D83nkIaE9VSsIGORRhxt+f0zIaTEu0oHeoN7aggoalQq4f+3Xgk5p68ffkhd36y9GWqyZOrTyCONmaXDY981d48hb82HOgvtweR1ZRbHQviOrYxgsWmrd3GweXFcE5/JCuuA15Sq+UHZLJcL0hmJUTaX/PFZJGi9VheHE8RBLtqKOdeYcrly9g7N7P8XRDcv58r+lj3gvzR12LF1L8uk0m99n5x/BSz/lmFaMAbUcwcUHIiLQJ89okSB6QTUbzaxDAkfJYZ70zx2tH9kYYzEytbEl8BoxlhHakTeGGPBQP8I9hYoasT3YE4nmzPakx0TwHvrbBMC6RbUfzggEAtdhP7mIAKejj2tCKnktdBQw/QPv9d6po/66wPNoXHRD9et/wzLrvpff17+231PDwPv7dt9Zjaj7hbrx7Hb/Vxq7xP7/df+8vV5/T2b9zephu3ny3OXPnbj1hs0qf8PD4ua9rWL2+x+Fp99m+ZI5HkmRPRK8aZMK6UH8TMEj+JBUtnpotWxh865Vr5i66w5j3dxHrmkq5iY7whUlUC/YotqaXfs3XJ+hM7kyX9zI3Kpf6SSdowJNMsk6H30eSOwbhVuWeYuSM9Miy4c2kfLgU8TSif/n9/xTuLwj3pg8XEvadXFhWfLf1ixEHTF2PmgXTEOPDg6YJx5IulD4zOV00HkJ/2c3fJ+sSFNSfWvNfmN+sX/t+bF9aXfLDmlZXyr3Yr1nv+te4tm4FLaz6wGXnj5ZZr58Xiiave96/Y8SX6oM03m4lLbTZcTfxj8QaBB6r9znA0oz/M4nA7ox/M4EWemhoj0wWDGglj0oWRGgZj8oWuGhZj7IWFGh6jwAWB6jujzgWF6jCjzYWVGlJj1IWBGg1j2oWNGjJjzoWzGjVjyoWjGg5jxIWeGhpj9oWb6jYjz0WKmjhjz0WOmjDj4dg1oxr8w1g9Qxn86fACQyT8xFgrQzq83OkSQwa85qmtsgtM6qmD0jG94tkoIzTdwTCpsheM1KmgoivMwkUNwzAMw3CRwZSoLgkWua8ulw7pK0FyD7pbwUdjAkz9GHmVsfQ5v3kYKg8VUcZNZ87e+J3G2Ux0rYsA+yEYjgvljbODoBcl1XFPNrTvVduVkxNCXfqZdN0DGsHuWfrQi8V+A2dJztrMJp1DdY8dWP1qmqx2zAgBEj1Sghg0D+4w73Tmx7GXBWNOFvyDE/FhMYvzcsoD878yzLg6mAQmNF0wt8XEpgdwrnafc+bqRZ8MkH8HhvyJMYcFCsU2X+ZF5KPuRjwP4iUEY+JuI8rxx6YtpAMwrTutQnl/uE7hdVD2miPYvDecxnQKGwIf4vySag36kZRU/lGuL7XJ9sLt40NnumeOU74IO8s5kz8NtDabYMZ3l0Rv4QLw2WQjrgO1QXsYoekqizYQ4DB2vzXq2HYJf0kkH62g7sMnp5ZHqgpsLNkTLYp7hqhtzv6JIUWi37AddSEhO73k6gj5UztKM9YCD8YSkrNjYE2ocG3YvZxUp88U+qJlMgwn0sZ/bVpGGvwBALftMaBWkAdEyXDUAijPRbvsWtIajMeJHaEClPkkbeZ+do2rA/5p3rtSJ1UnpLcNMhsnK/ij7Bh/DD3adowUX0JU4YTONgic+jIORxKSwvyqmodLSFpi/jEqLGX4DLjt35A4OhLJVw6rsvbOoXsLTBWxnZtp4yCQ3p/FnVdnru+MolgYmWf/jS8Gtif8dGpvyY8yXG13SWul6OU5qxgRKhseh9h9y5/DyONb7iBLNK0ER1EWrqIglxrz3jDakWJyHXg+D/Le8nRyZiusfJMcO41liOjoh5RjIwtIzs4zO51X2d4BeDE7hI1ZdS7OL+xlioD1Vc84SRKWQxKoSEfWIfHLQudRvdruUvgcwrceddI2FVUkFJXxreUluweg92efZy47X7aG9Gw3PSy8ObEEK8g8ifB1WNLzZgFW3ov4PY1Sr5vt9258un8NNFGjealLsIYobzy8+1zk5Sac0lETG0aARe6ixlz0sarZyR1CtpvFCoLm6WUb0iN9PodDzsgqInkuVY+Jmuxj1sytdDY/d7SVbabC/hOLwMKZRRU/fBixGTZwdF3isrRLI0XSYi+EVy8LWhXzPuPxBMCh5uQaee4AOi3JufSAqrsfjdqroZf6dzOgCY/pqvO2JNm7hCpUstKMU9ona0Aw9oeUjo/OuDI4T5GdZXgHmDaYIaL4I09UWYq2WKTHl2XQPK717AZvRcKUEjUqTrzjB+XqlSea97iWndKFinuERImOQvxj0Q0aEAS1FVF10Tj4k6pM1ABssP9354j27LtmqNYfEFl/co5onhwxPHn8e2OMjh6Y0kOvz+t0kK2WFA4nIW05cuet9RXAkV7bNz8v0ZQYLejNdBDDMAzj9uecJi/yH7vmZ9MdVffpt6DTdXc4e5YwEKmA5XqE4ChE5j9mb0wYol1e9Ppu+7m/O6l7TqUOsENbqDSlZreESZazJNGKOs1GAuntoy+jERhRQb9O8fmY6onZNFJcuzANBSkhsYcOkWVp6L73r/ljYN05wimH8STOmmc6M6cDsquZ4SfYfskHGUIZ5qF3vWIgKixilKSJ4kRC7z15JcncggB1LAWmrNEsqMvSLPb8jmkKN+TI2UNgvqVJkOQC/p3IDLacCc2keX44VzMsXz4+eWE/TJlM2xG4QxiQ8OfEojoTl4QTxOPew7TxjF58m2dtQHj3hel5LsPuiEgSNx4zQy6fYS6D+xxELdidBloX40MtZKV6fjQ/kkC6TW8oO2vBBlj4vYYhI/WysEUGU9TC92vaEvMlHuYwaXb2fEO3zxA2xOm5UfSRwVEa0XXDTCvXzQsCryySQ6nZ4wVqSnT0jHpqOsjcvovzcNbA6QbhmKziI7oPBV76WZVcsqGkGOeOqLP3Vkn6rji+M4Rx2XtNHKXpG1/JvWrvx5T5N2pCSX2V8z5WYMatpHAvWxT5fZ067DSc4o0E+YRq1NO3xJv7UbxZsw3SnUek2nRPJOnRMWHuoH4gi7z1iJtuO0Lr3dH79RQwn5yE8ZZ5dJ6GkByS1bAc0LEW+D2SvLM8vpehonOr8MRa+ARcqsSMDBfe3mc0cJZ07LmELgAke6TNa7LRZ3f6qeFhlkOF5sVHRUm/ZMe6G196z6EWDfTkbaESf6X7NOuQS1QCgcyvKzYEDJ+9bkLeGV+UrWNPA/xn+0GTbE6zy/mb0NGhsvi4+dzBjZisFjzZEdH8uLJMRI+qL2MWkbBnrbenh0WSITKgM0liPIU9SplRC3TRuYd4KRe+Z35AIPJ27vRIXFp3KM3/HEQuyxLFRslEYLiwE+fxjkZ+uCg02g/1ByRGVI8kPZ4HXF7L0cleZzERbOTKCf0cEuTwdhqVyEBJNClVHYcvwCSBgXbf6TKnNfN3nK2HFkRgzFjV5nlZZBa9uP/sGf8mzz0IXPA0aHzX3p5tQWreWINAh23xeTSxAlNwgUpWyO+iPmCOQJoQIrJTQZEPatLJ0G3f4/hs5uXbjgjBTjoJQdYoN8NMUBR+Z35Yy392MHDOrtMTRPq7nbwj1zhDOmLQco7nuWrOTYsxfDXb/ek8vfTQgYt2uNLeRUL2903H1rlEb6PpEwvmgHPCB9eJuzQ2SHIhRVh6+WMLFuN73iWX52Y+eFWcm/+F92HGLs9kfRNIvzUEHRs8aXuCEVmF66L7NV8Rza1fCci2LdO0JIy6WW4S/NzQC11o+zFRyMc4aQ6qTYheLtwJs+l8JARnxJ8wDMMwYsdgZ/2yuwttSRotgGJm1kT0yQIIz13MwaXbwybKmaCiKcyjs5OLMXRMYLWlL69iPOBofxWJMxL8a1Y7z0I6reldBC8AP4qkhEWLOr+Y3U4ceq7o7vDMC84e8pv2X95LZzUxBQwoYnmpGwdfEbR3oAFvyDDMHAS2lHeiIROUizP5djpRVfgYokZTpibS8338BEnybSPXYUfGIELkqrirHqgSVI0lEuJGf38W2PunAyppQHYLidoAuZ5h7DnKAyqZQW6qln57qMqe1OWM98vs5zc8wqPzQZJtYiwBMpAHUkE9NCcSyBpBUPPBvVRXIWTDnlySjqZE5NVC5pmWXX9wAvzk1pYh1UZZibjFF6lhETcMk8QV/z3DJtunfyLvtbS6dvh6uFnQL/Swcg3iEEg9GRTXnEnc9wojVUqMD9bB0FpVY7V0pe2C3aYH7k8/5tKdeJs9EvOias5n4QuJWq0RcA16zcSEx1srD27ctSu+mAXIQdlmuc+a1H44ZVDa6mZkiJPl+2/OfFOP7p99JhHjiiaJTxrquOjQc+EenYS3H9xhTm2fQcdObuIw8c1G2Cp2j6Gt8Lf1tgxSzeNrfNb+c3sp3ne/REnwKjVP5h3sWub23Cu4XbQJV0hrN/Md5HsX1UH1Wcpd5yFK/YJDo/SyeKMaVWgvevWTdoMG/ukgrJRxYv/7mVytFYnHQ4EfZ4gXwBpOhMtDFCRLsHFDZiweqmW6oSqohiHg6MvjPYN+ZkvkUEPsRW7lDFH5C5lGl+l3jtofIbHjVU1TSCBqe39ZCN/k54R6VWeLrLjkhV2Dt8a0KOaEH4m5t4tUmtPbtZVlUfhXOmnQHlaOcmx8g3eN+VPoc7mfWdN+FrQ8LzAtIByCnVE3YzV6nmCr2Y08uQGd6fDDk/KcCc9mfNiJnQXE4kvaO6FDe79oyoJxN22NZXWLbQBXOuAn9D0LmGDsage6t5PEqVjOzfGxLrnixaWUW+ZzqvtaC8lBk2IpTLC2Lm4XTkxNZsdv/cUwUH9UvJPCHwcBD6caG9JDuWqX6oIXPsldqb1mPyh6vQWqOEpreV+t2ZhxznPz2hrsAE7Ln++YUDUYF38pk8ufmyaNsmJHlLP15OA3z3wf5qXyUeUwvXF+iu4CkyC08IC3UmTRr078GeBJ7CKJAoHHq3fkbVAPnWvOKP/j7DAF+pe+Snk4K/qahgqqKyxoSSy+xun1AwhLZm6LFA16gXio1NRfwFjbdveiNHZL4qT0Ap9m46EHo+MGtIa89xpgUtTBjPal81xjPYnbfhTXyBX9IMCdxIXO5y5oMS7KWOHrD/2wrO9TmdwvwCtsVu2+ldawrlWYaIiYcV5pM35yQkU2i2YWh2EYhm/PUb8b5A7YSC/ba5FgotFxRCZwJaJqBh+4jmx5DXdFAEoYsLPfJPDy2Y5BZ8UB999/4v47VzmlqBtqMElizbiAan+f9EDL7yQaLxbk5dDVmqKjYisxk2pqMTP/1/+ofoZdjY9GfJhsOblL0/DUcPko3FDQVLT6vnwA808MvZXiUrBEXfshXE2CKWbOP73JMY+R/MNPxyEC2Psy/aHEttTQjBXXnKYfiK4+XGqsQwKd8kTJjMC36RQi9sG3rx/w2FaDvSo2jHrLYcETfLgMCMZ+LKhHAk6mGDbI4/JUYYNSI6bw5ZqViG3dtfj6TitlCeQ1iGCWOleygWWmJWwKBSGaIq/DysijnOJ253TSrRiPpHBLmBx/W4JYeesj5K9QDTEzBedIMlA2BuOjody42Js6kpq8auwWzVBgWzUq7rlGdcpq+SZdcHOlW1rqmSTbFaj90n3AlPWm9pkYOYSaGeBH3zlzu143LIlicFyLMY471e7bqH7txjIFpXWTkVc+oHrrdVAgwqixXgl9B45kxD5OYngZOoROYICeK5BiKcsoHXU+Fqz5gITt/SikcXuN+yJZhAmQcp/Avj1OVlRGqVc3TyHU4wZv49m8Cuv9wWaeDYSHDjU11pd1FZc0wSGskhh76XhfWD6RL5/v3+XIVA4X+OatQ5LckmkMtgCbKt33iXWsQOD6HNix/z5dpXgfIpxaXNRYcYkXKz7cADA9fsNzG1/CBuvJ/b/H/PU7HPCOaVkfEVJoIUOJQAkidSI+hcV4db2lUyja+pz9aavziNPr8/hS9pFOhaQPK21H10tH1Os+tIlqCPFoaqjr1OaN9P3KyPwFrR+nWqhONHvjDv0DqwVlXoGBOvcb4khPbBIBMQHht4CwUabh0OGFHX1qyy3cDtPt9VqwkjqBhiBV2r+jVZIYvjUYa0+BURE3R7PQoINQXtmycE8+mlJMAgzVM7US1MF1nfwgClIW/ht3E9RcdjNVL5c5CpSLcGgW9ESfQDdVD2sEzRaeLH81QIrw1mEU3SeTG/qExNQTm5ydAKvZuygoydmmdhNno4dJv0OZ57Pw6r0CxJB6IHiJ6r7lp9GiAJ0zxdf5ZPimSse/ISAk+YnheGsHH8hFynbAFz0Nl9hvGqfKfoDmgt0RMBxEDgqgIefKBmQ0tcKHo/4P8pmEJr6+mE8yznLzfjcgj2g8n0uoLfXc2DUO0JgWusY5QUF8eDtDVS9cMhj6rS8bW6xsPuuPkNzV8ALjuIIQuExDf285ck1sBXauZK9vavwYpFheUVK8do6T7brbBLXX7Dz01sYb6LdqZDorDpHe8vUKzt0YlZZOLIXXRw6mw9CB+ejurAscibnqTY5qVWAYhmEc6ppaqnJs0xMifPX/r1AK7D/221HO35s99PMUFbcFKy9bPW2jkjqMdgm6PXQztguFzQKENcdUQQ4NTJfqdHTFH/donCO4COWBQtddXQOiyH/LGuxLDx8PPh+fv+7hQX4XFp3LzpVqL5z78up0W1SbiSLIJ96TOIw2bfehevmWj8ABJ1rtTKuBGV+tGILF7CzLEzORWxNHbHr9XrBSGfk/rkLEAOjJhCowLlkn4swu8l4GF6JyY5Pzj2KVqpM3UMFfiQ3ugSH/C+Ipqd085Se85pRjA7FlI6t+s2wkdx6wk850yE3Q2a84HAEr5Y8eYDtGpzW0V/ThufUmmQdpKZTivLowc/npeFMLniz4/uT8Dse6qltBU/2AnUphGd60MSO1Sn5sDSGyCbyK4l9WB64+K5cAge7mSCmUMBcmbKZEaNdMUjb96dnnBpl7d5SQl8JZl8PvRdQVAOUaJdxE0pB30cUW73aU/8QGoCtBugt4GshjYkzkx/k5+LfH5LFCIPz99OVpY5aRrNJ4mWqemD8ZRSM9rJAwUw5c70QDnEnoNPYh2PBCrFcd1+VzKq1tEJ1k282TtLsfX89TqYILioBSnhGFy4LipXtoPLhM8l9vtgaVdnMqdGKev/vUwT+bzOP2YeFYb3EnMV2RnnSVLTuoSDy5OR/NlRnXG0KWq9d7fdsZbqF1+Hry6XPEa5hJxVdTruj8i6UuFunPl8jKxStiPrSt83pFjVOok5J4cupHDiQyXlvq3lqAH8X4+QuDEznhdSS1UeeweHC5oAaiOQ7RdgIKeCrxatDQDrd75yj/4FTg6TZ+BX1njJbCtxesI8BaUOzvx9qA6mWSkN6Fe7hHUfg61w4z12TGTYNfGq1UoKrERGykAcsNeBLv3DPOnv5+FEnp4JgYIlHILGgdXEAZh82GJBMY5w5fajuDiW7qxTg2uhE2m+VC4CBxk2tcNH8w7HdKpI69zhlk6+spj77SXB8+S0FuWHvL2IfMHlPSNqUfinOBtM2effVBISj2Y59jJDwS8wDo3krokIMgbOZGleVS1gikGmdCWk1eTG+RRma1+ZPcWJ5gJyMcUTXfU/34BoboZI3ILVfnoGkTv8opTqfsuJpWohjw6GEXAnMGzD6RPxCyhLvDb9W5kgcr5Yhu3TgHv19OSiWVVxQNEeDT2ArUSkd/EnhPxknNKyuyYhpDirYU5w3lSJcpfFkvRCKymZftCtvjiDgx+14r08T1/0hQogMdKCZBpe9rvYaK8Idsus4LyTU73rqJB8hZv68Qg6ii8AtZZqnjTTNDTnl2t17HbvOP5sUhedrAJtQ0vpWahACfcwlIRXCP6dZyj9W7LJN+BqVllbbMfUn0KGSgolQdvIaKo030rSV+SwUVXRoQtSiWnKhDI/h1HOoEkdG4QbZyAq9o/I1s4QTdjMaIrDhBKmj8F1nnBFGj8RXZxgkEGs1kfRZ0AY3cyK6SIL2gcWFkKQniGo2pkV0ngd9ovJpsTILuC40wsvxCkM7R+G2ymAjiDxr3Jlu/ELhH49lkw0TQ3aOxbmTLiSCdoPEfI7MniCUaWyNbDQSe0fhussVA0L2jMRhZGQjSLzTeGVk3EMQPNB5MthkIrGk8may/IOguaSyN7GpBkP6h8cHI0oIgntC4M7LrBYH/QOOXycYFQXcADZUs94IkaMwqiyiIZzT2SrbuBbZonFQ2REG3QWOlZMsoSHs0LpXMiSBWaOyUbDUS+I7GD5UtRoLuA42FkpWRIG3R+EvJupEgfqLxRWWbkcCAxlFl/SToWjSKkl31gvSGxnslS70gbtH4qGTXvcA7NH6qbOwF3REanZLltwTpAo0/KouKIP6i8Vll67cEHtA4q2yoCLpHNDZKtqwI0hkab5QsZUK5oY6cXKFkCSo3ODHNsXCdCW1uqCMrp9BlCRq+ceLV+8KYCZVv6silU9hkCcoSJ8JjIb8SGtbUkZ1T6F8ltFnjxG/vCzETyt/UkR+ucDVLqHzixL33hfUroc0ndWThFNIsoeEBJ569LwwzofJAHfnLKVzPEsoHnFjPsbCcCQ2n1JEvrjDOEtqc4sR/3AoOhDJSR46ukA8SKh1ObD0WVoXQpqOOFKcQRULDb5z47n1hUQiV39SR905hfZBQ7nBi8FgohdBwRx356BSGIqHNHU6881joCqH8lzry0xWWRULlGCcevC9sCqHNMXWkcwouJWi4wokn7wv9JaFyRR354wqrWoLyCyeWHgtXNaHhP3Xksyssagna/MeJDx4LqSaUr9SRsyuUWoLKDifuPBaua0KbHXVk4xS6WoKGQzjxy/vCWBMqh+jIG6ewqSUoOFAxEkguDQd6RgYkZ8aBA0Y0kkvmwBVGFkZy9jhwi5HOSC4XOJAw0leSc8KBTxhJSnKZOHCNkVFJTodGc1m/IugaNPJMdpUJ0isaF06GpFRMAgPJSErPZMCAmaQcMNEYSElSrjBZGAP2JOUWk84YSAuSkjDpKwNOJOUTJkkZSL2kXGMyKgNWJOUGk3AG0kxSRkwGZ6BfyJdbnrIXWu4T0yA2LMTKmLw8PiZ9cjV0+Nux6fznPy/Df3GsOuZfHG8vGv3fmC3Wa39m1ZvG1146iW08ppv4r06D6G276T+2z8Pt2ufctfuCNT8QfgHbxWb8ufE83f/ieFj8O2tv9T+Y4M+sx3FbrWU//VeNT9bW4cnInYuwXWpfV8VJ3B7UbzVYuqbKh6WLHKDLPKALYyhd6UGgPSwdu9s6f2j4wOGROxjKg6HVzREd9feAM+rIOPoy35mxMzmL+eTWnCunO+bCqc5wLJlzcLITGsD6TnW4ucY/f9WYwUVZeewXAlVVG0En6w5crlxwrIVTK77jZsk39x67pFD0VA2ToL/YQI7o6lfGBpncvJf0o1Uzy5s7e6pSFPVO25NLpTpiUNkHUg0N3WmmtKftRz3CcutSudiZMcuw36Id9xsL6hZHnRd9RRzf77Xgzlt8d/m3eWcs0+yBm6gkLzhuk+CwSja14bpirqKxuIn9qWNN938cvPO1icUPnoOdU8vNHj+flzUIyc+sytLSvoxRsXeddmcqyeBUo39o8CaBDFn1WzonOimoXuCUFqEemWS+OBEn/Q3zkqeZjDEPXOL8VfdKp2xIUT9zR5oZnSdiZuV8oF8xzfLEmGkeT6wyF05QGcVOP+C43jL6FaAH2UGYmLlxMu8qAdmbGFSy1vfSBavJ8nzmMS6J/bdm/vvJJyJaqQiLqGkn6JNpn2ixo6qIxay69Po9O1JmwC3wkDxTHv3Ljj358oHBuCMVFtiTRhbKPWli4XwmOSMeSBWVhIXv2PbXG9Z0cDvZ1zg68gqioHc4R95DBPBsQ4LEsV0WN1V82C/DYV6oqbY3/Vw+AHwZTvn/QDurFMdYEUuDNkGZIWjwmJB3EDv0DhH5I4Qog76+Srk7d0Sn0CqUL2zFKxxH5AJxb2gR+QgRK5wnEmOAaB1aQXnHlI4yHGvkDcSj6Vu5Q/4MERyeF8gdRJrhmFEOoIpnHK+R+8bHcJ7p5/KEfDCiSThHKY7BEcuE9gLlA4KMx4BcDfGkeocO+dYQMsFzL2mnjugmaCcoR9jJPuP4B/nKEA+Kdo78aER8gXMlMYoi2gHaL72MG/nOOP5AvjZEcX0tV8ifDBEGeJ6RkyHSHo5LlFNU8RHHJ8ijIbbOwMMr8lcjmgWci5TGpSOWC2j/oPyH4AIeL5FvDLFzew4gTxUh0aAvjZTGzhFdRNujuKniExyfkXNF3Cc0QW5KxB7nFxKjGKIdoW1RRnMj3zOOP5HXFfGY9LVskO+VCCM8fyGHItIJjiuU2qjiiuMt8qDUQE5xLn8jPyjR9DifS3FsFLHs0d5Q/hjBhMcWeauIp4neISHfKUIqeL4nadfPiK6Cdobyw9jJvuD4F3mpiIcJ2gXykxLxLZxPJEZmRJuh3Uh9nt2NfGUcv5FXjiiDvpY18t4RIcPzO7IZkVZwbFB+GlW84PiAvHDEdmDgoUH+4kQzw/mXlMY4I5YztE+Uv0bwCo9r5J0jdoPeoUX+6AgpVBpS7rIjugLtGOXbbMVrHH8jF0fcL9A65KMT8QDnfyTGoIi2hrZD+W2m9CPD8RDyxhGPC30rn5E/OxFqeD6A3DkiXcLxCuXQpMkMjorcM0WX6Vv5inyAaMBZJMZgiCVohjIpATyCXCGeot5hiXwLIQbPGyl3lzOiM2gLlErZyj7iOEG+gniIaAn5ESI2OO8lRoFoFVov9fnCuZGvGccK+RqijPpaLpA/QQSF5w/kBJEqHCPKiVLFDceCPEJsRwYebpC/QjQO562UxtYRS4c2o/xTghkeM/INxG7UOzTIU0NIMujLq5S7NCO6hPaFsldb8RnHF8i5Ie57tIDcjIgZ5zeJURzRTtDuobypKVUZjifI64Z47PWt3CDfGxEmeD5CDkOkFzieo5wpVbzH8RfyYCKgn8sf5AcjmgHOF1IcG0csB2jvKJ9KsIfHJfLWEE+V3mGFfGcIWcDzo6Td4IhuAe0AyrGyk/2M4z/IS0M8VGiXyE9GxAs4ny0BiNXmQJ+bezRllOgrlV5puVs0ZZQx3TD6gXNyhaaMHvc+CoEJ0HvUct9QZluUKX1S+dhyz9A0o1Seorz1ouXelDlnnJw6sq84Kxs8FZw53TF72nI/cYprnNd0TOl15zGeapzif5yDXcvd4anGqdOO2v84l17hf2ytNyVSadV4I5to4X2KKQ6ifBKN/aC3QqpaJlU0s2BKHHVIlYPU2GLrC2lqVfuVhqgykRho3MkQU5z7T6S5tbVN0sJC+yTP/TAoD1Jbi6ZeslbNfbqJRqaUJQ2Nci81rlq7S/QGqEv0e7QLAN+wJ4wBrySssKJTAheobOhHO2WpmyiMbdxGF/iG3LsTF+Dwa/SVTXiO21jzuTgJp3U4Qoc1LLHfgH4bt/SL/WllmepMs0j2MY0uNVk3SnCowz+RdHJQCY8r+vHYjK1Wne6cchyir+1I8vG00KPXLv0GONVn9Z2OmDCw8eMDqMfGz6SzWsM4BLG63mFpxttT2sXzk9O/OlzsNMJjOk4XeldEqoPabLGs7U5ntzgTVTVv1Ge97kwutjXf4JX/TrFq4u/8R99dvJaL9TQErTbtxiT9vGIS/5lY1xrL7pD4K/L3BXns/yXf7sfdtpnD5ms/Dk31nb08pNN2ubkpVzs9uRz8wniz/7j6M3y9fqwO7Ph2vou5k/42PS7qZbdYXzRxv+02R48vZync1T/j7qLJ43l5meYhhWFazdWP7unXSvYf+bRfT980yXyVxWK63H260NfW63EUNXs3J8EUIKeAbKEwBFLueaEO64zA/Uf91nqNg9bLoN4cP/QmMoLvlEaSrJ4NPvk37L8sCnUEqRrVCTvWJUIfL2+qSzZRI7hYpDe+1wn8SqYhlagFXd7ml4jhA2TQ8w0KrJzian4D3mMbNRgLGS65S1pLoygDbJfyFU/mKErmsIr+/2QgXDldCyAQbb/+npQhGRPgY2jQi/fTDo0VMlxhja/d3XpU4g+mVvDwIYF0TDYnEKBOkm+U9j4wpOMzTvgnl7ePfyPD/bxOXhq2q+YbanqipRtby0l5kKh2LVR9b6vIHxSCDIQSPKWzFwaPL7pIYxtNS3GcZnnb3+d58iCBQBkygh/ayE5oFT0toq7iUe8jpKvvTnSLKcDv73OfRD2FqyYUNO2HqozXApUI50Z1iBfriR2t7rhJ6gVUYbiiFCu/ImF/+z88w83yrZ9ifBf/xpO6k8SHFrSTt2sYXYtCxgCIfqQbc1XOcThPhKyjVrNfK4/jz7hu/Jrq+IavUI/xGRc8I8fD9VIeY2drDOo8393UwGRoBBS9VpxPfUU2JbZf02zDFF6YEhhUStBLHWHi9+ISkQbJKaQSKchwav3VP+c6B86nZv8DKD/ayDZ+jbrtxX4tGa4lsB9O6nLxywlEDMfQwxyz0S19vXSd3L0WGDGLtz0jjumKT9DFFcog3NWy3oEX5bKcDXcrzR88j0gauZCbt8E+YDi5EQ/Pjic3BIKi8FOTDsXD3OomrqXTRcc+y+dWzVOFaMroVaukJJAQId5cPKRWD/NM7kDxcFIhgUA9diiPnjEIAYq3FqMzRfIjUYNsKGl1rb2W1C3I12WAtCQT+0QXU5LhvZGjlsDnwcPNtnThJVKsgrRHcCfvNKFG3Vyj0CbOoJIGQ+oFZUgqvUunVKESqTNQsuyqSSVqqbsQzrMHzG8rB+jHJFBJm4A0c0mF+isRqLMi72rYO6lZEYouE/Xdt9H8eGHCmh/Lk32W5fx4I1BXiV2VJc5E6JSpWuFEVLoWSVP40ahGVyLIYF6HQgZP6GZCD7Z6p8A9RpEeQTZVQLqL4ti+07HSosdPmIHOAQr1+/BK9S9N0b07rSUVu/JoqqLFoCcnXbcaf3eTr9OSDA+JdCac5Wi5eDxJx6B/CR4gzdgn/qjq9q83Ep1M+Lu4ZwP5oVo4udDdZJL+g0Re0HhFY+zqu78iB7TgMt38rUeRC42SSdSViP5LEnpBKfUpIFPsid3o87exlmxjAE2qsepK3MLibhiFBiqOo3AWvIrA3MersfLehEjRbBdpjaIZMvWxKdrexzVZ0vptZ+52CumYlx05Vgqp2g0nN5OTsbp72yehELdxP+/p1XYgp2yeXsKpPSa0xxPwk9olRrMw0hsByAf98ZYN1R82dV3zeuP+wGFZhmOcnOTaoG3UtLNcf2jnaVMtbpUuwm+wcugUvAPXBl35v/RwXe13F4k/9TX0/oX/VKPuroM6h7tYqQ+ho8765rc2ctFNOBqT7a9pxHp2MSpB0NCyBDnZ9cbXPjh3K0Dv9mgFPyyBt1NBmjeibL5YEKBMfMCFPju7/LGstqRPBPjcFIxtMlu7JA/U9BLL9MMJ1pxTq39AgrP77kxuQ4P9q5i6yH4e8jzK70jiZXBTPerpgnyBa1oMRzcCBbWkjuleTn/y64R/9tXvHm+3j0eopqSmoCVquGMFi6BlGQEfoXWzCDB70nDc9O5dYvMWm5NTfz4R0/2PfWuXRdC6FbMQr//Tv+zMGW0lCXHvCyX8GF/auZNLyZGdXH6WZvkVor8Zi9i0mGC5DB/AOHBneetJcl5BdSW6HSw01Kk1tU4O+91QijXnSoz0t8MOiQamt1aN4eamLWV8TdkaCp0wLVjOX4jsGqH4DcbiLq311fUtpDvIIzDwokRLyW55RygeQUGOjkBMYBL8P62Eyccbp+lqsAr6s7+CMvPIB6DMCForJYS85p8lsPSNxjhe1iixkLp6e4SfttoAXu8E+i7uUf8QjnCpCe+g6GZSZICFXHDzi1+eCg5u/Pir/E5PH4Rp+hlJ+bGkzjZR7cb9if+LK2t6Zjk6mJ84LUqlWFyABH+U6yjECy1RrsUZqeLHdv3+ZCB7HyB35Ha3tx10K2lVrKU4e2a10EtnhY48ZvGEsDjhVVXX6DHc0SdI1zRlz1TKSOzj8fexT3p8keP9y2Liy3F91vaK052T7BpuXcLibpCpq3YqjRfQ4CsNBvnoRBq0p7H/hNLgeADUzUtfLh/8lIl/0wm8ooVhD7PnSfdTByfP5Humb+3zepcCtrsno3h0xh6YApdVhGGiE1Tk9eebKvYPkIEL/ZeXkTH8eWNaDnjXXRK2PIffU+fffc6POGDpn0q2/oob6qpZml5XE+SJm0MQv67o1tXa/FFZaUe1UMLcD5sFqHiRP2RmRaql56BYo5hN58IMoVvmbBAWQRhRu7f+hk969spX76rXy6U0pG7GbAPLwR6f4ScO3uJLjOKaOFIjXvMZyYoBiBB0BBLKNYs7Iy7QeFFSnSjHU0DKuXNECIThIhfaJrtHN3HhtW25Dv5MB8TPlg8vHWKw0MzpX18xJTZa8oYEFo5lAPeHSfzav2pjgOWVTrSHmusR46LxGS/FRCNUqL7KYXUf5gbTooWzTZK9yu6MJdaQYz3G4VT8LqbqaTqZ0gqd+683DI/j0+Ef1V2BH1+lt2F4LkqOSEjrEkZ29fhbYRDmnIO0THxF+i8z2pYr/WNAhd5QYPWzqYwBl906tTcBwwTyWc/OUdbOnfvI685qU7H6ske5f1oIed3auW8fAG140BzltoT+p/QkKEcjXRp8Grc1HL4p1O+ULIrFUn7hWbQhX7nfP1Ku/ck40Z+/A/uJQWLMsF0w8/uKpv79dqhtjV/78/diWhZX+teIbYT7AeLf1J5KshUhjuX0QblxLnG31fMLA8oKwmWBctEvZnDGLBL7X9a8ylnIpipMlZfGhqLv0C+WGXXjl0F+XBkbn8efW/Fc1D8atzuX8UfDb1Nj9NgfX2bOfAU78FnljoPD5TFAmK5LT+LOLIYYaohDexGQrfA8HcA2K5v99BMdGojWlLFfAUDYezbeX18/hUdpcZ30avoe134PPc2Dn0uTtv86FpBJU7vyhQTz9In3ZW/SKbuURmKqU34AgpRzHwkAvnFqPbThYZlFlD4mh8flGLhtAcTl4tXrnrMlBEcAypuUYvbSay1MIIxMyoXCY7Rp0KE+uYl7Y0I+p4B23shmy0yKAM0FcaHslTY9f51xvpKFtYNybuC67s230qVjCk2GgubH3pTbE6rKaSZEXzEXubncWmfrcy7T7HJTEDWyvjR43E2KeHlvWft/LQ2dhsGg91biXEQnMlJzfdWOubZks8PyWjWHW+ZN5XpKmQOtDf2t2pgqtZe+sFvYHOwmq39pa6Q6X1Pu8rZ6435IzZ82JFU7LeaC5naxkDi9kiG/+T1sBTxVUE6InduHhlMXbJaaCXnVQWV01IVq8qGWUBsL+VccpZDFVnUcwxNWdSL88k/ZNEucYidCWOrsl695v5+7wGUvfR5fzofBf/mDH/u0t74f5q0r+VMzvKVXOpkJ+an75vvU9EgL4UefNT8TAtbbMMhvwBfyo5dJ/ypsgraP2Zsmy2/apeslSg5KUfwNwnXrf5vTf9Uw7Hl9MK/iXL2zbv2VvmC+Z9y2Md3m79YWwxi9jCIUV5HOHPRExrFzoTviJyAffGgl3lQoadaxv99aK71i30/rc6nNh/M6n116Cc74V0f+lT5j953kj6ZtUk3Ne9DdeCgFCXBPAgkkkFsLpBRh2a/rX8f40OJTmN06SloyojQX29GHnxO2Dd2qjuSJ0iUBB1DgR1XiboeKGBYchHPcm9Y+6zSQjR9tQ5vdKxlTlMT3gef8q42wBLh6Ap9vHMwH9M5nB4WTSxD4ump85W5hI7z6JZMDlL1kuFBktXC3bPmbXTBUvZAUouG9wQvwvkrlz2X3kDXeXL4+UboNfsPN+LjfFkzTYWa8VtYOhd0j5uYT8fXnV3zMTpQGSuci138VvfZLKSVF9JBLEt+bDVYQTRPK1yVnKcRVgeN73/NLnLkMfi6WglP4zgQlgbzPTJ/D05CxlQJlXQU3ez7H8TGLVR1r7NHngCZtv94rcH63DfBQyLW1JB6J9AdFEkgkt/2jTNRk7hCW4U5hfY7AEA8PzAJmrdDGCl4V9IRYQBKTNpH5fOOXqPtVnXFL1i5LZK4Vw7axXhsLRiD98GakVo70TiKy6R1xkGwdrwSusTpcGp28o8SAjykDIlcR4vuQrpMgUi0ATT22nT2icpa3g8GlT1w6hEzt+F5XJDpasq3etU8UOhQOWL9TwU1c0ejkSPoZXbdJRaqTETGc9x2GWpQ6IRC0Y5ORW6Q60ajlLVinqN2/3ndLvFQzEqmO0FfnpqpbKXWYieq8Seup1Q6xXzJZyzTj9XLHOEbkcol1vUWlI2jf1k1RH1vuGvrw1XMQxa2dhqYfpxz9onElfp8vUlkdSqlDZOcZTahTubWT+AL9UqB1abVjIDbF68C9l1Yxjgb8ulAkXeuplNp5t5QNaz3ThRKNFpFDIU2aertjXCtUGrwwonMO/pVeqa6vLdcRoJLIrtPkiNS5spjo1RElsc1EHf7Y8HQ0yR1yiAld3juFN0GyjTU/3a4vWDwUxFpneRdBPvzn92ISVVgkpw/YsloX4v43+a6AfSQBeBqEtA0Jc2YIPoGNi0/RNE5DQIUGMRkZQ+KB9AwMlhGrTVzMv2jZ6rVaKBVC9e0x84oAP2z/y6fsbSTwleQ0yPO+UzaPuvB/CWyobLVB5vnl1fbPCgwyet6NvFgP0OHuzWgkfRrGf9lvm4YV8mf5TtJiBUTeq6d5Ix45VWrkvzT6omLK1QN68hURG8AjvBpJBTfm1YXKsrE+oKEEyryiu33l8whYYi5dyMxu+GzENbMJF5zI3JE0PhyvnXBcETPuz3yYbxgyvEPfooE4h9vSnGb0VO6MwBYtQQq6mYsfvFiaOVhJlqQPAkYT+VEzmGL0u0fSearp/ocYD/ihwUxC+eHJsWngD45RPkagFwvFqxF3DKWFm1LgA/yLOCh4JRwIDZUME2EQIseGqUNAezNF5C9HLl4ecHFJA5MFnoCImLfyTtPqyaXS+eEm27k/T97VejSXp44XRjLCbLcYLQjygkoQGJsuoBb5vaxKneFe9Qtbta1nFfhnqS9UgA+fZbgvGQGyaaW19o0pFiRb19oCrk3zhNOVk8qXxBZcEzylLSIKvxmX/7g+K2WTjfl6iwwF/lvwd/KHOe9t0UGxLMo8dGrjfM8WShdayhcPdQiMqWeyLeje/4r3J+iJ5Qu+oJ1pJig3Nw1I7V219lEiZrnXCkfTkfALne0aCQhyzzJW1M9cdC84VSXnUn0YOXdz8RRA4bULJg+8Ld1bbsiSZdaT0cJq7oP2MwUx4lxB+1msMRDnHht3oLTonu+R5cIGAVoOzv2j/SZRQN8RKlp3IThENY+1RZfXOTlTsydI21sQ8Beg3IH2yQSdUE4Zn55KQxXfzJAak+CD1n4Jmos1/YBzT031cdsbn05rHpdn1DwBl+25dxRZmuei8NpyDNHDC/6mRpSfqmtS3uctAVSoE1GAPlSnVzk1MVh4paLednMce+HCPBQE0pAFw06kjn/NNwGb+15aOz8+HAlmhDCf/b2xxAmzLD1hH3qHIlmAVXI3XgcJXFaszSGYJ7WQr+TBz2UWExyAvgFA4KDI+lYGfgQe0CvW8jOZy15RCJl3CVIHcJRxbnrEAQ0acM13scEshB+dEEVKy+VdVqS/t+mLdVZm+ykq7A8o7MEVF0xMkPGxQ7EBt9cv7yoWGpDE1PQnUNoAAlHFWUPZAhwFOQYTf6CiRYzXTuKlL7Qg4AAS7+7+LZqbEswEdZ9IF7SlcQmTyhMg0AHjkEeEPTwWCzMr+0mXYDA7c3853ARWVMAA79UgJrK6OusHXgA1jtCtMhDkTchGDyQm2mzHegGO/bXBZtIOyKLHjcO9HO892GQy2PlbbIZk03JnNiCY02GYntKqYhRuFdh3318y/plw/Tt8jr6edbH6jLvOsUBTZCMWvvXhWK6+pAqqZHoJ9ggLGTl26luSH1egvbG3QHYEWeKfxjVMcIKFa9Yktjo8vucEVDGwB9UxcgwBYxF0cgszar7izZgrSzuZVLsXxrdnCxgJ+zyoWoAJRmo3f41ywOAAixMEM8hMHSfQiqyXGM70p9VU5f4lZti5L+olVGalHaU+dgklCe96VEzoiLCpBcxcZKWwMeSRnPMCIbzmRrxv2V5+m8G0iok0FEUv6836f6YIPkxe6Z50bv5B1YEuH5ZsgvQ7OKmGrsQfqWA9/IVBO+nMh7M64llJbzI6spBEzkn/6TRYv3kzfE/JUlN7BrkEIUeFJaVLdLGvGLIfPgSUKOD4XsmcmaMI1dOFa5QIpd3FOeCs/QByGtWYS127EFGo350/MmQleE2e+Jk8yACshFi6tj7ClmY0jYZOXDQRabHtRRPKawQ6gihuHIqniS0GM1gmRlUN3b4lIbF+LNhc2hE6856JULb+PdV7Sd2Gf57bVtOJX5We0Ltkg3uG2iV9EtFFP+PHQ7Dv9UPIznHCrA2G48GqI0vBlFUfwK/CWAz+84MA2JlTJZGG8Y6n11lDbFOha67t9OkYt/1oKQFJOmAkNiYmoK06L7gog8QC/uKEuIO+kC2APKtR8dzQnPuuJap5ZYnBXCnkYzhMbyRDRLUE7DJxEl1QTOAsJP5XhDaIQybEymbHJ7NaMAhiJd15mYBkIYVVFOkfgS4tYJ8DSeKmEqXeXCcUNQC+EMNgkSWNZbEqmaIDsFbA8IS3lMtBmhCPZwtyOQJiFWfZNI0g9s8V/UMe3KUn1FMj9wQ6VAJ52kerxy9BfiHwWY/fRjIH0LBBXaJVzBk6TBlTFsBTLuhzkKLTAqdJ2LEAyxYkdB/0jDYTuQJE5kF8Y1RcWEJ3USTbO+mcCZGZPVNHszTuOU2mmZ1WHYWM1Sbx4T4nUrQPDYFIi4q0zcOl5aBAwWNe57yc0XwJEoMBL1HQglKgMPH/rY/MkFO+L41iGYdVTQGgBag+oiyNAAuk4A6laNB2xYnh5hul9SqJ7Hkp8votIiINBk2ieClQnN9rJlDSEle6PONmby4hcmHe/I1R02UtFvg/nHxa/zrWmqOKcbVGtRnJ6cULJ0c3/puL/jG0cSprp6Wg4G+S+5q4Zy9GqSWZf47TWUKs1ohwkOQyOh+nWIWhZu6yTNeWGYQ4ZEzXk1dvoGMhUbdMFPZONE0xY/QmAxWAsYnxxqtIP6PG4NlNMXBpx44JRY//GrrzfsIxIkSzEb7LYNokgCt0Hh4diSD2I4HTFWMxwgd5yc1sMFSsORkhyvIciUWaj3DbgrMIhxMhicOQzbCs5aHZIUJjh8qqbxI3/Dx72OPhJC5RFybyDokUiwYgvXs7MHJAnD18NwzZ0OHTixcddIoHs2+zK28FrWlmDe314w0Zyqmon2MmpDZaqWVuHpMMps3wLZcrS3jTFAjA5qiRtjKZCvxFrlZc5XU1mMZuGoAKS+PHaNyQvEbkbNtoC4qxtAAuB5/pOayIwNxgoIi7+VHRUCQCa4Y308KVwyOvSqZ9RDC86Mtji6GavZUxA6fJ9/OQkfnfwp+i/J2V1c8EO+WGwpMeVxvWeWX104XqQkQe1CDgi/etLaEfDKoMC+bA4tAeqERCaGu40RBW7ZC3AXkY5m+epTEDXr/fkEquCYg1+IrgoUrEGSw2SnAn62WaQJ9IvaHN7JzCwq4V4XmAEwLPMWo1W4j/UcWJlENYpQ/4A1O//2be2HgtXXMinNF5fHc1HsiRyezmN5wCIHHyALCl32Qg/x4GSPZ3WmzXA6d+x2g96EwzmtjMOFQ9jN3UEARxlrP5H4JpzC6UEDR6NO0tAA2FRtfzEJH5uzmfaNHDYycKYifxNtPqFEka8mLzg7OUnKBOktA9o1l8EX+W7hUq5Y3n951FRYti93tPjJ7T/85m0RmiBScUP2zkQn8IPIldzt37/vDDvwCzHHwl2dkU6+PyjyiqQfvrO5eci66Hp8sSHNn54O84X0XyR0Co5PkwJG6Q8lYXpb2IzJCIBgMzo3hCO90uuCN9gMiZsxDEGRLAd+nZqPlyyI5Xxrun9uX9wh8yqN3wDknK8ufSrSg/4W+z2w2hQQEEyik79bfLRiRUzgHBzZtCiWmLHg3sVVwYVi8wawTbFT+jtfTnb1lACexlOAgJJvOSZwtFQuIn5zF2jDHyswmsNMyEYTbU4pFxNaEUBzMSzS94GPFQOHDY0OBJzwATOwc3iTPOfiBnF1aJLmAIzI4ABUSeFpj/4oNGhqH/QNQZV0A+asyxF9mgf4oFN9OtMsML2fScoSBPGV6AgnyYBOU2xksS+MNODLV7E+Q8RlgLR4+Gb3x7GNWfh1aAm1pFjWIXtqPBT9Yh4/9OtGh3tlv1H5Pg4LBhwS1ndVb1WPWb5FvVUK/6I93I4W+WXnXmXrWsV8EJpJYNHAmbeuBHhMuk1XWOlYtvhVecYWzON6ceK/GEP2ng/2NObzlGv6CWQtyQag0PVxNM/9DtbzRN0wFZ21Mwp31Vl8s91Y+fgRn3LptE/sjGQNaiGByuyXKvrYXT3WUuTMy9UbA03AVrw3Uwn3jUAH+Y1uUxcjJRY3KBxczh5fULSXIEmM5ov8AEYozQ/+bfbVroT4Xxh/oWz/PgxMH6KADu9++T+IL5rRjaE235J3GeYAhI8fw9y3YuhTJ6KZSzlu9GVb6+7L4EGYFpaaQKkbNo/UQ8T9pR97zWp3cgWpRcu9udmZo+kFG86OHLL175Jphh4fCD/+D1nqvf5gEkXVCmg/PDINP2GXFu4N7ClGbkrLhLkSBwBWolCTGicsHxPFGyxbJl2bkwVb6gFhajIDesQSmfqPQHcK9NC6tm/ADnOzGui/ZAgqUXm3M5ucWt/hRWn3ML3c/aHVy3xVx23efSjHRVhAd763LNF1YjpYkEYX35dSymjdyC86qXvHlzPTitThS9R77iJU0A3Q6BGd7AlrLgsshP5zsdA0UKdFUN3z9wyFaE+BluzPuN7xWbbymR6Z8FxhsSZTix4tMKRYtlEN2Cg+yxETsBuu/3dS5S4qcXjT4DsATXIbz3+IzxUQux2yLPsDgmj5PmOUsMQkYaVZ3GCPvxMGIEb47oLmGmi42Txu2IWffGHIt4tv/R4b7ysWGZJOnJxykaKQ4/aWxag2ZJVSSov42hxwK5HiqXiLIlsO0GLIwta2scsUsttnv4zKCBYS6FVHmM6UuY72NvWkLnHXWXSc+nBTwOuDsYu7qW5JtPcUTFlS0FUrZ2ALY4gIYAJKApaQSmGj8BNIwFGZYO6KV79pwame2xONGZecJyTQweAnYfjfGlloYlfhHZWEc2QY6Scw6Y/E3Jawr6ubaTH7Ibpq30cxPirDX6ZjLLhCimaZGPsjjC8CYr97vz85jK9grgUi2bM2SZlehRBO42IlmDA+DDtlkXYi+sndYKkfxeptmGCuxs2mfw0sk/ApuLkTLqnnL+jL033KK2N970inDuikN1X3E2X4ptd0mvSVRk8JkNHU/VqyU7k60ZTbbNjstxgUcpzLNptUjDriSubCe/z0gB1LvVqY2wrqu/twi/DJVhFc66jhWaolCr2TRFVwyUXJSRfYLGT8yO0ojEzcz7xmaGO2m4TWSnuHZPr6iRgUUvYTAV+hyrXU+T9PeGiC1xm4jVPo6/g5udg6H3JkuMTimV6Jdi9gbDyDcFq903LYIuKvLa7NQHbiP8+W0KQrF8maYfoajtvek0F2mDvgSjarG40n/0gcLP5CXU47NwEz3zTNEJhJSSYntQIk2np70Ut4U/58pjhMt5BYqeVnOHuFyX9Etr172ircnErTqi1Dl38e4/aPtP8RIBxGsHyebQd7HSWKozKzLfUsVaWss7oWhrQf+2NZ8wMmy8/ZNW+7x7BGV0Nc859xyOTm5UpuWmroj6i89cCA48wG3V0SfAIeMPNXMYqRCmUg5k6F+1ShuNkTGbXPm/5zm4tAqHL0B8GgWZxhFX4SU/usm08c1Ao9oKy2EyTAPSM1ZHy4SGUQDAjAzZMnxAsM0OoRVCErO2SnNxzZu0WqnCHox2n8OC4hnGxRz4guIy4oLF9thU26tfDn5/hItBQacxg7d3BljGZi2a66Cz+6zz7Sn87ufoF2f9bU6b9s2vwrYp7//+lZotfjhkZt4W8WKEMNykFRMgmJGiW0YeWJPKCXslpjFsrfQrcONotN6+1xy4MXIo6AnM2oXUHP0tVF293fJAdyE7EI1obdVjZWwlk8LkF9796b02nytZ9fMcdQObG58Q1Sa6EePigvfw/ZwVmTdyZlf6vQ1nhsuKlytNaXJOK9FRRDhqxcwUPCrkSA82+UlMKLBQLPFaT0dwBxLArwDGHA4RBz0c4orpnKF6z0aJeWTAWHfQbVPM8sriQl+cdrfuvUM74j1q1/P2zAG7LN7MexHYpc+6ppTvH9tCIW2Dr+JxtbZV/jlqh8yKxW30jCEe5LWwVRMyIn+WlD1aFP+8mzmrTK9EDyKTsEfceeOchVdZrqJohCwVIaxWYJPB58tkuYEDXVLjdUNvty0eP3Y4knRr3Jt1+EjBVBcqp0Y5J8r3b7j7s9LI+qu/cvcWw7u/dBBBDpfc0E/uiX+H2eNt0KMrtJp1H7txv3jFN2sVUYbmMCz8DM01f8zp99dU8t4+qiC+oqGAUV3X/aOEP69le5rfn5s5G7D8kqVZTqxM+VqOR3cyD/3UCKbQ8vqjSNN0E5XgRFgYSiwVnMviy01ePEvHYh6xS1VJyAg1KTAXgRYkFc5WtFlUvmxqcwbj3kUKNUjOqBUDFvdhlt+b0LfS78BGIa0ea89AV8FyJKSYhDv7i9kCAPKioVYcOW1o3CoDxUeo2I2gg8LGhTfmdZSCsx1VS1j1pn6r+qT0KszHmxwZM6ETSS25FNjm/greq39XtJkzoHD0rADl7Izm23WaT8VlYx8m3xsR7vb1c03Qz7Zz8L3AITsx00xnIje1TshB6QBIlUaxKVLwnkuXo0zSp9GVVYS9LkAHD759iEt4U54axMqPuePg80pB876omzqrgKBGktC/5i5MYmBa2pRWdYkJQIeNSRjLxnBP1GJQg7/Qvmlc/ur9cLJaWR+cA17IoPeFnE0Edx2eUE6br4BWNk01TnNqmpdIc0qaxWhOXdNKk9HVfA3BDb60Z4bbnoI2+78puCExWW+2jGGrLMY3xWwMkCQHpobByHDsHEyWTa7cJBP+DBQx8shk3x5Fhq2qsRyTRqN5hW3q+VPQcHTcOPKcrg8E826b+KWam7ydIO4f9odUWDYnpN06wzql+0mdFtY9LCoViIxojBwZ+Txjn8JmGkwjiqjqN7xBGati8sm6fRi0kY0PRk4vjxkZpxStPD6tQobrphfNFzjVbD2BfHluXWE0p3eZjyfWvv5Gt3tY+AUyzyajvFKOe3tkuAEVeHYrMmx3HeQflhfZ7UVA8rQUIOLHGR3DTZtDXg09QNqY/tbeoW5fBCKh4EqJ4FKurTTz+2FgjlQB5qtb9L3yC3x1vXiRbkriNtCgWlR8l8dNK6FNdXudfQU91nD4fLJergct5M2oXbZvFpvUp8b4cCuuWpf4gGBTm+zokshHqDo6k+I+YnS5W5SUrxbP7thrZACjWfkSlvxvNl3kEl0q52mkvyFWbGieeB7mbO7SMOTVaKF3F3Rbej0ObCwo0jxETzo6vuVuByU6foHiFO96ALKLZ+zvc27SDe9JsXj+WXtOSL62+2yRCBRlQ0zewIXfhXTB7bd1+ITlvOI32c54DzhiN3X5GP+p3f3o03GATk4B6m98DmdCmv5FpLQBXje1Bz8cPt47yjeIqHZijtpBHI5z0pQctjAFWLvBS/tFFF+VZSxP98XTZqswkSV/1RkcvqbLdiLpee224HXFbojP3zOsaDx+O21oPCEPnFGD2oWUwWvWw0fxRgjPjEnEY0MWv3hJM8TfiIB0o9XVQ61QGgd2C/JXLjuHDLZEKKLlHrKLq4GCx0g+VIMA4WE5FaklP25a2+0BdnGekfb7NPFJ+ZvCRwWKhzdaThBRK74/sH1fNuKOYYMJo6utlbinMwvSBCvDgWYI+JcTOMHUcnCIiRLuf3tpeHj02bT4SRQTbpTiIRom9hD2uAlT23ABLiy/DPDMOS0nnSujA7m4LnGjfqeqwy8GDptik1cbt2MVfu2aIE8OFcVHE5LUFsBFP0Q/wtFtdrjmQEMeuv3yOoCBVslSjOYKdzLiXmwQpKQPnX+WxKwztC4vPUecNwO+0ySgNq6voBS8Y+mYIF2R6k/wjKPrRX100I0T6sdN237PPXVfpWd7tGCaZyK7dvkdNmghOFr40agJUuhZFFNuymqJYkK4RnaB0pq+/7qQUea7rraCA4T/sLtXI5Vz8V5wc7ZR+JgEjECxdeezrCqoMQ4yCG/Lzg84nggVPaNZnBgYd7vDEWFIvJmbfhBrqdeDxTMdH+1R9VX8ocvR9v2TvsouYjCSWdRm0SGUb1+hAsXRApI5/lE4sYl269HXmQPsif4lGeqvrT0Tw3NpyL+rpR4jqTiu0w1JdDmSuDt361V96q6aGhGT2aVCFMXvip8eErgLqiio5g5mycdEEJJZNAKamlRgsEuuLisAH3yy1yXNlCLWlXvV6g8UgZxZNIjqmohmZyQFpG5E/CIUyFhF6GraLLRtf7i6xyWYiIN0d5NWyyE3ktbh1L6PShIL0dgkqtsROTEUcAI70nmiZB/f9EivsTwUBKspsEOWfn2EjnMpSvt40ihVNYSyHIlF+2AyAmZpH4VJWwagwLsWVGHbPiw7aZRTSLlOh2I9YQTKBU7O4TjrxrhzxtXHAqRbBWIyobtxMsyTW7aEoz5B/o0BrxE9guxthPju+p4DSqiODnQK468Ht6LNygqAQ0ct7NboO3gnPbRvXfd95zQEIZBI50jE/xhYu3KfLG6E8iDp8Qd8/PGyFWRKoCaOtCvjWijBsIc1+6Q7d37iwUGcH4UcsiGOYtc8h8gm6oB5dA+itMxZy87UIPaHyrC6AKYXIqkh7jeNIj2yhXv3+5VNZi1OcI5USbcVlHEAek+zFS0lESQTQ+k8cTCJUtSxQPMglV5NOiumdjCKsqETiXMPHVbNsDD8zhAlfpgrqdINyH1sn0p6aB2BF1lhEBLVk2Omw/4+MgadjImZDixDY79q94cYOgtY5KtcFDxomzyz3XFkMU4HWulPjZkfgCX2mJ3xcJtuKQAuqzPsrXotiDm7diMSDssLuxvE3FEYCHso+R45Rkac890hNh35Qk44EnrLcvJdkBATlUWXKcKSvQwPpe0Kb7zxSpbuS8L4xEs6P8GVlDDB8T8z7BjIkOkBUmHox4WqMkflQOvwALSAemO/QmCIPdmC8E4iz9xhs6Dc754rSYNWIpAVZbPVFaIvIdEbx6SPW3JoOBZTEwo3IhsEWpmQ5kMlijpov4p/cqJu4xJaVVJQ7IERmo/6Z1CLre1+HYxnoI2wosUL2o0LZ7riR6RH5j+A/gsDHZ38xKTMLQHTHfyTrTDEi2xCPecRJXI1FdJ4JUb+VA7yqWos2IbqzHPmpFjyeyTEowLavBztmqC1MJBDLMdenOdQx0Sc6Lfe6UqVN9QlIKUWDwDiUkfrQDuHqMFq4+apw/7on3XmvHZ1Ycu9eq8C4Ve17b9NgCBAonSslY94AzckF+HNWYz4LtEh6W+1FR2QVjBtU3wPC+H7p2O2mPE9C8QsfjslSz/ZrV9AGbOsPYgFTTcNUe6n8kuhFczdhWt2wXScWFsOPKrYUkxgPcDojQT3LDPefDve1+Mra6Ai9Ptun8/hKthQbm2XSboGzht+p6vp++PZY4hlCbB4KrXIhRN2f2Jh7oRE43tY3OmuZse/yOi7aIOtS34+iaMIA9o5MkvS0d7beKrtM/sRE9u/iIF41BkGpYfmBn5RNWvLt3AMlnN7ej9DrUaPx1VaJzVHuZHfoQsCbOUgs4A3CJpm7th0OamslMim00/IemtTYZ9LaLTvZwMdzmUslKSKnm5f1rs4mRVa/JZEURzKwURjC6Rg4gUcctJmxlIxm4Ku2xH0WcAuNU+9DkGIjsMOCCHEIdPI4XWgS6rvZx380K1KL+NyGNJeFDQfJCZnOdsmYnOfWQX1Uon6Qi+vsFT5UJL+6Ka+wd2EhG84fZeNvul/REpU24U21Z4Dd3I1iZGH78HCPoOn5G8XpB4XW+NJXekMFToVjoAQm06jpeS9LTTCT+YVU4TYaXX//HDz44fzwvn+eWPMDiW8y+y3KmglJuBSJbwPnoNEvAyDpSh1ODGmF4uhppyvCercTVIYHgOujT8/L4mDpN6OWF0WW8YwQpV0EQ5V8kWdMR7zzu8iNefCybqM5mbZg4xm2/OLBraNRbL8olZacFIpqq6/N6Gj6vmhkBl5UDIajaaqFlY8VqljEREjOF+L1hsdG8AC15WE9+hR9jFAMX2RqGR8AsnZtCxFMv6k0DPPVLxtXMXlf0DQQ5xZcDQxTOoSd/ZL1sUQyXp4hmnQQ2kBxB1F36iGKYyw++JJozMEHzewgcZxavy4VJ/O2YC/s092CPAX4I5Gy3KrEwJqcB8DkixBZXSJiDAFc4sqdG9Tmzblcp5gT82p8uZEmnMGB648peTIncRa9JQmkzmS0cNNScpQt2HnOkMzdXnqRpt5o0Den6Dnq0Yt5aEtZ2Ti9Tng2FYiwZBHtAlBOGp/0Pg8AsK4i2dDvkzAuor37QIFtoremjpVpE/1Bb2s+K6W0rZj2qkNQ9myJZkK9MWtEnKLYBYxYxgmRbYgurr0beUUGPSBaddGoHRMtQ0FeBvqo6WuNM/AKO+WZjat2SR2grICebUe79u1HnFKOv2ZOMMJkexBJYtKDwghYSpkdgM8a9SfoUcftntY0gZrPPzoLIRhHpikYAJHpxel7GhnYpnaNuRkdtrZycl/qUs4uxJIuNSsUxBkisHRpZcmFH9KYY5J/EDM2s+BmULvX4dcXr7eP+urQJa8R0c7nUcALp7Cx7Q8TCwrhyInRdQJWy9UUvuzSxS1En/h1sxDJm8wme5X/FjIeINIMdmBJryg/JnbTa1kDavGjYoY5Nt4PmbDDQ1ZyHCCGT2SZlh8Dk8q7VsacCLZcN/byr3GXCNCyMqzSOsY5lPoYHNL0uFGNVODK8onowsWaTN5RIFu1bNcKWSVpLqt/EPVkgI5GLYCrlfYIJ5Oh+yADonlGvbO2otGHfr8hCxWji94Al8jPsBnaQQ7Z9DDEgU8SOx1UgYy6JGikeoquECXvcExuS1yLuyGWWIk1u8sdcR25rdbOZJ9zqDMozCKBFxDFE62M5PjIgvaHDVOp9wv7rMu7dxWusBcOrB4vksVgKVJmnbrw9Y/9vi4vNVg+nuZTW7SyrObXyo38H5q8EJ2IDG4P6X0DG6VwPNWAaJDHKeHfKvMBnw6XMuC3Ad4M7HUfipx2LgGYIx8WONm7MlJTdciC081I5h4r0FipxzJ8VmkIUk4bAu9dNuAfTuA8ewdKXDBLY1wm8saYeRmdDWtZ3KBofV7PAjSCBmyMQ0KTsp+OxCMUbQ83RsR0RsUZKLc1db3ZiEUT/oetOHjP+rQY8wo9o5uEOcNTZQhyeVN3MQ/AwzfmxDnfc92cL7kS1i+9rrxhoNXl8+Z3d1WPEN+JINuHWcf2+dDS0tsI7U+jNk7SPAkNjLLW7QBEn63YUx/P7xMI2Op7ZgALkNtQPl4MjmN93fHkjkiHCF5hHLC1zDpAo7lDUOfvbCYzb5o6kuVaOBI0wto+p7Zj9PNxRC2oOBYpzV2mFoZun84U8MKeAxyRGOlmf3k4khosCJs/JZIcEjAAW6CcA8Eh29Ouf5g31iLL8fLhYA/sbUt6qmVnwvM738ZLRJlGbqp5T2iimtABsnIAC6tXEPdXs5FGDaDVjjywZkjbcHRB9LaIythIR3MgPQfDFyR1ySuwzP7icPhMH+xxLJCXL5b5RvZgfyNDVIzSNM/UPYTAcLEXyzyBdpOfkFyTFPUCdTUfjZxlC6tEk70FxUHWRDqGWXC37BclLIY2dLU8YPSm2onRRk20YUd6r2ZzDEmhAiP45vmTxznZ5GS3GapbJm+ticlQU/tZyzn/97o0hdSlGbCy5KIbuQ+CqKF04DTmrQwBwRBceWi7+AcGSgQaMSvLNSKT5rfVzFTaeXZ8UkugMPoykvIkoeVt7SiEW72/aLTzK18qOUz0Bxcep95kjbYPzhCJXglHvpXDgtqxUO6Yqp2MBQrF/+i8UDyPn1YV9uvPA0Ui4e4fNlJapvIdxnUoMnIXH7PzS0OBuHizfAfAgMbvGaU4GHFAPQfjw0OxmF/pVTUE8JKU9Oi1ffqSanafqVNNQylSxriDyf4h6DodAH38QRb9fkwVxtDc+WGm+4FjOmaXD9xxyAFjNVrdcLSiyME12Dof0dqTB46kakd8x/j802xszefa4FWRgmumizF1IibLs0cyIHXxne+w+p4aw6poad4pi81la+3naSE8mtllzet6fJrTFX4fzH8/uGntqoBrXEnHFH1MUkTHikrPStRAl6C4CqJm/6cMrAstx0vFUAHSjCItyDXAl+5iC0RSG3tv0DX5LDKGllEBiTBiHxDB8G1J6xhTC6E+z08dQg76/qt7vu9Wq2gE2hBhBsxIcuDp1uCoVUz0t4wpmeVGIqWnwmCQzaiw4JhjdgrhnTECNVor4RhM19V6HW0cFCqZnAEofHCzQKt4JsBb+yr8BSPEG0QwLWpsqIGuWDWUZSkGGMuZiApgynd8boaDYolChAurClWoH1CzValJeZqoZTz6yuet21lnhRIRy40XtNb3CGTsw+jZcQ/3hZDjpJarsvEMZSPBuEP9vG7RBJ1SecD/nzMcjx8VhRFLq4hqf6WiDZjRSQ0EoOgTZR+lZqCMAfhVeAJ1duXmMzlHcKAOnBh2x7HVdGTMTEvDqaXYoC93fVU41DqUqpeGE+2c2yoRm3C56U+WnKaDaxiq6S2AWwOC9GPGF0qxQzNSHYLCWTASAEB33Ef5rY9wpqp6oWMsENCG5To+y6GHDwoWf3IRm6AgWfxB2l7nj/O5p1BKLe3kwG0i+8jiAHqU5keal+fcgkxs48r9X67NBjk58Ksj6STOnkaIYMwTkRK9w3eae3hTEIIsAZIi3KuH59A5PqlRnYO+a1cuSdUC7voshGfKl77RSqu7+kfX7mqWsvA/PX2z3JRGMbognUPzZPak9TtV2xjKMGwUcZIT/hY9tzWNpo+tE7IL3Qd2T6s9J9vQRmLHePR86PHqD0T2ox/hzUhMqUO3FubecRMe3F/poGeInpPRUQshEiQN61C++UNMmZxLRwL0V3+KDfAsJC9nE97LSLJMaX1Bm4AeZqN5REDmMmBinpcIEBrskexv9PRUxIyWaEDZMlrYFYvxV+XdvTssmd04yq10gSThU5k/ymfwKk7hESyLL7eR2dtqUf5KzEkTFF3LB4Qk9Tvy6NXMYCEGAFoboaC7gcv8tpH3t6gsfIYJDdzv7x8quwWwJdf3lRgKDpvElwyLoNTrl7uR611FOS88CwIlgmr/Mr6ZvNBZHpBowDvBv84LO/P2qU0RENrlyokaK535uVdqkPqiR+11TsxhzEGk4iApT2J4U36rhID96H/D0x77fblzNroqo22i2zOsOB5t8GNJ0F1y9NMotoiaVZrgWFYf+/sWXCMMAWPi0e0l8xwfC7CL9m8CVigNDbBgUmVvlrhmJWYHtjBKZcLVBCwUJ2y8tFsnwqcSxyIGuxEB5pAOIAU4ypsoEGsfyYOuw1ZuN18u2RPBSWGdF9MN3P6WxxWYhXRPhhMLnD3oCIe1dcC09cl018Ko/+M/Z6oXSRHMjhqP74Xl8U7nwOHQMupiE07qEbc6BASvVvq4RzyN53iVaLEjTkYG3drgXLWKBIi/ZaBaZjvKd9cd914JN9oL8e24QTSig6+B6xeu65qG5HL6ujPPZBm4LfYqIEQmhswvxAQ2KnPrW6FIKzlOoDrfgwxjYxLqZ94dsrjLTEU2xjvnxrlqghyLDiquwwExOFU3YgfBqS3VBLJC+/uxGU32iuUHMOEnOqtrOg2Qbpr1dW/flsY0b3c9NDc3Q2mEfY16hHH1RvjdpGqI1RrLERo58ifvz3WRxvy9/zzTQ//x6ZYBJufFQSbqPLKYq/ZdZJtdBgq3JaGE6ogJl03XcjRov/nghNwuVTbaA9+hUfI5mR3L5vndGjfWxQUXQAITgtLuLWbEYY6FBMH3/WUWzrUeuxr9VoA/6fVkU1ewaq+3uoUn9SZmt5BpiBfleTPOpnik5jehm1w22053B87Tims3gyO2oxTTW3c1dzwGZpX8ftGlHnX4Ip4GAJ9MGFranAFOI3HCXpz5TmOhO/1Fn8vPauOOnijqCLB1NE4dS84dnOcWiv3jja11phKxPz5F8zFNtPshwmua2QUCEBOyZAoxkvIsp7tyRKrKGjChDZUccO6X13hfl6LtSxmtlTFrGtFTmQOFP/3wKadEelg76dQb1e47Yy7/ZpQwQeiRaDt+qJlffCR9KAIfhC9WAQ/OvV4FPwkemNe+1n0qAt+IT0YBL+69GgTbP3tBjqovfj2aslrLGrO2tImy8k0OFM0DhS1y+uXt7qIKLjKxejkFmpuPdtns/h3quPEVvTBjd0Jio/aIl5INLw4r30BDGUl9Ou1Tyb5i4gzpaOzOMUk5WnvVEtFzXdsqyHGjmtw/zWoqGlfRbh+0Q4ZDvyhkJcYBlxgtYSsnZuy5h0QAULMcAvKNS3k7NyoaQMA5SRK69PKtyImMga/VzE2SZgbnGA1zwqo4EhiPuTSS0+dLZN3GZnSMOYnYKuIL68oDdPALz8ACpLAnoXHVcoUhCREKfBYupshyvl+6a3IGhYUWU2B+I9qIcVyCVcGthfFCdBOE8an8A5l+GwIYznse/vWGWyyGW9qt9DMsQYR+thYtBjlLhByAt8reut7tXSqMIik5i3FLiVHQNTsdGK/c9pcuE5LwZtLnPkh5R1V8tWWpQJj/CkqKsogOgeYYs56u+vhN+6LG+Gs3dtj2PS/pij2nFWQHMRTalOWz9bVut2uY6vMLng+BzXluXC3KU7Vx43/Qbk+0y5lcD/uheQovpAHJcatrnmxeLdDSHX7E/pqS80mCRAeVK8wuJ1+Qrkjdr2npzrdVVr6g/yoqEYWG5UTBaWqIpkpCtKHFAwCd6vmP6FFRbWDcchKguohPJkkhOoJ2xRgQeGBXySd26WBgW+FqhmSARmAXDGk/qGSTXEHkxnVYu5/2BgDPs67ubdYxtDOmoylPbiDGLbJPnSqRQyNYrJK7/6oftYP1VyQ0icbfWT2r/H56ZD9h179ZWU1CDHAXnb3kVnzZ5a/3c7DzTln1wM4fXEFsjNIDJ/sbEPokCfQuakXDB4Uh5lTMrojLPYcHxm0xeQctkzLpMMwpfDoJud3zeQwrw7Mo3JyIDWJFBvDGi5H37H2Tr0HftGZUYih9qFEzABRrORIXsCbdF8eshRySOLLYxUWcI/1w0R+jyBHFUi9BFKlP3pPkCoBDokp+Io09g1+UMntzJGrit1FL6J3hAhs/rzjzx3KGI0mKmp8NC3FtJ+O02KSn/aKY1QGmL3QBsfPczndCp5OPZnq7vwW90/wRAovdfRFrbjWEBXBI5VWwGgioaMvCoXa2h+KhYOVdAXgUIT4r9OYMKRESaWTEFLC+cCML2I1DuALA2ve5oFofIehpv0FVhIXk6qT99ajkUU34zTBJqkmMrIzHJyGOYVzQ9WM3FG99YqwU51ZDRFzPn/udd8YyiplGbAimlvzFOilUcucRvotnOoSlP+wzN3fGZ35OVyjHf06PU0pdFM+a52X5P9UI3AfUoKqvtqXTjjMDRWQoFkLCruwABrvuz70c/CqBSUMML6It86R8eDAuQp9xAzT0NTW3p0OHW17z9AVxfsI0QGDQbeKctg+m4479n6Apfp3J9NzsgsoB458dhDQxjgUXQjwe1OY4YqXYYD5maFAu7THbaPmd1vfcYfpOtS2e56ZOmbbZi9sI28KujfPmFdrBMCcY/1zqdbjFwVuTVWgxZZJt/WOQyju5eSa1tVr+/0q73AHfhdGJi+s5O1D95J1uZgZRd/NAtwejn5v4+YJnaIWBUykvd7kBg+f80QC26zYSF72Xx6JgeaomSQG8HzlKswfrZvbd4qmEKV+oUiotB3twIFEeBUKRY3z15Zex3BV8XBgLrD/gsQKuJL/9rVmWgSMfaDnJRB3rooEFFZ6I3vfxf8NmY6Ba+0NZwNvll0PzL08U9fs3KtCEXbi5MRJiFwTyw1fYwt6afg+y6Qs48nXerzfiNSIe2005Rr4NNr7jkuW46SKbYFRnAN/gIqC101SClkXLtgj3P3kqzADHgnDLoOCAmBB+dt7muGnbtCzZ70esX8DTjXKWhkyr9/uh2VqzGAf1f7LRZEr+A3IH6Xh/zTapxB+mMA//CT1qB+TNjdGrfHx3lekjN6Sxof+7dyn6uYb6VAg2uYQUqwDTz5E1c8JMUcXl0GTmQpotXFwSdhS8v9GenbbIP0y1dZCTO3EZd9xK2c6je44GFWwT7Y/1ESE2TwWb3XJCx3TXSSOWEZEr7W8pRGBMxR89HHgIy6D8Runr1y2Ty4/y5odVUk09K/64rDU/w//kIpbqx7x6WyWVZcvK1acFq9gK/cx8ncUrzr027B29g+XKpDhMPpA0nR43xv27T9DBelCGmQfMrcogz//Yp9An/616kJ9PKQcHAUhOYWkZsVTMuxAQ2A8MFUFqrUjSg4TFxA8BnS5aDZmEAr6zLU04GiOqWKHqiq4TumZg74+qQxd/8I0BWQr6NvE3DCXMTmnrXHqLlDmU73pBPCAmrqjQ6cepMJWMyeNJ+c5zqAibN9z0qrP6/Gdg56Htkcvpe7aqTLFoJwAtDsE7AOHjiUk5nOKY0ijnb3CR9/Lk1g0CUaRIaZ5q4NM+Y9Q2cE7ljFJUQ1m9Fz+cHju5aRR8UKK2TJQ6WgDH7ouOM8pU5TEd+A2hHtvtOkum/Rw/dFpN0BFQ7FM83wmgiQ0iDdoRzNqD2mrlA/P1+KqLYTaD15B2Q+jmv1Lue8Knv+RoG3urqKV4qFyqwaxSINNcHFLQFrwY2Ob30Fh9Q9U//ELy6qzpmw7dK7vbHMnvQg2EYcySJ52Njkj0XD5IszqHH+vka5wUJcDaiJuTyNj04tbtKLpkuEmJzA/2V321kV+svyty1vNFSE/VBKT2/Q4P3jrbSnucWHltlLiuX21w+MSDOYnqxwTcevY843YgD+trdB2g8vmL2ESEwHkNfR2Gch5aTTMZPpMucr/pvivs5gcOF3fPFGJNq6iyH7by5MAlUz1HUctmPZjoKjBaVIQl4xbw7BpO37+YK5bCjy+fdOBSYOM8PNUL2BCg7SIwx0NdSDkvWew+mZTKWLoHOYKB2923Jt/r00E6F6dGbs3S6OHoQPDR1ReXrElG2ZRqK3+H7k2LEBIGwFCBt5QDemKThycmHIPyBgJkD2Bjg/0b7hVxJFbIBJ+EtqiMtKUPl6QHzuIJj2N9Z09DWPfaYMFEkWk+U+oBqVjNBOt1ig7BCmDHxe8FgOqhXDU5se/UHN++VgZYt1wiRcqQIEICkD85YJoJ2heczgusNH+TcrX2yuHZh1KptbZ4HnQWVMb5p8bEYgf9ImOVsfRCQDf6bygGsR4qhxiIu/pstrK9z7BSKeNuSR9xJnkzgcUQWh+OKl8w9Ghsrvm6Mh+L9D6nxU2xOqTVzO/pbaa0VRWYTk23bWxOrDf50beiQum8Pi5BVPDKWi/KRzApwyG4ZFWHah7CNECalOkejPrKpxJWWSztuBtt2XuxhAQe/4xZ4Ft2RN0YC9IP+wBp2YTwun4IHGKvie2J3A+hSKiu5bbV/ZKpJCpBT+1NFuUTZ6ALRI7+9RZFH1YS+N7TX+YSmt+KxU8sjWD2HTctpFOeJMx4enp0Se4lXRZ4s36lWTNhxDietteEAI8eY/c/9I5jKHpVISfwAqk3tAHEeK6IeoLYNMoROJ6jF86N9yUUw6MGj37DyKmqTATgLDHUWBClYLzsfD2TWb06eoHp52Nxi2wmCxshIYIrpMqsh5GqdfgQEcO2rPCpdcYAe6OArAUV/Ns99RgLy/Pm/qJqZNXn1JzpyqAFpCNap2kAQm51Akwf4r+IwQ49jxnShOaQsS7lYiI3DR/NdQ70g56UuOCREN+/y7lA+ITsfnnkXgiRjcuiafqeMhk55bfBra/yoLefUgvMobOOHv7Am6P4AK3hDTFW3GxthSvQLHcoM0EZ14mmojI/IMHqxc9FVD+o14GEAAopZ1lmVW9ow5j6Khzc2eh8IPQCbIDxXrhjx9yKUXOjGsU7M3OjBH4bfEqUrYldKJhJ9/JBLatwLf0nuju8TX/JBHYH/kVE0L5sA3UoAJkZDX7RwgfmqiWpJD0sY2h+lt3asOGx5O/QOyL3VqSDxIQDkQvB5yoyF4V9Lt1Ul4YJw+zET35xp5RQK+PofRKsvLPUpzGxyj+F5ozcguKLCp+qHN1djd5Co0drD97fzArDuTXqwsaqUmc33hIJg7wgExq67khoIutB0k6yg7o5hIwm8ugDKi07DlaeIXrjBRwTmoNcRW3an4pdxaQzfLA/pw3Acw+kvmVh9AMd9E7aBRip1dSyf3t1UBs9+M7voTWC2Lm49UFoagIekLmfMx1a9qbH+gXuoBmq+LINcKeGq13rjR8F5HG8Ll+HUd14DM4canu8DVU+KcKy0k6Y4yLXO5MqLigc/wddaMeJiW/ic1rUu9gUsoXOdBH94pevjqu0b1UzlzM9HNfJ0rM3cPL6m4LE86Z33AdxBQrov1jY6yRiBN0jAU21vBqrna/qwTzu0Tup43i8dyUMqoqlgXNLhTcHZJyWuMVAieyOtcFZ+d8YkMGDYX17hPCMlD2y5dnXQXMCIwnT1A7AqyvgnWKDKOfHQg64cdoKnxFg9Vh570sbpdbauVjATYPIXIfS0WXAc1vng1M0pVG/At7MLEf2K4DrnLxI01ZbVFvUX+vGA194ikffttt38sVpBb6YCsL3RgYM6DKJi/mfNr0JZ1SoItG7+Nvhtnpizs9LkvxkwWLnvpVFSp6C7xO80HM6K3zPnegk5W1ERXmg+jPSavJeRquQ3cdyKdSw3Rort0ErI+6o60Lsu9dAGHUQgfQP6v8axFXy65QL5QwFcfKSuBZKOfcJYyzajAWyXW8Uq3N3oZyKpF3Cl4HwNGYJW9X1kdOlTV0jsp6rpOFA3DTe5VuXiEwPlT0eBRfU1FeC9V3oRj+8RwBn44TwldRFjWJQp4hnAjEofrmMzf6zEqhb5MAEDeDo6xcl7PMhb1E+yoeznNcMdJqBR/gSvoAQXKNdEhnIgBF9fpWpxtIUGmv0hXIugEW51lpGLzJRdsWTp8g0W6RTAWRcB1dzVGQWByi7YbBMNBzyrVjPuj3eVtE4ax6Bmr0vZmbDlSkgG8XbksQgoWtJbDYGhYTHLOtdb44X2J72VEVMKSRi+2M57SNanM0gWN2SN0dLfJ57PoZiLb6zzFUInZsAchApqtk1Dm0sHEUbuscm3Ay7mEpQpNhvLgzGbRDWIrh/g7nDRHrUpWaKhc1XhHcTtOOFqG14yrsFF4iVDSOt2n+SkCo+QT2ViNo4Y+wzSl3ssBsA+2j7IhKOTR4LEAm1qArHnXoDHEGW+RNRFMAYNVg4y2MYxMtiGBd0bjMokKIQtu0gLHErEL2ySm8IHeGmSJrvmsznngKXABkUYM+gqp3OLWPh8Z/HOCqNzdeLzoDZPkQA5bbJz7Dt3qijmakv9U4cPgDRRe+KZMHiJuwJQWX3jcvss8TrasOt6T6bA1S6ptgJQq9NpdVQLmk9KPulHFy+20NvvL1fSORPlJBr/tKI5geKushVnGxZnqYEcWZZjdmyItn4/NkA4WrXmeAI5b8lDw+EVQppej3Eb+ErAXN2viAjXYYtzUDtkYL617Nf40vg6RpFLHiHw72zv7HISTfyXeGJTnJ+5tAehnL1jEnNLcUo2yL1P7W81IqlR82o9c9NuDNW86FiJghZqJHIfDqih6V76/pNfgajmF8tsrWwOEG2tfJwXKtr83VTZGvW/eu/MwGeETrXAibRSSIzUuNDBEgClzSmTslCMRckNi7Qo3p7yBKPnfwL/fqISAf+U7rpfCod8BBGxhIi3SJR753hpMPfQL9XZCc3uAqQGvt0TJrFmxYqBLRo3qIzgJe2RHEOBMvYKHy+4FN1kpBTSWEBqk/Py4UXpkIMch5mJQhQcwhJtkrEzHuDoEDwlx7uiPkv/wFfE8CtPu6tuHOZ5tFIG4w0gsKIBKfhOxfzLd5bjD3x1P6mEaj5ve+Uft3RYGkb9CB4QXSUBvli8jBIrN+WarerU0Kr7Z1eb1yswLIyDJrmVJVMTbPaJ8+/J8EXcb4DwBHobgKQy8z+ArIzSL7GpagknzB6hdL+0Tz8VLoxkw+czDTTZy0RBZls3ZuicHX5mxpSjs6sSyLdiYt1KKdifO3qK7kpVN0m3uJF6VxfkWrvPiLHpY8J4zu1DNLzB793ZLU8zmXFD69C4s0bbo0juDVLN/wtb1xmZtT2lZcvJacOKRnblEVtZv1uKshUiwX/6CuQrMX06aJ23xSNqd8zdu2RrUFideczknC5rSVlbM9Bjavy7cLdgjEKiA2aXEsxFVh9jvJvOd99cQz6fnXCPOsC1vruNaJPxsEi9sH0ItOMgXvpM1E7eDiHq7oDJu1LqpIp9P2mmIqMae0Q00Z1U2atnPq93xDMnpIIsai/JI67nZ/pvYdxm7s3+8drFEXbmmpsf8E0aYdElcwQNwarUAXLNhk1EBO0pWfuWoExbUNNLClStDZiRwV45CebHjU8AUvE0UhR6nlBHsUmWD0QHOQQyBatg6fjIhsAROUTtT9aLrY5W/BxYXP9vA2fgGHnXoXK6bb18TWrdwN+yDp17WgtWIQso6oLEMdyqHmb/p9Wb7yz9SOTWMykZxfkaTv14X7+eAsiTNfb0KI9e4Hwevgi+mxz4mamxsq+8kSlO39a2ogVXmeBlZAk5FAaUERHPCvHPDm0PEfifYD+znGFpkbytZ+7t9mJ/AcUtg35+iqT5jLBpbYAJur88CFGaKVWGiA4as+7161ZG18dTFgC/zuCux3SJV8bBfPjVptO8B+kXle7jgbVo8tS2njSfpaV7DqYCc5vAwYSJT0hroLDRqJ9wSagvfGNqBRZnLtyOE6JXqQ+129WuwOCqEKiCuJfWiFeN1BgFLBZVd4BXHreSc8+VwazaV0H/XFOqzeIzdpYC1/pL71QcC4a2NaY4qC0ik4m5dmVjfGUfRNNYPavC+XTDJxrLQ5PmNsE5uTfLIFrwnXPRAIIIKQG+RYGE0Xog+tFoR95Ix0vptSAbG7KECieh47kM9he8QdNB5BCY17mKOC3K/1RzGcF5JopS6Bif25BcL3Yykx0OFD1PhwvfPNABuvrorSMbo4NaRt+qqKm744F7PX4z4HKJvjNNoYZxCR9jlppVMzFFXDU3t1nFITpAWWQloith6bj4UWmPrhulfZZKj3BB7ZkR2p6rOebtJAwiximrcqH7ouwC+7UBi4AjDlVseFL2NHnqkpGuan1IC0hNeYipcAy9il1v183BXs3DD4AcX0r2JcX38yBzYNZb7VzrmFg0fawMOwPSiwBpGPFT3VOuA/B/iR0HljMXeqOZJZ9CqfZA3OG36ZtuAyhc0Fvl1G+8vAtv0Rlaho6o4YncG4uJTD6lzs72c3hfUyJbxM2bsOs0RnOaPcVBs7sy6FeqUZQBWvsb1ht/gdIjkAB647uyakoV0dqd2nGedQ6HgiJ5EE1V6XR/165PPaX0hJl6R7fiSpRzH0lFPNVZPhvmGSh2D6gDS/UC7UdwT3Xo82Qdc3na0TbBUfwT+8NGJlJR6giCeJISgfmda+Z/4xTtESeL7cpy5mTbU2WzVbop3+IHzNLp+TyXWYYCUQIUJS77SMpQwgLi145LpHdH5GqoDrsVW3kvo9m0Ur2IobNS2Y+KvOgR2fZ32Bh2FFZc5OBmEFoSqYzdwVFuiO2Y4v6JxdBm0Gez2eBfVYrjRNrK9szto4xcabff5Ek+dqHWTqG3G42Bx3JIzgzFKvGqfTN5Z3rqaRQTarlyu4/02lDYFPXL8pFG0pj9ZV5MQLGQLsr7oxVALgGi4ihMg9Oa+FQQ7EgLUIF3oPV2pBFzsIVW7efF9ntngJBp1AJpflfNbnHls9iQ91SFbeGlHKErIQI3i1O0LOYQPJKm75YA0oLPOX/1DIk8Wjj+AQXBEky2+AMZkbymYr6o1bg8R7DJ9h2Fu84fzU3Kg07kDMQs41X4URlxx9LZuOxNzigXzvIHAcWimeSKjKfVEc1hpGJ2tYH29FVwuhoIbDOch05mHmz54n5yZe+aRuFL/D+7olLSRJGcQHIltoJDpo17Kl0JAwo0aXZduacWbkXbgzPR/Kajdh2QiPJHyFx4Ge36GgoyAAPU1L8HMHmlYGZpoiCZpvsoMRKUmRape81sn+j/IdTp7i9tiQ+qLpcYItLKSG7KsQb/BmCexn6OVirIBlTvHW/hO0TP05d8YKZ5ipfYfCwVOqkUxR9Z9aW+jvn75q1nQuVKgy5Cw2v0uUl8fR3J99xo0BOn8xDB4xe2YmMGV4TGkInlmDOhV9HE0z/DMmXFsuxHm85/69oohhbGaAwiKFzuPeWBvE1E6DiorgE5dsa3+KGNBdgyUsg5Sa4ZJCiZMidQ/ept1lQ00RZsW1WniJRYhDwy/yS6yQN+KC8vpuIzzhyru04KmEyFIqA6A7AnDYgFuEmeuNLCBlRvBYhGU6NfhIiHjcQA9AxAgI3FPA2VAxABeiqoRiKzhFWDi9g6+xhOz3RzNno3mRpwFqR1sgq/ZoJvNjlUNKORwaPjmKMEa0N1O4j5uVW7/Q6wliSieQt8A3fofe0OWykocWl1sk4fcfZzFc39cYdWd9YAkm5SQBJJUIxzGw4+XNXbxLLxdqeBobObRyPklP9RETYyI6JMr3lDVAZZGN7PX4d9rudCZCxXrnQsNiOXyi05yNnqScOsYLITbPdqpCK8uS7zg+fEya5sbHPLx0e+0poa+4a9Z+K+5idYqzFWL/lR5u8jz15HT7oVZmuO2Ci0crQKPESBqBBnX8QFXyCjUOkZkUrBJHKxS36KPpESyABg5Rg4ccA6imp7jGp24ih00NpmCgJ2/wy0lw+wL9N5223rYgk9i5bEz7Ye8MbrpjMmcfONCQK3HTbwU0BKa3iAkJT5esWJQWibyxFKpay6XO7VxR0BuuWTXrQix6xp17Pgx7gavz/CQKFMoGmAHSNn15/Ur4eHg8UXymxACP0KB/dAAG9wvoGOPB66Hp9b0H8UvqnQ81GuZRs9g4NSar0Hp4uudM7x/9pDp8BjKHxDr50AmhYlyqRciEZdGV8OSCX5lPXsKsGAUVlXg3fQuo6ih61AMK9cgi58CusI+khxN5IwC8qtjQQyssuTudN1Llhw0HRAnwhQHIITkbUo/gIopEIXSMM3xkOfEgWWdCQDAzUGK/BvXmqT51cmATnJMEmdUsx94aBnUgJgFntAd++St5MdCpSZkGEtifRwFn1DBKuKEW1h3lmRi8jDJ14Y4orAUMt73O/z0EYCfM4HMWyh99w9taGPvzO9LFN7SF2j+XKC6tNlDp2zrTHxDyqbA6Q7ERMzWxP2i2HcU4e5YWOFbXp4EbSZoMPr9kXe6etDw6xwySniAB0y35C/cA2IwwxSRpuZGe0+HPUtqDChSj1VI+bMdzeTA6eFkcI5aAf3/nSlIyHTGw+SqINS3teR0K8t3p+ZHi+cek4PNEaOYTVfOiucU/m0Oczee28lxit5CxqhqIn7orgm3hy5xS3CWq+e4tIguSKhkYFHzYnb5G3buPUvfAmtAJzwUS3PaRJUrc0P2jZgSs4liWtZCKE5L8ial0stcEVvm4UQ2F6iJBUwkKJ7jctLkQ4yFil3DhZPCIEeSEhzH3sCmRR+cepD5Scu5iC05SAKH6n8luJDmuP+It0I45Eo1v/Js93QAnPkdjY/a8Vh/8UrfOkfyIdom2pMXhYNZ9Iv5zCLEgNPh81bDw7EjMkuJeeiJDT9pXu2pWgTyr2p4KLMA43p7Bq76hVc4YYRaflGXJd/9RB9hJT7pkzLLy7ynWoGqTYNtVb7ScZjSRcBuRAX4KYccKgE5EUWumg8/LxRErFYIrzrFFxS7OMyD4GV1Tlk96t9pesToZqsbsns8h9FKiDO+G5fse12nGyLqqBMcDZf7ThSe7Tk9zGlCUQO6VbkCCdBR3+Fvtj3MVDrR/PZ/7xO6b3scZ5LF2j4YK8AvnHyJ0adSQIwC6f0Pg+EVwQhegHwbmH9vdlQ2CBAJVhEsZuCeRM3soCuBS4GLGEdF0I0qf+AAEBP3O7xXH0uaLyPCy4y3j3QeuYrLxYSBZLoI7brDIi8IA3vWHV/fWtS8/ryxq+5Mo/nXEYaQARhkCyAIsAIABUT1fgh589PqHMuGIX49j1zy24MYEccqcPZLpehyJj5lqPvaF9x7NUrSRxmNo/4nn/RsDR0l2P3qMZ5vMWBAXHxqM8LqEK2oJYYtg/OVU1jeIGJVzjUpUIYsPeV1SyoCENcxGDa8tR+Dlq9SGDQw/GkK2D42kVx6SbB79jMkfpNW1SuS5v5QH+fofC8atOTfsoq28X/iPdslR/0+fQViLGGqArZT+W7b8Efxr7RNBmT3tHshcwuHKBRIYnBMnDIG4ozFkfly4DkP8ws53F9wXmhJCu9kouO6svqe0w4PTRu58lQ87KRTc4JrwnlUSEEnK7ONWRc7lv/QMvORqgWfK/Zx1OWWaAQ0QpB6rIOmFhRf/PkEjrdrjBlyWYK7IX2cvXmFkzImo1WRv5ZUAAkh0j9Khv92Vm/Q8QdDIVgPS5LcUbTJ2l6Nh0QZxfWbN16WctRc1soxYSnmoKnmfUEH4EaeG8/cafTJ1I4Ct0JZgn113KgJomkrN8t+ugzhhl9K/3HCpPK2zinW8XE2TCPe5vTOGXo6amGb6bYsMrJNLM+fyIdtTX1HR4716E+OC31D1Vz2Yz+3kEGmOMRV64OpSCuiBnDqGQ8rNIcx+pDvIgpm3eabOYZgMI581fQAzDppv5GHMiJc61MOXcsxJaE8P9PYoI7eUtl4HIE3qZGyZ8S/TiEm6hxzJivU5gHHyosEDgQv3p2gN3IaEmoGty80kBziX5619mkqh1PrR6sA4/4Tz1mVApIknkxTjOoKAIiugAZ1GPSCx0mD8DXUPBp2khjBBv22QPF7A3J+2DqRod2DVPvT+AAOkJX6+wQldfRVqkRgji9B/LH66VsvTuzqyD4YBRbeGwKHzQGw/+iTOMG2yopqMqLA4uAa723hn9/5JbV5hKHmtco/b8QJXUQImudu9GiN/6LOYo5CBEcmUhc63hn8+sOgWcsA7FXmTFSj6Q3X4mLjRtlGclTYduj4XBv2T3rFyr6W0mlZBxaTXDQQEohaUkUYcUKk0M4saD8Fko9WBXA0fG6mMjt223CWKeagJjiEFSf6Kx+bPdbX3o7uK2jTIrsPsY8ZpjVjIoOX6ngosRb2oPeCAiD7+KpvWVjWhmrrrXCOKb2y0l4V2hpdvq5dv7/ACVd9BgsvHfNowkq6LvyEZ2Sa2Z8n9+Sw8ajAZzaNvZeyf62TaAqiwJ+pMSvjAbggTYjg+PexKY4eoySweZx9jc53bKlL8nTKj0Y4I3W+7Hnw1WgwnO+cJLRp0AQVf6RouXgxWCUHWkKZ1RjKuqBeRd/tusGEzepQmcIn6Ca05dqXzowN9FTd8S2sgf2rDm/nG1OrZsqLSNepdubsp/+NkQTLewXnKxz4IdOTAoIFDazI3OYwQjWzUMGa4Vy9y4uFCC34WMxRQfGNCinFjF3aH6lLabedml0BZAodhMRMsMyrLOpYtIMYxeS41LR5gRqAWRL19Dcv8g5OTyfgQVa6hkinyAb3dhbM0bJpEx0KRssFmS7qEaaSZS0YKuia3MW7R+eKDRkLPLM0BuKPswJQgTe6CZu/bVv2QSx1d/f4VB6tCy5RPW3NZfv6vdbhVv9iPqB9BWmefVq0zJtNgzrNjXYBOhCj5AnvuVi0OvWMKzLIt8E0GMZH1Lhf5IIQBNFdlyBsiTANBWYGrBsGm4F4l5UyRnPlk9E3F1AlWdwuyzF3C1jDGLIMuL9FwPb8WntoR4mzqyCO4ihAlum8qhWS/87LEYaLRYkhgHwbSjjfqZRUCWqUdjBxYXeHXRLqjbE/3G34qFW89gD6XLeeCFilfEGHzWejZXOtT2EgAhxx0Kw4F+xni7iXiUdzDVTaYxqtR2Q/5A7QWgkqp7DE8AlB6xsR8kAgSOVURL5dHSwNBc6g5VLBp/+5iPDvclzmsxIDZU8efSv2pe/QMZYTROES7lDOdjjIPz66TW2dvOVfxE5WE3lWsS3U6UypHrdpX89liJb+v41AI3fLt+ys4aP7dfcQvXtHTfZ/XCTVvB1arZdAdO3zV6+vvqnx/8230VFj5b4gQ/+dZUHD0/SehYeB1/doqdZ0sPCKhEvifVYX8VLVxOz5HAH6CAGhBtcqJhkeiFb0fSp2LgY46l0zDAD88EUihgGSiC84Yc8tDBADusLoFk7g0dpSxcFHAXl0pSMPn8afxD0TOdBo/JqbeD8Ne6fM44YbF2PS0wy1wOcSUXlC8Seqx1C1ykVhQEw0+FajP9nrxMXFhJwXz2IZG2XLGkTmf+Ll2WIO8hiY7pXJDlVji8bVINrsaQoqLgkv4RFmR3Dpn8seDmWzMeGonHfa1ocMm5GDfhROsxhK9CuqCU34UD6Fu5RKdj4wqLtUT+xEYj0mVw8vQGVChpTYHd13NCxoHFf6WaweIYTpNAgabIOL/lsYelUDC+yDbaty+3I58YYeGTj08yGx/sJ395mM5CQZ5IJNzZCvklYu6Uc4dwYrhbYjry1+4lhFRFCMAPQXIpymtx3DH6wtj5pebZ/Jt+5yMi9WWa/IrHbFVwMs/pLCPHrNn8g9cZo+OqHXF4n16D8OzhlAuBAUR00Gtgw7cznKQ7+qWu/R+7IUuCJ3ZdWQqIiIMb2u+Zd9nB/SDTW1Y4KyiPiFqqje/2JwoMD5ymnP8frnCf9UN71ZSdY63/s5C/4iohhSUsZ2Q78zdYlBtnS/rQ67ROeqVIOi8UgrCzb3eEMazMagDp2aEmfob45XtPny/UE0Zz8PrAuuZwE3tYqaiV2U7pCQ1wHc4pXjswhrH4ZZqQ5smVcdOtmk64IBsfblwGF2eapLkfGEL6qjkXxWMKP3I8AFO3T9Mf5hpHqyOvd/yrMv0gFOF1Zi7qoIVuwKg11JTPOiHZSsMCZ2rbV+x9lfDFrmm+GyauEM8DFIpDR3FYmeIxtxvLy+J3xaQ2LV4iO3RMv76bWRGEYJetQ+eAI8CacPz0BbOUaohqvJxsTUNKQvmfGJvGbffg8XyvEFuUPRJ+L1l16Y9F9XCtYCKpv2Jw7FbRNXXgMjRba9I1CqZxKupJ+x5UH4oD5qduewd1fQ6Urz7UtYryK+IvszAo5I59kQualULXKq3mp8VS+Ecj+nvRBsiU8EXrg34lAZEwwgXh7/V5xb18Z+JcTCbzzrbhADhxzuT3wklVvlLta4T/eCejyxWvrGydgdjArNGWAf3jDL1SawYieMqP5EJ/gJ+P26geYB+12PV+jdVYiP381BCO/ffbXLRiCJT+448PHSXfXiOKLtyvVbcr8IU7p1lzvXM2P0D87mtZ/olU8QzZU0deo6ZF086CeUSNFKYzpdXDGcxz2DXrZSTf1JBQjDHUddu3WW2AUVGvc/ROsYZzej14e1Z7zEftk7hL7XlgNNqNttTMLJbllA04coA+6izvfGf3TRPUWvTvmIE99gh1Icos4T7f5x2tZUxWeDb3EJ29DwXDChPJ4Zh+DuyBZdNq4T58wkVGp9hAbniA2NnZ+P6wck5ZRlu9SQQZQVb1mEeR6zY8hy3T0JOZXZ9ROj9szrCrW1UCjvbqBJFVjF/IEUkzsnuKJBKUPp9q6+z1Ch/rfcOgJGs/SU6FRvfa6H7heUn7GlUIRHRYu38luMVPXDt0LJsqqDbd418Di3Yun1Sbw/dv8LYkxfz4/Vo3ddb74bPddQGi29NtybRsl2AKpPFBz1C32cRI66U99+w+kJC0gANCe4AC3k5dmX4dtmotzTK/VzG5Bq42VE49kTqN22hpmXJsbtXw0bGdgdblMVZfkvYH20s99Q91PwBPuk6DSx3JNzjDjgpYuKYoxNz79bk7HdW+IMrrbRzEtMzVBg4CxCJVVUz2TqCwL3JzBWYDOs50seRCq2YXD5Q/1bvSb/F/tF0JSezmOM2czri1osaoD35fUQi3UtZfn49rmE/e7l57RsP2+PzBEnAoC81wToWBeZLjYajJl/P+pFmtbb3n53dIBMVPOteyXlXbmIaW+K2hkU8eE2duUiGoWldlO+VxbHSCkO02VNeknXSQZi5vGOoItmnZzhm6Lv6OCflAsyEJ1kLQmBGchg2WY7EKDkTDgGqLjRFZAqHs1ZzJsZBTIwEUJymGnHuPGJ1QqJg3aOhP0qRCEJcu+/W4/vrHz/kx6vAugF7ZsI6lK2gVDxk8tjqUVS4ZEjdpgDBnVPb0tbDdBWK2k/3fukhQAsW1mVuxNyF3XxoKtu+PmXBbesQidi0GE7Ajwy0w3902f1vsaOP2qtXjw29PD+M/sxQC+AZPVRuGaCRGA29qN7T75qA2VYjGNl54iEw6lKN5RrZdKEAcgpg9vasZaaO2xCJUwkF21wDz/QDdZgLeqeZoUDj2bF3I+mvE6eXF6IkmmcqQEl3SPsYsBUdbfsY4WLK9Y8J3XM5kmJ75tDZiodTj5/MwC/JcROn4Zd9UI25G2F9U3dOe7gULWNRT+cd5U1/JQPK9FUs8l4FZBlcZBu7cMwpsLtSPF7TtepEMNnRtCAmQKurOaIwOC3xIWXsi2BE7wndGL9ZCgPsLAcp//w4aM0kBHLf3uIOPEP3eFuxii4Ao8EKSOlzbY+WQpfeVRTOnVsRw8bgW4BXg1jsaP2WmFObwqxCgovePjQ4XF2IZGHA7g9CqkJouGSsARuSZuhNNAwV9eqqvWETQkaN3LS2Alwe72ZyU4XNIncx0lRHU+1OKOpNEBRhSX3eoZQCncSAikGx85co70QpskU6xPXu0/haX1nCqnDTqwQVAv4yiz4wYhaO1jDl490M0/beILUjN/pMIpHymqfsOQqI4Ujdu4wKPE1Ro6AHbech5PO5pyhxBTurIJajQdBFC1/h6pk2dG/H2H2EXkPMBKAAJAZUOMaB4NX42wQ1WJwlPgLojAtaVPSIFmNi3ny2sqcGsEEfS7SFhJ1EVP89YW1UbDm+S8wBaFbrJCqo9AVPfE1YJY93TkgYotJ3Cc6HScowibq+lLL8vh89LUIHqiV7U6oRgZNrJvliAITVEI4iMUj3IdRRjorsgmwUKlrcnqP8XUq/XDETUR8DtotmGY4VZhtxLhHnCcYDm2LNhgBZh0lhxz0cKbPR1iug4g10jme95j7JNhxf6jrUAmK15XuHOlsgGdsE/rHySriDpwPL5yLdF3zV/RVYVxmwI91VtBKAdUYLAFa7QAi9tggnhKYgGBoCNtt5kkLNNLnGmQ2d4O71e382OZSzOAMPPK9B2KHujr/Gj6TqaPExTi25XdTLuehRYEIPcCnP6JfTw+kWuojjCqbyW6Dsv/+UTt8Q/nrPbCql789dH3DP+yuPFc6wlTN7RyC7Oy9v6Eth6TBEOfVEPys2zL26hfJkCEzxrWEXbF1N1CiVtt9vXakggtXRjoCW9w45g8OI7tU6KTQzK/MrXOV4dYMqs96lixXrLG4as9hcpiE0/S/3OIQ8t8EUxE4whT2uMsUgFUN0OZW+LPED3rt6/wUt6i6s7dRjqpV184DhwZfiqSqYTWya0Hwoq7g8mHTdiIV3utlAd925FMWWvKC9It+JmK/e+Do5SepknyQP8DSgu1HHhnXOLb81zXL9wjvqpDHerlM/HITMJl5UXxbAGWxkxSY8Y+ttLM9UpVtiV4ec4fsGnsn1vuLHxqk+Ek1o97clkqHpyH6CtrV+iW0esqZqrQDNuPdPTbJ6Q+BDI6ddMp9pKlfwbp2/zkunZLnwnOS54x4VVc1PmjZw32jJZc294N3vzEczEk0ea+ktRCO5cOeqoHSg+cTp27kb8t2a6Jl4SgakcfWJMuLeO0hlRuodJcfDnWM723J+D7lkSx0IhuD24Cn8tyt40iSF/DT03F3yCQkXHHcOQBJAfDniRA2kuQhNNkwFjk7z8FcTCtk2XQXTpXokWp+k0OurHidStDO+JrFVyzcKVukrG2fWcs3uKTbVcJJBj3xvKBIL3aDvdnMixNDN2IAHpcD9+mUmmNXhTWYe5oAx6TOfmm2XAdMV3P/nqzz47Lp3an4uXPYd9J16C9i/Pv89BlT/IHEc/XcO6mED2rN9sVr25Z7X+ZIyvlXzszDjv0IJQgzTX2NVOxrdqHlEiqeTsagRoJCXrt8b0JyEadRNCN9OqHgZAuSAgIuDpgmkkwcSkN20Kw8WhhSG2oxqJtMoTXemo3l+8w3rNbM7MW1iXUNYv66LN9/akEAlAfRdyfSg/gQpg1pPqh+JhDWlJopFzyWc6H6UmFIrGlxcYGZMgGRXJuhmia3JMuH3xrK0Oj4hwaI3TyIyQ2V45ydqI+M6LQJG+zgaZMj145Y+idKoX8n33WE6bqFgqCx0YPRbmrzdmS6UTKt7/aWJUn+anO5wq7CzVdKEb4jxSUnFXL8i68GVWQs7uYSH3twUp4go3V8lXfcW3lOnVoKo1uCUQno1tV7jnsZFJllpauvUmkzKKiu1VhcalOe62ybZVVl1UaF0QTiJ2XVyk0B8K5OhUoSB9kvFmV1aNbsjzgjAC0LcCZ62c7favizvvZLop/ILhWeLM9Njs0wYHsnvUz4dTYdyKSR+lcle6SCumkp1fAlLQfR0DPZTnAVuUiwvlGAtF+82YklI0Y6c46Qs32IqCOyCG4yjaDD0ajI4HUhpf+RWDa9HPlFjczDDuROVaywiSt9uRHIYXkphybr89dt2vTaXVKQPoVrFTWeWdjyca7Wi/jE5BQuxSDP2iIZ1zufqMnk5r9WlfelxUWmYF6bllvaqPkiYXc1NAbO22Iaej6mrE1L6PMmppFJC+4umxqlhXWohUzYWRl2h6KP8ChxA9hifPvQpX1pqIar57qAiaVuop6zkNnWI8ScW0eRMW6mEKS1qzpwGb7dp4+GAkCStjMW14rE28na3uTKI65SEqcrjjfqSRNIicmWORapTMW8h2zXDl32hOMlt3OHiWneDj5NsfGo5Clv3Wb9U9qhPkH+O3A4aTjKhp9Q6ehZivOUTQOFQ0WundUlwWNsWlFsckmdXWMm1/V66mR5DqcWt0jU92ScCMSPsnW62X1n+gxvbli0wx2gVk94UnxLO6cw7pBYqaUWTsc36aczZB6KaFyZ1Rk3u/CzaC9EMc55iI2Rp5KiinLtcPLBKnftM9Nm5Nl589UtnFXdvxwtk/stO8HCtXt247hU2ergVW6twjGUEms+4/7J7ZCOkJuFsyVod3assY4lxjN6OZj3EPZTpxdlIwdPgx1lhOma6qVhlGvh19x4v9eqbJZLVJMx09aMAaAesnouGnCU/dqUKkuh1lDPNBfItH1X2W3l9IVqd2pUcBap4vc64zn/RiVXQryMhN/F1IEboDJstO+5QmKYv+wkNQCPP0dm+4tA4Y4TZH72uzIztzaguvNhFcItDSYF7Dj9bKO72arvaE9a5ylaNUw31AzFS7TxSn0KstnjI97jHSrwhzxWDWe4q8x1eHbv79teDVbZJg7JNqCjZTWKLbO7Sc9lJRTkwOSKgvHcDep2Psn1jYL/vyWlvm3iX+bJ3ZDONHBU9FJvdhlZxe5Wu3AE9DNanFArMMbrHSq4NTZ/Og1xI+jNaypqmc+w+dCZ1XoXDNrHlJIx0yRwEjHqd3GuNyjO6/rUlPOYTWqSovY9nYWEJatq3djs5ccXEElUyTb+7MSDntCDfWzXn3xNcnzPMTRUSw8ttYz9Wfos6nx/+5cK8ErZ5/KamXfzBWT8lwv7pyZBJmb/9j6KMm2Mre81Cmr9Dul3I38WULtxMU62MDGDVwoTFvs9WotQqzOOiRspnd7fM7m6r724qlG2HXwdg7dYF3IE9/9aiWltByKi483o8+jt+G1BeRHejnLxa7IzdQ542oyeSazI6vJDDG/YQhHPckXOwVHjbYU29C0BnUga6YF8GnD9OMtQ8/0E3J7HKch66NjVgcM+ufkSlcEMXIguITOkDZ8uUAfH1zarU5+MONa+RzUPNYgn4zF08ksWEVI85lMyaEVidg7QHkPeAdXVTMAVPTmUL+4LArutl8Rei2PoBlyJoLBgCxXirXmDso0RHg1c404Ot7BZcxcxBZf0eO1E4cJzwBS5ECAoyA+BcbfgF7jZ9rcAAfsQWZUZYIM/C4df7aflRlOzv8t6E9rrropsowfNPQcH8Ofz4sPGT8SL5Qh2YNHcPNcj60DMaZpeVoOh9ymAGTqXqdtGUKLIg9NlOxRqNO74n1kfhbfSfIKfDJ4OrVOZmP/kExX2VhjzFECGx7FUaqOQuu0abqMO5kntiO1tn8RaUdTMaaVoBEfNJPlW+6VcW2vOY8GfdsfXg1FJFa0H7oQsj9RYf6RjMtuUTV2G+yblcaatHeR7q0bPKVoeCB+F4MWVBQHfSN2MIn7thmbSOYqq1TxZyXlawNeUq+FPeShGXaq/e4GavG+cEf+JInzZC34h1zta1al7Qh0DucBlZVATZUwQyiwEMmmlAUwgQbwCsFGyaNXDNVtY72ZS049ualMOhMCq6+hxwLVsjotCCUQjzgdfgUItNUoJJUtyEp3MoyRRGGNLZxFzX3V3zd8we1uy+4hZ4m0PMeeSdy993YNwVCi3nl+2rudFFuZp+ogrlCT6jnrHcfDNhnlc5f81xnp1BCDa5NrvlzOigrSNUnia6opwpLYKQY686xiidTAyxSl8SeoEJFUQFMA21l4C0nu/8KgZ58urD2npcPhp8F238DtsdtrxtLfENt0JTbheifcFg/BUg2y9Te5o+B4qcitSHF9k0u3zSBvOm9lhmSWHPgJwlk2WX+to7WArs2S37ow1qnBTM4RGO1KDP9YUfmPTysT51aantlzxJhbJpiYv0TB8PK+M1S5EFocpO1a2L+Ox/k6HudjfvRu1JACB+8bhXYVyBmyTPzULu1PFAsoJPjxkFm4Qp38dsKjS3BFF8MPoCONt3dwVJWT6Lpaavlwfl0VN5KSNjpFmEdYLpko534TsNqO6/DLBt9PtVMhat2Fwiq9Q0hs/BqLDCXuoA8ENHzJsf6+NiGzZ0t+E+q00oZR4YLyKkTurGMpTS70VmU/+HQ1leUX7XD67xn8W1ZgwJVprRGsP74ScSRa1Rtg+J7/pH0GP+yMOCu+IRO+VTBOnEjauu/MzkeJCo+ZQE4gW5S3lHcJcwzVrc1C0k0DqNOJUm+RBUP6+CHROhtYxwlCIhjEwIeOYi4trOKRsXiuKCIkeZwpr0r+GKlm5tXJFfxUlJPTQppKzH/aR/OHLluoLfGKeuhzLhwk5HdtbczFoh51OpuWNpbJd3TEeUwBbFMtgm7F/ndMvH1f9+gQMk5DD0gmFSt920ZDehEw5VRAswvMgnL7ka+irncnFgDeBzOqQ2DFsKEnYndVlao48bEyKj9BGMkGLA57NZGtdYrLCc8LPuLTwH5wyT8ykgg98Yk3ttBtqTy8HurppNiMWTFOKYrAhOAEUlOTI9QTZA4rtymyFmiPWcLand9bYCOfB/ug1SIwwQnjDgnh5lKdtjgky5RIyKo0pCAvI7XWxcNCpilAIjnTiTlJ9EVs7labivqjg+xQq2qYdkZUgVVKjq7/9ag+MmIheVL6WYGlbUV6DHpj2zfOsN/NU1qk6Jpp1xdLGM2SUcZIT29pZB5x3MbfwF/fLd18EvpFZi7kLeVocM7/1c3OXLLdwJty6o1jJA5iPTiC4feTSlSDs85V0wudwYGE7zTDWF6bwQyhS15kTBLL90gx+mSl5YfBi6M6TIDEM+kXAtGBFjVlcTsEpdATLsUXCK+7VWMN0yPEd9G73keW0sS43n6iIVkAyBPRyMEE9cErbfj+u+uLNyEKCSOkSrEgJ1v8oK+9VEkIHvUR26yqtNWhuLTdMZIVHYqV5pBpt15AD8A5VHRUvOPN29FSO+8ew4SA/DNddt8oG7XgP7WYnGYUUAVeKm2i9Q6zFH5Bpyqmdfw6sFQV2OpihI8PPxx5jqiqkN15jWKO7gg8L363Sr9jQB/nZpZdNzzQWycxOVNwbbuNgwrkk8vqMt4/g3SjcT3Z1kO1bI+MILxFrfNmHu3JjEHwUPxVKFD3+Yhwi0HB8bHMgWcTg1DAjp79UVQWEBEVtYqxqPZJhnrSfdeyyRW9FYe/Sp269H4nIJ+85225Qo14yQNJfOl3W47f8AGtry4/D3OiujuxJMUWhx9teW7v5Qgyu/e+l+LiudLN0jnKkJnAAEpovL/3piwoah5ckoBEq/15r/RhbonG/sj0aFLFp1857pQjzEYrVErvCu3XVLFDoBzmZW0q6rF8oygI7D6+z39WCUe5yMgDtE+uZa3N0nxuUZOJoOkNNHProiBAw5QZoF3oaOF+Aj70L7vn8MiZQ5eTOsIN/OxCR8eJXezKkQ56qqLkVKe3CLu+AdboSWaXp/iCWdcYP0Y462m3hbVI1BzIevHzp55ul0/q7D8fzBiwOA3EgCP534E6H1gDzLC1vZbwE0Vl5qcPMtCmQyGEU9BDmlVRtdjrU9CaXJw9RiK1WMVnSqtR8BO1CJg0OhBvttBAVeUbYnwl09NkjokELchjbZZV7atY5KGJxYUfNGS64LNsvBX0nG6UBhHB7Rj6lgc0NIovm5PJYiZHaEAzSFa8LBwoTU+PvJcDnTk1hQRd0Cp62/mwzcNG94e++Om5EJvUKNMPmPsXf/FU58fsvIlDgvnjFaRkRPMfVIdUrweWB88nQFaTe67rzJ9+EK2oSv725Gv309dDz2Pks52Mmqu214fJBrtPcmBxfTwJepCtrA8XNwwnAOub8ZjeSDV4ltSHBzxlRKUfWZbl35KYNNDbmP99onATfE9686N6zidx1sed9Gczy+Q+ZhgTcULUc6K2H3JyDuVCloPac09RPltr6JLSD22UFkR0Aj5bYX6NevIgpD5FsdbGqBooN+nlRrms580rOlFl4Teh+6IF8sQES+UYQ1EfA5tH3TO8zM7rI8lEJ0IyaM1x4BYoLWguVtv9tHTLDcNCk3fNh3eKjgkHYNOfC7PXFZw+2TEhDWGt2gM6mmDSUEraUDmiQcqm0cKikZGWx448Du3GxgokXAcrlBa5mBxIbDFikCUOPjh7n5kUwsXWzTXuKZ24SfbFCF9iTYNy2oLHfbC+h2Anqe4UkutRfWXdD9C3V3cmopBjc5UqZd/UZBbL2kk45hcE6Axw+/wneWAZ+NYobI5SLIAulEo1ICQXlrCUcnKS8iIOqyOnNrqDNjKgbg9DuVo3eC/KQlGHYzXgQSxYagtAF+/hH8BggsoEd5pWFjuABVVrgAoa1oETGHQtHaukBUh4sETwF8WcAUFBDBlwg4ECRNcqp26A4nAmPGwzbcnWknjIWbJ/os7LxbdltSEhmgC5NwAvDSwQjkCp/yF8l6mUH4TQm1LKpUWVGCgAoZMBE+58lHrih//Zv1ML8rxYO4NkE/Fu8Z/31XwU+cyDn2sZJNAp/k4W12bz3O4Nv41HnyAiyNezA76pU/JS/73eBuEPXX18LqPLp1t9weEcW4VmdNkx6b32eZXlX6YsmjT8x3A+yBUb3PpEdL8AVcB5Q77kcHip+GhH7XI7OkccRp+pmPGLEO+rClBNSOQPKAmqk3EnybUKU6B1VM1LLAiRDVdCYIuyWo/PLZObqTL99ogi6f8w/Zt+JAFgZSFW387WeqEM8p9GYlrcIyd82D0RMLeqwesdS7U98qUCoouJPlQdsbny6XsU5z7U7JayX135INNTzZCpTbjWP0QNh0G/3skJvN+cYv34bpM58zg/SZQzI5gnoxf2C4WovXcFlo4byite4FpF0/bz7zESslMfq4NsJ1gEGbwG3/8ay+/Wc4yOtz9x9xwHyQSqsGZY4GPWJ6XBfz/sNdaZR1lcxpjc3Ll2oC3/WJ+Xz6rmHxcdxZHpClKgqiWbmZEYBPnjRhytlL4kos67A6SfIUz6COPvWOS4hrSF8Wl/u19O54W+AkK56NnWmW5pmqY5TbHTgdClLDAg92AslKZcu4X3qsiluFx62lA5XZqgqDRo5YYWsqdyk9Vn0Y+5BFggcC5MZ4D5FEs0V4sEK8EA/wPcpDFlWMyvg8WKeNgWb7EbHbqR1d92dlSn0E8nRsdOo+z3J7tbSAC3f9e3SzDJB5xVXbt+Zq3ayiGJzf4KV4Mfkf","base64")).toString()),kG)});var ps={};Vt(ps,{convertToZip:()=>Yot,convertToZipWorker:()=>RG,extractArchiveTo:()=>rde,getDefaultTaskPool:()=>ede,getTaskPoolForConfiguration:()=>tde,makeArchiveFromDirectory:()=>Wot});function Got(t,e){switch(t){case"async":return new Mv(RG,{poolSize:e});case"workers":return new Uv((0,TG.getContent)(),{poolSize:e});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}}function ede(){return typeof QG>"u"&&(QG=Got("workers",Ui.availableParallelism())),QG}function tde(t){return typeof t>"u"?ede():Yl(qot,t,()=>{let e=t.get("taskPoolMode"),r=t.get("taskPoolConcurrency");switch(e){case"async":return new Mv(RG,{poolSize:r});case"workers":return new Uv((0,TG.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}})}async function RG(t){let{tmpFile:e,tgz:r,compressionLevel:s,extractBufferOpts:a}=t,n=new As(e,{create:!0,level:s,stats:$a.makeDefaultStats()}),c=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await rde(c,n,a),n.saveAndClose(),e}async function Wot(t,{baseFs:e=new Yn,prefixPath:r=vt.root,compressionLevel:s,inMemory:a=!1}={}){let n;if(a)n=new As(null,{level:s});else{let f=await ce.mktempPromise(),p=J.join(f,"archive.zip");n=new As(p,{create:!0,level:s})}let c=J.resolve(vt.root,r);return await n.copyPromise(c,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function Yot(t,e={}){let r=await ce.mktempPromise(),s=J.join(r,"archive.zip"),a=e.compressionLevel??e.configuration?.get("compressionLevel")??"mixed",n={prefixPath:e.prefixPath,stripComponents:e.stripComponents};return await(e.taskPool??tde(e.configuration)).run({tmpFile:s,tgz:t,compressionLevel:a,extractBufferOpts:n}),new As(s,{level:e.compressionLevel})}async function*Vot(t){let e=new $ge.default.Parse,r=new Zge.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",s=>{r.write(s)}),e.on("error",s=>{r.destroy(s)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let s of r){let a=s;yield a,a.resume()}}async function rde(t,e,{stripComponents:r=0,prefixPath:s=vt.dot}={}){function a(n){if(n.path[0]==="/")return!0;let c=n.path.split(/\//g);return!!(c.some(f=>f==="..")||c.length<=r)}for await(let n of Vot(t)){if(a(n))continue;let c=J.normalize(fe.toPortablePath(n.path)).replace(/\/$/,"").split(/\//g);if(c.length<=r)continue;let f=c.slice(r).join("/"),p=J.join(s,f),h=420;switch((n.type==="Directory"||(n.mode??0)&73)&&(h|=73),n.type){case"Directory":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,fi.SAFE_TIME,fi.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),e.writeFileSync(p,await WE(n),{mode:h}),e.utimesSync(p,fi.SAFE_TIME,fi.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,fi.SAFE_TIME,fi.SAFE_TIME);break}}return e}var Zge,$ge,TG,QG,qot,nde=Xe(()=>{Ge();Dt();eA();Zge=Ie("stream"),$ge=ut(Vge());Kge();Pc();TG=ut(Xge());qot=new WeakMap});var sde=_((FG,ide)=>{(function(t,e){typeof FG=="object"?ide.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(FG,function(){function t(a,n){var c=n?"\u2514":"\u251C";return a?c+="\u2500 ":c+="\u2500\u2500\u2510",c}function e(a,n){var c=[];for(var f in a)a.hasOwnProperty(f)&&(n&&typeof a[f]=="function"||c.push(f));return c}function r(a,n,c,f,p,h,E){var C="",S=0,P,I,R=f.slice(0);if(R.push([n,c])&&f.length>0&&(f.forEach(function(U,W){W>0&&(C+=(U[1]?" ":"\u2502")+" "),!I&&U[0]===n&&(I=!0)}),C+=t(a,c)+a,p&&(typeof n!="object"||n instanceof Date)&&(C+=": "+n),I&&(C+=" (circular ref.)"),E(C)),!I&&typeof n=="object"){var N=e(n,h);N.forEach(function(U){P=++S===N.length,r(U,n[U],P,R,p,h,E)})}}var s={};return s.asLines=function(a,n,c,f){var p=typeof c!="function"?c:!1;r(".",a,!1,[],n,p,f||c)},s.asTree=function(a,n,c){var f="";return r(".",a,!1,[],n,c,function(p){f+=p+` -`}),f},s})});var xs={};Vt(xs,{emitList:()=>Jot,emitTree:()=>cde,treeNodeToJson:()=>lde,treeNodeToTreeify:()=>ade});function ade(t,{configuration:e}){let r={},s=0,a=(n,c)=>{let f=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of f){if(!h)continue;let{label:E,value:C,children:S}=h,P=[];typeof E<"u"&&P.push(zd(e,E,2)),typeof C<"u"&&P.push(Ht(e,C[0],C[1])),P.length===0&&P.push(zd(e,`${p}`,2));let I=P.join(": ").trim(),R=`\0${s++}\0`,N=c[`${R}${I}`]={};typeof S<"u"&&a(S,N)}};if(typeof t.children>"u")throw new Error("The root node must only contain children");return a(t.children,r),r}function lde(t){let e=r=>{if(typeof r.children>"u"){if(typeof r.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Xd(r.value[0],r.value[1])}let s=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,c]of s)c&&(a[Kot(n)]=e(c));return typeof r.value>"u"?a:{value:Xd(r.value[0],r.value[1]),children:a}};return e(t)}function Jot(t,{configuration:e,stdout:r,json:s}){let a=t.map(n=>({value:n}));cde({children:a},{configuration:e,stdout:r,json:s})}function cde(t,{configuration:e,stdout:r,json:s,separators:a=0}){if(s){let c=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let f of c)f&&r.write(`${JSON.stringify(lde(f))} -`);return}let n=(0,ode.asTree)(ade(t,{configuration:e}),!1,!1);if(n=n.replace(/\0[0-9]+\0/g,""),a>=1&&(n=n.replace(/^([├└]─)/gm,`\u2502 -$1`).replace(/^│\n/,"")),a>=2)for(let c=0;c<2;++c)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 -$2`).replace(/^│\n/,"");if(a>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(n)}function Kot(t){return typeof t=="string"?t.replace(/^\0[0-9]+\0/,""):t}var ode,ude=Xe(()=>{ode=ut(sde());xc()});var MR,fde=Xe(()=>{MR=class{constructor(e){this.releaseFunction=e;this.map=new Map}addOrCreate(e,r){let s=this.map.get(e);if(typeof s<"u"){if(s.refCount<=0)throw new Error(`Race condition in RefCountedMap. While adding a new key the refCount is: ${s.refCount} for ${JSON.stringify(e)}`);return s.refCount++,{value:s.value,release:()=>this.release(e)}}else{let a=r();return this.map.set(e,{refCount:1,value:a}),{value:a,release:()=>this.release(e)}}}release(e){let r=this.map.get(e);if(!r)throw new Error(`Unbalanced calls to release. No known instances of: ${JSON.stringify(e)}`);let s=r.refCount;if(s<=0)throw new Error(`Unbalanced calls to release. Too many release vs alloc refcount would become: ${s-1} of ${JSON.stringify(e)}`);s==1?(this.map.delete(e),this.releaseFunction(r.value)):r.refCount--}}});function _v(t){let e=t.match(zot);if(!e?.groups)throw new Error("Assertion failed: Expected the checksum to match the requested pattern");let r=e.groups.cacheVersion?parseInt(e.groups.cacheVersion):null;return{cacheKey:e.groups.cacheKey??null,cacheVersion:r,cacheSpec:e.groups.cacheSpec??null,hash:e.groups.hash}}var Ade,NG,OG,UR,Kr,zot,LG=Xe(()=>{Ge();Dt();Dt();eA();Ade=Ie("crypto"),NG=ut(Ie("fs"));fde();Tc();I0();Pc();Wo();OG=YE(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),UR=YE(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Kr=class t{constructor(e,{configuration:r,immutable:s=r.get("enableImmutableCache"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.refCountedZipFsCache=new MR(e=>{e.discardAndClose()});this.cacheId=`-${(0,Ade.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=s,this.check=a;let{cacheSpec:n,cacheKey:c}=t.getCacheKey(r);this.cacheSpec=n,this.cacheKey=c}static async find(e,{immutable:r,check:s}={}){let a=new t(e.get("cacheFolder"),{configuration:e,immutable:r,check:s});return await a.setup(),a}static getCacheKey(e){let r=e.get("compressionLevel"),s=r!=="mixed"?`c${r}`:"";return{cacheKey:[UR,s].join(""),cacheSpec:s}}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${nI(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=_v(r).hash.slice(0,10);return`${nI(e)}-${a}.zip`}isChecksumCompatible(e){if(e===null)return!1;let{cacheVersion:r,cacheSpec:s}=_v(e);if(r===null||r{let pe=new As,Be=J.join(vt.root,x8(e));return pe.mkdirSync(Be,{recursive:!0}),pe.writeJsonSync(J.join(Be,Er.manifest),{name:un(e),mocked:!0}),pe},E=async(pe,{isColdHit:Be,controlPath:Ce=null})=>{if(Ce===null&&c.unstablePackages?.has(e.locatorHash))return{isValid:!0,hash:null};let g=r&&!Be?_v(r).cacheKey:this.cacheKey,we=!c.skipIntegrityCheck||!r?`${g}/${await SQ(pe)}`:r;if(Ce!==null){let Ae=!c.skipIntegrityCheck||!r?`${this.cacheKey}/${await SQ(Ce)}`:r;if(we!==Ae)throw new jt(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}let ye=null;switch(r!==null&&we!==r&&(this.check?ye="throw":_v(r).cacheKey!==_v(we).cacheKey?ye="update":ye=this.configuration.get("checksumBehavior")),ye){case null:case"update":return{isValid:!0,hash:we};case"ignore":return{isValid:!0,hash:r};case"reset":return{isValid:!1,hash:r};default:case"throw":throw new jt(18,"The remote archive doesn't match the expected checksum")}},C=async pe=>{if(!n)throw new Error(`Cache check required but no loader configured for ${Yr(this.configuration,e)}`);let Be=await n(),Ce=Be.getRealPath();Be.saveAndClose(),await ce.chmodPromise(Ce,420);let g=await E(pe,{controlPath:Ce,isColdHit:!1});if(!g.isValid)throw new Error("Assertion failed: Expected a valid checksum");return g.hash},S=async()=>{if(f===null||!await ce.existsPromise(f)){let pe=await n(),Be=pe.getRealPath();return pe.saveAndClose(),{source:"loader",path:Be}}return{source:"mirror",path:f}},P=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${Yr(this.configuration,e)}`);if(this.immutable)throw new jt(56,`Cache entry required but missing for ${Yr(this.configuration,e)}`);let{path:pe,source:Be}=await S(),{hash:Ce}=await E(pe,{isColdHit:!0}),g=this.getLocatorPath(e,Ce),we=[];Be!=="mirror"&&f!==null&&we.push(async()=>{let Ae=`${f}${this.cacheId}`;await ce.copyFilePromise(pe,Ae,NG.default.constants.COPYFILE_FICLONE),await ce.chmodPromise(Ae,420),await ce.renamePromise(Ae,f)}),(!c.mirrorWriteOnly||f===null)&&we.push(async()=>{let Ae=`${g}${this.cacheId}`;await ce.copyFilePromise(pe,Ae,NG.default.constants.COPYFILE_FICLONE),await ce.chmodPromise(Ae,420),await ce.renamePromise(Ae,g)});let ye=c.mirrorWriteOnly?f??g:g;return await Promise.all(we.map(Ae=>Ae())),[!1,ye,Ce]},I=async()=>{let Be=(async()=>{let Ce=c.unstablePackages?.has(e.locatorHash),g=Ce||!r||this.isChecksumCompatible(r)?this.getLocatorPath(e,r):null,we=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,ye=!!c.mockedPackages?.has(e.locatorHash)&&(!this.check||!we),Ae=ye||we,se=Ae?s:a;if(se&&se(),Ae){let Z=null,De=g;if(!ye)if(this.check)Z=await C(De);else{let Re=await E(De,{isColdHit:!1});if(Re.isValid)Z=Re.hash;else return P()}return[ye,De,Z]}else{if(this.immutable&&Ce)throw new jt(56,`Cache entry required but missing for ${Yr(this.configuration,e)}; consider defining ${he.pretty(this.configuration,"supportedArchitectures",he.Type.CODE)} to cache packages for multiple systems`);return P()}})();this.mutexes.set(e.locatorHash,Be);try{return await Be}finally{this.mutexes.delete(e.locatorHash)}};for(let pe;pe=this.mutexes.get(e.locatorHash);)await pe;let[R,N,U]=await I();R||this.markedFiles.add(N);let W=()=>this.refCountedZipFsCache.addOrCreate(N,()=>R?h():new As(N,{baseFs:p,readOnly:!0})),ee,ie=new oE(()=>W4(()=>(ee=W(),ee.value),pe=>`Failed to open the cache entry for ${Yr(this.configuration,e)}: ${pe}`),J),ue=new _f(N,{baseFs:ie,pathUtils:J}),le=()=>{ee?.release()},me=c.unstablePackages?.has(e.locatorHash)?null:U;return[ue,le,me]}},zot=/^(?:(?(?[0-9]+)(?.*))\/)?(?.*)$/});var _R,pde=Xe(()=>{_R=(r=>(r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE",r))(_R||{})});var Xot,KI,MG=Xe(()=>{Dt();wc();Rp();Wo();Xot=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,s)=>`${r}#commit=${s}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>kQ({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],KI=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let s=J.join(e.cwd,Er.lockfile);if(!ce.existsSync(s))return;let a=await ce.readFilePromise(s,"utf8"),n=ls(a);if(Object.hasOwn(n,"__metadata"))return;let c=this.resolutions=new Map;for(let f of Object.keys(n)){let p=HB(f);if(!p){r.reportWarning(14,`Failed to parse the string "${f}" into a proper descriptor`);continue}let h=cl(p.range)?On(p,`npm:${p.range}`):p,{version:E,resolved:C}=n[f];if(!C)continue;let S;for(let[I,R]of Xot){let N=C.match(I);if(N){S=R(E,...N);break}}if(!S){r.reportWarning(14,`${ni(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not "${C}")`);continue}let P=h;try{let I=em(h.range),R=HB(I.selector,!0);R&&(P=R)}catch{}c.set(h.descriptorHash,Ws(P,S))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let a=this.resolutions.get(e.descriptorHash);if(!a)throw new Error("Assertion failed: The resolution should have been registered");let n=S8(a),c=s.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(c,r,s)}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}}});var lA,hde=Xe(()=>{Tc();Ev();xc();lA=class extends Ao{constructor({configuration:r,stdout:s,suggestInstall:a=!0}){super();this.errorCount=0;RB(this,{configuration:r}),this.configuration=r,this.stdout=s,this.suggestInstall=a}static async start(r,s){let a=new this(r);try{await s(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,s){return s()}async startSectionPromise(r,s){return await s()}startTimerSync(r,s,a){return(typeof s=="function"?s:a)()}async startTimerPromise(r,s,a){return await(typeof s=="function"?s:a)()}reportSeparator(){}reportInfo(r,s){}reportWarning(r,s){}reportError(r,s){this.errorCount+=1,this.stdout.write(`${Ht(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(r)}: ${s} -`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,s){}async finalize(){this.errorCount>0&&(this.stdout.write(` -`),this.stdout.write(`${Ht(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. -`),this.suggestInstall&&this.stdout.write(`${Ht(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. -`))}formatNameWithHyperlink(r){return Wj(r,{configuration:this.configuration,json:!1})}}});var zI,UG=Xe(()=>{Wo();zI=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(bQ(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){let a=s.project.storedResolutions.get(e.descriptorHash);if(a){let c=s.project.originalPackages.get(a);if(c)return[c]}let n=s.project.originalPackages.get(bQ(e).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let s=r.project.originalPackages.get(e.locatorHash);if(!s)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return s}}});function Kp(){}function Zot(t,e,r,s,a){for(var n=0,c=e.length,f=0,p=0;nP.length?R:P}),h.value=t.join(E)}else h.value=t.join(r.slice(f,f+h.count));f+=h.count,h.added||(p+=h.count)}}var S=e[c-1];return c>1&&typeof S.value=="string"&&(S.added||S.removed)&&t.equals("",S.value)&&(e[c-2].value+=S.value,e.pop()),e}function $ot(t){return{newPos:t.newPos,components:t.components.slice(0)}}function eat(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function mde(t,e,r){return r=eat(r,{ignoreWhitespace:!0}),qG.diff(t,e,r)}function tat(t,e,r){return WG.diff(t,e,r)}function HR(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?HR=function(e){return typeof e}:HR=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},HR(t)}function _G(t){return iat(t)||sat(t)||oat(t)||aat()}function iat(t){if(Array.isArray(t))return HG(t)}function sat(t){if(typeof Symbol<"u"&&Symbol.iterator in Object(t))return Array.from(t)}function oat(t,e){if(t){if(typeof t=="string")return HG(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return HG(t,e)}}function HG(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,s=new Array(e);r"u"&&(c.context=4);var f=tat(r,s,c);if(!f)return;f.push({value:"",lines:[]});function p(U){return U.map(function(W){return" "+W})}for(var h=[],E=0,C=0,S=[],P=1,I=1,R=function(W){var ee=f[W],ie=ee.lines||ee.value.replace(/\n$/,"").split(` -`);if(ee.lines=ie,ee.added||ee.removed){var ue;if(!E){var le=f[W-1];E=P,C=I,le&&(S=c.context>0?p(le.lines.slice(-c.context)):[],E-=S.length,C-=S.length)}(ue=S).push.apply(ue,_G(ie.map(function(Ae){return(ee.added?"+":"-")+Ae}))),ee.added?I+=ie.length:P+=ie.length}else{if(E)if(ie.length<=c.context*2&&W=f.length-2&&ie.length<=c.context){var g=/\n$/.test(r),we=/\n$/.test(s),ye=ie.length==0&&S.length>Ce.oldLines;!g&&ye&&r.length>0&&S.splice(Ce.oldLines,0,"\\ No newline at end of file"),(!g&&!ye||!we)&&S.push("\\ No newline at end of file")}h.push(Ce),E=0,C=0,S=[]}P+=ie.length,I+=ie.length}},N=0;N{Kp.prototype={diff:function(e,r){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=s.callback;typeof s=="function"&&(a=s,s={}),this.options=s;var n=this;function c(R){return a?(setTimeout(function(){a(void 0,R)},0),!0):R}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var f=r.length,p=e.length,h=1,E=f+p;s.maxEditLength&&(E=Math.min(E,s.maxEditLength));var C=[{newPos:-1,components:[]}],S=this.extractCommon(C[0],r,e,0);if(C[0].newPos+1>=f&&S+1>=p)return c([{value:this.join(r),count:r.length}]);function P(){for(var R=-1*h;R<=h;R+=2){var N=void 0,U=C[R-1],W=C[R+1],ee=(W?W.newPos:0)-R;U&&(C[R-1]=void 0);var ie=U&&U.newPos+1=f&&ee+1>=p)return c(Zot(n,N.components,r,e,n.useLongestToken));C[R]=N}h++}if(a)(function R(){setTimeout(function(){if(h>E)return a();P()||R()},0)})();else for(;h<=E;){var I=P();if(I)return I}},pushComponent:function(e,r,s){var a=e[e.length-1];a&&a.added===r&&a.removed===s?e[e.length-1]={count:a.count+1,added:r,removed:s}:e.push({count:1,added:r,removed:s})},extractCommon:function(e,r,s,a){for(var n=r.length,c=s.length,f=e.newPos,p=f-a,h=0;f+1"u"?r:c}:s;return typeof t=="string"?t:JSON.stringify(jG(t,null,null,a),a," ")};Hv.equals=function(t,e){return Kp.prototype.equals.call(Hv,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};GG=new Kp;GG.tokenize=function(t){return t.slice()};GG.join=GG.removeEmpty=function(t){return t}});var jR,Ede=Xe(()=>{Tc();jR=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.resolver.bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){throw new jt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,s,a){throw new jt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new jt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}}});var ki,VG=Xe(()=>{Tc();ki=class extends Ao{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,s){return(typeof r=="function"?r:s)()}async startTimerPromise(e,r,s){return await(typeof r=="function"?r:s)()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}reportFold(e,r){}async finalize(){}}});var Ide,XI,JG=Xe(()=>{Dt();Ide=ut(BQ());oI();tm();xc();I0();Rp();Wo();XI=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Ut.tryFind(this.cwd)??new Ut,this.relativeCwd=J.relative(this.project.cwd,this.cwd)||vt.dot;let e=this.manifest.name?this.manifest.name:Da(null,`${this.computeCandidateName()}-${us(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=On(e,`${Ei.protocol}${this.relativeCwd}`),this.anchoredLocator=Ws(e,`${Ei.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let s=await(0,Ide.default)(r,{cwd:fe.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:["**/node_modules","**/.git","**/.yarn"]});s.sort(),await s.reduce(async(a,n)=>{let c=J.resolve(this.cwd,fe.toPortablePath(n)),f=await ce.existsPromise(J.join(c,"package.json"));await a,f&&this.workspacesCwds.add(c)},Promise.resolve())}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${GB(this.project.configuration,this)} (${Ht(this.project.configuration,J.join(this.cwd,Er.manifest),ht.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);return e}accepts(e){let r=e.indexOf(":"),s=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(s===Ei.protocol&&J.normalize(a)===this.relativeCwd||s===Ei.protocol&&(a==="*"||a==="^"||a==="~"))return!0;let n=cl(a);return n?s===Ei.protocol?n.test(this.manifest.version??"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${J.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Ut.hardDependencies}={}){let r=new Set,s=a=>{for(let n of e)for(let c of a.manifest[n].values()){let f=this.project.tryWorkspaceByDescriptor(c);f===null||r.has(f)||(r.add(f),s(f))}};return s(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ut.hardDependencies}={}){let r=new Set,s=a=>{for(let n of this.project.workspaces)e.some(f=>[...n.manifest[f].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&_B(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),s(n))};return s(this),r}getRecursiveWorkspaceChildren(){let e=new Set([this]);for(let r of e)for(let s of r.workspacesCwds){let a=this.project.workspacesByCwd.get(s);a&&e.add(a)}return e.delete(this),Array.from(e)}async persistManifest(){let e={};this.manifest.exportTo(e);let r=J.join(this.cwd,Ut.fileName),s=`${JSON.stringify(e,null,this.manifest.indent)} -`;await ce.changeFilePromise(r,s,{automaticNewlines:!0}),this.manifest.raw=e}}});function hat({project:t,allDescriptors:e,allResolutions:r,allPackages:s,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:c=new Map,peerWarnings:f=[],peerRequirementNodes:p=new Map,volatileDescriptors:h=new Set}){let E=new Map,C=[],S=new Map,P=new Map,I=new Map,R=new Map,N=new Map,U=new Map(t.workspaces.map(le=>{let me=le.anchoredLocator.locatorHash,pe=s.get(me);if(typeof pe>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[me,LB(pe)]})),W=()=>{let le=ce.mktempSync(),me=J.join(le,"stacktrace.log"),pe=String(C.length+1).length,Be=C.map((Ce,g)=>`${`${g+1}.`.padStart(pe," ")} ${ll(Ce)} -`).join("");throw ce.writeFileSync(me,Be),ce.detachTemp(le),new jt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${fe.fromPortablePath(me)}`)},ee=le=>{let me=r.get(le.descriptorHash);if(typeof me>"u")throw new Error("Assertion failed: The resolution should have been registered");let pe=s.get(me);if(!pe)throw new Error("Assertion failed: The package could not be found");return pe},ie=(le,me,pe,{top:Be,optional:Ce})=>{C.length>1e3&&W(),C.push(me);let g=ue(le,me,pe,{top:Be,optional:Ce});return C.pop(),g},ue=(le,me,pe,{top:Be,optional:Ce})=>{if(Ce||n.delete(me.locatorHash),a.has(me.locatorHash))return;a.add(me.locatorHash);let g=s.get(me.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${Yr(t.configuration,me)}) should have been registered`);let we=new Set,ye=new Map,Ae=[],se=[],Z=[],De=[];for(let Re of Array.from(g.dependencies.values())){if(g.peerDependencies.has(Re.identHash)&&g.locatorHash!==Be)continue;if(kp(Re))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");h.delete(Re.descriptorHash);let mt=Ce;if(!mt){let ke=g.dependenciesMeta.get(un(Re));if(typeof ke<"u"){let it=ke.get(null);typeof it<"u"&&it.optional&&(mt=!0)}}let j=r.get(Re.descriptorHash);if(!j)throw new Error(`Assertion failed: The resolution (${ni(t.configuration,Re)}) should have been registered`);let rt=U.get(j)||s.get(j);if(!rt)throw new Error(`Assertion failed: The package (${j}, resolved from ${ni(t.configuration,Re)}) should have been registered`);if(rt.peerDependencies.size===0){ie(Re,rt,new Map,{top:Be,optional:mt});continue}let Fe,Ne,Pe=new Set,Ve=new Map;Ae.push(()=>{Fe=b8(Re,me.locatorHash),Ne=P8(rt,me.locatorHash),g.dependencies.set(Re.identHash,Fe),r.set(Fe.descriptorHash,Ne.locatorHash),e.set(Fe.descriptorHash,Fe),s.set(Ne.locatorHash,Ne),bp(R,Ne.locatorHash).add(Fe.descriptorHash),we.add(Ne.locatorHash)}),se.push(()=>{N.set(Ne.locatorHash,Ve);for(let ke of Ne.peerDependencies.values()){let Ue=Yl(ye,ke.identHash,()=>{let x=pe.get(ke.identHash)??null,w=g.dependencies.get(ke.identHash);return!w&&UB(me,ke)&&(le.identHash===me.identHash?w=le:(w=On(me,le.range),e.set(w.descriptorHash,w),r.set(w.descriptorHash,me.locatorHash),h.delete(w.descriptorHash),x=null)),w||(w=On(ke,"missing:")),{subject:me,ident:ke,provided:w,root:!x,requests:new Map,hash:`p${us(me.locatorHash,ke.identHash).slice(0,6)}`}}).provided;if(Ue.range==="missing:"&&Ne.dependencies.has(ke.identHash)){Ne.peerDependencies.delete(ke.identHash);continue}if(Ve.set(ke.identHash,{requester:Ne,descriptor:ke,meta:Ne.peerDependenciesMeta.get(un(ke)),children:new Map}),Ne.dependencies.set(ke.identHash,Ue),kp(Ue)){let x=r.get(Ue.descriptorHash);bp(I,x).add(Ne.locatorHash)}S.set(Ue.identHash,Ue),Ue.range==="missing:"&&Pe.add(Ue.identHash)}Ne.dependencies=new Map(qs(Ne.dependencies,([ke,it])=>un(it)))}),Z.push(()=>{if(!s.has(Ne.locatorHash))return;let ke=E.get(rt.locatorHash);typeof ke=="number"&&ke>=2&&W();let it=E.get(rt.locatorHash),Ue=typeof it<"u"?it+1:1;E.set(rt.locatorHash,Ue),ie(Fe,Ne,Ve,{top:Be,optional:mt}),E.set(rt.locatorHash,Ue-1)}),De.push(()=>{let ke=r.get(Fe.descriptorHash);if(typeof ke>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let it=N.get(ke);if(typeof it>"u")throw new Error("Assertion failed: Expected the peer requests to be registered");for(let Ue of ye.values()){let x=it.get(Ue.ident.identHash);x&&(Ue.requests.set(Fe.descriptorHash,x),p.set(Ue.hash,Ue),Ue.root||pe.get(Ue.ident.identHash)?.children.set(Fe.descriptorHash,x))}if(s.has(Ne.locatorHash))for(let Ue of Pe)Ne.dependencies.delete(Ue)})}for(let Re of[...Ae,...se])Re();for(let Re of we){we.delete(Re);let mt=s.get(Re),j=us(rI(mt).locatorHash,...Array.from(mt.dependencies.values(),Pe=>{let Ve=Pe.range!=="missing:"?r.get(Pe.descriptorHash):"missing:";if(typeof Ve>"u")throw new Error(`Assertion failed: Expected the resolution for ${ni(t.configuration,Pe)} to have been registered`);return Ve===Be?`${Ve} (top)`:Ve})),rt=P.get(j);if(typeof rt>"u"){P.set(j,mt);continue}let Fe=bp(R,rt.locatorHash);for(let Pe of R.get(mt.locatorHash)??[])r.set(Pe,rt.locatorHash),Fe.add(Pe);s.delete(mt.locatorHash),a.delete(mt.locatorHash),we.delete(mt.locatorHash);let Ne=I.get(mt.locatorHash);if(Ne!==void 0){let Pe=bp(I,rt.locatorHash);for(let Ve of Ne)Pe.add(Ve),we.add(Ve)}}for(let Re of[...Z,...De])Re()};for(let le of t.workspaces){let me=le.anchoredLocator;h.delete(le.anchoredDescriptor.descriptorHash),ie(le.anchoredDescriptor,me,new Map,{top:me.locatorHash,optional:!1})}for(let le of p.values()){if(!le.root)continue;let me=s.get(le.subject.locatorHash);if(typeof me>"u")continue;for(let Be of le.requests.values()){let Ce=`p${us(le.subject.locatorHash,un(le.ident),Be.requester.locatorHash).slice(0,6)}`;c.set(Ce,{subject:le.subject.locatorHash,requested:le.ident,rootRequester:Be.requester.locatorHash,allRequesters:Array.from(qB(Be),g=>g.requester.locatorHash)})}let pe=[...qB(le)];if(le.provided.range!=="missing:"){let Be=ee(le.provided),Ce=Be.version??"0.0.0",g=ye=>{if(ye.startsWith(Ei.protocol)){if(!t.tryWorkspaceByLocator(Be))return null;ye=ye.slice(Ei.protocol.length),(ye==="^"||ye==="~")&&(ye="*")}return ye},we=!0;for(let ye of pe){let Ae=g(ye.descriptor.range);if(Ae===null){we=!1;continue}if(!Zf(Ce,Ae)){we=!1;let se=`p${us(le.subject.locatorHash,un(le.ident),ye.requester.locatorHash).slice(0,6)}`;f.push({type:1,subject:me,requested:le.ident,requester:ye.requester,version:Ce,hash:se,requirementCount:pe.length})}}if(!we){let ye=pe.map(Ae=>g(Ae.descriptor.range));f.push({type:3,node:le,range:ye.includes(null)?null:Q8(ye),hash:le.hash})}}else{let Be=!0;for(let Ce of pe)if(!Ce.meta?.optional){Be=!1;let g=`p${us(le.subject.locatorHash,un(le.ident),Ce.requester.locatorHash).slice(0,6)}`;f.push({type:0,subject:me,requested:le.ident,requester:Ce.requester,hash:g})}Be||f.push({type:2,node:le,hash:le.hash})}}}function*gat(t){let e=new Map;if("children"in t)e.set(t,t);else for(let r of t.requests.values())e.set(r,r);for(let[r,s]of e){yield{request:r,root:s};for(let a of r.children.values())e.has(a)||e.set(a,s)}}function dat(t,e){let r=[],s=[],a=!1;for(let n of t.peerWarnings)if(!(n.type===1||n.type===0)){if(!t.tryWorkspaceByLocator(n.node.subject)){a=!0;continue}if(n.type===3){let c=t.storedResolutions.get(n.node.provided.descriptorHash);if(typeof c>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let f=t.storedPackages.get(c);if(typeof f>"u")throw new Error("Assertion failed: Expected the package to be registered");let p=p0(gat(n.node),({request:C,root:S})=>Zf(f.version??"0.0.0",C.descriptor.range)?p0.skip:C===S?$i(t.configuration,C.requester):`${$i(t.configuration,C.requester)} (via ${$i(t.configuration,S.requester)})`),h=[...qB(n.node)].length>1?"and other dependencies request":"requests",E=n.range?iI(t.configuration,n.range):Ht(t.configuration,"but they have non-overlapping ranges!","redBright");r.push(`${$i(t.configuration,n.node.ident)} is listed by your project with version ${jB(t.configuration,f.version??"0.0.0")} (${Ht(t.configuration,n.hash,ht.CODE)}), which doesn't satisfy what ${p} ${h} (${E}).`)}if(n.type===2){let c=n.node.requests.size>1?" and other dependencies":"";s.push(`${Yr(t.configuration,n.node.subject)} doesn't provide ${$i(t.configuration,n.node.ident)} (${Ht(t.configuration,n.hash,ht.CODE)}), requested by ${$i(t.configuration,n.node.requests.values().next().value.requester)}${c}.`)}}e.startSectionSync({reportFooter:()=>{e.reportWarning(86,`Some peer dependencies are incorrectly met by your project; run ${Ht(t.configuration,"yarn explain peer-requirements ",ht.CODE)} for details, where ${Ht(t.configuration,"",ht.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of qs(r,c=>JE.default(c)))e.reportWarning(60,n);for(let n of qs(s,c=>JE.default(c)))e.reportWarning(2,n)}),a&&e.reportWarning(86,`Some peer dependencies are incorrectly met by dependencies; run ${Ht(t.configuration,"yarn explain peer-requirements",ht.CODE)} for details.`)}var GR,qR,Bde,XG,zG,ZG,WR,cat,uat,Cde,fat,Aat,pat,$l,KG,YR,wde,Tt,vde=Xe(()=>{Dt();Dt();wc();Yt();GR=Ie("crypto");YG();ql();qR=ut(Ld()),Bde=ut(Ai()),XG=Ie("util"),zG=ut(Ie("v8")),ZG=ut(Ie("zlib"));LG();av();MG();UG();oI();F8();Tc();Ede();Ev();VG();tm();JG();LQ();xc();I0();Pc();gT();zj();Rp();Wo();WR=YE(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),cat=3,uat=/ *, */g,Cde=/\/$/,fat=32,Aat=(0,XG.promisify)(ZG.default.gzip),pat=(0,XG.promisify)(ZG.default.gunzip),$l=(r=>(r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build",r))($l||{}),KG={restoreLinkersCustomData:["linkersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["skippedBuilds","storedBuildState"]},YR=(a=>(a[a.NotProvided=0]="NotProvided",a[a.NotCompatible=1]="NotCompatible",a[a.NodeNotProvided=2]="NodeNotProvided",a[a.NodeNotCompatible=3]="NodeNotCompatible",a))(YR||{}),wde=t=>us(`${cat}`,t),Tt=class t{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.peerRequirementNodes=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){if(!e.projectCwd)throw new nt(`No project found in ${r}`);let s=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,ce.existsSync(J.join(n,Er.manifest))){s=n;break}a=J.dirname(n)}let c=new t(e.projectCwd,{configuration:e});ze.telemetry?.reportProject(c.cwd),await c.setupResolutions(),await c.setupWorkspaces(),ze.telemetry?.reportWorkspaceCount(c.workspaces.length),ze.telemetry?.reportDependencyCount(c.workspaces.reduce((I,R)=>I+R.manifest.dependencies.size+R.manifest.devDependencies.size,0));let f=c.tryWorkspaceByCwd(s);if(f)return{project:c,workspace:f,locator:f.anchoredLocator};let p=await c.findLocatorForLocation(`${s}/`,{strict:!0});if(p)return{project:c,locator:p,workspace:null};let h=Ht(e,c.cwd,ht.PATH),E=Ht(e,J.relative(c.cwd,s),ht.PATH),C=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,S=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,P=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new nt(`The nearest package directory (${Ht(e,s,ht.PATH)}) doesn't seem to be part of the project declared in ${Ht(e,c.cwd,ht.PATH)}. - -${[C,S,P].join(` -`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=J.join(this.cwd,Er.lockfile),r=this.configuration.get("defaultLanguageName");if(ce.existsSync(e)){let s=await ce.readFilePromise(e,"utf8");this.lockFileChecksum=wde(s);let a=ls(s);if(a.__metadata){let n=a.__metadata.version,c=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${f})`);let h=Qp(p.resolution,!0),E=new Ut;E.load(p,{yamlCompatibilityMode:!0});let C=E.version,S=E.languageName||r,P=p.linkType.toUpperCase(),I=p.conditions??null,R=E.dependencies,N=E.peerDependencies,U=E.dependenciesMeta,W=E.peerDependenciesMeta,ee=E.bin;if(p.checksum!=null){let ue=typeof c<"u"&&!p.checksum.includes("/")?`${c}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,ue)}let ie={...h,version:C,languageName:S,linkType:P,conditions:I,dependencies:R,peerDependencies:N,dependenciesMeta:U,peerDependenciesMeta:W,bin:ee};this.originalPackages.set(ie.locatorHash,ie);for(let ue of f.split(uat)){let le=C0(ue);n<=6&&(le=this.configuration.normalizeDependency(le),le=On(le,le.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(le.descriptorHash,le),this.storedResolutions.set(le.descriptorHash,h.locatorHash)}}}else s.includes("yarn lockfile v1")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,r=(0,qR.default)(4),s=async(a,n)=>{if(e.has(n))return a;e.add(n);let c=new XI(n,{project:this});await r(()=>c.setup());let f=a.then(()=>{this.addWorkspace(c)});return Array.from(c.workspacesCwds).reduce(s,f)};await s(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.anchoredLocator.identHash);if(typeof r<"u")throw new Error(`Duplicate workspace name ${$i(this.configuration,e.anchoredLocator)}: ${fe.fromPortablePath(e.cwd)} conflicts with ${fe.fromPortablePath(r.cwd)}`);this.workspaces.push(e),this.workspacesByCwd.set(e.cwd,e),this.workspacesByIdent.set(e.anchoredLocator.identHash,e)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){J.isAbsolute(e)||(e=J.resolve(this.cwd,e)),e=J.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let s of this.workspaces)J.relative(s.cwd,e).startsWith("../")||r&&r.cwd.length>=s.cwd.length||(r=s);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>"u"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${$i(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(Ei.protocol)){let s=e.range.slice(Ei.protocol.length);if(s!=="^"&&s!=="~"&&s!=="*"&&!cl(s))return this.tryWorkspaceByCwd(s)}let r=this.tryWorkspaceByIdent(e);return r===null||(kp(e)&&(e=MB(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${ni(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Gu(e)&&(e=rI(e)),r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${Yr(this.configuration,e)})`);return r}deleteDescriptor(e){this.storedResolutions.delete(e),this.storedDescriptors.delete(e)}deleteLocator(e){this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)}forgetResolution(e){if("descriptorHash"in e){let r=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof r<"u"&&!s.has(r)&&this.deleteLocator(r)}if("locatorHash"in e){this.deleteLocator(e.locatorHash);for(let[r,s]of this.storedResolutions)s===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[s,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(s)}for(let s of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(s,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(s.locatorHash);let n=r.get(s.locatorHash);if(n){r.delete(s.locatorHash);for(let c of n)this.deleteDescriptor(c)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,s]of e.dependencies)kp(s)&&e.dependencies.set(r,MB(s))}getDependencyMeta(e,r){let s={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(un(e));if(!n)return s;let c=n.get(null);if(c&&Object.assign(s,c),r===null||!Bde.default.valid(r))return s;for(let[f,p]of n)f!==null&&f===r&&Object.assign(s,p);return s}async findLocatorForLocation(e,{strict:r=!1}={}){let s=new ki,a=this.configuration.getLinkers(),n={project:this,report:s};for(let c of a){let f=await c.findPackageLocator(e,n);if(f){if(r&&(await c.findPackageLocation(f,n)).replace(Cde,"")!==e.replace(Cde,""))continue;return f}}return null}async loadUserConfig(){let e=J.join(this.cwd,".pnp.cjs");await ce.existsPromise(e)&&Pp(e).setup();let r=J.join(this.cwd,"yarn.config.cjs");return await ce.existsPromise(r)?Pp(r):null}async preparePackage(e,{resolver:r,resolveOptions:s}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(e,{packageExtensions:a});for(let[c,f]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,f,this,n,f,{resolver:r,resolveOptions:s});if(!UB(f,p))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let h=r.bindDescriptor(p,n,s);n.dependencies.set(c,h)}return n}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),s=[];e.lockfileOnly||this.forgetTransientResolutions();let a=e.resolver||this.configuration.makeResolver(),n=new KI(a);await n.setup(this,{report:e.report});let c=e.lockfileOnly?[new jR(a)]:[n,a],f=new rm([new zI(a),...c]),p=new rm([...c]),h=this.configuration.makeFetcher(),E=e.lockfileOnly?{project:this,report:e.report,resolver:f}:{project:this,report:e.report,resolver:f,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},C=new Map,S=new Map,P=new Map,I=new Map,R=new Map,N=new Map,U=this.topLevelWorkspace.anchoredLocator,W=new Set,ee=[],ie=uj(),ue=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Ao.progressViaTitle(),async se=>{let Z=async rt=>{let Fe=await qE(async()=>await f.resolve(rt,E),ke=>`${Yr(this.configuration,rt)}: ${ke}`);if(!_B(rt,Fe))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${Yr(this.configuration,rt)} to ${Yr(this.configuration,Fe)})`);I.set(Fe.locatorHash,Fe),!r.delete(Fe.locatorHash)&&!this.tryWorkspaceByLocator(Fe)&&s.push(Fe);let Pe=await this.preparePackage(Fe,{resolver:f,resolveOptions:E}),Ve=Uu([...Pe.dependencies.values()].map(ke=>j(ke)));return ee.push(Ve),Ve.catch(()=>{}),S.set(Pe.locatorHash,Pe),Pe},De=async rt=>{let Fe=R.get(rt.locatorHash);if(typeof Fe<"u")return Fe;let Ne=Promise.resolve().then(()=>Z(rt));return R.set(rt.locatorHash,Ne),Ne},Re=async(rt,Fe)=>{let Ne=await j(Fe);return C.set(rt.descriptorHash,rt),P.set(rt.descriptorHash,Ne.locatorHash),Ne},mt=async rt=>{se.setTitle(ni(this.configuration,rt));let Fe=this.resolutionAliases.get(rt.descriptorHash);if(typeof Fe<"u")return Re(rt,this.storedDescriptors.get(Fe));let Ne=f.getResolutionDependencies(rt,E),Pe=Object.fromEntries(await Uu(Object.entries(Ne).map(async([it,Ue])=>{let x=f.bindDescriptor(Ue,U,E),w=await j(x);return W.add(w.locatorHash),[it,w]}))),ke=(await qE(async()=>await f.getCandidates(rt,Pe,E),it=>`${ni(this.configuration,rt)}: ${it}`))[0];if(typeof ke>"u")throw new jt(82,`${ni(this.configuration,rt)}: No candidates found`);if(e.checkResolutions){let{locators:it}=await p.getSatisfying(rt,Pe,[ke],{...E,resolver:p});if(!it.find(Ue=>Ue.locatorHash===ke.locatorHash))throw new jt(78,`Invalid resolution ${FB(this.configuration,rt,ke)}`)}return C.set(rt.descriptorHash,rt),P.set(rt.descriptorHash,ke.locatorHash),De(ke)},j=rt=>{let Fe=N.get(rt.descriptorHash);if(typeof Fe<"u")return Fe;C.set(rt.descriptorHash,rt);let Ne=Promise.resolve().then(()=>mt(rt));return N.set(rt.descriptorHash,Ne),Ne};for(let rt of this.workspaces){let Fe=rt.anchoredDescriptor;ee.push(j(Fe))}for(;ee.length>0;){let rt=[...ee];ee.length=0,await Uu(rt)}});let le=Wl(r.values(),se=>this.tryWorkspaceByLocator(se)?Wl.skip:se);if(s.length>0||le.length>0){let se=new Set(this.workspaces.flatMap(rt=>{let Fe=S.get(rt.anchoredLocator.locatorHash);if(!Fe)throw new Error("Assertion failed: The workspace should have been resolved");return Array.from(Fe.dependencies.values(),Ne=>{let Pe=P.get(Ne.descriptorHash);if(!Pe)throw new Error("Assertion failed: The resolution should have been registered");return Pe})})),Z=rt=>se.has(rt.locatorHash)?"0":"1",De=rt=>ll(rt),Re=qs(s,[Z,De]),mt=qs(le,[Z,De]),j=e.report.getRecommendedLength();Re.length>0&&e.report.reportInfo(85,`${Ht(this.configuration,"+",ht.ADDED)} ${$k(this.configuration,Re,j)}`),mt.length>0&&e.report.reportInfo(85,`${Ht(this.configuration,"-",ht.REMOVED)} ${$k(this.configuration,mt,j)}`)}let me=new Set(this.resolutionAliases.values()),pe=new Set(S.keys()),Be=new Set,Ce=new Map,g=[],we=new Map;hat({project:this,accessibleLocators:Be,volatileDescriptors:me,optionalBuilds:pe,peerRequirements:Ce,peerWarnings:g,peerRequirementNodes:we,allDescriptors:C,allResolutions:P,allPackages:S});for(let se of W)pe.delete(se);for(let se of me)C.delete(se),P.delete(se);let ye=new Set,Ae=new Set;for(let se of S.values())se.conditions!=null&&pe.has(se.locatorHash)&&(TQ(se,ue)||(TQ(se,ie)&&e.report.reportWarningOnce(77,`${Yr(this.configuration,se)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ht(this.configuration,"supportedArchitectures",ht.SETTING)} setting`),Ae.add(se.locatorHash)),ye.add(se.locatorHash));this.storedResolutions=P,this.storedDescriptors=C,this.storedPackages=S,this.accessibleLocators=Be,this.conditionalLocators=ye,this.disabledLocators=Ae,this.originalPackages=I,this.optionalBuilds=pe,this.peerRequirements=Ce,this.peerWarnings=g,this.peerRequirementNodes=we}async fetchEverything({cache:e,report:r,fetcher:s,mode:a,persistProject:n=!0}){let c={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},f=s||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:e,fetcher:f,report:r,cacheOptions:c},h=Array.from(new Set(qs(this.storedResolutions.values(),[I=>{let R=this.storedPackages.get(I);if(!R)throw new Error("Assertion failed: The locator should have been registered");return ll(R)}])));a==="update-lockfile"&&(h=h.filter(I=>!this.storedChecksums.has(I)));let E=!1,C=Ao.progressViaCounter(h.length);await r.reportProgress(C);let S=(0,qR.default)(fat);if(await Uu(h.map(I=>S(async()=>{let R=this.storedPackages.get(I);if(!R)throw new Error("Assertion failed: The locator should have been registered");if(Gu(R))return;let N;try{N=await f.fetch(R,p)}catch(U){U.message=`${Yr(this.configuration,R)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}N.checksum!=null?this.storedChecksums.set(R.locatorHash,N.checksum):this.storedChecksums.delete(R.locatorHash),N.releaseFs&&N.releaseFs()}).finally(()=>{C.tick()}))),E)throw E;let P=n&&a!=="update-lockfile"?await this.cacheCleanup({cache:e,report:r}):null;if(r.cacheMisses.size>0||P){let R=(await Promise.all([...r.cacheMisses].map(async le=>{let me=this.storedPackages.get(le),pe=this.storedChecksums.get(le)??null,Be=e.getLocatorPath(me,pe);return(await ce.statPromise(Be)).size}))).reduce((le,me)=>le+me,0)-(P?.size??0),N=r.cacheMisses.size,U=P?.count??0,W=`${Wk(N,{zero:"No new packages",one:"A package was",more:`${Ht(this.configuration,N,ht.NUMBER)} packages were`})} added to the project`,ee=`${Wk(U,{zero:"none were",one:"one was",more:`${Ht(this.configuration,U,ht.NUMBER)} were`})} removed`,ie=R!==0?` (${Ht(this.configuration,R,ht.SIZE_DIFF)})`:"",ue=U>0?N>0?`${W}, and ${ee}${ie}.`:`${W}, but ${ee}${ie}.`:`${W}${ie}.`;r.reportInfo(13,ue)}}async linkEverything({cache:e,report:r,fetcher:s,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},c=s||this.configuration.makeFetcher(),f={checksums:this.storedChecksums,project:this,cache:e,fetcher:c,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(ye=>{let Ae=ye.makeInstaller(h),se=ye.getCustomDataKey(),Z=this.linkersCustomData.get(se);return typeof Z<"u"&&Ae.attachCustomData(Z),[ye,Ae]})),C=new Map,S=new Map,P=new Map,I=new Map(await Uu([...this.accessibleLocators].map(async ye=>{let Ae=this.storedPackages.get(ye);if(!Ae)throw new Error("Assertion failed: The locator should have been registered");return[ye,await c.fetch(Ae,f)]}))),R=[],N=new Set,U=[];for(let ye of this.accessibleLocators){let Ae=this.storedPackages.get(ye);if(typeof Ae>"u")throw new Error("Assertion failed: The locator should have been registered");let se=I.get(Ae.locatorHash);if(typeof se>"u")throw new Error("Assertion failed: The fetch result should have been registered");let Z=[],De=mt=>{Z.push(mt)},Re=this.tryWorkspaceByLocator(Ae);if(Re!==null){let mt=[],{scripts:j}=Re.manifest;for(let Fe of["preinstall","install","postinstall"])j.has(Fe)&&mt.push({type:0,script:Fe});try{for(let[Fe,Ne]of E)if(Fe.supportsPackage(Ae,h)&&(await Ne.installPackage(Ae,se,{holdFetchResult:De})).buildRequest!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{Z.length===0?se.releaseFs?.():R.push(Uu(Z).catch(()=>{}).then(()=>{se.releaseFs?.()}))}let rt=J.join(se.packageFs.getRealPath(),se.prefixPath);S.set(Ae.locatorHash,rt),!Gu(Ae)&&mt.length>0&&P.set(Ae.locatorHash,{buildDirectives:mt,buildLocations:[rt]})}else{let mt=p.find(Fe=>Fe.supportsPackage(Ae,h));if(!mt)throw new jt(12,`${Yr(this.configuration,Ae)} isn't supported by any available linker`);let j=E.get(mt);if(!j)throw new Error("Assertion failed: The installer should have been registered");let rt;try{rt=await j.installPackage(Ae,se,{holdFetchResult:De})}finally{Z.length===0?se.releaseFs?.():R.push(Uu(Z).then(()=>{}).then(()=>{se.releaseFs?.()}))}C.set(Ae.locatorHash,mt),S.set(Ae.locatorHash,rt.packageLocation),rt.buildRequest&&rt.packageLocation&&(rt.buildRequest.skipped?(N.add(Ae.locatorHash),this.skippedBuilds.has(Ae.locatorHash)||U.push([Ae,rt.buildRequest.explain])):P.set(Ae.locatorHash,{buildDirectives:rt.buildRequest.directives,buildLocations:[rt.packageLocation]}))}}let W=new Map;for(let ye of this.accessibleLocators){let Ae=this.storedPackages.get(ye);if(!Ae)throw new Error("Assertion failed: The locator should have been registered");let se=this.tryWorkspaceByLocator(Ae)!==null,Z=async(De,Re)=>{let mt=S.get(Ae.locatorHash);if(typeof mt>"u")throw new Error(`Assertion failed: The package (${Yr(this.configuration,Ae)}) should have been registered`);let j=[];for(let rt of Ae.dependencies.values()){let Fe=this.storedResolutions.get(rt.descriptorHash);if(typeof Fe>"u")throw new Error(`Assertion failed: The resolution (${ni(this.configuration,rt)}, from ${Yr(this.configuration,Ae)})should have been registered`);let Ne=this.storedPackages.get(Fe);if(typeof Ne>"u")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ni(this.configuration,rt)}) should have been registered`);let Pe=this.tryWorkspaceByLocator(Ne)===null?C.get(Fe):null;if(typeof Pe>"u")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ni(this.configuration,rt)}) should have been registered`);Pe===De||Pe===null?S.get(Ne.locatorHash)!==null&&j.push([rt,Ne]):!se&&mt!==null&&xB(W,Fe).push(mt)}mt!==null&&await Re.attachInternalDependencies(Ae,j)};if(se)for(let[De,Re]of E)De.supportsPackage(Ae,h)&&await Z(De,Re);else{let De=C.get(Ae.locatorHash);if(!De)throw new Error("Assertion failed: The linker should have been found");let Re=E.get(De);if(!Re)throw new Error("Assertion failed: The installer should have been registered");await Z(De,Re)}}for(let[ye,Ae]of W){let se=this.storedPackages.get(ye);if(!se)throw new Error("Assertion failed: The package should have been registered");let Z=C.get(se.locatorHash);if(!Z)throw new Error("Assertion failed: The linker should have been found");let De=E.get(Z);if(!De)throw new Error("Assertion failed: The installer should have been registered");await De.attachExternalDependents(se,Ae)}let ee=new Map;for(let[ye,Ae]of E){let se=await Ae.finalizeInstall();for(let Z of se?.records??[])Z.buildRequest.skipped?(N.add(Z.locator.locatorHash),this.skippedBuilds.has(Z.locator.locatorHash)||U.push([Z.locator,Z.buildRequest.explain])):P.set(Z.locator.locatorHash,{buildDirectives:Z.buildRequest.directives,buildLocations:Z.buildLocations});typeof se?.customData<"u"&&ee.set(ye.getCustomDataKey(),se.customData)}if(this.linkersCustomData=ee,await Uu(R),a==="skip-build")return;for(let[,ye]of qs(U,([Ae])=>ll(Ae)))ye(r);let ie=new Set(P.keys()),ue=(0,GR.createHash)("sha512");ue.update(process.versions.node),await this.configuration.triggerHook(ye=>ye.globalHashGeneration,this,ye=>{ue.update("\0"),ue.update(ye)});let le=ue.digest("hex"),me=new Map,pe=ye=>{let Ae=me.get(ye.locatorHash);if(typeof Ae<"u")return Ae;let se=this.storedPackages.get(ye.locatorHash);if(typeof se>"u")throw new Error("Assertion failed: The package should have been registered");let Z=(0,GR.createHash)("sha512");Z.update(ye.locatorHash),me.set(ye.locatorHash,"");for(let De of se.dependencies.values()){let Re=this.storedResolutions.get(De.descriptorHash);if(typeof Re>"u")throw new Error(`Assertion failed: The resolution (${ni(this.configuration,De)}) should have been registered`);let mt=this.storedPackages.get(Re);if(typeof mt>"u")throw new Error("Assertion failed: The package should have been registered");Z.update(pe(mt))}return Ae=Z.digest("hex"),me.set(ye.locatorHash,Ae),Ae},Be=(ye,Ae)=>{let se=(0,GR.createHash)("sha512");se.update(le),se.update(pe(ye));for(let Z of Ae)se.update(Z);return se.digest("hex")},Ce=new Map,g=!1,we=ye=>{let Ae=new Set([ye.locatorHash]);for(let se of Ae){let Z=this.storedPackages.get(se);if(!Z)throw new Error("Assertion failed: The package should have been registered");for(let De of Z.dependencies.values()){let Re=this.storedResolutions.get(De.descriptorHash);if(!Re)throw new Error(`Assertion failed: The resolution (${ni(this.configuration,De)}) should have been registered`);if(Re!==ye.locatorHash&&ie.has(Re))return!1;let mt=this.storedPackages.get(Re);if(!mt)throw new Error("Assertion failed: The package should have been registered");let j=this.tryWorkspaceByLocator(mt);if(j){if(j.anchoredLocator.locatorHash!==ye.locatorHash&&ie.has(j.anchoredLocator.locatorHash))return!1;Ae.add(j.anchoredLocator.locatorHash)}Ae.add(Re)}}return!0};for(;ie.size>0;){let ye=ie.size,Ae=[];for(let se of ie){let Z=this.storedPackages.get(se);if(!Z)throw new Error("Assertion failed: The package should have been registered");if(!we(Z))continue;let De=P.get(Z.locatorHash);if(!De)throw new Error("Assertion failed: The build directive should have been registered");let Re=Be(Z,De.buildLocations);if(this.storedBuildState.get(Z.locatorHash)===Re){Ce.set(Z.locatorHash,Re),ie.delete(se);continue}g||(await this.persistInstallStateFile(),g=!0),this.storedBuildState.has(Z.locatorHash)?r.reportInfo(8,`${Yr(this.configuration,Z)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${Yr(this.configuration,Z)} must be built because it never has been before or the last one failed`);let mt=De.buildLocations.map(async j=>{if(!J.isAbsolute(j))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${j})`);for(let rt of De.buildDirectives){let Fe=`# This file contains the result of Yarn building a package (${ll(Z)}) -`;switch(rt.type){case 0:Fe+=`# Script name: ${rt.script} -`;break;case 1:Fe+=`# Script code: ${rt.script} -`;break}let Ne=null;if(!await ce.mktempPromise(async Ve=>{let ke=J.join(Ve,"build.log"),{stdout:it,stderr:Ue}=this.configuration.getSubprocessStreams(ke,{header:Fe,prefix:Yr(this.configuration,Z),report:r}),x;try{switch(rt.type){case 0:x=await LT(Z,rt.script,[],{cwd:j,project:this,stdin:Ne,stdout:it,stderr:Ue});break;case 1:x=await Yj(Z,rt.script,[],{cwd:j,project:this,stdin:Ne,stdout:it,stderr:Ue});break}}catch(y){Ue.write(y.stack),x=1}if(it.end(),Ue.end(),x===0)return!0;ce.detachTemp(Ve);let w=`${Yr(this.configuration,Z)} couldn't be built successfully (exit code ${Ht(this.configuration,x,ht.NUMBER)}, logs can be found here: ${Ht(this.configuration,ke,ht.PATH)})`,b=this.optionalBuilds.has(Z.locatorHash);return b?r.reportInfo(9,w):r.reportError(9,w),ehe&&r.reportFold(fe.fromPortablePath(ke),ce.readFileSync(ke,"utf8")),b}))return!1}return!0});Ae.push(...mt,Promise.allSettled(mt).then(j=>{ie.delete(se),j.every(rt=>rt.status==="fulfilled"&&rt.value===!0)&&Ce.set(Z.locatorHash,Re)}))}if(await Uu(Ae),ye===ie.size){let se=Array.from(ie).map(Z=>{let De=this.storedPackages.get(Z);if(!De)throw new Error("Assertion failed: The package should have been registered");return Yr(this.configuration,De)}).join(", ");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${se})`);break}}this.storedBuildState=Ce,this.skippedBuilds=N}async installWithNewReport(e,r){return(await Ot.start({configuration:this.configuration,json:e.json,stdout:e.stdout,forceSectionAlignment:!0,includeLogs:!e.json&&!e.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(e){let r=this.configuration.get("nodeLinker");ze.telemetry?.reportInstall(r);let s=!1;if(await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{this.configuration.get("enableOfflineMode")&&e.report.reportWarning(90,"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,C)=>{e.report.reportWarning(E,C)},reportError:(E,C)=>{e.report.reportError(E,C),s=!0}})}),s)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,C]of E)for(let S of C)S.status="inactive";let n=J.join(this.cwd,Er.lockfile),c=null;if(e.immutable)try{c=await ce.readFilePromise(n,"utf8")}catch(E){throw E.code==="ENOENT"?new jt(28,"The lockfile would have been created by this install, which is explicitly forbidden."):E}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{dat(this,e.report);for(let[,E]of a)for(let[,C]of E)for(let S of C)if(S.userProvided){let P=Ht(this.configuration,S,ht.PACKAGE_EXTENSION);switch(S.status){case"inactive":e.report.reportWarning(68,`${P}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":e.report.reportWarning(69,`${P}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(c!==null){let E=Ed(c,this.generateLockfile());if(E!==c){let C=yde(n,n,c,E,void 0,void 0,{maxEditLength:100});if(C){e.report.reportSeparator();for(let S of C.hunks){e.report.reportInfo(null,`@@ -${S.oldStart},${S.oldLines} +${S.newStart},${S.newLines} @@`);for(let P of S.lines)P.startsWith("+")?e.report.reportError(28,Ht(this.configuration,P,ht.ADDED)):P.startsWith("-")?e.report.reportError(28,Ht(this.configuration,P,ht.REMOVED)):e.report.reportInfo(null,Ht(this.configuration,P,"grey"))}e.report.reportSeparator()}throw new jt(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let E of a.values())for(let[,C]of E)for(let S of C)S.userProvided&&S.status==="active"&&ze.telemetry?.reportPackageExtension(Xd(S,ht.PACKAGE_EXTENSION));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e)});let f=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],p=await Promise.all(f.map(async E=>DQ(E,{cwd:this.cwd})));(typeof e.persistProject>"u"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode==="update-lockfile"){e.report.reportWarning(73,`Skipped due to ${Ht(this.configuration,"mode=update-lockfile",ht.CODE)}`);return}await this.linkEverything(e);let E=await Promise.all(f.map(async C=>DQ(C,{cwd:this.cwd})));for(let C=0;C{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,C)=>{e.report.reportWarning(E,C)},reportError:(E,C)=>{e.report.reportError(E,C),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,c]of this.storedResolutions.entries()){let f=e.get(c);f||e.set(c,f=new Set),f.add(n)}let r={},{cacheKey:s}=Kr.getCacheKey(this.configuration);r.__metadata={version:WR,cacheKey:s};for(let[n,c]of e.entries()){let f=this.originalPackages.get(n);if(!f)continue;let p=[];for(let C of c){let S=this.storedDescriptors.get(C);if(!S)throw new Error("Assertion failed: The descriptor should have been registered");p.push(S)}let h=p.map(C=>al(C)).sort().join(", "),E=new Ut;E.version=f.linkType==="HARD"?f.version:"0.0.0-use.local",E.languageName=f.languageName,E.dependencies=new Map(f.dependencies),E.peerDependencies=new Map(f.peerDependencies),E.dependenciesMeta=new Map(f.dependenciesMeta),E.peerDependenciesMeta=new Map(f.peerDependenciesMeta),E.bin=new Map(f.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:f.linkType.toLowerCase(),resolution:ll(f),checksum:this.storedChecksums.get(f.locatorHash),conditions:f.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. -`,`# Manual changes might be lost - proceed with caution! -`].join("")} -`+nl(r)}async persistLockfile(){let e=J.join(this.cwd,Er.lockfile),r="";try{r=await ce.readFilePromise(e,"utf8")}catch{}let s=this.generateLockfile(),a=Ed(r,s);a!==r&&(await ce.writeFilePromise(e,a),this.lockFileChecksum=wde(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let c of Object.values(KG))e.push(...c);let r=Kd(this,e),s=zG.default.serialize(r),a=us(s);if(this.installStateChecksum===a)return;let n=this.configuration.get("installStatePath");await ce.mkdirPromise(J.dirname(n),{recursive:!0}),await ce.writeFilePromise(n,await Aat(s)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:s=!0}={}){let a=this.configuration.get("installStatePath"),n;try{let c=await pat(await ce.readFilePromise(a));n=zG.default.deserialize(c),this.installStateChecksum=us(c)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),s&&Object.assign(this,Kd(n,KG.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,Kd(n,KG.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ki}),await this.persistInstallStateFile()}async persist(){let e=(0,qR.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>e(()=>r.persistManifest()))])}async cacheCleanup({cache:e,report:r}){if(this.configuration.get("enableGlobalCache"))return null;let s=new Set([".gitignore"]);if(!q8(e.cwd,this.cwd)||!await ce.existsPromise(e.cwd))return null;let a=[];for(let c of await ce.readdirPromise(e.cwd)){if(s.has(c))continue;let f=J.resolve(e.cwd,c);e.markedFiles.has(f)||(e.immutable?r.reportError(56,`${Ht(this.configuration,J.basename(f),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(ce.lstatPromise(f).then(async p=>(await ce.removePromise(f),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((c,f)=>c+f,0)}}}});function mat(t){let s=Math.floor(t.timeNow/864e5),a=t.updateInterval*864e5,n=t.state.lastUpdate??t.timeNow+a+Math.floor(a*t.randomInitialInterval),c=n+a,f=t.state.lastTips??s*864e5,p=f+864e5+8*36e5-t.timeZone,h=c<=t.timeNow,E=p<=t.timeNow,C=null;return(h||E||!t.state.lastUpdate||!t.state.lastTips)&&(C={},C.lastUpdate=h?t.timeNow:n,C.lastTips=f,C.blocks=h?{}:t.state.blocks,C.displayedTips=t.state.displayedTips),{nextState:C,triggerUpdate:h,triggerTips:E,nextTips:E?s*864e5:f}}var ZI,Sde=Xe(()=>{Dt();yv();I0();pT();Pc();Rp();ZI=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=e;let s=this.getRegistryPath();this.isNew=!ce.existsSync(s),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(e){let r=new Set(this.displayedTips),s=f=>f&&fn?Zf(fn,f):!1,a=e.map((f,p)=>p).filter(f=>e[f]&&s(e[f]?.selector));if(a.length===0)return null;let n=a.filter(f=>!r.has(f));if(n.length===0){let f=Math.floor(a.length*.2);this.displayedTips=f>0?this.displayedTips.slice(-f):[],n=a.filter(p=>!r.has(p))}let c=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(c),this.commitTips(),e[c]}reportVersion(e){this.reportValue("version",e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue("commandName",e||"")}reportPluginName(e){this.reportValue("pluginName",e)}reportProject(e){this.reportEnumerator("projectCount",e)}reportInstall(e){this.reportHit("installCount",e)}reportPackageExtension(e){this.reportValue("packageExtension",e)}reportWorkspaceCount(e){this.reportValue("workspaceCount",String(e))}reportDependencyCount(e){this.reportValue("dependencyCount",String(e))}reportValue(e,r){bp(this.values,e).add(r)}reportEnumerator(e,r){bp(this.enumerators,e).add(us(r))}reportHit(e,r="*"){let s=q4(this.hits,e),a=Yl(s,r,()=>0);s.set(r,a+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return J.join(e,"telemetry.json")}sendReport(e){let r=this.getRegistryPath(),s;try{s=ce.readJsonSync(r)}catch{s={}}let{nextState:a,triggerUpdate:n,triggerTips:c,nextTips:f}=mat({state:s,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get("telemetryInterval")});if(this.nextTips=f,this.displayedTips=s.displayedTips??[],a!==null)try{ce.mkdirSync(J.dirname(r),{recursive:!0}),ce.writeJsonSync(r,a)}catch{return!1}if(c&&this.configuration.get("enableTips")&&(this.shouldShowTips=!0),n){let p=s.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,E=C=>cj(h,C,{configuration:this.configuration}).catch(()=>{});for(let[C,S]of Object.entries(s.blocks??{})){if(Object.keys(S).length===0)continue;let P=S;P.userId=C,P.reportType="primary";for(let N of Object.keys(P.enumerators??{}))P.enumerators[N]=P.enumerators[N].length;E(P);let I=new Map,R=20;for(let[N,U]of Object.entries(P.values))U.length>0&&I.set(N,U.slice(0,R));for(;I.size>0;){let N={};N.userId=C,N.reportType="secondary",N.metrics={};for(let[U,W]of I)N.metrics[U]=W.shift(),W.length===0&&I.delete(U);E(N)}}}}return!0}applyChanges(){let e=this.getRegistryPath(),r;try{r=ce.readJsonSync(e)}catch{r={}}let s=this.configuration.get("telemetryUserId")??"*",a=r.blocks=r.blocks??{},n=a[s]=a[s]??{};for(let c of this.hits.keys()){let f=n.hits=n.hits??{},p=f[c]=f[c]??{};for(let[h,E]of this.hits.get(c))p[h]=(p[h]??0)+E}for(let c of["values","enumerators"])for(let f of this[c].keys()){let p=n[c]=n[c]??{};p[f]=[...new Set([...p[f]??[],...this[c].get(f)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),ce.mkdirSync(J.dirname(e),{recursive:!0}),ce.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}}});var jv={};Vt(jv,{BuildDirectiveType:()=>_R,CACHE_CHECKPOINT:()=>OG,CACHE_VERSION:()=>UR,Cache:()=>Kr,Configuration:()=>ze,DEFAULT_RC_FILENAME:()=>dj,DurationUnit:()=>mj,FormatType:()=>upe,InstallMode:()=>$l,LEGACY_PLUGINS:()=>ov,LOCKFILE_VERSION:()=>WR,LegacyMigrationResolver:()=>KI,LightReport:()=>lA,LinkType:()=>VE,LockfileResolver:()=>zI,Manifest:()=>Ut,MessageName:()=>Br,MultiFetcher:()=>aI,PackageExtensionStatus:()=>J4,PackageExtensionType:()=>V4,PeerWarningType:()=>YR,Project:()=>Tt,Report:()=>Ao,ReportError:()=>jt,SettingsType:()=>wI,StreamReport:()=>Ot,TAG_REGEXP:()=>Mp,TelemetryManager:()=>ZI,ThrowReport:()=>ki,VirtualFetcher:()=>lI,WindowsLinkType:()=>IT,Workspace:()=>XI,WorkspaceFetcher:()=>cI,WorkspaceResolver:()=>Ei,YarnVersion:()=>fn,execUtils:()=>qr,folderUtils:()=>OQ,formatUtils:()=>he,hashUtils:()=>Nn,httpUtils:()=>nn,miscUtils:()=>je,nodeUtils:()=>Ui,parseMessageName:()=>jx,reportOptionDeprecations:()=>SI,scriptUtils:()=>In,semverUtils:()=>Fr,stringifyMessageName:()=>Yf,structUtils:()=>G,tgzUtils:()=>ps,treeUtils:()=>xs});var Ge=Xe(()=>{dT();LQ();xc();I0();pT();Pc();gT();zj();Rp();Wo();nde();ude();LG();av();av();pde();MG();hde();UG();oI();Gx();R8();vde();Tc();Ev();Sde();VG();N8();O8();tm();JG();yv();hle()});var Qde=_((WHt,qv)=>{"use strict";var Eat=process.env.TERM_PROGRAM==="Hyper",Iat=process.platform==="win32",Pde=process.platform==="linux",$G={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},xde=Object.assign({},$G,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),kde=Object.assign({},$G,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:Pde?"\u25B8":"\u276F",pointerSmall:Pde?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});qv.exports=Iat&&!Eat?xde:kde;Reflect.defineProperty(qv.exports,"common",{enumerable:!1,value:$G});Reflect.defineProperty(qv.exports,"windows",{enumerable:!1,value:xde});Reflect.defineProperty(qv.exports,"other",{enumerable:!1,value:kde})});var Ju=_((YHt,e5)=>{"use strict";var Cat=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),wat=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,Tde=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=n=>{let c=n.open=`\x1B[${n.codes[0]}m`,f=n.close=`\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\u001b\\[${n.codes[1]}m`,"g");return n.wrap=(h,E)=>{h.includes(f)&&(h=h.replace(p,f+c));let C=c+h+f;return E?C.replace(/\r*\n/g,`${f}$&${c}`):C},n},r=(n,c,f)=>typeof n=="function"?n(c):n.wrap(c,f),s=(n,c)=>{if(n===""||n==null)return"";if(t.enabled===!1)return n;if(t.visible===!1)return"";let f=""+n,p=f.includes(` -`),h=c.length;for(h>0&&c.includes("unstyle")&&(c=[...new Set(["unstyle",...c])].reverse());h-- >0;)f=r(t.styles[c[h]],f,p);return f},a=(n,c,f)=>{t.styles[n]=e({name:n,codes:c}),(t.keys[f]||(t.keys[f]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=E=>s(E,h.stack);return Reflect.setPrototypeOf(h,t),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a("reset",[0,0],"modifier"),a("bold",[1,22],"modifier"),a("dim",[2,22],"modifier"),a("italic",[3,23],"modifier"),a("underline",[4,24],"modifier"),a("inverse",[7,27],"modifier"),a("hidden",[8,28],"modifier"),a("strikethrough",[9,29],"modifier"),a("black",[30,39],"color"),a("red",[31,39],"color"),a("green",[32,39],"color"),a("yellow",[33,39],"color"),a("blue",[34,39],"color"),a("magenta",[35,39],"color"),a("cyan",[36,39],"color"),a("white",[37,39],"color"),a("gray",[90,39],"color"),a("grey",[90,39],"color"),a("bgBlack",[40,49],"bg"),a("bgRed",[41,49],"bg"),a("bgGreen",[42,49],"bg"),a("bgYellow",[43,49],"bg"),a("bgBlue",[44,49],"bg"),a("bgMagenta",[45,49],"bg"),a("bgCyan",[46,49],"bg"),a("bgWhite",[47,49],"bg"),a("blackBright",[90,39],"bright"),a("redBright",[91,39],"bright"),a("greenBright",[92,39],"bright"),a("yellowBright",[93,39],"bright"),a("blueBright",[94,39],"bright"),a("magentaBright",[95,39],"bright"),a("cyanBright",[96,39],"bright"),a("whiteBright",[97,39],"bright"),a("bgBlackBright",[100,49],"bgBright"),a("bgRedBright",[101,49],"bgBright"),a("bgGreenBright",[102,49],"bgBright"),a("bgYellowBright",[103,49],"bgBright"),a("bgBlueBright",[104,49],"bgBright"),a("bgMagentaBright",[105,49],"bgBright"),a("bgCyanBright",[106,49],"bgBright"),a("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=wat,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n=="string"&&n!==""&&t.ansiRegex.test(n)),t.alias=(n,c)=>{let f=typeof c=="string"?t[c]:c;if(typeof f!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");f.stack||(Reflect.defineProperty(f,"name",{value:n}),t.styles[n]=f,f.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>s(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(f.stack):f.stack,p}})},t.theme=n=>{if(!Cat(n))throw new TypeError("Expected theme to be an object");for(let c of Object.keys(n))t.alias(c,n[c]);return t},t.alias("unstyle",n=>typeof n=="string"&&n!==""?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,"")):""),t.alias("noop",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=Qde(),t.define=a,t};e5.exports=Tde();e5.exports.create=Tde});var Zo=_(pn=>{"use strict";var Bat=Object.prototype.toString,jc=Ju(),Rde=!1,t5=[],Fde={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};pn.longest=(t,e)=>t.reduce((r,s)=>Math.max(r,e?s[e].length:s.length),0);pn.hasColor=t=>!!t&&jc.hasColor(t);var JR=pn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);pn.nativeType=t=>Bat.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");pn.isAsyncFn=t=>pn.nativeType(t)==="asyncfunction";pn.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";pn.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;pn.scrollDown=(t=[])=>[...t.slice(1),t[0]];pn.scrollUp=(t=[])=>[t.pop(),...t];pn.reorder=(t=[])=>{let e=t.slice();return e.sort((r,s)=>r.index>s.index?1:r.index{let s=t.length,a=r===s?0:r<0?s-1:r,n=t[e];t[e]=t[a],t[a]=n};pn.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};pn.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};pn.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:s=` -`+r,width:a=80}=e,n=(s+r).match(/[^\S\n]/g)||[];a-=n.length;let c=`.{1,${a}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,f=t.trim(),p=new RegExp(c,"g"),h=f.match(p)||[];return h=h.map(E=>E.replace(/\n$/,"")),e.padEnd&&(h=h.map(E=>E.padEnd(a," "))),e.padStart&&(h=h.map(E=>E.padStart(a," "))),r+h.join(s)};pn.unmute=t=>{let e=t.stack.find(s=>jc.keys.color.includes(s));return e?jc[e]:t.stack.find(s=>s.slice(2)==="bg")?jc[e.slice(2)]:s=>s};pn.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";pn.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>jc.keys.color.includes(s));if(e){let s=jc["bg"+pn.pascal(e)];return s?s.black:t}let r=t.stack.find(s=>s.slice(0,2)==="bg");return r?jc[r.slice(2).toLowerCase()]||t:jc.none};pn.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>jc.keys.color.includes(s)),r=t.stack.find(s=>s.slice(0,2)==="bg");if(e&&!r)return jc[Fde[e]||e];if(r){let s=r.slice(2).toLowerCase(),a=Fde[s];return a&&jc["bg"+pn.pascal(a)]||t}return jc.none};pn.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),s=e>=12?"pm":"am";e=e%12;let a=e===0?12:e,n=r<10?"0"+r:r;return a+":"+n+" "+s};pn.set=(t={},e="",r)=>e.split(".").reduce((s,a,n,c)=>{let f=c.length-1>n?s[a]||{}:r;return!pn.isObject(f)&&n{let s=t[e]==null?e.split(".").reduce((a,n)=>a&&a[n],t):t[e];return s??r};pn.mixin=(t,e)=>{if(!JR(t))return e;if(!JR(e))return t;for(let r of Object.keys(e)){let s=Object.getOwnPropertyDescriptor(e,r);if(s.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&JR(s.value)){let a=Object.getOwnPropertyDescriptor(t,r);JR(a.value)?t[r]=pn.merge({},t[r],e[r]):Reflect.defineProperty(t,r,s)}else Reflect.defineProperty(t,r,s);else Reflect.defineProperty(t,r,s)}return t};pn.merge=(...t)=>{let e={};for(let r of t)pn.mixin(e,r);return e};pn.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let s of Object.keys(r)){let a=r[s];typeof a=="function"?pn.define(t,s,a.bind(e)):pn.define(t,s,a)}};pn.onExit=t=>{let e=(r,s)=>{Rde||(Rde=!0,t5.forEach(a=>a()),r===!0&&process.exit(128+s))};t5.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),t5.push(t)};pn.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};pn.defineExport=(t,e,r)=>{let s;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){s=a},get(){return s?s():r()}})}});var Nde=_(rC=>{"use strict";rC.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};rC.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};rC.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};rC.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};rC.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var Mde=_((KHt,Lde)=>{"use strict";var Ode=Ie("readline"),vat=Nde(),Sat=/^(?:\x1b)([a-zA-Z0-9])$/,Dat=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,bat={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function Pat(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function xat(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var KR=(t="",e={})=>{let r,s={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=s.sequence||""),s.sequence=s.sequence||t||s.name,t==="\r")s.raw=void 0,s.name="return";else if(t===` -`)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x1B\x7F"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(r=Sat.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(r[1]);else if(r=Dat.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),c=(r[3]||r[5]||1)-1;s.ctrl=!!(c&4),s.meta=!!(c&10),s.shift=!!(c&1),s.code=n,s.name=bat[n],s.shift=Pat(n)||s.shift,s.ctrl=xat(n)||s.ctrl}return s};KR.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let s=Ode.createInterface({terminal:!0,input:r});Ode.emitKeypressEvents(r,s);let a=(f,p)=>e(f,KR(f,p),s),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",a),s.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener("keypress",a),s.pause(),s.close()}};KR.action=(t,e,r)=>{let s={...vat,...r};return e.ctrl?(e.action=s.ctrl[e.name],e):e.option&&s.option?(e.action=s.option[e.name],e):e.shift?(e.action=s.shift[e.name],e):(e.action=s.keys[e.name],e)};Lde.exports=KR});var _de=_((zHt,Ude)=>{"use strict";Ude.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(e)for(let r of Object.keys(e)){let s=e[r];typeof s=="number"&&(s={interval:s}),kat(t,r,s)}};function kat(t,e,r={}){let s=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;s.frames=r.frames||[],s.loading=!0;let n=setInterval(()=>{s.ms=Date.now()-s.start,s.tick++,t.render()},a);return s.stop=()=>{s.loading=!1,clearInterval(n)},Reflect.defineProperty(s,"interval",{value:n}),t.once("close",()=>s.stop()),s.stop}});var jde=_((XHt,Hde)=>{"use strict";var{define:Qat,width:Tat}=Zo(),r5=class{constructor(e){let r=e.options;Qat(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=Tat(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};Hde.exports=r5});var qde=_((ZHt,Gde)=>{"use strict";var n5=Zo(),ho=Ju(),i5={default:ho.noop,noop:ho.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||n5.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||n5.complement(this.primary)},primary:ho.cyan,success:ho.green,danger:ho.magenta,strong:ho.bold,warning:ho.yellow,muted:ho.dim,disabled:ho.gray,dark:ho.dim.gray,underline:ho.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};i5.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(ho.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(ho.visible=t.styles.visible);let e=n5.merge({},i5,t.styles);delete e.merge;for(let r of Object.keys(ho))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>ho[r]});for(let r of Object.keys(ho.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>ho[r]});return e};Gde.exports=i5});var Yde=_(($Ht,Wde)=>{"use strict";var s5=process.platform==="win32",zp=Ju(),Rat=Zo(),o5={...zp.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:zp.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:zp.symbols.question,submitted:zp.symbols.check,cancelled:zp.symbols.cross},separator:{pending:zp.symbols.pointerSmall,submitted:zp.symbols.middot,cancelled:zp.symbols.middot},radio:{off:s5?"( )":"\u25EF",on:s5?"(*)":"\u25C9",disabled:s5?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]};o5.merge=t=>{let e=Rat.merge({},zp.symbols,o5,t.symbols);return delete e.merge,e};Wde.exports=o5});var Jde=_((ejt,Vde)=>{"use strict";var Fat=qde(),Nat=Yde(),Oat=Zo();Vde.exports=t=>{t.options=Oat.merge({},t.options.theme,t.options),t.symbols=Nat.merge(t.options),t.styles=Fat.merge(t.options)}});var $de=_((Xde,Zde)=>{"use strict";var Kde=process.env.TERM_PROGRAM==="Apple_Terminal",Lat=Ju(),a5=Zo(),Ku=Zde.exports=Xde,_i="\x1B[",zde="\x07",l5=!1,j0=Ku.code={bell:zde,beep:zde,beginning:`${_i}G`,down:`${_i}J`,esc:_i,getPosition:`${_i}6n`,hide:`${_i}?25l`,line:`${_i}2K`,lineEnd:`${_i}K`,lineStart:`${_i}1K`,restorePosition:_i+(Kde?"8":"u"),savePosition:_i+(Kde?"7":"s"),screen:`${_i}2J`,show:`${_i}?25h`,up:`${_i}1J`},wm=Ku.cursor={get hidden(){return l5},hide(){return l5=!0,j0.hide},show(){return l5=!1,j0.show},forward:(t=1)=>`${_i}${t}C`,backward:(t=1)=>`${_i}${t}D`,nextLine:(t=1)=>`${_i}E`.repeat(t),prevLine:(t=1)=>`${_i}F`.repeat(t),up:(t=1)=>t?`${_i}${t}A`:"",down:(t=1)=>t?`${_i}${t}B`:"",right:(t=1)=>t?`${_i}${t}C`:"",left:(t=1)=>t?`${_i}${t}D`:"",to(t,e){return e?`${_i}${e+1};${t+1}H`:`${_i}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?wm.left(-t):t>0?wm.right(t):"",r+=e<0?wm.up(-e):e>0?wm.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:s,input:a,prompt:n,size:c,value:f}=t;if(s=a5.isPrimitive(s)?String(s):"",a=a5.isPrimitive(a)?String(a):"",f=a5.isPrimitive(f)?String(f):"",c){let p=Ku.cursor.up(c)+Ku.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Ku.cursor.left(h)),p}if(f||e){let p=!a&&s?-s.length:-a.length+r;return e&&(p-=e.length),a===""&&s&&!n.includes(s)&&(p+=s.length),Ku.cursor.move(p)}}},c5=Ku.erase={screen:j0.screen,up:j0.up,down:j0.down,line:j0.line,lineEnd:j0.lineEnd,lineStart:j0.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return c5.line+wm.to(0);let r=n=>[...Lat.unstyle(n)].length,s=t.split(/\r?\n/),a=0;for(let n of s)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(c5.line+wm.prevLine()).repeat(a-1)+c5.line+wm.to(0)}});var nC=_((tjt,tme)=>{"use strict";var Mat=Ie("events"),eme=Ju(),u5=Mde(),Uat=_de(),_at=jde(),Hat=Jde(),pl=Zo(),Bm=$de(),f5=class t extends Mat{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,Hat(this),Uat(this),this.state=new _at(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=Gat(this.options.margin),this.setMaxListeners(0),jat(this)}async keypress(e,r={}){this.keypressed=!0;let s=u5.action(e,u5(e,r),this.options.actions);this.state.keypress=s,this.emit("keypress",e,s),this.emit("state",this.state.clone());let a=this.options[s.action]||this[s.action]||this.dispatch;if(typeof a=="function")return await a.call(this,e,s);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Bm.code.beep)}cursorHide(){this.stdout.write(Bm.cursor.hide()),pl.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Bm.cursor.show())}write(e){e&&(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Bm.cursor.down(e)+Bm.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:s}=this.sections(),{cursor:a,initial:n="",input:c="",value:f=""}=this,p=this.state.size=s.length,h={after:r,cursor:a,initial:n,input:c,prompt:e,size:p,value:f},E=Bm.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:e,input:r,prompt:s}=this.state;s=eme.unstyle(s);let a=eme.unstyle(e),n=a.indexOf(s),c=a.slice(0,n),p=a.slice(n).split(` -`),h=p[0],E=p[p.length-1],S=(s+(r?" "+r:"")).length,P=Se.call(this,this.value),this.result=()=>s.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,s){let{options:a,state:n,symbols:c,timers:f}=this,p=f&&f[e];n.timer=p;let h=a[e]||n[e]||c[e],E=r&&r[e]!=null?r[e]:await h;if(E==="")return E;let C=await this.resolve(E,n,r,s);return!C&&r&&r[e]?this.resolve(h,n,r,s):C}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,s=this.state;return s.timer=r,pl.isObject(e)&&(e=e[s.status]||e.pending),pl.hasColor(e)?e:(this.styles[s.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return pl.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,s=this.state;s.timer=r;let a=e[s.status]||e.pending||s.separator,n=await this.resolve(a,s);return pl.isObject(n)&&(n=n[s.status]||n.pending),pl.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let s=await this.element("pointer",e,r);if(typeof s=="string"&&pl.hasColor(s))return s;if(s){let a=this.styles,n=this.index===r,c=n?a.primary:h=>h,f=await this.resolve(s[n?"on":"off"]||s,this.state),p=pl.hasColor(f)?f:c(f);return n?p:" ".repeat(f.length)}}async indicator(e,r){let s=await this.element("indicator",e,r);if(typeof s=="string"&&pl.hasColor(s))return s;if(s){let a=this.styles,n=e.enabled===!0,c=n?a.success:a.dark,f=s[n?"on":"off"]||s;return pl.hasColor(f)?f:c(f)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return pl.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return pl.resolve(this,e,...r)}get base(){return t.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||pl.height(this.stdout,25)}get width(){return this.options.columns||pl.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,s=[r,e].find(this.isValue.bind(this));return this.isValue(s)?s:this.initial}static get prompt(){return e=>new this(e).run()}};function jat(t){let e=a=>t[a]===void 0||typeof t[a]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],s=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n=="function"&&e(a)?s.includes(a)||(t[a]=n.bind(t)):typeof t[a]!="function"&&(t[a]=n)}}function Gat(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?` -`:" ",s=[];for(let a=0;a<4;a++){let n=r(a);e[a]?s.push(n.repeat(e[a])):s.push("")}return s}tme.exports=f5});var ime=_((rjt,nme)=>{"use strict";var qat=Zo(),rme={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return rme.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};nme.exports=(t,e={})=>{let r=qat.merge({},rme,e.roles);return r[t]||r.default}});var Wv=_((njt,ame)=>{"use strict";var Wat=Ju(),Yat=nC(),Vat=ime(),zR=Zo(),{reorder:A5,scrollUp:Jat,scrollDown:Kat,isObject:sme,swap:zat}=zR,p5=class extends Yat{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:s,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");sme(r)&&(r=Object.keys(r)),Array.isArray(r)?(s!=null&&(this.index=this.findIndex(s)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(s!=null&&(r=s),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let s=[],a=0,n=async(c,f)=>{typeof c=="function"&&(c=await c.call(this)),c instanceof Promise&&(c=await c);for(let p=0;p(this.state.loadingChoices=!1,c))}async toChoice(e,r,s){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let a=e.value;if(e=Vat(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,zR.define(e,"parent",s),e.level=s?s.level+1:1,e.indent==null&&(e.indent=s?s.indent+" ":e.indent||""),e.path=s?s.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,Wat.unstyle(e.message).length));let c={...e};return e.reset=(f=c.input,p=c.value)=>{for(let h of Object.keys(c))e[h]=c[h];e.input=f,e.value=p},a==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,s){let a=await this.toChoice(e,r,s);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,s){let a={name:"New choice name?",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,s);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input="",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(a=>this.toggle(a,r));let s=e.parent;for(;s;){let a=s.choices.filter(n=>this.isDisabled(n));s.enabled=a.every(n=>n.enabled===!0),s=s.parent}return ome(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=s=>{let a=Number(s);if(a>this.choices.length-1)return this.alert();let n=this.focused,c=this.choices.find(f=>a===f.index);if(!c.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(c)===-1){let f=A5(this.choices),p=f.indexOf(c);if(n.index>p){let h=f.slice(p,p+this.limit),E=f.filter(C=>!h.includes(C));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=f.slice(h).concat(f.slice(0,h))}}return this.index=this.choices.indexOf(c),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(s=>{let a=this.choices.length,n=this.num,c=(f=!1,p)=>{clearTimeout(this.numberTimeout),f&&(p=r(n)),this.num="",s(p)};if(n==="0"||n.length===1&&+(n+"0")>a)return c(!0);if(Number(n)>a)return c(!1,this.alert());this.numberTimeout=setTimeout(()=>c(!0),this.delay)})}home(){return this.choices=A5(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=A5(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===0?this.alert():e>r&&s===0?this.scrollUp():(this.index=(s-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===r-1?this.alert():e>r&&s===r-1?this.scrollDown():(this.index=(s+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=Jat(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=Kat(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){zat(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(s=>e[s]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(s=>!this.isDisabled(s));return e.enabled&&r.every(s=>this.isEnabled(s))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((s,a)=>(s[a]=this.find(a,r),s),{})}filter(e,r){let a=typeof e=="function"?e:(f,p)=>[f.name,p].includes(e),c=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?c.map(f=>f[r]):c}find(e,r){if(sme(e))return r?e[r]:e;let a=typeof e=="function"?e:(c,f)=>[c.name,f].includes(e),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(c=>c.newChoice))return this.alert();let{reorder:r,sort:s}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&s!==!0&&(n=zR.reorder(n)),this.value=a?n.map(c=>c.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(s=>s.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let s=this.find(r);s&&(this.initial=s.index,this.focus(s,!0))}}}get choices(){return ome(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:s}=this,a=e.limit||this._limit||r.limit||s.length;return Math.min(a,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function ome(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(zR.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let s=r.choices.filter(a=>!t.isDisabled(a));r.enabled=s.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}ame.exports=p5});var G0=_((ijt,lme)=>{"use strict";var Xat=Wv(),h5=Zo(),g5=class extends Xat{constructor(e){super(e),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let s=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!h5.hasColor(s)&&(s=this.styles.strong(s)),this.resolve(s,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||""),c=await this.resolve(e.hint,this.state,e,r);c&&!h5.hasColor(c)&&(c=this.styles.muted(c));let f=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],f+a+n,p,this.margin[1],c].filter(Boolean).join(" ");return e.role==="heading"?h():e.disabled?(h5.hasColor(p)||(p=this.styles.disabled(p)),h()):(s&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(n,c)=>await this.renderChoice(n,c)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let s=this.margin[0]+r.join(` -`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,s].filter(Boolean).join(` -`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,s="",a=await this.header(),n=await this.prefix(),c=await this.separator(),f=await this.message();this.options.promptLine!==!1&&(s=[n,f,c,""].join(" "),this.state.prompt=s);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();p&&(s+=p),h&&!s.includes(h)&&(s+=" "+h),e&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(s+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,s,E,C].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};lme.exports=g5});var ume=_((sjt,cme)=>{"use strict";var Zat=G0(),$at=(t,e)=>{let r=t.toLowerCase();return s=>{let n=s.toLowerCase().indexOf(r),c=e(s.slice(n,n+r.length));return n>=0?s.slice(0,n)+c+s.slice(n+r.length):s}},d5=class extends Zat{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:s}=this.state;return this.input=s.slice(0,r)+e+s.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let s=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(s))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=$at(this.input,e),s=this.choices;this.choices=s.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=s}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};cme.exports=d5});var y5=_((ojt,fme)=>{"use strict";var m5=Zo();fme.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:s="",pos:a,showCursor:n=!0,color:c}=e,f=c||t.styles.placeholder,p=m5.inverse(t.styles.primary),h=R=>p(t.styles.black(R)),E=r,C=" ",S=h(C);if(t.blink&&t.blink.off===!0&&(h=R=>R,S=""),n&&a===0&&s===""&&r==="")return h(C);if(n&&a===0&&(r===s||r===""))return h(s[0])+f(s.slice(1));s=m5.isPrimitive(s)?`${s}`:"",r=m5.isPrimitive(r)?`${r}`:"";let P=s&&s.startsWith(r)&&s!==r,I=P?h(s[r.length]):S;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),I=""),n===!1&&(I=""),P){let R=t.styles.unstyle(E+I);return E+I+f(s.slice(R.length))}return E+I}});var XR=_((ajt,Ame)=>{"use strict";var elt=Ju(),tlt=G0(),rlt=y5(),E5=class extends tlt{constructor(e){super({...e,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:s,input:a}=r;return r.value=r.input=a.slice(0,s)+e+a.slice(s),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:s}=e;return e.value=e.input=s.slice(0,r-1)+s.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:s}=e;if(s[r]===void 0)return this.alert();let a=`${s}`.slice(0,r)+`${s}`.slice(r+1);return e.value=e.input=a,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:s}=e;return r&&r.startsWith(s)&&s!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let s=await this.resolve(e.separator,this.state,e,r)||":";return s?" "+this.styles.disabled(s):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:s,styles:a}=this,{cursor:n,initial:c="",name:f,hint:p,input:h=""}=e,{muted:E,submitted:C,primary:S,danger:P}=a,I=p,R=this.index===r,N=e.validate||(()=>!0),U=await this.choiceSeparator(e,r),W=e.message;this.align==="right"&&(W=W.padStart(this.longest+1," ")),this.align==="left"&&(W=W.padEnd(this.longest+1," "));let ee=this.values[f]=h||c,ie=h?"success":"dark";await N.call(e,ee,this.state)!==!0&&(ie="danger");let ue=a[ie],le=ue(await this.indicator(e,r))+(e.pad||""),me=this.indent(e),pe=()=>[me,le,W+U,h,I].filter(Boolean).join(" ");if(s.submitted)return W=elt.unstyle(W),h=C(h),I="",pe();if(e.format)h=await e.format.call(this,h,e,r);else{let Be=this.styles.muted;h=rlt(this,{input:h,initial:c,pos:n,showCursor:R,color:Be})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[f]=await e.result.call(this,ee,e,r)),R&&(W=S(W)),e.error?h+=(h?" ":"")+P(e.error.trim()):e.hint&&(h+=(h?" ":"")+E(e.hint.trim())),pe()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Ame.exports=E5});var I5=_((ljt,hme)=>{"use strict";var nlt=XR(),ilt=()=>{throw new Error("expected prompt to have a custom authenticate method")},pme=(t=ilt)=>{class e extends nlt{constructor(s){super(s)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(s){return pme(s)}}return e};hme.exports=pme()});var mme=_((cjt,dme)=>{"use strict";var slt=I5();function olt(t,e){return t.username===this.options.username&&t.password===this.options.password}var gme=(t=olt)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(s){return this.options.showPassword?s:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(s.length))}}];class r extends slt.create(t){constructor(a){super({...a,choices:e})}static create(a){return gme(a)}}return r};dme.exports=gme()});var ZR=_((ujt,yme)=>{"use strict";var alt=nC(),{isPrimitive:llt,hasColor:clt}=Zo(),C5=class extends alt{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:s}=this;return s.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return llt(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return clt(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=this.styles.muted(this.default),f=[s,n,c,a].filter(Boolean).join(" ");this.state.prompt=f;let p=await this.header(),h=this.value=this.cast(e),E=await this.format(h),C=await this.error()||await this.hint(),S=await this.footer();C&&!f.includes(C)&&(E+=" "+C),f+=" "+E,this.clear(r),this.write([p,f,S].filter(Boolean).join(` -`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};yme.exports=C5});var Ime=_((fjt,Eme)=>{"use strict";var ult=ZR(),w5=class extends ult{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};Eme.exports=w5});var wme=_((Ajt,Cme)=>{"use strict";var flt=G0(),Alt=XR(),iC=Alt.prototype,B5=class extends flt{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let s=this.focused,a=s.parent||{};return!s.editable&&!a.editable&&(e==="a"||e==="i")?super[e]():iC.dispatch.call(this,e,r)}append(e,r){return iC.append.call(this,e,r)}delete(e,r){return iC.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?iC.next.call(this):super.next()}prev(){return this.focused.editable?iC.prev.call(this):super.prev()}async indicator(e,r){let s=e.indicator||"",a=e.editable?s:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?iC.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let s=r.parent?this.value[r.parent.name]:this.value;if(r.editable?s=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(s=r.enabled===!0),e=await r.validate(s,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};Cme.exports=B5});var vm=_((pjt,Bme)=>{"use strict";var plt=nC(),hlt=y5(),{isPrimitive:glt}=Zo(),v5=class extends plt{constructor(e){super(e),this.initial=glt(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let s=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!s||s.name!=="return")?this.append(` -`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:s}=this.state;this.input=`${s}`.slice(0,r)+e+`${s}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),s=this.input.slice(e),a=r.split(" ");this.state.clipboard.push(a.pop()),this.input=a.join(" "),this.cursor=this.input.length,this.input+=s,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):hlt(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),s=await this.separator(),a=await this.message(),n=[r,a,s].filter(Boolean).join(" ");this.state.prompt=n;let c=await this.header(),f=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!f.includes(p)&&(f+=" "+p),n+=" "+f,this.clear(e),this.write([c,n,h].filter(Boolean).join(` -`)),this.restore()}};Bme.exports=v5});var Sme=_((hjt,vme)=>{"use strict";var dlt=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),$R=t=>dlt(t).filter(Boolean);vme.exports=(t,e={},r="")=>{let{past:s=[],present:a=""}=e,n,c;switch(t){case"prev":case"undo":return n=s.slice(0,s.length-1),c=s[s.length-1]||"",{past:$R([r,...n]),present:c};case"next":case"redo":return n=s.slice(1),c=s[0]||"",{past:$R([...n,r]),present:c};case"save":return{past:$R([...s,r]),present:""};case"remove":return c=$R(s.filter(f=>f!==r)),a="",c.length&&(a=c.pop()),{past:c,present:a};default:throw new Error(`Invalid action: "${t}"`)}}});var D5=_((gjt,bme)=>{"use strict";var mlt=vm(),Dme=Sme(),S5=class extends mlt{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let s=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:s},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=Dme(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){this.store&&(this.data=Dme("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};bme.exports=S5});var xme=_((djt,Pme)=>{"use strict";var ylt=vm(),b5=class extends ylt{format(){return""}};Pme.exports=b5});var Qme=_((mjt,kme)=>{"use strict";var Elt=vm(),P5=class extends Elt{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};kme.exports=P5});var Rme=_((yjt,Tme)=>{"use strict";var Ilt=G0(),x5=class extends Ilt{constructor(e){super({...e,multiple:!0})}};Tme.exports=x5});var Q5=_((Ejt,Fme)=>{"use strict";var Clt=vm(),k5=class extends Clt{constructor(e={}){super({style:"number",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,s=this.toNumber(this.input);return s>this.max+r?this.alert():(this.input=`${s+r}`,this.render())}down(e){let r=e||this.minor,s=this.toNumber(this.input);return sthis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};Fme.exports=k5});var Ome=_((Ijt,Nme)=>{Nme.exports=Q5()});var Mme=_((Cjt,Lme)=>{"use strict";var wlt=vm(),T5=class extends wlt{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};Lme.exports=T5});var Hme=_((wjt,_me)=>{"use strict";var Blt=Ju(),vlt=Wv(),Ume=Zo(),R5=class extends vlt{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` - `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((s,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let s=0;s=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?"":["",...this.scale.map(s=>` ${s.name} - ${s.message}`)].map(s=>this.styles.muted(s)).join(` -`)}renderScaleHeading(e){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let s=this.scaleLength-r.join("").length,a=Math.round(s/(r.length-1)),c=r.map(p=>this.styles.strong(p)).join(" ".repeat(a)),f=" ".repeat(this.widths[0]);return this.margin[3]+f+this.margin[1]+c}scaleIndicator(e,r,s){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,s);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let s=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term==="Hyper"?"":" ";return s.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!Ume.hasColor(n)&&(n=this.styles.muted(n));let c=I=>this.margin[3]+I.replace(/\s+$/,"").padEnd(this.widths[0]," "),f=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),E=await this.renderScale(e,r),C=this.margin[1]+this.margin[3];this.scaleLength=Blt.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-C.length);let P=Ume.wordWrap(h,{width:this.widths[0],newline:f}).split(` -`).map(I=>c(I)+this.margin[1]);return s&&(E=this.styles.info(E),P=P.map(I=>this.styles.info(I))),P[0]+=E,this.linebreak&&P.push(""),[p+a,P.join(` -`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),s=await this.renderScaleHeading();return this.margin[0]+[s,...r.map(a=>a.join(" "))].join(` -`)}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c="";this.options.promptLine!==!1&&(c=[s,n,a,""].join(" "),this.state.prompt=c);let f=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),C=await this.renderChoices(),S=await this.footer(),P=this.emptyError;p&&(c+=p),E&&!c.includes(E)&&(c+=" "+E),e&&!p&&!C.trim()&&this.multiple&&P!=null&&(c+=this.styles.danger(P)),this.clear(r),this.write([f,c,h,C,S].filter(Boolean).join(` -`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};_me.exports=R5});var qme=_((Bjt,Gme)=>{"use strict";var jme=Ju(),Slt=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",N5=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Slt(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},Dlt=async(t={},e={},r=s=>s)=>{let s=new Set,a=t.fields||[],n=t.template,c=[],f=[],p=[],h=1;typeof n=="function"&&(n=await n());let E=-1,C=()=>n[++E],S=()=>n[E+1],P=I=>{I.line=h,c.push(I)};for(P({type:"bos",value:""});Eie.name===U.key);U.field=a.find(ie=>ie.name===U.key),ee||(ee=new N5(U),f.push(ee)),ee.lines.push(U.line-1);continue}let R=c[c.length-1];R.type==="text"&&R.line===h?R.value+=I:P({type:"text",value:I})}return P({type:"eos",value:""}),{input:n,tabstops:c,unique:s,keys:p,items:f}};Gme.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),s={...e.values,...e.initial},{tabstops:a,items:n,keys:c}=await Dlt(e,s),f=F5("result",t,e),p=F5("format",t,e),h=F5("validate",t,e,!0),E=t.isValue.bind(t);return async(C={},S=!1)=>{let P=0;C.required=r,C.items=n,C.keys=c,C.output="";let I=async(W,ee,ie,ue)=>{let le=await h(W,ee,ie,ue);return le===!1?"Invalid field "+ie.name:le};for(let W of a){let ee=W.value,ie=W.key;if(W.type!=="template"){ee&&(C.output+=ee);continue}if(W.type==="template"){let ue=n.find(Ce=>Ce.name===ie);e.required===!0&&C.required.add(ue.name);let le=[ue.input,C.values[ue.value],ue.value,ee].find(E),pe=(ue.field||{}).message||W.inner;if(S){let Ce=await I(C.values[ie],C,ue,P);if(Ce&&typeof Ce=="string"||Ce===!1){C.invalid.set(ie,Ce);continue}C.invalid.delete(ie);let g=await f(C.values[ie],C,ue,P);C.output+=jme.unstyle(g);continue}ue.placeholder=!1;let Be=ee;ee=await p(ee,C,ue,P),le!==ee?(C.values[ie]=le,ee=t.styles.typing(le),C.missing.delete(pe)):(C.values[ie]=void 0,le=`<${pe}>`,ee=t.styles.primary(le),ue.placeholder=!0,C.required.has(ie)&&C.missing.add(pe)),C.missing.has(pe)&&C.validating&&(ee=t.styles.warning(le)),C.invalid.has(ie)&&C.validating&&(ee=t.styles.danger(le)),P===C.index&&(Be!==ee?ee=t.styles.underline(ee):ee=t.styles.heading(jme.unstyle(ee))),P++}ee&&(C.output+=ee)}let R=C.output.split(` -`).map(W=>" "+W),N=n.length,U=0;for(let W of n)C.invalid.has(W.name)&&W.lines.forEach(ee=>{R[ee][0]===" "&&(R[ee]=C.styles.danger(C.symbols.bullet)+R[ee].slice(1))}),t.isValue(C.values[W.name])&&U++;return C.completed=(U/N*100).toFixed(0),C.output=R.join(` -`),C.output}};function F5(t,e,r,s){return(a,n,c,f)=>typeof c.field[t]=="function"?c.field[t].call(e,a,n,c,f):[s,a].find(p=>e.isValue(p))}});var Yme=_((vjt,Wme)=>{"use strict";var blt=Ju(),Plt=qme(),xlt=nC(),O5=class extends xlt{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await Plt(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let s=this.getItem(),a=s.input.slice(0,this.cursor),n=s.input.slice(this.cursor);this.input=s.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),s=e.input.slice(0,this.cursor-1);this.input=e.input=`${s}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:s,size:a}=this.state,n=[this.options.newline,` -`].find(W=>W!=null),c=await this.prefix(),f=await this.separator(),p=await this.message(),h=[c,p,f].filter(Boolean).join(" ");this.state.prompt=h;let E=await this.header(),C=await this.error()||"",S=await this.hint()||"",P=s?"":await this.interpolate(this.state),I=this.state.key=r[e]||"",R=await this.format(I),N=await this.footer();R&&(h+=" "+R),S&&!R&&this.state.completed===0&&(h+=" "+S),this.clear(a);let U=[E,h,P,N,C.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:s,index:a}=this.state,n=r.find(c=>c.name===s[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:s,values:a}=this.state;if(e.size){let f="";for(let[p,h]of e)f+=`Invalid ${p}: ${h} -`;return this.state.error=f,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let c=blt.unstyle(s).split(` -`).map(f=>f.slice(1)).join(` -`);return this.value={values:a,result:c},super.submit()}};Wme.exports=O5});var Jme=_((Sjt,Vme)=>{"use strict";var klt="(Use + to sort)",Qlt=G0(),L5=class extends Qlt{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,klt].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let s=await super.renderChoice(e,r),a=this.symbols.identicalTo+" ",n=this.index===r&&this.sorting?this.styles.muted(a):" ";return this.options.drag===!1&&(n=""),this.options.numbered===!0?n+`${r+1} - `+s:n+s}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Vme.exports=L5});var zme=_((Djt,Kme)=>{"use strict";var Tlt=Wv(),M5=class extends Tlt{constructor(e={}){if(super(e),this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(s=>this.styles.muted(s)),this.state.header=r.join(` - `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let s of r)s.scale=Rlt(5,this.options),s.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],s=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!s,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=this.term==="Hyper",n=a?9:8,c=a?"":" ",f=this.symbols.line.repeat(n),p=" ".repeat(n+(a?0:1)),h=ee=>(ee?this.styles.success("\u25C9"):"\u25EF")+c,E=r+1+".",C=s?this.styles.heading:this.styles.noop,S=await this.resolve(e.message,this.state,e,r),P=this.indent(e),I=P+e.scale.map((ee,ie)=>h(ie===e.scaleIdx)).join(f),R=ee=>ee===e.scaleIdx?C(ee):ee,N=P+e.scale.map((ee,ie)=>R(ie)).join(p),U=()=>[E,S].filter(Boolean).join(" "),W=()=>[U(),I,N," "].filter(Boolean).join(` -`);return s&&(I=this.styles.cyan(I),N=this.styles.cyan(N)),W()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(s,a)=>await this.renderChoice(s,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` -`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=[s,n,a].filter(Boolean).join(" ");this.state.prompt=c;let f=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();(p||!h)&&(c+=" "+p),h&&!c.includes(h)&&(c+=" "+h),e&&!p&&!E&&this.multiple&&this.type!=="form"&&(c+=this.styles.danger(this.emptyError)),this.clear(r),this.write([c,f,E,C].filter(Boolean).join(` -`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function Rlt(t,e={}){if(Array.isArray(e.scale))return e.scale.map(s=>({...s}));let r=[];for(let s=1;s{Xme.exports=D5()});var eye=_((Pjt,$me)=>{"use strict";var Flt=ZR(),U5=class extends Flt{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=s=>this.styles.primary.underline(s);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),s=await this.prefix(),a=await this.separator(),n=await this.message(),c=await this.format(),f=await this.error()||await this.hint(),p=await this.footer(),h=[s,n,a,c].join(" ");this.state.prompt=h,f&&!h.includes(f)&&(h+=" "+f),this.clear(e),this.write([r,h,p].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};$me.exports=U5});var rye=_((xjt,tye)=>{"use strict";var Nlt=G0(),_5=class extends Nlt{constructor(e){if(super(e),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let s=await super.toChoices(e,r);if(s.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>s.length)throw new Error("Please specify the index of the correct answer from the list of choices");return s}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};tye.exports=_5});var iye=_(H5=>{"use strict";var nye=Zo(),ks=(t,e)=>{nye.defineExport(H5,t,e),nye.defineExport(H5,t.toLowerCase(),e)};ks("AutoComplete",()=>ume());ks("BasicAuth",()=>mme());ks("Confirm",()=>Ime());ks("Editable",()=>wme());ks("Form",()=>XR());ks("Input",()=>D5());ks("Invisible",()=>xme());ks("List",()=>Qme());ks("MultiSelect",()=>Rme());ks("Numeral",()=>Ome());ks("Password",()=>Mme());ks("Scale",()=>Hme());ks("Select",()=>G0());ks("Snippet",()=>Yme());ks("Sort",()=>Jme());ks("Survey",()=>zme());ks("Text",()=>Zme());ks("Toggle",()=>eye());ks("Quiz",()=>rye())});var oye=_((Qjt,sye)=>{sye.exports={ArrayPrompt:Wv(),AuthPrompt:I5(),BooleanPrompt:ZR(),NumberPrompt:Q5(),StringPrompt:vm()}});var Vv=_((Tjt,lye)=>{"use strict";var aye=Ie("assert"),G5=Ie("events"),q0=Zo(),zu=class extends G5{constructor(e,r){super(),this.options=q0.merge({},e),this.answers={...r}}register(e,r){if(q0.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}aye.equal(typeof r,"function","expected a function");let s=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[s]=r:this.prompts[s]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(q0.merge({},this.options,r))}catch(s){return Promise.reject(s)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=q0.merge({},this.options,e),{type:s,name:a}=e,{set:n,get:c}=q0;if(typeof s=="function"&&(s=await s.call(this,e,this.answers)),!s)return this.answers[a];aye(this.prompts[s],`Prompt "${s}" is not registered`);let f=new this.prompts[s](r),p=c(this.answers,a);f.state.answers=this.answers,f.enquirer=this,a&&f.on("submit",E=>{this.emit("answer",a,E,f),n(this.answers,a,E)});let h=f.emit.bind(f);return f.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit("prompt",f,this),r.autofill&&p!=null?(f.value=f.input=p,r.autofill==="show"&&await f.submit()):p=f.value=await f.run(),p}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||nC()}static get prompts(){return iye()}static get types(){return oye()}static get prompt(){let e=(r,...s)=>{let a=new this(...s),n=a.emit.bind(a);return a.emit=(...c)=>(e.emit(...c),n(...c)),a.prompt(r)};return q0.mixinEmitter(e,new G5),e}};q0.mixinEmitter(zu,new G5);var j5=zu.prompts;for(let t of Object.keys(j5)){let e=t.toLowerCase(),r=s=>new j5[t](s).run();zu.prompt[e]=r,zu[e]=r,zu[t]||Reflect.defineProperty(zu,t,{get:()=>j5[t]})}var Yv=t=>{q0.defineExport(zu,t,()=>zu.types[t])};Yv("ArrayPrompt");Yv("AuthPrompt");Yv("BooleanPrompt");Yv("NumberPrompt");Yv("StringPrompt");lye.exports=zu});var dye=_((tGt,qlt)=>{qlt.exports={name:"@yarnpkg/cli",version:"4.12.0",license:"BSD-2-Clause",main:"./sources/index.ts",exports:{".":"./sources/index.ts","./polyfills":"./sources/polyfills.ts","./package.json":"./package.json"},dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-catalog":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-constraints":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-exec":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-interactive-tools":"workspace:^","@yarnpkg/plugin-jsr":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/plugin-stage":"workspace:^","@yarnpkg/plugin-typescript":"workspace:^","@yarnpkg/plugin-version":"workspace:^","@yarnpkg/plugin-workspace-tools":"workspace:^","@yarnpkg/shell":"workspace:^","ci-info":"^4.0.0",clipanion:"^4.0.0-rc.2",semver:"^7.1.2",tslib:"^2.4.0",typanion:"^3.14.0"},devDependencies:{"@types/semver":"^7.1.0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",bin:null,exports:{".":"./lib/index.js","./package.json":"./package.json"}},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-catalog","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]}},repository:{type:"git",url:"git+https://github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=18.12.0"}}});var iq=_((R9t,Pye)=>{"use strict";Pye.exports=function(e,r){r===!0&&(r=0);var s="";if(typeof e=="string")try{s=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(s=e.protocol);var a=s.split(/\:|\+/).filter(Boolean);return typeof r=="number"?a[r]:a}});var kye=_((F9t,xye)=>{"use strict";var uct=iq();function fct(t){var e={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:t,query:{},parse_failed:!1};try{var r=new URL(t);e.protocols=uct(r),e.protocol=e.protocols[0],e.port=r.port,e.resource=r.hostname,e.host=r.host,e.user=r.username||"",e.password=r.password||"",e.pathname=r.pathname,e.hash=r.hash.slice(1),e.search=r.search.slice(1),e.href=r.href,e.query=Object.fromEntries(r.searchParams)}catch{e.protocols=["file"],e.protocol=e.protocols[0],e.port="",e.resource="",e.user="",e.pathname="",e.hash="",e.search="",e.href=t,e.query={},e.parse_failed=!0}return e}xye.exports=fct});var Rye=_((N9t,Tye)=>{"use strict";var Act=kye();function pct(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var hct=pct(Act),gct="text/plain",dct="us-ascii",Qye=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),mct=(t,{stripHash:e})=>{let r=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:s,data:a,hash:n}=r.groups,c=s.split(";");n=e?"":n;let f=!1;c[c.length-1]==="base64"&&(c.pop(),f=!0);let p=(c.shift()||"").toLowerCase(),E=[...c.map(C=>{let[S,P=""]=C.split("=").map(I=>I.trim());return S==="charset"&&(P=P.toLowerCase(),P===dct)?"":`${S}${P?`=${P}`:""}`}).filter(Boolean)];return f&&E.push("base64"),(E.length>0||p&&p!==gct)&&E.unshift(p),`data:${E.join(";")},${f?a.trim():a}${n?`#${n}`:""}`};function yct(t,e){if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return mct(t,e);if(/^view-source:/i.test(t))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash?a.hash="":e.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,"")),a.pathname){let c=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,f=0,p="";for(;;){let E=c.exec(a.pathname);if(!E)break;let C=E[0],S=E.index,P=a.pathname.slice(f,S);p+=P.replace(/\/{2,}/g,"/"),p+=C,f=S+C.length}let h=a.pathname.slice(f,a.pathname.length);p+=h.replace(/\/{2,}/g,"/"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let c=a.pathname.split("/"),f=c[c.length-1];Qye(f,e.removeDirectoryIndex)&&(c=c.slice(0,-1),a.pathname=c.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let c of[...a.searchParams.keys()])Qye(c,e.removeQueryParameters)&&a.searchParams.delete(c);if(e.removeQueryParameters===!0&&(a.search=""),e.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,""));let n=t;return t=a.toString(),!e.removeSingleSlash&&a.pathname==="/"&&!n.endsWith("/")&&a.hash===""&&(t=t.replace(/\/$/,"")),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&e.removeSingleSlash&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t}var sq=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,s=n=>{let c=new Error(n);throw c.subject_url=t,c};(typeof t!="string"||!t.trim())&&s("Invalid url."),t.length>sq.MAX_INPUT_LENGTH&&s("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),e&&(typeof e!="object"&&(e={stripHash:!1}),t=yct(t,e));let a=hct.default(t);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=["ssh"],a.protocol="ssh",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):s("URL parsing failed.")}return a};sq.MAX_INPUT_LENGTH=2048;Tye.exports=sq});var Oye=_((O9t,Nye)=>{"use strict";var Ect=iq();function Fye(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=Ect(t);if(t=t.substring(t.indexOf("://")+3),Fye(e))return!0;var r=new RegExp(".([a-zA-Z\\d]+):(\\d+)/");return!t.match(r)&&t.indexOf("@"){"use strict";var Ict=Rye(),Lye=Oye();function Cct(t){var e=Ict(t);return e.token="",e.password==="x-oauth-basic"?e.token=e.user:e.user==="x-token-auth"&&(e.token=e.password),Lye(e.protocols)||e.protocols.length===0&&Lye(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol="file",e.protocols=["file"]),e.href=e.href.replace(/\/$/,""),e}Mye.exports=Cct});var Hye=_((M9t,_ye)=>{"use strict";var wct=Uye();function oq(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=/^([a-z\d-]{1,39})\/([-\.\w]{1,100})$/i;e.test(t)&&(t="https://github.com/"+t);var r=wct(t),s=r.resource.split("."),a=null;switch(r.toString=function(N){return oq.stringify(this,N)},r.source=s.length>2?s.slice(1-s.length).join("."):r.source=r.resource,r.git_suffix=/\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\/)|(\/$)/g,"").replace(/\.git$/,"")),r.owner=decodeURIComponent(r.user),r.source){case"git.cloudforge.com":r.owner=r.user,r.organization=s[0],r.source="cloudforge.com";break;case"visualstudio.com":if(r.resource==="vs-ssh.visualstudio.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+"/"+a[3]);break}else{a=r.name.split("/"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name);break}case"dev.azure.com":case"azure.com":if(r.resource==="ssh.dev.azure.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split("/"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\/+/g,"")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,""));break}default:a=r.name.split("/");var n=a.length-1;if(a.length>=2){var c=a.indexOf("-",2),f=a.indexOf("blob",2),p=a.indexOf("tree",2),h=a.indexOf("commit",2),E=a.indexOf("src",2),C=a.indexOf("raw",2),S=a.indexOf("edit",2);n=c>0?c-1:f>0?f-1:p>0?p-1:h>0?h-1:E>0?E-1:C>0?C-1:S>0?S-1:n,r.owner=a.slice(0,n).join("/"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref="",r.filepathtype="",r.filepath="";var P=a.length>n&&a[n+1]==="-"?n+1:n;a.length>P+2&&["raw","src","blob","tree","edit"].indexOf(a[P+1])>=0&&(r.filepathtype=a[P+1],r.ref=a[P+2],a.length>P+3&&(r.filepath=a.slice(P+3).join("/"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+="/"),r.full_name+=r.name)),r.owner.startsWith("scm/")&&(r.source="bitbucket-server",r.owner=r.owner.replace("scm/",""),r.organization=r.owner,r.full_name=r.owner+"/"+r.name);var I=/(projects|users)\/(.*?)\/repos\/(.*?)((\/.*$)|$)/,R=I.exec(r.pathname);return R!=null&&(r.source="bitbucket-server",R[1]==="users"?r.owner="~"+R[2]:r.owner=R[2],r.organization=r.owner,r.name=R[3],a=R[4].split("/"),a.length>1&&(["raw","browse"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join("/"))):a[1]==="commits"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+"/"+r.name,r.query.at?r.ref=r.query.at:r.ref=""),r}oq.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",s=t.user||"git",a=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+s+"@"+t.resource+r+"/"+t.full_name+a:s+"@"+t.resource+":"+t.full_name+a;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+s+"@"+t.resource+r+"/"+t.full_name+a;case"http":case"https":var n=t.token?Bct(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+n+t.resource+r+"/"+vct(t)+a;default:return t.href}};function Bct(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}function vct(t){switch(t.source){case"bitbucket-server":return"scm/"+t.full_name;default:return""+t.full_name}}_ye.exports=oq});function jct(t,e){return e===1&&Hct.has(t[0])}function nS(t){let e=Array.isArray(t)?t:Mu(t);return e.map((s,a)=>Uct.test(s)?`[${s}]`:_ct.test(s)&&!jct(e,a)?`.${s}`:`[${JSON.stringify(s)}]`).join("").replace(/^\./,"")}function Gct(t,e){let r=[];if(e.methodName!==null&&r.push(he.pretty(t,e.methodName,he.Type.CODE)),e.file!==null){let s=[];s.push(he.pretty(t,e.file,he.Type.PATH)),e.line!==null&&(s.push(he.pretty(t,e.line,he.Type.NUMBER)),e.column!==null&&s.push(he.pretty(t,e.column,he.Type.NUMBER))),r.push(`(${s.join(he.pretty(t,":","grey"))})`)}return r.join(" ")}function iF(t,{manifestUpdates:e,reportedErrors:r},{fix:s}={}){let a=new Map,n=new Map,c=[...r.keys()].map(f=>[f,new Map]);for(let[f,p]of[...c,...e]){let h=r.get(f)?.map(P=>({text:P,fixable:!1}))??[],E=!1,C=t.getWorkspaceByCwd(f),S=C.manifest.exportTo({});for(let[P,I]of p){if(I.size>1){let R=[...I].map(([N,U])=>{let W=he.pretty(t.configuration,N,he.Type.INSPECT),ee=U.size>0?Gct(t.configuration,U.values().next().value):null;return ee!==null?` -${W} at ${ee}`:` -${W}`}).join("");h.push({text:`Conflict detected in constraint targeting ${he.pretty(t.configuration,P,he.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=I,N=va(S,P);if(JSON.stringify(N)===JSON.stringify(R))continue;if(!s){let U=typeof N>"u"?`Missing field ${he.pretty(t.configuration,P,he.Type.CODE)}; expected ${he.pretty(t.configuration,R,he.Type.INSPECT)}`:typeof R>"u"?`Extraneous field ${he.pretty(t.configuration,P,he.Type.CODE)} currently set to ${he.pretty(t.configuration,N,he.Type.INSPECT)}`:`Invalid field ${he.pretty(t.configuration,P,he.Type.CODE)}; expected ${he.pretty(t.configuration,R,he.Type.INSPECT)}, found ${he.pretty(t.configuration,N,he.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof R>"u"?A0(S,P):Jd(S,P,R),E=!0}E&&a.set(C,S)}h.length>0&&n.set(C,h)}return{changedWorkspaces:a,remainingErrors:n}}function rEe(t,{configuration:e}){let r={children:[]};for(let[s,a]of t){let n=[];for(let f of a){let p=f.text.split(/\n/);f.fixable&&(p[0]=`${he.pretty(e,"\u2699","gray")} ${p[0]}`),n.push({value:he.tuple(he.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:he.tuple(he.Type.NO_HINT,h)}))})}let c={value:he.tuple(he.Type.LOCATOR,s.anchoredLocator),children:je.sortMap(n,f=>f.value[1])};r.children.push(c)}return r.children=je.sortMap(r.children,s=>s.value[1]),r}var WC,Uct,_ct,Hct,iS=Xe(()=>{Ge();ql();WC=class{constructor(e){this.indexedFields=e;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let e of this.indexedFields)this.indexes[e]=new Map}insert(e){this.items.push(e);for(let r of this.indexedFields){let s=Object.hasOwn(e,r)?e[r]:void 0;if(typeof s>"u")continue;je.getArrayWithDefault(this.indexes[r],s).push(e)}return e}find(e){if(typeof e>"u")return this.items;let r=Object.entries(e);if(r.length===0)return this.items;let s=[],a;for(let[c,f]of r){let p=c,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>"u"){s.push([p,f]);continue}let E=new Set(h.get(f)??[]);if(E.size===0)return[];if(typeof a>"u")a=E;else for(let C of a)E.has(C)||a.delete(C);if(a.size===0)break}let n=[...a??[]];return s.length>0&&(n=n.filter(c=>{for(let[f,p]of s)if(!(typeof p<"u"?Object.hasOwn(c,f)&&c[f]===p:Object.hasOwn(c,f)===!1))return!1;return!0})),n}},Uct=/^[0-9]+$/,_ct=/^[a-zA-Z0-9_]+$/,Hct=new Set(["scripts",...Ut.allDependencies])});var nEe=_((_Yt,vq)=>{var qct;(function(t){var e=function(){return{"append/2":[new t.type.Rule(new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("L")]),new t.type.Term("foldl",[new t.type.Term("append",[]),new t.type.Var("X"),new t.type.Term("[]",[]),new t.type.Var("L")]))],"append/3":[new t.type.Rule(new t.type.Term("append",[new t.type.Term("[]",[]),new t.type.Var("X"),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("append",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("append",[new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("S")]))],"member/2":[new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("_")])]),null),new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")])]),new t.type.Term("member",[new t.type.Var("X"),new t.type.Var("Xs")]))],"permutation/2":[new t.type.Rule(new t.type.Term("permutation",[new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("permutation",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("permutation",[new t.type.Var("T"),new t.type.Var("P")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("P")]),new t.type.Term("append",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("Y")]),new t.type.Var("S")])])]))],"maplist/2":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("X")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("Xs")])]))],"maplist/3":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs")])]))],"maplist/4":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs")])]))],"maplist/5":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds")])]))],"maplist/6":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es")])]))],"maplist/7":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs")])]))],"maplist/8":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")]),new t.type.Term(".",[new t.type.Var("G"),new t.type.Var("Gs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F"),new t.type.Var("G")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs"),new t.type.Var("Gs")])]))],"include/3":[new t.type.Rule(new t.type.Term("include",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("include",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("A")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("A"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("F"),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("F")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("L"),new t.type.Var("S")])]),new t.type.Term("include",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("S")])])])])]))],"exclude/3":[new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("E")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("Q")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("R"),new t.type.Var("Q")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("!",[]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("E")])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("E")])])])])])])]))],"foldl/4":[new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Var("I"),new t.type.Var("I")]),null),new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("I"),new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("I"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])])])]),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P2"),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P2")]),new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("R")])])])])]))],"select/3":[new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Xs")]),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term("select",[new t.type.Var("E"),new t.type.Var("Xs"),new t.type.Var("Ys")]))],"sum_list/2":[new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term("[]",[]),new t.type.Num(0,!1)]),null),new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("sum_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("+",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"max_list/2":[new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("max_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"min_list/2":[new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("min_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("=<",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"prod_list/2":[new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term("[]",[]),new t.type.Num(1,!1)]),null),new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("prod_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("*",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"last/2":[new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")]),new t.type.Var("X")]),new t.type.Term("last",[new t.type.Var("Xs"),new t.type.Var("X")]))],"prefix/2":[new t.type.Rule(new t.type.Term("prefix",[new t.type.Var("Part"),new t.type.Var("Whole")]),new t.type.Term("append",[new t.type.Var("Part"),new t.type.Var("_"),new t.type.Var("Whole")]))],"nth0/3":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth1/3":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth0/4":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth1/4":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth/5":[new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("N"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("X"),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("O"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("Y"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term(",",[new t.type.Term("is",[new t.type.Var("M"),new t.type.Term("+",[new t.type.Var("N"),new t.type.Num(1,!1)])]),new t.type.Term("nth",[new t.type.Var("M"),new t.type.Var("O"),new t.type.Var("Xs"),new t.type.Var("Y"),new t.type.Var("Ys")])]))],"length/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(!t.type.is_variable(f)&&!t.type.is_integer(f))s.throw_error(t.error.type("integer",f,n.indicator));else if(t.type.is_integer(f)&&f.value<0)s.throw_error(t.error.domain("not_less_than_zero",f,n.indicator));else{var p=new t.type.Term("length",[c,new t.type.Num(0,!1),f]);t.type.is_integer(f)&&(p=new t.type.Term(",",[p,new t.type.Term("!",[])])),s.prepend([new t.type.State(a.goal.replace(p),a.substitution,a)])}},"length/3":[new t.type.Rule(new t.type.Term("length",[new t.type.Term("[]",[]),new t.type.Var("N"),new t.type.Var("N")]),null),new t.type.Rule(new t.type.Term("length",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("X")]),new t.type.Var("A"),new t.type.Var("N")]),new t.type.Term(",",[new t.type.Term("succ",[new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("length",[new t.type.Var("X"),new t.type.Var("B"),new t.type.Var("N")])]))],"replicate/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(f))s.throw_error(t.error.type("integer",f,n.indicator));else if(f.value<0)s.throw_error(t.error.domain("not_less_than_zero",f,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type("list",p,n.indicator));else{for(var h=new t.type.Term("[]"),E=0;E0;C--)E[C].equals(E[C-1])&&E.splice(C,1);for(var S=new t.type.Term("[]"),C=E.length-1;C>=0;C--)S=new t.type.Term(".",[E[C],S]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[S,f])),a.substitution,a)])}}},"msort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type("list",f,n.indicator));else{for(var p=[],h=c;h.indicator==="./2";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))s.throw_error(t.error.type("list",c,n.indicator));else{for(var E=p.sort(t.compare),C=new t.type.Term("[]"),S=E.length-1;S>=0;S--)C=new t.type.Term(".",[E[S],C]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[C,f])),a.substitution,a)])}}},"keysort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type("list",f,n.indicator));else{for(var p=[],h,E=c;E.indicator==="./2";){if(h=E.args[0],t.type.is_variable(h)){s.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!=="-/2"){s.throw_error(t.error.type("pair",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(t.type.is_variable(E))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(E))s.throw_error(t.error.type("list",c,n.indicator));else{for(var C=p.sort(t.compare),S=new t.type.Term("[]"),P=C.length-1;P>=0;P--)S=new t.type.Term(".",[new t.type.Term("-",[C[P],C[P].pair]),S]),delete C[P].pair;s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[S,f])),a.substitution,a)])}}},"take/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))s.throw_error(t.error.type("list",f,n.indicator));else if(!t.type.is_integer(c))s.throw_error(t.error.type("integer",c,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;if(h===0){for(var S=new t.type.Term("[]"),h=E.length-1;h>=0;h--)S=new t.type.Term(".",[E[h],S]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[S,p])),a.substitution,a)])}}},"drop/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))s.throw_error(t.error.type("list",f,n.indicator));else if(!t.type.is_integer(c))s.throw_error(t.error.type("integer",c,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;h===0&&s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[C,p])),a.substitution,a)])}},"reverse/2":function(s,a,n){var c=n.args[0],f=n.args[1],p=t.type.is_instantiated_list(c),h=t.type.is_instantiated_list(f);if(t.type.is_variable(c)&&t.type.is_variable(f))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(c)&&!t.type.is_fully_list(c))s.throw_error(t.error.type("list",c,n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type("list",f,n.indicator));else if(!p&&!h)s.throw_error(t.error.instantiation(n.indicator));else{for(var E=p?c:f,C=new t.type.Term("[]",[]);E.indicator==="./2";)C=new t.type.Term(".",[E.args[0],C]),E=E.args[1];s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[C,p?f:c])),a.substitution,a)])}},"list_to_set/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else{for(var p=c,h=[];p.indicator==="./2";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!=="[]/0")s.throw_error(t.error.type("list",c,n.indicator));else{for(var E=[],C=new t.type.Term("[]",[]),S,P=0;P=0;P--)C=new t.type.Term(".",[E[P],C]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[f,C])),a.substitution,a)])}}}}},r=["append/2","append/3","member/2","permutation/2","maplist/2","maplist/3","maplist/4","maplist/5","maplist/6","maplist/7","maplist/8","include/3","exclude/3","foldl/4","sum_list/2","max_list/2","min_list/2","prod_list/2","last/2","prefix/2","nth0/3","nth1/3","nth0/4","nth1/4","length/2","replicate/3","select/3","sort/2","msort/2","keysort/2","take/3","drop/3","reverse/2","list_to_set/2"];typeof vq<"u"?vq.exports=function(s){t=s,new t.type.Module("lists",e(),r)}:new t.type.Module("lists",e(),r)})(qct)});var yEe=_($r=>{"use strict";var bm=process.platform==="win32",Sq="aes-256-cbc",Wct="sha256",oEe="The current environment doesn't support interactive reading from TTY.",si=Ie("fs"),iEe=process.binding("tty_wrap").TTY,bq=Ie("child_process"),V0=Ie("path"),Pq={prompt:"> ",hideEchoBack:!1,mask:"*",limit:[],limitMessage:"Input another, please.$<( [)limit(])>",defaultInput:"",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:"utf8",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},Xp="none",Zu,VC,sEe=!1,Y0,oF,Dq,Yct=0,Rq="",Dm=[],aF,aEe=!1,xq=!1,sS=!1;function lEe(t){function e(r){return r.replace(/[^\w\u0080-\uFFFF]/g,function(s){return"#"+s.charCodeAt(0)+";"})}return oF.concat(function(r){var s=[];return Object.keys(r).forEach(function(a){r[a]==="boolean"?t[a]&&s.push("--"+a):r[a]==="string"&&t[a]&&s.push("--"+a,e(t[a]))}),s}({display:"string",displayOnly:"boolean",keyIn:"boolean",hideEchoBack:"boolean",mask:"string",limit:"string",caseSensitive:"boolean"}))}function Vct(t,e){function r(U){var W,ee="",ie;for(Dq=Dq||Ie("os").tmpdir();;){W=V0.join(Dq,U+ee);try{ie=si.openSync(W,"wx")}catch(ue){if(ue.code==="EEXIST"){ee++;continue}else throw ue}si.closeSync(ie);break}return W}var s,a,n,c={},f,p,h=r("readline-sync.stdout"),E=r("readline-sync.stderr"),C=r("readline-sync.exit"),S=r("readline-sync.done"),P=Ie("crypto"),I,R,N;I=P.createHash(Wct),I.update(""+process.pid+Yct+++Math.random()),N=I.digest("hex"),R=P.createDecipher(Sq,N),s=lEe(t),bm?(a=process.env.ComSpec||"cmd.exe",process.env.Q='"',n=["/V:ON","/S","/C","(%Q%"+a+"%Q% /V:ON /S /C %Q%%Q%"+Y0+"%Q%"+s.map(function(U){return" %Q%"+U+"%Q%"}).join("")+" & (echo !ERRORLEVEL!)>%Q%"+C+"%Q%%Q%) 2>%Q%"+E+"%Q% |%Q%"+process.execPath+"%Q% %Q%"+__dirname+"\\encrypt.js%Q% %Q%"+Sq+"%Q% %Q%"+N+"%Q% >%Q%"+h+"%Q% & (echo 1)>%Q%"+S+"%Q%"]):(a="/bin/sh",n=["-c",'("'+Y0+'"'+s.map(function(U){return" '"+U.replace(/'/g,"'\\''")+"'"}).join("")+'; echo $?>"'+C+'") 2>"'+E+'" |"'+process.execPath+'" "'+__dirname+'/encrypt.js" "'+Sq+'" "'+N+'" >"'+h+'"; echo 1 >"'+S+'"']),sS&&sS("_execFileSync",s);try{bq.spawn(a,n,e)}catch(U){c.error=new Error(U.message),c.error.method="_execFileSync - spawn",c.error.program=a,c.error.args=n}for(;si.readFileSync(S,{encoding:t.encoding}).trim()!=="1";);return(f=si.readFileSync(C,{encoding:t.encoding}).trim())==="0"?c.input=R.update(si.readFileSync(h,{encoding:"binary"}),"hex",t.encoding)+R.final(t.encoding):(p=si.readFileSync(E,{encoding:t.encoding}).trim(),c.error=new Error(oEe+(p?` -`+p:"")),c.error.method="_execFileSync",c.error.program=a,c.error.args=n,c.error.extMessage=p,c.error.exitCode=+f),si.unlinkSync(h),si.unlinkSync(E),si.unlinkSync(C),si.unlinkSync(S),c}function Jct(t){var e,r={},s,a={env:process.env,encoding:t.encoding};if(Y0||(bm?process.env.PSModulePath?(Y0="powershell.exe",oF=["-ExecutionPolicy","Bypass","-File",__dirname+"\\read.ps1"]):(Y0="cscript.exe",oF=["//nologo",__dirname+"\\read.cs.js"]):(Y0="/bin/sh",oF=[__dirname+"/read.sh"])),bm&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),bq.execFileSync){e=lEe(t),sS&&sS("execFileSync",e);try{r.input=bq.execFileSync(Y0,e,a)}catch(n){s=n.stderr?(n.stderr+"").trim():"",r.error=new Error(oEe+(s?` -`+s:"")),r.error.method="execFileSync",r.error.program=Y0,r.error.args=e,r.error.extMessage=s,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=Vct(t,a);return r.error||(r.input=r.input.replace(/^\s*'|'\s*$/g,""),t.display=""),r}function kq(t){var e="",r=t.display,s=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=Jct(t);if(n.error)throw n.error;return n.input}return xq&&xq(t),function(){var n,c,f;function p(){return n||(n=process.binding("fs"),c=process.binding("constants")),n}if(typeof Xp=="string")if(Xp=null,bm){if(f=function(h){var E=h.replace(/^\D+/,"").split("."),C=0;return(E[0]=+E[0])&&(C+=E[0]*1e4),(E[1]=+E[1])&&(C+=E[1]*100),(E[2]=+E[2])&&(C+=E[2]),C}(process.version),!(f>=20302&&f<40204||f>=5e4&&f<50100||f>=50600&&f<60200)&&process.stdin.isTTY)process.stdin.pause(),Xp=process.stdin.fd,VC=process.stdin._handle;else try{Xp=p().open("CONIN$",c.O_RDWR,parseInt("0666",8)),VC=new iEe(Xp,!0)}catch{}if(process.stdout.isTTY)Zu=process.stdout.fd;else{try{Zu=si.openSync("\\\\.\\CON","w")}catch{}if(typeof Zu!="number")try{Zu=p().open("CONOUT$",c.O_RDWR,parseInt("0666",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{Xp=si.openSync("/dev/tty","r"),VC=process.stdin._handle}catch{}}else try{Xp=si.openSync("/dev/tty","r"),VC=new iEe(Xp,!1)}catch{}if(process.stdout.isTTY)Zu=process.stdout.fd;else try{Zu=si.openSync("/dev/tty","w")}catch{}}}(),function(){var n,c,f=!t.hideEchoBack&&!t.keyIn,p,h,E,C,S;aF="";function P(I){return I===sEe?!0:VC.setRawMode(I)!==0?!1:(sEe=I,!0)}if(aEe||!VC||typeof Zu!="number"&&(t.display||!f)){e=a();return}if(t.display&&(si.writeSync(Zu,t.display),t.display=""),!t.displayOnly){if(!P(!f)){e=a();return}for(h=t.keyIn?1:t.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),t.keyIn&&t.limit&&(c=new RegExp("[^"+t.limit+"]","g"+(t.caseSensitive?"":"i")));;){E=0;try{E=si.readSync(Xp,p,0,h)}catch(I){if(I.code!=="EOF"){P(!1),e+=a();return}}if(E>0?(C=p.toString(t.encoding,0,E),aF+=C):(C=` -`,aF+="\0"),C&&typeof(S=(C.match(/^(.*?)[\r\n]/)||[])[1])=="string"&&(C=S,n=!0),C&&(C=C.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"")),C&&c&&(C=C.replace(c,"")),C&&(f||(t.hideEchoBack?t.mask&&si.writeSync(Zu,new Array(C.length+1).join(t.mask)):si.writeSync(Zu,C)),e+=C),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!f&&!s&&si.writeSync(Zu,` -`),P(!1)}}(),t.print&&!s&&t.print(r+(t.displayOnly?"":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+` -`),t.encoding),t.displayOnly?"":Rq=t.keepWhitespace||t.keyIn?e:e.trim()}function Kct(t,e){var r=[];function s(a){a!=null&&(Array.isArray(a)?a.forEach(s):(!e||e(a))&&r.push(a))}return s(t),r}function Fq(t){return t.replace(/[\x00-\x7f]/g,function(e){return"\\x"+("00"+e.charCodeAt().toString(16)).substr(-2)})}function Vs(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]=="boolean"&&(r=t.shift(),r&&(e=Object.keys(Pq),t.unshift(Pq))),t.reduce(function(s,a){return a==null||(a.hasOwnProperty("noEchoBack")&&!a.hasOwnProperty("hideEchoBack")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty("noTrim")&&!a.hasOwnProperty("keepWhitespace")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var c;if(a.hasOwnProperty(n))switch(c=a[n],n){case"mask":case"limitMessage":case"defaultInput":case"encoding":c=c!=null?c+"":"",c&&n!=="limitMessage"&&(c=c.replace(/[\r\n]/g,"")),s[n]=c;break;case"bufferSize":!isNaN(c=parseInt(c,10))&&typeof c=="number"&&(s[n]=c);break;case"displayOnly":case"keyIn":case"hideEchoBack":case"caseSensitive":case"keepWhitespace":case"history":case"cd":s[n]=!!c;break;case"limit":case"trueValue":case"falseValue":s[n]=Kct(c,function(f){var p=typeof f;return p==="string"||p==="number"||p==="function"||f instanceof RegExp}).map(function(f){return typeof f=="string"?f.replace(/[\r\n]/g,""):f});break;case"print":case"phContent":case"preCheck":s[n]=typeof c=="function"?c:void 0;break;case"prompt":case"display":s[n]=c??"";break}})),s},{})}function Qq(t,e,r){return e.some(function(s){var a=typeof s;return a==="string"?r?t===s:t.toLowerCase()===s.toLowerCase():a==="number"?parseFloat(t)===s:a==="function"?s(t):s instanceof RegExp?s.test(t):!1})}function Nq(t,e){var r=V0.normalize(bm?(process.env.HOMEDRIVE||"")+(process.env.HOMEPATH||""):process.env.HOME||"").replace(/[\/\\]+$/,"");return t=V0.normalize(t),e?t.replace(/^~(?=\/|\\|$)/,r):t.replace(new RegExp("^"+Fq(r)+"(?=\\/|\\\\|$)",bm?"i":""),"~")}function JC(t,e){var r="(?:\\(([\\s\\S]*?)\\))?(\\w+|.-.)(?:\\(([\\s\\S]*?)\\))?",s=new RegExp("(\\$)?(\\$<"+r+">)","g"),a=new RegExp("(\\$)?(\\$\\{"+r+"\\})","g");function n(c,f,p,h,E,C){var S;return f||typeof(S=e(E))!="string"?p:S?(h||"")+S+(C||""):""}return t.replace(s,n).replace(a,n)}function cEe(t,e,r){var s,a=[],n=-1,c=0,f="",p;function h(E,C){return C.length>3?(E.push(C[0]+"..."+C[C.length-1]),p=!0):C.length&&(E=E.concat(C)),E}return s=t.reduce(function(E,C){return E.concat((C+"").split(""))},[]).reduce(function(E,C){var S,P;return e||(C=C.toLowerCase()),S=/^\d$/.test(C)?1:/^[A-Z]$/.test(C)?2:/^[a-z]$/.test(C)?3:0,r&&S===0?f+=C:(P=C.charCodeAt(0),S&&S===n&&P===c+1?a.push(C):(E=h(E,a),a=[C],n=S),c=P),E},[]),s=h(s,a),f&&(s.push(f),p=!0),{values:s,suppressed:p}}function uEe(t,e){return t.join(t.length>2?", ":e?" / ":"/")}function fEe(t,e){var r,s,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!="string")switch(t){case"hideEchoBack":case"mask":case"defaultInput":case"caseSensitive":case"keepWhitespace":case"encoding":case"bufferSize":case"history":case"cd":r=e.hasOwnProperty(t)?typeof e[t]=="boolean"?e[t]?"on":"off":e[t]+"":"";break;case"limit":case"trueValue":case"falseValue":s=e[e.hasOwnProperty(t+"Src")?t+"Src":t],e.keyIn?(a=cEe(s,e.caseSensitive),s=a.values):s=s.filter(function(c){var f=typeof c;return f==="string"||f==="number"}),r=uEe(s,a.suppressed);break;case"limitCount":case"limitCountNotZero":r=e[e.hasOwnProperty("limitSrc")?"limitSrc":"limit"].length,r=r||t!=="limitCountNotZero"?r+"":"";break;case"lastInput":r=Rq;break;case"cwd":case"CWD":case"cwdHome":r=process.cwd(),t==="CWD"?r=V0.basename(r):t==="cwdHome"&&(r=Nq(r));break;case"date":case"time":case"localeDate":case"localeTime":r=new Date()["to"+t.replace(/^./,function(c){return c.toUpperCase()})+"String"]();break;default:typeof(n=(t.match(/^history_m(\d+)$/)||[])[1])=="string"&&(r=Dm[Dm.length-n]||"")}return r}function AEe(t){var e=/^(.)-(.)$/.exec(t),r="",s,a,n,c;if(!e)return null;for(s=e[1].charCodeAt(0),a=e[2].charCodeAt(0),c=s -And the length must be: $`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(P){return P==="charlist"?r.text:P==="length"?s+"..."+a:null}}),c,f,p,h,E,C,S;for(e=e||{},c=JC(e.charlist?e.charlist+"":"$",AEe),(isNaN(s=parseInt(e.min,10))||typeof s!="number")&&(s=12),(isNaN(a=parseInt(e.max,10))||typeof a!="number")&&(a=24),h=new RegExp("^["+Fq(c)+"]{"+s+","+a+"}$"),r=cEe([c],n.caseSensitive,!0),r.text=uEe(r.values,r.suppressed),f=e.confirmMessage!=null?e.confirmMessage:"Reinput a same one to confirm it: ",p=e.unmatchMessage!=null?e.unmatchMessage:"It differs from first one. Hit only the Enter key if you want to retry from first one.",t==null&&(t="Input new password: "),E=n.limitMessage;!S;)n.limit=h,n.limitMessage=E,C=$r.question(t,n),n.limit=[C,""],n.limitMessage=p,S=$r.question(f,n);return C};function gEe(t,e,r){var s;function a(n){return s=r(n),!isNaN(s)&&typeof s=="number"}return $r.question(t,Vs({limitMessage:"Input valid number, please."},e,{limit:a,cd:!1})),s}$r.questionInt=function(t,e){return gEe(t,e,function(r){return parseInt(r,10)})};$r.questionFloat=function(t,e){return gEe(t,e,parseFloat)};$r.questionPath=function(t,e){var r,s="",a=Vs({hideEchoBack:!1,limitMessage:`$Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var c,f,p;n=Nq(n,!0),s="";function h(E){E.split(/\/|\\/).reduce(function(C,S){var P=V0.resolve(C+=S+V0.sep);if(!si.existsSync(P))si.mkdirSync(P);else if(!si.statSync(P).isDirectory())throw new Error("Non directory already exists: "+P);return C},"")}try{if(c=si.existsSync(n),r=c?si.realpathSync(n):V0.resolve(n),!e.hasOwnProperty("exists")&&!c||typeof e.exists=="boolean"&&e.exists!==c)return s=(c?"Already exists":"No such file or directory")+": "+r,!1;if(!c&&e.create&&(e.isDirectory?h(r):(h(V0.dirname(r)),si.closeSync(si.openSync(r,"w"))),r=si.realpathSync(r)),c&&(e.min||e.max||e.isFile||e.isDirectory)){if(f=si.statSync(r),e.isFile&&!f.isFile())return s="Not file: "+r,!1;if(e.isDirectory&&!f.isDirectory())return s="Not directory: "+r,!1;if(e.min&&f.size<+e.min||e.max&&f.size>+e.max)return s="Size "+f.size+" is out of range: "+r,!1}if(typeof e.validate=="function"&&(p=e.validate(r))!==!0)return typeof p=="string"&&(s=p),!1}catch(E){return s=E+"",!1}return!0},phContent:function(n){return n==="error"?s:n!=="min"&&n!=="max"?null:e.hasOwnProperty(n)?e[n]+"":""}});return e=e||{},t==null&&(t='Input path (you can "cd" and "pwd"): '),$r.question(t,a),r};function dEe(t,e){var r={},s={};return typeof t=="object"?(Object.keys(t).forEach(function(a){typeof t[a]=="function"&&(s[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=Tq(a),n=r.args[0]||"",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!=="_"&&s.hasOwnProperty(n)?s[n].apply(a,r.args.slice(1)):s.hasOwnProperty("_")?s._.apply(a,r.args):null,{res:a,forceNext:!1}},s.hasOwnProperty("_")||(r.limit=function(){var a=r.args[0]||"";return e.caseSensitive||(a=a.toLowerCase()),s.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=Tq(a),r.hRes=typeof t=="function"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}$r.promptCL=function(t,e){var r=Vs({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),s=dEe(t,r);return r.limit=s.limit,r.preCheck=s.preCheck,$r.prompt(r),s.args};$r.promptLoop=function(t,e){for(var r=Vs({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t($r.prompt(r)););};$r.promptCLLoop=function(t,e){var r=Vs({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),s=dEe(t,r);for(r.limit=s.limit,r.preCheck=s.preCheck;$r.prompt(r),!s.hRes;);};$r.promptSimShell=function(t){return $r.prompt(Vs({hideEchoBack:!1,history:!0},t,{prompt:function(){return bm?"$>":(process.env.USER||"")+(process.env.HOSTNAME?"@"+process.env.HOSTNAME.replace(/\..*$/,""):"")+":$$ "}()}))};function mEe(t,e,r){var s;return t==null&&(t="Are you sure? "),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s*:?\s*$/,"")+" [y/n]: "),s=$r.keyIn(t,Vs(e,{hideEchoBack:!1,limit:r,trueValue:"y",falseValue:"n",caseSensitive:!1})),typeof s=="boolean"?s:""}$r.keyInYN=function(t,e){return mEe(t,e)};$r.keyInYNStrict=function(t,e){return mEe(t,e,"yn")};$r.keyInPause=function(t,e){t==null&&(t="Continue..."),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s+$/,"")+" (Hit any key)"),$r.keyIn(t,Vs({limit:null},e,{hideEchoBack:!0,mask:""}))};$r.keyInSelect=function(t,e,r){var s=Vs({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p==="itemsCount"?t.length+"":p==="firstItem"?(t[0]+"").trim():p==="lastItem"?(t[t.length-1]+"").trim():null}}),a="",n={},c=49,f=` -`;if(!Array.isArray(t)||!t.length||t.length>35)throw"`items` must be Array (max length: 35).";return t.forEach(function(p,h){var E=String.fromCharCode(c);a+=E,n[E]=h,f+="["+E+"] "+(p+"").trim()+` -`,c=c===57?97:c+1}),(!r||r.cancel!==!1)&&(a+="0",n[0]=-1,f+="[0] "+(r&&r.cancel!=null&&typeof r.cancel!="boolean"?(r.cancel+"").trim():"CANCEL")+` -`),s.limit=a,f+=` -`,e==null&&(e="Choose one from list: "),(e+="")&&((!r||r.guide!==!1)&&(e=e.replace(/\s*:?\s*$/,"")+" [$]: "),f+=e),n[$r.keyIn(f,s).toLowerCase()]};$r.getRawInput=function(){return aF};function oS(t,e){var r;return e.length&&(r={},r[t]=e[0]),$r.setDefaultOptions(r)[t]}$r.setPrint=function(){return oS("print",arguments)};$r.setPrompt=function(){return oS("prompt",arguments)};$r.setEncoding=function(){return oS("encoding",arguments)};$r.setMask=function(){return oS("mask",arguments)};$r.setBufferSize=function(){return oS("bufferSize",arguments)}});var Oq=_((jYt,ec)=>{(function(){var t={major:0,minor:2,patch:66,status:"beta"};tau_file_system={files:{},open:function(w,b,y){var F=tau_file_system.files[w];if(!F){if(y==="read")return null;F={path:w,text:"",type:b,get:function(z,X){return X===this.text.length||X>this.text.length?"end_of_file":this.text.substring(X,X+z)},put:function(z,X){return X==="end_of_file"?(this.text+=z,!0):X==="past_end_of_file"?null:(this.text=this.text.substring(0,X)+z+this.text.substring(X+z.length),!0)},get_byte:function(z){if(z==="end_of_stream")return-1;var X=Math.floor(z/2);if(this.text.length<=X)return-1;var $=n(this.text[Math.floor(z/2)],0);return z%2===0?$&255:$/256>>>0},put_byte:function(z,X){var $=X==="end_of_stream"?this.text.length:Math.floor(X/2);if(this.text.length<$)return null;var oe=this.text.length===$?-1:n(this.text[Math.floor(X/2)],0);return X%2===0?(oe=oe/256>>>0,oe=(oe&255)<<8|z&255):(oe=oe&255,oe=(z&255)<<8|oe&255),this.text.length===$?this.text+=c(oe):this.text=this.text.substring(0,$)+c(oe)+this.text.substring($+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y==="write"&&(F.text=""),F}},tau_user_input={buffer:"",get:function(w,b){for(var y;tau_user_input.buffer.length\?\@\^\~\\]+|'(?:[^']*?(?:\\(?:x?\d+)?\\)*(?:'')*(?:\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\[abfnrtv\\'"`]|\\x?\d+\\|[^\\])|\d+(?:\.\d+(?:[eE][+-]?\d+)?)?)/,string:/^(?:"([^"]|""|\\")*"|`([^`]|``|\\`)*`)/,l_brace:/^(?:\[)/,r_brace:/^(?:\])/,l_bracket:/^(?:\{)/,r_bracket:/^(?:\})/,bar:/^(?:\|)/,l_paren:/^(?:\()/,r_paren:/^(?:\))/};function N(w,b){return w.get_flag("char_conversion").id==="on"?b.replace(/./g,function(y){return w.get_char_conversion(y)}):b}function U(w){this.thread=w,this.text="",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var b,y=0,F=0,z=0,X=[],$=!1;if(w){var oe=this.tokens[w-1];y=oe.len,b=N(this.thread,this.text.substr(oe.len)),F=oe.line,z=oe.start}else b=this.text;if(/^\s*$/.test(b))return null;for(;b!=="";){var xe=[],Te=!1;if(/^\n/.exec(b)!==null){F++,z=0,y++,b=b.replace(/\n/,""),$=!0;continue}for(var lt in R)if(R.hasOwnProperty(lt)){var Ct=R[lt].exec(b);Ct&&xe.push({value:Ct[0],name:lt,matches:Ct})}if(!xe.length)return this.set_last_tokens([{value:b,matches:[],name:"lexical",line:F,start:z}]);var oe=r(xe,function(Pr,Ir){return Pr.value.length>=Ir.value.length?Pr:Ir});switch(oe.start=z,oe.line=F,b=b.replace(oe.value,""),z+=oe.value.length,y+=oe.value.length,oe.name){case"atom":oe.raw=oe.value,oe.value.charAt(0)==="'"&&(oe.value=S(oe.value.substr(1,oe.value.length-2),"'"),oe.value===null&&(oe.name="lexical",oe.value="unknown escape sequence"));break;case"number":oe.float=oe.value.substring(0,2)!=="0x"&&oe.value.match(/[.eE]/)!==null&&oe.value!=="0'.",oe.value=I(oe.value),oe.blank=Te;break;case"string":var qt=oe.value.charAt(0);oe.value=S(oe.value.substr(1,oe.value.length-2),qt),oe.value===null&&(oe.name="lexical",oe.value="unknown escape sequence");break;case"whitespace":var ir=X[X.length-1];ir&&(ir.space=!0),Te=!0;continue;case"r_bracket":X.length>0&&X[X.length-1].name==="l_bracket"&&(oe=X.pop(),oe.name="atom",oe.value="{}",oe.raw="{}",oe.space=!1);break;case"r_brace":X.length>0&&X[X.length-1].name==="l_brace"&&(oe=X.pop(),oe.name="atom",oe.value="[]",oe.raw="[]",oe.space=!1);break}oe.len=y,X.push(oe),Te=!1}var Pt=this.set_last_tokens(X);return Pt.length===0?null:Pt};function W(w,b,y,F,z){if(!b[y])return{type:f,value:x.error.syntax(b[y-1],"expression expected",!0)};var X;if(F==="0"){var $=b[y];switch($.name){case"number":return{type:p,len:y+1,value:new x.type.Num($.value,$.float)};case"variable":return{type:p,len:y+1,value:new x.type.Var($.value)};case"string":var oe;switch(w.get_flag("double_quotes").id){case"atom":oe=new j($.value,[]);break;case"codes":oe=new j("[]",[]);for(var xe=$.value.length-1;xe>=0;xe--)oe=new j(".",[new x.type.Num(n($.value,xe),!1),oe]);break;case"chars":oe=new j("[]",[]);for(var xe=$.value.length-1;xe>=0;xe--)oe=new j(".",[new x.type.Term($.value.charAt(xe),[]),oe]);break}return{type:p,len:y+1,value:oe};case"l_paren":var Pt=W(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name==="r_paren"?(Pt.len++,Pt):{type:f,derived:!0,value:x.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],") or operator expected",!b[Pt.len])};case"l_bracket":var Pt=W(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name==="r_bracket"?(Pt.len++,Pt.value=new j("{}",[Pt.value]),Pt):{type:f,derived:!0,value:x.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],"} or operator expected",!b[Pt.len])}}var Te=ee(w,b,y,z);return Te.type===p||Te.derived||(Te=ie(w,b,y),Te.type===p||Te.derived)?Te:{type:f,derived:!1,value:x.error.syntax(b[y],"unexpected token")}}var lt=w.__get_max_priority(),Ct=w.__get_next_priority(F),qt=y;if(b[y].name==="atom"&&b[y+1]&&(b[y].space||b[y+1].name!=="l_paren")){var $=b[y++],ir=w.__lookup_operator_classes(F,$.value);if(ir&&ir.indexOf("fy")>-1){var Pt=W(w,b,y,F,z);if(Pt.type!==f)return $.value==="-"&&!$.space&&x.type.is_number(Pt.value)?{value:new x.type.Num(-Pt.value.value,Pt.value.is_float),len:Pt.len,type:p}:{value:new x.type.Term($.value,[Pt.value]),len:Pt.len,type:p};X=Pt}else if(ir&&ir.indexOf("fx")>-1){var Pt=W(w,b,y,Ct,z);if(Pt.type!==f)return{value:new x.type.Term($.value,[Pt.value]),len:Pt.len,type:p};X=Pt}}y=qt;var Pt=W(w,b,y,Ct,z);if(Pt.type===p){y=Pt.len;var $=b[y];if(b[y]&&(b[y].name==="atom"&&w.__lookup_operator_classes(F,$.value)||b[y].name==="bar"&&w.__lookup_operator_classes(F,"|"))){var gn=Ct,Pr=F,ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf("xf")>-1)return{value:new x.type.Term($.value,[Pt.value]),len:++Pt.len,type:p};if(ir.indexOf("xfx")>-1){var Ir=W(w,b,y+1,gn,z);return Ir.type===p?{value:new x.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(ir.indexOf("xfy")>-1){var Ir=W(w,b,y+1,Pr,z);return Ir.type===p?{value:new x.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(Pt.type!==f)for(;;){y=Pt.len;var $=b[y];if($&&$.name==="atom"&&w.__lookup_operator_classes(F,$.value)){var ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf("yf")>-1)Pt={value:new x.type.Term($.value,[Pt.value]),len:++y,type:p};else if(ir.indexOf("yfx")>-1){var Ir=W(w,b,++y,gn,z);if(Ir.type===f)return Ir.derived=!0,Ir;y=Ir.len,Pt={value:new x.type.Term($.value,[Pt.value,Ir.value]),len:y,type:p}}else break}else break}}else X={type:f,value:x.error.syntax(b[Pt.len-1],"operator expected")};return Pt}return Pt}function ee(w,b,y,F){if(!b[y]||b[y].name==="atom"&&b[y].raw==="."&&!F&&(b[y].space||!b[y+1]||b[y+1].name!=="l_paren"))return{type:f,derived:!1,value:x.error.syntax(b[y-1],"unfounded token")};var z=b[y],X=[];if(b[y].name==="atom"&&b[y].raw!==","){if(y++,b[y-1].space)return{type:p,len:y,value:new x.type.Term(z.value,X)};if(b[y]&&b[y].name==="l_paren"){if(b[y+1]&&b[y+1].name==="r_paren")return{type:f,derived:!0,value:x.error.syntax(b[y+1],"argument expected")};var $=W(w,b,++y,"999",!0);if($.type===f)return $.derived?$:{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],"argument expected",!b[y])};for(X.push($.value),y=$.len;b[y]&&b[y].name==="atom"&&b[y].value===",";){if($=W(w,b,y+1,"999",!0),$.type===f)return $.derived?$:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};X.push($.value),y=$.len}if(b[y]&&b[y].name==="r_paren")y++;else return{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],", or ) expected",!b[y])}}return{type:p,len:y,value:new x.type.Term(z.value,X)}}return{type:f,derived:!1,value:x.error.syntax(b[y],"term expected")}}function ie(w,b,y){if(!b[y])return{type:f,derived:!1,value:x.error.syntax(b[y-1],"[ expected")};if(b[y]&&b[y].name==="l_brace"){var F=W(w,b,++y,"999",!0),z=[F.value],X=void 0;if(F.type===f)return b[y]&&b[y].name==="r_brace"?{type:p,len:y+1,value:new x.type.Term("[]",[])}:{type:f,derived:!0,value:x.error.syntax(b[y],"] expected")};for(y=F.len;b[y]&&b[y].name==="atom"&&b[y].value===",";){if(F=W(w,b,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};z.push(F.value),y=F.len}var $=!1;if(b[y]&&b[y].name==="bar"){if($=!0,F=W(w,b,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};X=F.value,y=F.len}return b[y]&&b[y].name==="r_brace"?{type:p,len:y+1,value:g(z,X)}:{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],$?"] expected":", or | or ] expected",!b[y])}}return{type:f,derived:!1,value:x.error.syntax(b[y],"list expected")}}function ue(w,b,y){var F=b[y].line,z=W(w,b,y,w.__get_max_priority(),!1),X=null,$;if(z.type!==f)if(y=z.len,b[y]&&b[y].name==="atom"&&b[y].raw===".")if(y++,x.type.is_term(z.value)){if(z.value.indicator===":-/2"?(X=new x.type.Rule(z.value.args[0],Ce(z.value.args[1])),$={value:X,len:y,type:p}):z.value.indicator==="-->/2"?(X=pe(new x.type.Rule(z.value.args[0],z.value.args[1]),w),X.body=Ce(X.body),$={value:X,len:y,type:x.type.is_rule(X)?p:f}):(X=new x.type.Rule(z.value,null),$={value:X,len:y,type:p}),X){var oe=X.singleton_variables();oe.length>0&&w.throw_warning(x.warning.singleton(oe,X.head.indicator,F))}return $}else return{type:f,value:x.error.syntax(b[y],"callable expected")};else return{type:f,value:x.error.syntax(b[y]?b[y]:b[y-1],". or operator expected")};return z}function le(w,b,y){y=y||{},y.from=y.from?y.from:"$tau-js",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},X;F.new_text(b);var $=0,oe=F.get_tokens($);do{if(oe===null||!oe[$])break;var xe=ue(w,oe,$);if(xe.type===f)return new j("throw",[xe.value]);if(xe.value.body===null&&xe.value.head.indicator==="?-/1"){var Te=new it(w.session);Te.add_goal(xe.value.head.args[0]),Te.answer(function(Ct){x.type.is_error(Ct)?w.throw_warning(Ct.args[0]):(Ct===!1||Ct===null)&&w.throw_warning(x.warning.failed_goal(xe.value.head.args[0],xe.len))}),$=xe.len;var lt=!0}else if(xe.value.body===null&&xe.value.head.indicator===":-/1"){var lt=w.run_directive(xe.value.head.args[0]);$=xe.len,xe.value.head.args[0].indicator==="char_conversion/2"&&(oe=F.get_tokens($),$=0)}else{X=xe.value.head.indicator,y.reconsult!==!1&&z[X]!==!0&&!w.is_multifile_predicate(X)&&(w.session.rules[X]=a(w.session.rules[X]||[],function(qt){return qt.dynamic}),z[X]=!0);var lt=w.add_rule(xe.value,y);$=xe.len}if(!lt)return lt}while(!0);return!0}function me(w,b){var y=new U(w);y.new_text(b);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var X=W(w,z,0,w.__get_max_priority(),!1);if(X.type!==f){var $=X.len,oe=$;if(z[$]&&z[$].name==="atom"&&z[$].raw===".")w.add_goal(Ce(X.value));else{var xe=z[$];return new j("throw",[x.error.syntax(xe||z[$-1],". or operator expected",!xe)])}F=X.len+1}else return new j("throw",[X.value])}while(!0);return!0}function pe(w,b){w=w.rename(b);var y=b.next_free_variable(),F=Be(w.body,y,b);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new j(w.head.id,w.head.args),w)}function Be(w,b,y){var F;if(x.type.is_term(w)&&w.indicator==="!/0")return{value:w,variable:b,error:!1};if(x.type.is_term(w)&&w.indicator===",/2"){var z=Be(w.args[0],b,y);if(z.error)return z;var X=Be(w.args[1],z.variable,y);return X.error?X:{value:new j(",",[z.value,X.value]),variable:X.variable,error:!1}}else{if(x.type.is_term(w)&&w.indicator==="{}/1")return{value:w.args[0],variable:b,error:!1};if(x.type.is_empty_list(w))return{value:new j("true",[]),variable:b,error:!1};if(x.type.is_list(w)){F=y.next_free_variable();for(var $=w,oe;$.indicator==="./2";)oe=$,$=$.args[1];return x.type.is_variable($)?{value:x.error.instantiation("DCG"),variable:b,error:!0}:x.type.is_empty_list($)?(oe.args[1]=F,{value:new j("=",[b,w]),variable:F,error:!1}):{value:x.error.type("list",w,"DCG"),variable:b,error:!0}}else return x.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([b,F]),w=new j(w.id,w.args),{value:w,variable:F,error:!1}):{value:x.error.type("callable",w,"DCG"),variable:b,error:!0}}}function Ce(w){return x.type.is_variable(w)?new j("call",[w]):x.type.is_term(w)&&[",/2",";/2","->/2"].indexOf(w.indicator)!==-1?new j(w.id,[Ce(w.args[0]),Ce(w.args[1])]):w}function g(w,b){for(var y=b||new x.type.Term("[]",[]),F=w.length-1;F>=0;F--)y=new x.type.Term(".",[w[F],y]);return y}function we(w,b){for(var y=w.length-1;y>=0;y--)w[y]===b&&w.splice(y,1)}function ye(w){for(var b={},y=[],F=0;F=0;b--)if(w.charAt(b)==="/")return new j("/",[new j(w.substring(0,b)),new Re(parseInt(w.substring(b+1)),!1)])}function De(w){this.id=w}function Re(w,b){this.is_float=b!==void 0?b:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var mt=0;function j(w,b,y){this.ref=y||++mt,this.id=w,this.args=b||[],this.indicator=w+"/"+this.args.length}var rt=0;function Fe(w,b,y,F,z,X){this.id=rt++,this.stream=w,this.mode=b,this.alias=y,this.type=F!==void 0?F:"text",this.reposition=z!==void 0?z:!0,this.eof_action=X!==void 0?X:"eof_code",this.position=this.mode==="append"?"end_of_stream":0,this.output=this.mode==="write"||this.mode==="append",this.input=this.mode==="read"}function Ne(w){w=w||{},this.links=w}function Pe(w,b,y){b=b||new Ne,y=y||null,this.goal=w,this.substitution=b,this.parent=y}function Ve(w,b,y){this.head=w,this.body=b,this.dynamic=y||!1}function ke(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new it(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Fe(typeof ec<"u"&&ec.exports?nodejs_user_input:tau_user_input,"read","user_input","text",!1,"reset"),user_output:new Fe(typeof ec<"u"&&ec.exports?nodejs_user_output:tau_user_output,"write","user_output","text",!1,"eof_code")},this.file_system=typeof ec<"u"&&ec.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(b){return b.substitution},this.format_error=function(b){return b.goal},this.flag={bounded:x.flag.bounded.value,max_integer:x.flag.max_integer.value,min_integer:x.flag.min_integer.value,integer_rounding_function:x.flag.integer_rounding_function.value,char_conversion:x.flag.char_conversion.value,debug:x.flag.debug.value,max_arity:x.flag.max_arity.value,unknown:x.flag.unknown.value,double_quotes:x.flag.double_quotes.value,occurs_check:x.flag.occurs_check.value,dialect:x.flag.dialect.value,version_data:x.flag.version_data.value,nodejs:x.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{":-":["fx","xfx"],"-->":["xfx"],"?-":["fx"]},1100:{";":["xfy"]},1050:{"->":["xfy"]},1e3:{",":["xfy"]},900:{"\\+":["fy"]},700:{"=":["xfx"],"\\=":["xfx"],"==":["xfx"],"\\==":["xfx"],"@<":["xfx"],"@=<":["xfx"],"@>":["xfx"],"@>=":["xfx"],"=..":["xfx"],is:["xfx"],"=:=":["xfx"],"=\\=":["xfx"],"<":["xfx"],"=<":["xfx"],">":["xfx"],">=":["xfx"]},600:{":":["xfy"]},500:{"+":["yfx"],"-":["yfx"],"/\\":["yfx"],"\\/":["yfx"]},400:{"*":["yfx"],"/":["yfx"],"//":["yfx"],rem:["yfx"],mod:["yfx"],"<<":["yfx"],">>":["yfx"]},200:{"**":["xfx"],"^":["xfy"],"-":["fy"],"+":["fy"],"\\":["fy"]}}}function it(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level="top_level/0",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function Ue(w,b,y){this.id=w,this.rules=b,this.exports=y,x.module[w]=this}Ue.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},De.prototype.unify=function(w,b){if(b&&e(w.variables(),this.id)!==-1&&!x.type.is_variable(w))return null;var y={};return y[this.id]=w,new Ne(y)},Re.prototype.unify=function(w,b){return x.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new Ne:null},j.prototype.unify=function(w,b){if(x.type.is_term(w)&&this.indicator===w.indicator){for(var y=new Ne,F=0;F=0){var F=this.args[0].value,z=Math.floor(F/26),X=F%26;return"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[X]+(z!==0?z:"")}switch(this.indicator){case"[]/0":case"{}/0":case"!/0":return this.id;case"{}/1":return"{"+this.args[0].toString(w)+"}";case"./2":for(var $="["+this.args[0].toString(w),oe=this.args[1];oe.indicator==="./2";)$+=", "+oe.args[0].toString(w),oe=oe.args[1];return oe.indicator!=="[]/0"&&($+="|"+oe.toString(w)),$+="]",$;case",/2":return"("+this.args[0].toString(w)+", "+this.args[1].toString(w)+")";default:var xe=this.id,Te=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Te===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(xe)&&xe!=="{}"&&xe!=="[]"&&(xe="'"+P(xe)+"'"),xe+(this.args.length?"("+s(this.args,function(ir){return ir.toString(w)}).join(", ")+")":"");var lt=Te.priority>b.priority||Te.priority===b.priority&&(Te.class==="xfy"&&this.indicator!==b.indicator||Te.class==="yfx"&&this.indicator!==b.indicator||this.indicator===b.indicator&&Te.class==="yfx"&&y==="right"||this.indicator===b.indicator&&Te.class==="xfy"&&y==="left");Te.indicator=this.indicator;var Ct=lt?"(":"",qt=lt?")":"";return this.args.length===0?"("+this.id+")":["fy","fx"].indexOf(Te.class)!==-1?Ct+xe+" "+this.args[0].toString(w,Te)+qt:["yf","xf"].indexOf(Te.class)!==-1?Ct+this.args[0].toString(w,Te)+" "+xe+qt:Ct+this.args[0].toString(w,Te,"left")+" "+this.id+" "+this.args[1].toString(w,Te,"right")+qt}},Fe.prototype.toString=function(w){return"("+this.id+")"},Ne.prototype.toString=function(w){var b="{";for(var y in this.links)this.links.hasOwnProperty(y)&&(b!=="{"&&(b+=", "),b+=y+"/"+this.links[y].toString(w));return b+="}",b},Pe.prototype.toString=function(w){return this.goal===null?"<"+this.substitution.toString(w)+">":"<"+this.goal.toString(w)+", "+this.substitution.toString(w)+">"},Ve.prototype.toString=function(w){return this.body?this.head.toString(w)+" :- "+this.body.toString(w)+".":this.head.toString(w)+"."},ke.prototype.toString=function(w){for(var b="",y=0;y=0;z--)F=new j(".",[b[z],F]);return F}return new j(this.id,s(this.args,function(X){return X.apply(w)}),this.ref)},Fe.prototype.apply=function(w){return this},Ve.prototype.apply=function(w){return new Ve(this.head.apply(w),this.body!==null?this.body.apply(w):null)},Ne.prototype.apply=function(w){var b,y={};for(b in this.links)this.links.hasOwnProperty(b)&&(y[b]=this.links[b].apply(w));return new Ne(y)},j.prototype.select=function(){for(var w=this;w.indicator===",/2";)w=w.args[0];return w},j.prototype.replace=function(w){return this.indicator===",/2"?this.args[0].indicator===",/2"?new j(",",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new j(",",[w,this.args[1]]):w},j.prototype.search=function(w){if(x.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var b=0;bb&&F0&&(b=this.head_point().substitution.domain());e(b,x.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id==="_")return new De(x.format_variable(this.session.rename));this.session.renamed_variables[w.id]=x.format_variable(this.session.rename)}return new De(this.session.renamed_variables[w.id])},ke.prototype.next_free_variable=function(){return this.thread.next_free_variable()},it.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());e(w,x.format_variable(this.session.rename))!==-1;)this.session.rename++;return new De(x.format_variable(this.session.rename))},ke.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},it.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},ke.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},it.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},ke.prototype.prepend=function(w){return this.thread.prepend(w)},it.prototype.prepend=function(w){for(var b=w.length-1;b>=0;b--)this.points.push(w[b])},ke.prototype.success=function(w,b){return this.thread.success(w,b)},it.prototype.success=function(w,y){var y=typeof y>"u"?w:y;this.prepend([new Pe(w.goal.replace(null),w.substitution,y)])},ke.prototype.throw_error=function(w){return this.thread.throw_error(w)},it.prototype.throw_error=function(w){this.prepend([new Pe(new j("throw",[w]),new Ne,null,null)])},ke.prototype.step_rule=function(w,b){return this.thread.step_rule(w,b)},it.prototype.step_rule=function(w,b){var y=b.indicator;if(w==="user"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:e(this.session.modules,w)===-1?[]:[w],z=0;z1)&&this.again()},ke.prototype.answers=function(w,b,y){return this.thread.answers(w,b,y)},it.prototype.answers=function(w,b,y){var F=b||1e3,z=this;if(b<=0){y&&y();return}this.answer(function(X){w(X),X!==!1?setTimeout(function(){z.answers(w,b-1,y)},1):y&&y()})},ke.prototype.again=function(w){return this.thread.again(w)},it.prototype.again=function(w){for(var b,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!x.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):x.type.is_error(this.head_point().goal)?(b=this.session.format_error(this.points.pop()),this.points=[],z(b)):(this.debugger&&this.debugger_states.push(this.head_point()),b=this.session.format_success(this.points.pop()),z(b))}},ke.prototype.unfold=function(w){if(w.body===null)return!1;var b=w.head,y=w.body,F=y.select(),z=new it(this),X=[];z.add_goal(F),z.step();for(var $=z.points.length-1;$>=0;$--){var oe=z.points[$],xe=b.apply(oe.substitution),Te=y.replace(oe.goal);Te!==null&&(Te=Te.apply(oe.substitution)),X.push(new Ve(xe,Te))}var lt=this.rules[b.indicator],Ct=e(lt,w);return X.length>0&&Ct!==-1?(lt.splice.apply(lt,[Ct,1].concat(X)),!0):!1},it.prototype.unfold=function(w){return this.session.unfold(w)},De.prototype.interpret=function(w){return x.error.instantiation(w.level)},Re.prototype.interpret=function(w){return this},j.prototype.interpret=function(w){return x.type.is_unitary_list(this)?this.args[0].interpret(w):x.operate(w,this)},De.prototype.compare=function(w){return this.idw.id?1:0},Re.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.valuew.value)return 1},j.prototype.compare=function(w){if(this.args.lengthw.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var b=0;bF)return 1;if(w.constructor===Re){if(w.is_float&&b.is_float)return 0;if(w.is_float)return-1;if(b.is_float)return 1}return 0},is_substitution:function(w){return w instanceof Ne},is_state:function(w){return w instanceof Pe},is_rule:function(w){return w instanceof Ve},is_variable:function(w){return w instanceof De},is_stream:function(w){return w instanceof Fe},is_anonymous_var:function(w){return w instanceof De&&w.id==="_"},is_callable:function(w){return w instanceof j},is_number:function(w){return w instanceof Re},is_integer:function(w){return w instanceof Re&&!w.is_float},is_float:function(w){return w instanceof Re&&w.is_float},is_term:function(w){return w instanceof j},is_atom:function(w){return w instanceof j&&w.args.length===0},is_ground:function(w){if(w instanceof De)return!1;if(w instanceof j){for(var b=0;b0},is_list:function(w){return w instanceof j&&(w.indicator==="[]/0"||w.indicator==="./2")},is_empty_list:function(w){return w instanceof j&&w.indicator==="[]/0"},is_non_empty_list:function(w){return w instanceof j&&w.indicator==="./2"},is_fully_list:function(w){for(;w instanceof j&&w.indicator==="./2";)w=w.args[1];return w instanceof De||w instanceof j&&w.indicator==="[]/0"},is_instantiated_list:function(w){for(;w instanceof j&&w.indicator==="./2";)w=w.args[1];return w instanceof j&&w.indicator==="[]/0"},is_unitary_list:function(w){return w instanceof j&&w.indicator==="./2"&&w.args[1]instanceof j&&w.args[1].indicator==="[]/0"},is_character:function(w){return w instanceof j&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof Re&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Re&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof j&&x.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof j&&x.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof j&&x.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof j&&w.indicator==="throw/1"},is_predicate_indicator:function(w){return w instanceof j&&w.indicator==="//2"&&w.args[0]instanceof j&&w.args[0].args.length===0&&w.args[1]instanceof Re&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof j&&w.args.length===0&&x.flag[w.id]!==void 0},is_value_flag:function(w,b){if(!x.type.is_flag(w))return!1;for(var y in x.flag[w.id].allowed)if(x.flag[w.id].allowed.hasOwnProperty(y)&&x.flag[w.id].allowed[y].equals(b))return!0;return!1},is_io_mode:function(w){return x.type.is_atom(w)&&["read","write","append"].indexOf(w.id)!==-1},is_stream_option:function(w){return x.type.is_term(w)&&(w.indicator==="alias/1"&&x.type.is_atom(w.args[0])||w.indicator==="reposition/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="type/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary")||w.indicator==="eof_action/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))},is_stream_position:function(w){return x.type.is_integer(w)&&w.value>=0||x.type.is_atom(w)&&(w.id==="end_of_stream"||w.id==="past_end_of_stream")},is_stream_property:function(w){return x.type.is_term(w)&&(w.indicator==="input/0"||w.indicator==="output/0"||w.indicator==="alias/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator==="file_name/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator==="position/1"&&(x.type.is_variable(w.args[0])||x.type.is_stream_position(w.args[0]))||w.indicator==="reposition/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))||w.indicator==="type/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary"))||w.indicator==="mode/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="read"||w.args[0].id==="write"||w.args[0].id==="append"))||w.indicator==="eof_action/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))||w.indicator==="end_of_stream/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="at"||w.args[0].id==="past"||w.args[0].id==="not")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return x.type.is_term(w)&&["variables/1","variable_names/1","singletons/1"].indexOf(w.indicator)!==-1},is_write_option:function(w){return x.type.is_term(w)&&(w.indicator==="quoted/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="ignore_ops/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="numbervars/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))},is_close_option:function(w){return x.type.is_term(w)&&w.indicator==="force/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")},is_modifiable_flag:function(w){return x.type.is_flag(w)&&x.flag[w.id].changeable},is_module:function(w){return w instanceof j&&w.indicator==="library/1"&&w.args[0]instanceof j&&w.args[0].args.length===0&&x.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{"e/0":{type_args:null,type_result:!0,fn:function(w){return Math.E}},"pi/0":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},"tau/0":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},"epsilon/0":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},"+/1":{type_args:null,type_result:null,fn:function(w,b){return w}},"-/1":{type_args:null,type_result:null,fn:function(w,b){return-w}},"\\/1":{type_args:!1,type_result:!1,fn:function(w,b){return~w}},"abs/1":{type_args:null,type_result:null,fn:function(w,b){return Math.abs(w)}},"sign/1":{type_args:null,type_result:null,fn:function(w,b){return Math.sign(w)}},"float_integer_part/1":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},"float_fractional_part/1":{type_args:!0,type_result:!0,fn:function(w,b){return w-parseInt(w)}},"float/1":{type_args:null,type_result:!0,fn:function(w,b){return parseFloat(w)}},"floor/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.floor(w)}},"truncate/1":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},"round/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.round(w)}},"ceiling/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.ceil(w)}},"sin/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.sin(w)}},"cos/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.cos(w)}},"tan/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.tan(w)}},"asin/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.asin(w)}},"acos/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.acos(w)}},"atan/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.atan(w)}},"atan2/2":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.atan2(w,b)}},"exp/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.exp(w)}},"sqrt/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.sqrt(w)}},"log/1":{type_args:null,type_result:!0,fn:function(w,b){return w>0?Math.log(w):x.error.evaluation("undefined",b.__call_indicator)}},"+/2":{type_args:null,type_result:null,fn:function(w,b,y){return w+b}},"-/2":{type_args:null,type_result:null,fn:function(w,b,y){return w-b}},"*/2":{type_args:null,type_result:null,fn:function(w,b,y){return w*b}},"//2":{type_args:null,type_result:!0,fn:function(w,b,y){return b?w/b:x.error.evaluation("zero_division",y.__call_indicator)}},"///2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?parseInt(w/b):x.error.evaluation("zero_division",y.__call_indicator)}},"**/2":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.pow(w,b)}},"^/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.pow(w,b)}},"<>/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w>>b}},"/\\/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w&b}},"\\//2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w|b}},"xor/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w^b}},"rem/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w%b:x.error.evaluation("zero_division",y.__call_indicator)}},"mod/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w-parseInt(w/b)*b:x.error.evaluation("zero_division",y.__call_indicator)}},"max/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.max(w,b)}},"min/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.min(w,b)}}}},directive:{"dynamic/1":function(w,b){var y=b.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_compound(y)||y.indicator!=="//2")w.throw_error(x.error.type("predicate_indicator",y,b.indicator));else if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type("atom",y.args[0],b.indicator));else if(!x.type.is_integer(y.args[1]))w.throw_error(x.error.type("integer",y.args[1],b.indicator));else{var F=b.args[0].args[0].id+"/"+b.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},"multifile/1":function(w,b){var y=b.args[0];x.type.is_variable(y)?w.throw_error(x.error.instantiation(b.indicator)):!x.type.is_compound(y)||y.indicator!=="//2"?w.throw_error(x.error.type("predicate_indicator",y,b.indicator)):x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1])?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_atom(y.args[0])?x.type.is_integer(y.args[1])?w.session.multifile_predicates[b.args[0].args[0].id+"/"+b.args[0].args[1].value]=!0:w.throw_error(x.error.type("integer",y.args[1],b.indicator)):w.throw_error(x.error.type("atom",y.args[0],b.indicator))},"set_prolog_flag/2":function(w,b){var y=b.args[0],F=b.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_atom(y)?x.type.is_flag(y)?x.type.is_value_flag(y,F)?x.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(x.error.permission("modify","flag",y)):w.throw_error(x.error.domain("flag_value",new j("+",[y,F]),b.indicator)):w.throw_error(x.error.domain("prolog_flag",y,b.indicator)):w.throw_error(x.error.type("atom",y,b.indicator))},"use_module/1":function(w,b){var y=b.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_term(y))w.throw_error(x.error.type("term",y,b.indicator));else if(x.type.is_module(y)){var F=y.args[0].id;e(w.session.modules,F)===-1&&w.session.modules.push(F)}},"char_conversion/2":function(w,b){var y=b.args[0],F=b.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_character(y)?x.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(x.error.type("character",F,b.indicator)):w.throw_error(x.error.type("character",y,b.indicator))},"op/3":function(w,b){var y=b.args[0],F=b.args[1],z=b.args[2];if(x.type.is_variable(y)||x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_integer(y))w.throw_error(x.error.type("integer",y,b.indicator));else if(!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,b.indicator));else if(!x.type.is_atom(z))w.throw_error(x.error.type("atom",z,b.indicator));else if(y.value<0||y.value>1200)w.throw_error(x.error.domain("operator_priority",y,b.indicator));else if(z.id===",")w.throw_error(x.error.permission("modify","operator",z,b.indicator));else if(z.id==="|"&&(y.value<1001||F.id.length!==3))w.throw_error(x.error.permission("modify","operator",z,b.indicator));else if(["fy","fx","yf","xf","xfx","yfx","xfy"].indexOf(F.id)===-1)w.throw_error(x.error.domain("operator_specifier",F,b.indicator));else{var X={prefix:null,infix:null,postfix:null};for(var $ in w.session.__operators)if(w.session.__operators.hasOwnProperty($)){var oe=w.session.__operators[$][z.id];oe&&(e(oe,"fx")!==-1&&(X.prefix={priority:$,type:"fx"}),e(oe,"fy")!==-1&&(X.prefix={priority:$,type:"fy"}),e(oe,"xf")!==-1&&(X.postfix={priority:$,type:"xf"}),e(oe,"yf")!==-1&&(X.postfix={priority:$,type:"yf"}),e(oe,"xfx")!==-1&&(X.infix={priority:$,type:"xfx"}),e(oe,"xfy")!==-1&&(X.infix={priority:$,type:"xfy"}),e(oe,"yfx")!==-1&&(X.infix={priority:$,type:"yfx"}))}var xe;switch(F.id){case"fy":case"fx":xe="prefix";break;case"yf":case"xf":xe="postfix";break;default:xe="infix";break}if(((X.prefix&&xe==="prefix"||X.postfix&&xe==="postfix"||X.infix&&xe==="infix")&&X[xe].type!==F.id||X.infix&&xe==="postfix"||X.postfix&&xe==="infix")&&y.value!==0)w.throw_error(x.error.permission("create","operator",z,b.indicator));else return X[xe]&&(we(w.session.__operators[X[xe].priority][z.id],F.id),w.session.__operators[X[xe].priority][z.id].length===0&&delete w.session.__operators[X[xe].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{"op/3":function(w,b,y){x.directive["op/3"](w,y)&&w.success(b)},"current_op/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=[];for(var oe in w.session.__operators)for(var xe in w.session.__operators[oe])for(var Te=0;Te/2"){var F=w.points,z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(Te){return Te.substitution},w.session.format_error=function(Te){return Te.goal},w.points=[new Pe(y.args[0].args[0],b.substitution,b)];var $=function(Te){w.points=F,w.session.format_success=z,w.session.format_error=X,Te===!1?w.prepend([new Pe(b.goal.replace(y.args[1]),b.substitution,b)]):x.type.is_error(Te)?w.throw_error(Te.args[0]):Te===null?(w.prepend([b]),w.__calls.shift()(null)):w.prepend([new Pe(b.goal.replace(y.args[0].args[1]).apply(Te),b.substitution.apply(Te),b)])};w.__calls.unshift($)}else{var oe=new Pe(b.goal.replace(y.args[0]),b.substitution,b),xe=new Pe(b.goal.replace(y.args[1]),b.substitution,b);w.prepend([oe,xe])}},"!/0":function(w,b,y){var F,z,X=[];for(F=b,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var $=F.goal.select();if($&&$.id==="call"&&$.search(y)){F=z;break}}for(var oe=w.points.length-1;oe>=0;oe--){for(var xe=w.points[oe],Te=xe.parent;Te!==null&&Te!==F.parent;)Te=Te.parent;Te===null&&Te!==F.parent&&X.push(xe)}w.points=X.reverse(),w.success(b)},"\\+/1":function(w,b,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(w.level)):x.type.is_callable(F)?w.prepend([new Pe(b.goal.replace(new j(",",[new j(",",[new j("call",[F]),new j("!",[])]),new j("fail",[])])),b.substitution,b),new Pe(b.goal.replace(null),b.substitution,b)]):w.throw_error(x.error.type("callable",F,w.level))},"->/2":function(w,b,y){var F=b.goal.replace(new j(",",[y.args[0],new j(",",[new j("!"),y.args[1]])]));w.prepend([new Pe(F,b.substitution,b)])},"fail/0":function(w,b,y){},"false/0":function(w,b,y){},"true/0":function(w,b,y){w.success(b)},"call/1":se(1),"call/2":se(2),"call/3":se(3),"call/4":se(4),"call/5":se(5),"call/6":se(6),"call/7":se(7),"call/8":se(8),"once/1":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(",",[new j("call",[F]),new j("!",[])])),b.substitution,b)])},"forall/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j("\\+",[new j(",",[new j("call",[F]),new j("\\+",[new j("call",[z])])])])),b.substitution,b)])},"repeat/0":function(w,b,y){w.prepend([new Pe(b.goal.replace(null),b.substitution,b),b])},"throw/1":function(w,b,y){x.type.is_variable(y.args[0])?w.throw_error(x.error.instantiation(w.level)):w.throw_error(y.args[0])},"catch/3":function(w,b,y){var F=w.points;w.points=[],w.prepend([new Pe(y.args[0],b.substitution,b)]);var z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(oe){return oe.substitution},w.session.format_error=function(oe){return oe.goal};var $=function(oe){var xe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=X,x.type.is_error(oe)){for(var Te=[],lt=w.points.length-1;lt>=0;lt--){for(var ir=w.points[lt],Ct=ir.parent;Ct!==null&&Ct!==b.parent;)Ct=Ct.parent;Ct===null&&Ct!==b.parent&&Te.push(ir)}w.points=Te;var qt=w.get_flag("occurs_check").indicator==="true/0",ir=new Pe,Pt=x.unify(oe.args[0],y.args[1],qt);Pt!==null?(ir.substitution=b.substitution.apply(Pt),ir.goal=b.goal.replace(y.args[2]).apply(Pt),ir.parent=b,w.prepend([ir])):w.throw_error(oe.args[0])}else if(oe!==!1){for(var gn=oe===null?[]:[new Pe(b.goal.apply(oe).replace(null),b.substitution.apply(oe),b)],Pr=[],lt=xe.length-1;lt>=0;lt--){Pr.push(xe[lt]);var Ir=xe[lt].goal!==null?xe[lt].goal.select():null;if(x.type.is_term(Ir)&&Ir.indicator==="!/0")break}var Or=s(Pr,function(on){return on.goal===null&&(on.goal=new j("true",[])),on=new Pe(b.goal.replace(new j("catch",[on.goal,y.args[1],y.args[2]])),b.substitution.apply(on.substitution),on.parent),on.exclude=y.args[0].variables(),on}).reverse();w.prepend(Or),w.prepend(gn),oe===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift($)},"=/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=new Pe,X=x.unify(y.args[0],y.args[1],F);X!==null&&(z.goal=b.goal.apply(X).replace(null),z.substitution=b.substitution.apply(X),z.parent=b,w.prepend([z]))},"unify_with_occurs_check/2":function(w,b,y){var F=new Pe,z=x.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=b.goal.apply(z).replace(null),F.substitution=b.substitution.apply(z),F.parent=b,w.prepend([F]))},"\\=/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=x.unify(y.args[0],y.args[1],F);z===null&&w.success(b)},"subsumes_term/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=x.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(b)},"findall/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(z))w.throw_error(x.error.type("callable",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))w.throw_error(x.error.type("list",X,y.indicator));else{var $=w.next_free_variable(),oe=new j(",",[z,new j("=",[$,F])]),xe=w.points,Te=w.session.limit,lt=w.session.format_success;w.session.format_success=function(ir){return ir.substitution},w.add_goal(oe,!0,b);var Ct=[],qt=function(ir){if(ir!==!1&&ir!==null&&!x.type.is_error(ir))w.__calls.unshift(qt),Ct.push(ir.links[$.id]),w.session.limit=w.current_limit;else if(w.points=xe,w.session.limit=Te,w.session.format_success=lt,x.type.is_error(ir))w.throw_error(ir.args[0]);else if(w.current_limit>0){for(var Pt=new j("[]"),gn=Ct.length-1;gn>=0;gn--)Pt=new j(".",[Ct[gn],Pt]);w.prepend([new Pe(b.goal.replace(new j("=",[X,Pt])),b.substitution,b)])}};w.__calls.unshift(qt)}},"bagof/3":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(X))w.throw_error(x.error.type("callable",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))w.throw_error(x.error.type("list",$,y.indicator));else{var oe=w.next_free_variable(),xe;X.indicator==="^/2"?(xe=X.args[0].variables(),X=X.args[1]):xe=[],xe=xe.concat(z.variables());for(var Te=X.variables().filter(function(Or){return e(xe,Or)===-1}),lt=new j("[]"),Ct=Te.length-1;Ct>=0;Ct--)lt=new j(".",[new De(Te[Ct]),lt]);var qt=new j(",",[X,new j("=",[oe,new j(",",[lt,z])])]),ir=w.points,Pt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Or){if(Or!==!1&&Or!==null&&!x.type.is_error(Or)){w.__calls.unshift(Ir);var on=!1,ai=Or.links[oe.id].args[0],Io=Or.links[oe.id].args[1];for(var rs in Pr)if(Pr.hasOwnProperty(rs)){var $s=Pr[rs];if($s.variables.equals(ai)){$s.answers.push(Io),on=!0;break}}on||Pr.push({variables:ai,answers:[Io]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=gn,x.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var Co=[],ji=0;ji=0;wo--)eo=new j(".",[Or[wo],eo]);Co.push(new Pe(b.goal.replace(new j(",",[new j("=",[lt,Pr[ji].variables]),new j("=",[$,eo])])),b.substitution,b))}w.prepend(Co)}};w.__calls.unshift(Ir)}},"setof/3":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(X))w.throw_error(x.error.type("callable",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))w.throw_error(x.error.type("list",$,y.indicator));else{var oe=w.next_free_variable(),xe;X.indicator==="^/2"?(xe=X.args[0].variables(),X=X.args[1]):xe=[],xe=xe.concat(z.variables());for(var Te=X.variables().filter(function(Or){return e(xe,Or)===-1}),lt=new j("[]"),Ct=Te.length-1;Ct>=0;Ct--)lt=new j(".",[new De(Te[Ct]),lt]);var qt=new j(",",[X,new j("=",[oe,new j(",",[lt,z])])]),ir=w.points,Pt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Or){if(Or!==!1&&Or!==null&&!x.type.is_error(Or)){w.__calls.unshift(Ir);var on=!1,ai=Or.links[oe.id].args[0],Io=Or.links[oe.id].args[1];for(var rs in Pr)if(Pr.hasOwnProperty(rs)){var $s=Pr[rs];if($s.variables.equals(ai)){$s.answers.push(Io),on=!0;break}}on||Pr.push({variables:ai,answers:[Io]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=gn,x.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var Co=[],ji=0;ji=0;wo--)eo=new j(".",[Or[wo],eo]);Co.push(new Pe(b.goal.replace(new j(",",[new j("=",[lt,Pr[ji].variables]),new j("=",[$,eo])])),b.substitution,b))}w.prepend(Co)}};w.__calls.unshift(Ir)}},"functor/3":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(z)&&(x.type.is_variable(X)||x.type.is_variable($)))w.throw_error(x.error.instantiation("functor/3"));else if(!x.type.is_variable($)&&!x.type.is_integer($))w.throw_error(x.error.type("integer",y.args[2],"functor/3"));else if(!x.type.is_variable(X)&&!x.type.is_atomic(X))w.throw_error(x.error.type("atomic",y.args[1],"functor/3"));else if(x.type.is_integer(X)&&x.type.is_integer($)&&$.value!==0)w.throw_error(x.error.type("atom",y.args[1],"functor/3"));else if(x.type.is_variable(z)){if(y.args[2].value>=0){for(var oe=[],xe=0;xe<$.value;xe++)oe.push(w.next_free_variable());var Te=x.type.is_integer(X)?X:new j(X.id,oe);w.prepend([new Pe(b.goal.replace(new j("=",[z,Te])),b.substitution,b)])}}else{var lt=x.type.is_integer(z)?z:new j(z.id,[]),Ct=x.type.is_integer(z)?new Re(0,!1):new Re(z.args.length,!1),qt=new j(",",[new j("=",[lt,X]),new j("=",[Ct,$])]);w.prepend([new Pe(b.goal.replace(qt),b.substitution,b)])}},"arg/3":function(w,b,y){if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(x.error.domain("not_less_than_zero",y.args[0],y.indicator));else if(!x.type.is_compound(y.args[1]))w.throw_error(x.error.type("compound",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new j("=",[y.args[1].args[F-1],y.args[2]]);w.prepend([new Pe(b.goal.replace(z),b.substitution,b)])}}},"=../2":function(w,b,y){var F;if(x.type.is_variable(y.args[0])&&(x.type.is_variable(y.args[1])||x.type.is_non_empty_list(y.args[1])&&x.type.is_variable(y.args[1].args[0])))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_fully_list(y.args[1]))w.throw_error(x.error.type("list",y.args[1],y.indicator));else if(x.type.is_variable(y.args[0])){if(!x.type.is_variable(y.args[1])){var X=[];for(F=y.args[1].args[1];F.indicator==="./2";)X.push(F.args[0]),F=F.args[1];x.type.is_variable(y.args[0])&&x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):X.length===0&&x.type.is_compound(y.args[1].args[0])?w.throw_error(x.error.type("atomic",y.args[1].args[0],y.indicator)):X.length>0&&(x.type.is_compound(y.args[1].args[0])||x.type.is_number(y.args[1].args[0]))?w.throw_error(x.error.type("atom",y.args[1].args[0],y.indicator)):X.length===0?w.prepend([new Pe(b.goal.replace(new j("=",[y.args[1].args[0],y.args[0]],b)),b.substitution,b)]):w.prepend([new Pe(b.goal.replace(new j("=",[new j(y.args[1].args[0].id,X),y.args[0]])),b.substitution,b)])}}else{if(x.type.is_atomic(y.args[0]))F=new j(".",[y.args[0],new j("[]")]);else{F=new j("[]");for(var z=y.args[0].args.length-1;z>=0;z--)F=new j(".",[y.args[0].args[z],F]);F=new j(".",[new j(y.args[0].id),F])}w.prepend([new Pe(b.goal.replace(new j("=",[F,y.args[1]])),b.substitution,b)])}},"copy_term/2":function(w,b,y){var F=y.args[0].rename(w);w.prepend([new Pe(b.goal.replace(new j("=",[F,y.args[1]])),b.substitution,b.parent)])},"term_variables/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(!x.type.is_fully_list(z))w.throw_error(x.error.type("list",z,y.indicator));else{var X=g(s(ye(F.variables()),function($){return new De($)}));w.prepend([new Pe(b.goal.replace(new j("=",[z,X])),b.substitution,b)])}},"clause/2":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_callable(y.args[1]))w.throw_error(x.error.type("callable",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var X=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},X=X.rename(w),X.body===null&&(X.body=new j("true"));var $=new j(",",[new j("=",[X.head,y.args[0]]),new j("=",[X.body,y.args[1]])]);F.push(new Pe(b.goal.replace($),b.substitution,b))}w.prepend(F)}else w.throw_error(x.error.permission("access","private_procedure",y.args[0].indicator,y.indicator))},"current_predicate/1":function(w,b,y){var F=y.args[0];if(!x.type.is_variable(F)&&(!x.type.is_compound(F)||F.indicator!=="//2"))w.throw_error(x.error.type("predicate_indicator",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[0])&&!x.type.is_atom(F.args[0]))w.throw_error(x.error.type("atom",F.args[0],y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[1])&&!x.type.is_integer(F.args[1]))w.throw_error(x.error.type("integer",F.args[1],y.indicator));else{var z=[];for(var X in w.session.rules)if(w.session.rules.hasOwnProperty(X)){var $=X.lastIndexOf("/"),oe=X.substr(0,$),xe=parseInt(X.substr($+1,X.length-($+1))),Te=new j("/",[new j(oe),new Re(xe,!1)]),lt=new j("=",[Te,F]);z.push(new Pe(b.goal.replace(lt),b.substitution,b))}w.prepend(z)}},"asserta/1":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Ce(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new Ve(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(b)):w.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(x.error.type("callable",F,y.indicator))}},"assertz/1":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Ce(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new Ve(F,z,!0)),w.success(b)):w.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(x.error.type("callable",F,y.indicator))}},"retract/1":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new j("true")),typeof b.retract>"u")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var X=[],$=0;$w.get_flag("max_arity").value)w.throw_error(x.error.representation("max_arity",y.indicator));else{var F=y.args[0].args[0].id+"/"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(b)):w.throw_error(x.error.permission("modify","static_procedure",F,y.indicator))}},"atom_length/2":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type("atom",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_integer(y.args[1]))w.throw_error(x.error.type("integer",y.args[1],y.indicator));else if(x.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(x.error.domain("not_less_than_zero",y.args[1],y.indicator));else{var F=new Re(y.args[0].id.length,!1);w.prepend([new Pe(b.goal.replace(new j("=",[F,y.args[1]])),b.substitution,b)])}},"atom_concat/3":function(w,b,y){var F,z,X=y.args[0],$=y.args[1],oe=y.args[2];if(x.type.is_variable(oe)&&(x.type.is_variable(X)||x.type.is_variable($)))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_atom(X))w.throw_error(x.error.type("atom",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_atom($))w.throw_error(x.error.type("atom",$,y.indicator));else if(!x.type.is_variable(oe)&&!x.type.is_atom(oe))w.throw_error(x.error.type("atom",oe,y.indicator));else{var xe=x.type.is_variable(X),Te=x.type.is_variable($);if(!xe&&!Te)z=new j("=",[oe,new j(X.id+$.id)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]);else if(xe&&!Te)F=oe.id.substr(0,oe.id.length-$.id.length),F+$.id===oe.id&&(z=new j("=",[X,new j(F)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]));else if(Te&&!xe)F=oe.id.substr(X.id.length),X.id+F===oe.id&&(z=new j("=",[$,new j(F)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]));else{for(var lt=[],Ct=0;Ct<=oe.id.length;Ct++){var qt=new j(oe.id.substr(0,Ct)),ir=new j(oe.id.substr(Ct));z=new j(",",[new j("=",[qt,X]),new j("=",[ir,$])]),lt.push(new Pe(b.goal.replace(z),b.substitution,b))}w.prepend(lt)}}},"sub_atom/5":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2],oe=y.args[3],xe=y.args[4];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_integer(X))w.throw_error(x.error.type("integer",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_integer($))w.throw_error(x.error.type("integer",$,y.indicator));else if(!x.type.is_variable(oe)&&!x.type.is_integer(oe))w.throw_error(x.error.type("integer",oe,y.indicator));else if(x.type.is_integer(X)&&X.value<0)w.throw_error(x.error.domain("not_less_than_zero",X,y.indicator));else if(x.type.is_integer($)&&$.value<0)w.throw_error(x.error.domain("not_less_than_zero",$,y.indicator));else if(x.type.is_integer(oe)&&oe.value<0)w.throw_error(x.error.domain("not_less_than_zero",oe,y.indicator));else{var Te=[],lt=[],Ct=[];if(x.type.is_variable(X))for(F=0;F<=z.id.length;F++)Te.push(F);else Te.push(X.value);if(x.type.is_variable($))for(F=0;F<=z.id.length;F++)lt.push(F);else lt.push($.value);if(x.type.is_variable(oe))for(F=0;F<=z.id.length;F++)Ct.push(F);else Ct.push(oe.value);var qt=[];for(var ir in Te)if(Te.hasOwnProperty(ir)){F=Te[ir];for(var Pt in lt)if(lt.hasOwnProperty(Pt)){var gn=lt[Pt],Pr=z.id.length-F-gn;if(e(Ct,Pr)!==-1&&F+gn+Pr===z.id.length){var Ir=z.id.substr(F,gn);if(z.id===z.id.substr(0,F)+Ir+z.id.substr(F+gn,Pr)){var Or=new j("=",[new j(Ir),xe]),on=new j("=",[X,new Re(F)]),ai=new j("=",[$,new Re(gn)]),Io=new j("=",[oe,new Re(Pr)]),rs=new j(",",[new j(",",[new j(",",[on,ai]),Io]),Or]);qt.push(new Pe(b.goal.replace(rs),b.substitution,b))}}}}w.prepend(qt)}},"atom_chars/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_variable(F)){for(var oe=z,xe=x.type.is_variable(F),Te="";oe.indicator==="./2";){if(x.type.is_character(oe.args[0]))Te+=oe.args[0].id;else if(x.type.is_variable(oe.args[0])&&xe){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type("character",oe.args[0],y.indicator));return}oe=oe.args[1]}x.type.is_variable(oe)&&xe?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)?w.throw_error(x.error.type("list",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[new j(Te),F])),b.substitution,b)])}else{for(var X=new j("[]"),$=F.id.length-1;$>=0;$--)X=new j(".",[new j(F.id.charAt($)),X]);w.prepend([new Pe(b.goal.replace(new j("=",[z,X])),b.substitution,b)])}},"atom_codes/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_variable(F)){for(var oe=z,xe=x.type.is_variable(F),Te="";oe.indicator==="./2";){if(x.type.is_character_code(oe.args[0]))Te+=c(oe.args[0].value);else if(x.type.is_variable(oe.args[0])&&xe){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.representation("character_code",y.indicator));return}oe=oe.args[1]}x.type.is_variable(oe)&&xe?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)?w.throw_error(x.error.type("list",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[new j(Te),F])),b.substitution,b)])}else{for(var X=new j("[]"),$=F.id.length-1;$>=0;$--)X=new j(".",[new Re(n(F.id,$),!1),X]);w.prepend([new Pe(b.goal.replace(new j("=",[z,X])),b.substitution,b)])}},"char_code/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_character(F))w.throw_error(x.error.type("character",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type("integer",z,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character_code(z))w.throw_error(x.error.representation("character_code",y.indicator));else if(x.type.is_variable(z)){var X=new Re(n(F.id,0),!1);w.prepend([new Pe(b.goal.replace(new j("=",[X,z])),b.substitution,b)])}else{var $=new j(c(z.value));w.prepend([new Pe(b.goal.replace(new j("=",[$,F])),b.substitution,b)])}},"number_chars/2":function(w,b,y){var F,z=y.args[0],X=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type("number",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))w.throw_error(x.error.type("list",X,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(X)){var oe=X,xe=!0;for(F="";oe.indicator==="./2";){if(x.type.is_character(oe.args[0]))F+=oe.args[0].id;else if(x.type.is_variable(oe.args[0]))xe=!1;else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type("character",oe.args[0],y.indicator));return}oe=oe.args[1]}if(xe=xe&&x.type.is_empty_list(oe),!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)){w.throw_error(x.error.type("list",X,y.indicator));return}if(!xe&&$){w.throw_error(x.error.instantiation(y.indicator));return}else if(xe)if(x.type.is_variable(oe)&&$){w.throw_error(x.error.instantiation(y.indicator));return}else{var Te=w.parse(F),lt=Te.value;!x.type.is_number(lt)||Te.tokens[Te.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[z,lt])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Ct=new j("[]"),qt=F.length-1;qt>=0;qt--)Ct=new j(".",[new j(F.charAt(qt)),Ct]);w.prepend([new Pe(b.goal.replace(new j("=",[X,Ct])),b.substitution,b)])}}},"number_codes/2":function(w,b,y){var F,z=y.args[0],X=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type("number",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))w.throw_error(x.error.type("list",X,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(X)){var oe=X,xe=!0;for(F="";oe.indicator==="./2";){if(x.type.is_character_code(oe.args[0]))F+=c(oe.args[0].value);else if(x.type.is_variable(oe.args[0]))xe=!1;else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type("character_code",oe.args[0],y.indicator));return}oe=oe.args[1]}if(xe=xe&&x.type.is_empty_list(oe),!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)){w.throw_error(x.error.type("list",X,y.indicator));return}if(!xe&&$){w.throw_error(x.error.instantiation(y.indicator));return}else if(xe)if(x.type.is_variable(oe)&&$){w.throw_error(x.error.instantiation(y.indicator));return}else{var Te=w.parse(F),lt=Te.value;!x.type.is_number(lt)||Te.tokens[Te.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[z,lt])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Ct=new j("[]"),qt=F.length-1;qt>=0;qt--)Ct=new j(".",[new Re(n(F,qt),!1),Ct]);w.prepend([new Pe(b.goal.replace(new j("=",[X,Ct])),b.substitution,b)])}}},"upcase_atom/2":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type("atom",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[z,new j(F.id.toUpperCase(),[])])),b.substitution,b)]):w.throw_error(x.error.type("atom",F,y.indicator))},"downcase_atom/2":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type("atom",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[z,new j(F.id.toLowerCase(),[])])),b.substitution,b)]):w.throw_error(x.error.type("atom",F,y.indicator))},"atomic_list_concat/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j("atomic_list_concat",[F,new j("",[]),z])),b.substitution,b)])},"atomic_list_concat/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(z)||x.type.is_variable(F)&&x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_list(F))w.throw_error(x.error.type("list",F,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_atom(X))w.throw_error(x.error.type("atom",X,y.indicator));else if(x.type.is_variable(X)){for(var oe="",xe=F;x.type.is_term(xe)&&xe.indicator==="./2";){if(!x.type.is_atom(xe.args[0])&&!x.type.is_number(xe.args[0])){w.throw_error(x.error.type("atomic",xe.args[0],y.indicator));return}oe!==""&&(oe+=z.id),x.type.is_atom(xe.args[0])?oe+=xe.args[0].id:oe+=""+xe.args[0].value,xe=xe.args[1]}oe=new j(oe,[]),x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_term(xe)||xe.indicator!=="[]/0"?w.throw_error(x.error.type("list",F,y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[oe,X])),b.substitution,b)])}else{var $=g(s(X.id.split(z.id),function(Te){return new j(Te,[])}));w.prepend([new Pe(b.goal.replace(new j("=",[$,F])),b.substitution,b)])}},"@=/2":function(w,b,y){x.compare(y.args[0],y.args[1])>0&&w.success(b)},"@>=/2":function(w,b,y){x.compare(y.args[0],y.args[1])>=0&&w.success(b)},"compare/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_atom(F)&&["<",">","="].indexOf(F.id)===-1)w.throw_error(x.type.domain("order",F,y.indicator));else{var $=x.compare(z,X);$=$===0?"=":$===-1?"<":">",w.prepend([new Pe(b.goal.replace(new j("=",[F,new j($,[])])),b.substitution,b)])}},"is/2":function(w,b,y){var F=y.args[1].interpret(w);x.type.is_number(F)?w.prepend([new Pe(b.goal.replace(new j("=",[y.args[0],F],w.level)),b.substitution,b)]):w.throw_error(F)},"between/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_integer(F))w.throw_error(x.error.type("integer",F,y.indicator));else if(!x.type.is_integer(z))w.throw_error(x.error.type("integer",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_integer(X))w.throw_error(x.error.type("integer",X,y.indicator));else if(x.type.is_variable(X)){var $=[new Pe(b.goal.replace(new j("=",[X,F])),b.substitution,b)];F.value=X.value&&w.success(b)},"succ/2":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)&&x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_integer(F)?w.throw_error(x.error.type("integer",F,y.indicator)):!x.type.is_variable(z)&&!x.type.is_integer(z)?w.throw_error(x.error.type("integer",z,y.indicator)):!x.type.is_variable(F)&&F.value<0?w.throw_error(x.error.domain("not_less_than_zero",F,y.indicator)):!x.type.is_variable(z)&&z.value<0?w.throw_error(x.error.domain("not_less_than_zero",z,y.indicator)):(x.type.is_variable(z)||z.value>0)&&(x.type.is_variable(F)?w.prepend([new Pe(b.goal.replace(new j("=",[F,new Re(z.value-1,!1)])),b.substitution,b)]):w.prepend([new Pe(b.goal.replace(new j("=",[z,new Re(F.value+1,!1)])),b.substitution,b)]))},"=:=/2":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F===0&&w.success(b)},"=\\=/2":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F!==0&&w.success(b)},"/2":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>0&&w.success(b)},">=/2":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>=0&&w.success(b)},"var/1":function(w,b,y){x.type.is_variable(y.args[0])&&w.success(b)},"atom/1":function(w,b,y){x.type.is_atom(y.args[0])&&w.success(b)},"atomic/1":function(w,b,y){x.type.is_atomic(y.args[0])&&w.success(b)},"compound/1":function(w,b,y){x.type.is_compound(y.args[0])&&w.success(b)},"integer/1":function(w,b,y){x.type.is_integer(y.args[0])&&w.success(b)},"float/1":function(w,b,y){x.type.is_float(y.args[0])&&w.success(b)},"number/1":function(w,b,y){x.type.is_number(y.args[0])&&w.success(b)},"nonvar/1":function(w,b,y){x.type.is_variable(y.args[0])||w.success(b)},"ground/1":function(w,b,y){y.variables().length===0&&w.success(b)},"acyclic_term/1":function(w,b,y){for(var F=b.substitution.apply(b.substitution),z=y.args[0].variables(),X=0;X0?Pt[Pt.length-1]:null,Pt!==null&&(qt=W(w,Pt,0,w.__get_max_priority(),!1))}if(qt.type===p&&qt.len===Pt.length-1&&gn.value==="."){qt=qt.value.rename(w);var Pr=new j("=",[z,qt]);if(oe.variables){var Ir=g(s(ye(qt.variables()),function(Or){return new De(Or)}));Pr=new j(",",[Pr,new j("=",[oe.variables,Ir])])}if(oe.variable_names){var Ir=g(s(ye(qt.variables()),function(on){var ai;for(ai in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(ai)&&w.session.renamed_variables[ai]===on)break;return new j("=",[new j(ai,[]),new De(on)])}));Pr=new j(",",[Pr,new j("=",[oe.variable_names,Ir])])}if(oe.singletons){var Ir=g(s(new Ve(qt,null).singleton_variables(),function(on){var ai;for(ai in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(ai)&&w.session.renamed_variables[ai]===on)break;return new j("=",[new j(ai,[]),new De(on)])}));Pr=new j(",",[Pr,new j("=",[oe.singletons,Ir])])}w.prepend([new Pe(b.goal.replace(Pr),b.substitution,b)])}else qt.type===p?w.throw_error(x.error.syntax(Pt[qt.len],"unexpected token",!1)):w.throw_error(qt.value)}}},"write/1":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("write",[new De("S"),F])])),b.substitution,b)])},"write/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j("write_term",[F,z,new j(".",[new j("quoted",[new j("false",[])]),new j(".",[new j("ignore_ops",[new j("false")]),new j(".",[new j("numbervars",[new j("true")]),new j("[]",[])])])])])),b.substitution,b)])},"writeq/1":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("writeq",[new De("S"),F])])),b.substitution,b)])},"writeq/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j("write_term",[F,z,new j(".",[new j("quoted",[new j("true",[])]),new j(".",[new j("ignore_ops",[new j("false")]),new j(".",[new j("numbervars",[new j("true")]),new j("[]",[])])])])])),b.substitution,b)])},"write_canonical/1":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("write_canonical",[new De("S"),F])])),b.substitution,b)])},"write_canonical/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j("write_term",[F,z,new j(".",[new j("quoted",[new j("true",[])]),new j(".",[new j("ignore_ops",[new j("true")]),new j(".",[new j("numbervars",[new j("false")]),new j("[]",[])])])])])),b.substitution,b)])},"write_term/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("write_term",[new De("S"),F,z])])),b.substitution,b)])},"write_term/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(X))w.throw_error(x.error.type("list",X,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream($)||$.stream===null)w.throw_error(x.error.existence("stream",F,y.indicator));else if($.input)w.throw_error(x.error.permission("output","stream",F,y.indicator));else if($.type==="binary")w.throw_error(x.error.permission("output","binary_stream",F,y.indicator));else if($.position==="past_end_of_stream"&&$.eof_action==="error")w.throw_error(x.error.permission("output","past_end_of_stream",F,y.indicator));else{for(var oe={},xe=X,Te;x.type.is_term(xe)&&xe.indicator==="./2";){if(Te=xe.args[0],x.type.is_variable(Te)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_write_option(Te)){w.throw_error(x.error.domain("write_option",Te,y.indicator));return}oe[Te.id]=Te.args[0].id==="true",xe=xe.args[1]}if(xe.indicator!=="[]/0"){x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type("list",X,y.indicator));return}else{oe.session=w.session;var lt=z.toString(oe);$.stream.put(lt,$.position),typeof $.position=="number"&&($.position+=lt.length),w.success(b)}}},"halt/0":function(w,b,y){w.points=[]},"halt/1":function(w,b,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(F)?w.points=[]:w.throw_error(x.error.type("integer",F,y.indicator))},"current_prolog_flag/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_flag(F))w.throw_error(x.error.domain("prolog_flag",F,y.indicator));else{var X=[];for(var $ in x.flag)if(x.flag.hasOwnProperty($)){var oe=new j(",",[new j("=",[new j($),F]),new j("=",[w.get_flag($),z])]);X.push(new Pe(b.goal.replace(oe),b.substitution,b))}w.prepend(X)}},"set_prolog_flag/2":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?x.type.is_flag(F)?x.type.is_value_flag(F,z)?x.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(b)):w.throw_error(x.error.permission("modify","flag",F)):w.throw_error(x.error.domain("flag_value",new j("+",[F,z]),y.indicator)):w.throw_error(x.error.domain("prolog_flag",F,y.indicator)):w.throw_error(x.error.type("atom",F,y.indicator))}},flag:{bounded:{allowed:[new j("true"),new j("false")],value:new j("true"),changeable:!1},max_integer:{allowed:[new Re(Number.MAX_SAFE_INTEGER)],value:new Re(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Re(Number.MIN_SAFE_INTEGER)],value:new Re(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new j("down"),new j("toward_zero")],value:new j("toward_zero"),changeable:!1},char_conversion:{allowed:[new j("on"),new j("off")],value:new j("on"),changeable:!0},debug:{allowed:[new j("on"),new j("off")],value:new j("off"),changeable:!0},max_arity:{allowed:[new j("unbounded")],value:new j("unbounded"),changeable:!1},unknown:{allowed:[new j("error"),new j("fail"),new j("warning")],value:new j("error"),changeable:!0},double_quotes:{allowed:[new j("chars"),new j("codes"),new j("atom")],value:new j("codes"),changeable:!0},occurs_check:{allowed:[new j("false"),new j("true")],value:new j("false"),changeable:!0},dialect:{allowed:[new j("tau")],value:new j("tau"),changeable:!1},version_data:{allowed:[new j("tau",[new Re(t.major,!1),new Re(t.minor,!1),new Re(t.patch,!1),new j(t.status)])],value:new j("tau",[new Re(t.major,!1),new Re(t.minor,!1),new Re(t.patch,!1),new j(t.status)]),changeable:!1},nodejs:{allowed:[new j("yes"),new j("no")],value:new j(typeof ec<"u"&&ec.exports?"yes":"no"),changeable:!1}},unify:function(w,b,y){y=y===void 0?!1:y;for(var F=[{left:w,right:b}],z={};F.length!==0;){var X=F.pop();if(w=X.left,b=X.right,x.type.is_term(w)&&x.type.is_term(b)){if(w.indicator!==b.indicator)return null;for(var $=0;$z.value?1:0:z}else return F},operate:function(w,b){if(x.type.is_operator(b)){for(var y=x.type.is_operator(b),F=[],z,X=!1,$=0;$w.get_flag("max_integer").value||z0?w.start+w.matches[0].length:w.start,z=y?new j("token_not_found"):new j("found",[new j(w.value.toString())]),X=new j(".",[new j("line",[new Re(w.line+1)]),new j(".",[new j("column",[new Re(F+1)]),new j(".",[z,new j("[]",[])])])]);return new j("error",[new j("syntax_error",[new j(b)]),X])},syntax_by_predicate:function(w,b){return new j("error",[new j("syntax_error",[new j(w)]),Z(b)])}},warning:{singleton:function(w,b,y){for(var F=new j("[]"),z=w.length-1;z>=0;z--)F=new j(".",[new De(w[z]),F]);return new j("warning",[new j("singleton_variables",[F,Z(b)]),new j(".",[new j("line",[new Re(y,!1)]),new j("[]")])])},failed_goal:function(w,b){return new j("warning",[new j("failed_goal",[w]),new j(".",[new j("line",[new Re(b,!1)]),new j("[]")])])}},format_variable:function(w){return"_"+w},format_answer:function(w,b,F){b instanceof ke&&(b=b.thread);var F=F||{};if(F.session=b?b.session:void 0,x.type.is_error(w))return"uncaught exception: "+w.args[0].toString();if(w===!1)return"false.";if(w===null)return"limit exceeded ;";var z=0,X="";if(x.type.is_substitution(w)){var $=w.domain(!0);w=w.filter(function(Te,lt){return!x.type.is_variable(lt)||$.indexOf(lt.id)!==-1&&Te!==lt.id})}for(var oe in w.links)w.links.hasOwnProperty(oe)&&(z++,X!==""&&(X+=", "),X+=oe.toString(F)+" = "+w.links[oe].toString(F));var xe=typeof b>"u"||b.points.length>0?" ;":".";return z===0?"true"+xe:X+xe},flatten_error:function(w){if(!x.type.is_error(w))return null;w=w.args[0];var b={};return b.type=w.args[0].id,b.thrown=b.type==="syntax_error"?null:w.args[1].id,b.expected=null,b.found=null,b.representation=null,b.existence=null,b.existence_type=null,b.line=null,b.column=null,b.permission_operation=null,b.permission_type=null,b.evaluation_type=null,b.type==="type_error"||b.type==="domain_error"?(b.expected=w.args[0].args[0].id,b.found=w.args[0].args[1].toString()):b.type==="syntax_error"?w.args[1].indicator==="./2"?(b.expected=w.args[0].args[0].id,b.found=w.args[1].args[1].args[1].args[0],b.found=b.found.id==="token_not_found"?b.found.id:b.found.args[0].id,b.line=w.args[1].args[0].args[0].value,b.column=w.args[1].args[1].args[0].args[0].value):b.thrown=w.args[1].id:b.type==="permission_error"?(b.found=w.args[0].args[2].toString(),b.permission_operation=w.args[0].args[0].id,b.permission_type=w.args[0].args[1].id):b.type==="evaluation_error"?b.evaluation_type=w.args[0].args[0].id:b.type==="representation_error"?b.representation=w.args[0].args[0].id:b.type==="existence_error"&&(b.existence=w.args[0].args[1].toString(),b.existence_type=w.args[0].args[0].id),b},create:function(w){return new x.type.Session(w)}};typeof ec<"u"?ec.exports=x:window.pl=x})()});function EEe(t,e,r){t.prepend(r.map(s=>new hl.default.type.State(e.goal.replace(s),e.substitution,e)))}function Lq(t){let e=CEe.get(t.session);if(e==null)throw new Error("Assertion failed: A project should have been registered for the active session");return e}function wEe(t,e){CEe.set(t,e),t.consult(`:- use_module(library(${Zct.id})).`)}var hl,IEe,J0,zct,Xct,CEe,Zct,BEe=Xe(()=>{Ge();ql();hl=ut(Oq()),IEe=ut(Ie("vm")),{is_atom:J0,is_variable:zct,is_instantiated_list:Xct}=hl.default.type;CEe=new WeakMap;Zct=new hl.default.type.Module("constraints",{"project_workspaces_by_descriptor/3":(t,e,r)=>{let[s,a,n]=r.args;if(!J0(s)||!J0(a)){t.throw_error(hl.default.error.instantiation(r.indicator));return}let c=G.parseIdent(s.id),f=G.makeDescriptor(c,a.id),h=Lq(t).tryWorkspaceByDescriptor(f);zct(n)&&h!==null&&EEe(t,e,[new hl.default.type.Term("=",[n,new hl.default.type.Term(String(h.relativeCwd))])]),J0(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},"workspace_field/3":(t,e,r)=>{let[s,a,n]=r.args;if(!J0(s)||!J0(a)){t.throw_error(hl.default.error.instantiation(r.indicator));return}let f=Lq(t).tryWorkspaceByCwd(s.id);if(f==null)return;let p=va(f.manifest.raw,a.id);typeof p>"u"||EEe(t,e,[new hl.default.type.Term("=",[n,new hl.default.type.Term(typeof p=="object"?JSON.stringify(p):p)])])},"workspace_field_test/3":(t,e,r)=>{let[s,a,n]=r.args;t.prepend([new hl.default.type.State(e.goal.replace(new hl.default.type.Term("workspace_field_test",[s,a,n,new hl.default.type.Term("[]",[])])),e.substitution,e)])},"workspace_field_test/4":(t,e,r)=>{let[s,a,n,c]=r.args;if(!J0(s)||!J0(a)||!J0(n)||!Xct(c)){t.throw_error(hl.default.error.instantiation(r.indicator));return}let p=Lq(t).tryWorkspaceByCwd(s.id);if(p==null)return;let h=va(p.manifest.raw,a.id);if(typeof h>"u")return;let E={$$:h};for(let[S,P]of c.toJavaScript().entries())E[`$${S}`]=P;IEe.default.runInNewContext(n.id,E)&&t.success(e)}},["project_workspaces_by_descriptor/3","workspace_field/3","workspace_field_test/3","workspace_field_test/4"])});var aS={};Vt(aS,{Constraints:()=>Uq,DependencyType:()=>bEe});function go(t){if(t instanceof KC.default.type.Num)return t.value;if(t instanceof KC.default.type.Term)switch(t.indicator){case"throw/1":return go(t.args[0]);case"error/1":return go(t.args[0]);case"error/2":if(t.args[0]instanceof KC.default.type.Term&&t.args[0].indicator==="syntax_error/1")return Object.assign(go(t.args[0]),...go(t.args[1]));{let e=go(t.args[0]);return e.message+=` (in ${go(t.args[1])})`,e}case"syntax_error/1":return new jt(43,`Syntax error: ${go(t.args[0])}`);case"existence_error/2":return new jt(44,`Existence error: ${go(t.args[0])} ${go(t.args[1])} not found`);case"instantiation_error/0":return new jt(75,"Instantiation error: an argument is variable when an instantiated argument was expected");case"line/1":return{line:go(t.args[0])};case"column/1":return{column:go(t.args[0])};case"found/1":return{found:go(t.args[0])};case"./2":return[go(t.args[0])].concat(go(t.args[1]));case"//2":return`${go(t.args[0])}/${go(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function SEe(t){let e;try{e=go(t)}catch(r){throw typeof r=="string"?new jt(42,`Unknown error: ${t} (note: ${r})`):r}return typeof e.line<"u"&&typeof e.column<"u"&&(e.message+=` at line ${e.line}, column ${e.column}`),e}function Pm(t){return t.id==="null"?null:`${t.toJavaScript()}`}function $ct(t){if(t.id==="null")return null;{let e=t.toJavaScript();if(typeof e!="string")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return JSON.stringify(e)}}}function K0(t){return typeof t=="string"?`'${t}'`:"[]"}var DEe,KC,bEe,vEe,Mq,Uq,lS=Xe(()=>{Ge();Ge();Dt();DEe=ut(nEe()),KC=ut(Oq());iS();BEe();(0,DEe.default)(KC.default);bEe=(s=>(s.Dependencies="dependencies",s.DevDependencies="devDependencies",s.PeerDependencies="peerDependencies",s))(bEe||{}),vEe=["dependencies","devDependencies","peerDependencies"];Mq=class{constructor(e,r){let s=1e3*e.workspaces.length;this.session=KC.default.create(s),wEe(this.session,e),this.session.consult(":- use_module(library(lists))."),this.session.consult(r)}fetchNextAnswer(){return new Promise(e=>{this.session.answer(r=>{e(r)})})}async*makeQuery(e){let r=this.session.query(e);if(r!==!0)throw SEe(r);for(;;){let s=await this.fetchNextAnswer();if(s===null)throw new jt(79,"Resolution limit exceeded");if(!s)break;if(s.id==="throw")throw SEe(s);yield s}}};Uq=class t{constructor(e){this.source="";this.project=e;let r=e.configuration.get("constraintsPath");ce.existsSync(r)&&(this.source=ce.readFileSync(r,"utf8"))}static async find(e){return new t(e)}getProjectDatabase(){let e="";for(let r of vEe)e+=`dependency_type(${r}). -`;for(let r of this.project.workspacesByCwd.values()){let s=r.relativeCwd;e+=`workspace(${K0(s)}). -`,e+=`workspace_ident(${K0(s)}, ${K0(G.stringifyIdent(r.anchoredLocator))}). -`,e+=`workspace_version(${K0(s)}, ${K0(r.manifest.version)}). -`;for(let a of vEe)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${K0(s)}, ${K0(G.stringifyIdent(n))}, ${K0(n.range)}, ${a}). -`}return e+=`workspace(_) :- false. -`,e+=`workspace_ident(_, _) :- false. -`,e+=`workspace_version(_, _) :- false. -`,e+=`workspace_has_dependency(_, _, _, _) :- false. -`,e}getDeclarations(){let e="";return e+=`gen_enforced_dependency(_, _, _, _) :- false. -`,e+=`gen_enforced_field(_, _, _) :- false. -`,e}get fullSource(){return`${this.getProjectDatabase()} -${this.source} -${this.getDeclarations()}`}createSession(){return new Mq(this.project,this.fullSource)}async processClassic(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async process(){let{enforcedDependencies:e,enforcedFields:r}=await this.processClassic(),s=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:c,dependencyType:f}of e){let p=nS([f,G.stringifyIdent(n)]),h=je.getMapWithDefault(s,a.cwd);je.getMapWithDefault(h,p).set(c??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:c}of r){let f=nS(n),p=je.getMapWithDefault(s,a.cwd);je.getMapWithDefault(p,f).set(JSON.parse(c)??void 0,new Set)}return{manifestUpdates:s,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let s of e.makeQuery("workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).")){let a=J.resolve(this.project.cwd,Pm(s.links.WorkspaceCwd)),n=Pm(s.links.DependencyIdent),c=Pm(s.links.DependencyRange),f=Pm(s.links.DependencyType);if(a===null||n===null)throw new Error("Invalid rule");let p=this.project.getWorkspaceByCwd(a),h=G.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:c,dependencyType:f})}return je.sortMap(r,[({dependencyRange:s})=>s!==null?"0":"1",({workspace:s})=>G.stringifyIdent(s.anchoredLocator),({dependencyIdent:s})=>G.stringifyIdent(s)])}async genEnforcedFields(e){let r=[];for await(let s of e.makeQuery("workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).")){let a=J.resolve(this.project.cwd,Pm(s.links.WorkspaceCwd)),n=Pm(s.links.FieldPath),c=$ct(s.links.FieldValue);if(a===null||n===null)throw new Error("Invalid rule");let f=this.project.getWorkspaceByCwd(a);r.push({workspace:f,fieldPath:n,fieldValue:c})}return je.sortMap(r,[({workspace:s})=>G.stringifyIdent(s.anchoredLocator),({fieldPath:s})=>s])}async*query(e){let r=this.createSession();for await(let s of r.makeQuery(e)){let a={};for(let[n,c]of Object.entries(s.links))n!=="_"&&(a[n]=Pm(c));yield a}}}});var OEe=_(fF=>{"use strict";Object.defineProperty(fF,"__esModule",{value:!0});function BS(t){let e=[...t.caches],r=e.shift();return r===void 0?NEe():{get(s,a,n={miss:()=>Promise.resolve()}){return r.get(s,a,n).catch(()=>BS({caches:e}).get(s,a,n))},set(s,a){return r.set(s,a).catch(()=>BS({caches:e}).set(s,a))},delete(s){return r.delete(s).catch(()=>BS({caches:e}).delete(s))},clear(){return r.clear().catch(()=>BS({caches:e}).clear())}}}function NEe(){return{get(t,e,r={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}fF.createFallbackableCache=BS;fF.createNullCache=NEe});var MEe=_((BJt,LEe)=>{LEe.exports=OEe()});var UEe=_($q=>{"use strict";Object.defineProperty($q,"__esModule",{value:!0});function yut(t={serializable:!0}){let e={};return{get(r,s,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let c=s(),f=a&&a.miss||(()=>Promise.resolve());return c.then(p=>f(p)).then(()=>c)},set(r,s){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}$q.createInMemoryCache=yut});var HEe=_((SJt,_Ee)=>{_Ee.exports=UEe()});var GEe=_($u=>{"use strict";Object.defineProperty($u,"__esModule",{value:!0});function Eut(t,e,r){let s={"x-algolia-api-key":r,"x-algolia-application-id":e};return{headers(){return t===e9.WithinHeaders?s:{}},queryParameters(){return t===e9.WithinQueryParameters?s:{}}}}function Iut(t){let e=0,r=()=>(e++,new Promise(s=>{setTimeout(()=>{s(t(r))},Math.min(100*e,1e3))}));return t(r)}function jEe(t,e=(r,s)=>Promise.resolve()){return Object.assign(t,{wait(r){return jEe(t.then(s=>Promise.all([e(s,r),s])).then(s=>s[1]))}})}function Cut(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),s=t[e];t[e]=t[r],t[r]=s}return t}function wut(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function But(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var vut="4.22.1",Sut=t=>()=>t.transporter.requester.destroy(),e9={WithinQueryParameters:0,WithinHeaders:1};$u.AuthMode=e9;$u.addMethods=wut;$u.createAuth=Eut;$u.createRetryablePromise=Iut;$u.createWaitablePromise=jEe;$u.destroy=Sut;$u.encode=But;$u.shuffle=Cut;$u.version=vut});var vS=_((bJt,qEe)=>{qEe.exports=GEe()});var WEe=_(t9=>{"use strict";Object.defineProperty(t9,"__esModule",{value:!0});var Dut={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};t9.MethodEnum=Dut});var SS=_((xJt,YEe)=>{YEe.exports=WEe()});var aIe=_(Yi=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});var JEe=SS();function r9(t,e){let r=t||{},s=r.data||{};return Object.keys(r).forEach(a=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(a)===-1&&(s[a]=r[a])}),{data:Object.entries(s).length>0?s:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var DS={Read:1,Write:2,Any:3},sw={Up:1,Down:2,Timeouted:3},KEe=2*60*1e3;function i9(t,e=sw.Up){return{...t,status:e,lastUpdate:Date.now()}}function zEe(t){return t.status===sw.Up||Date.now()-t.lastUpdate>KEe}function XEe(t){return t.status===sw.Timeouted&&Date.now()-t.lastUpdate<=KEe}function s9(t){return typeof t=="string"?{protocol:"https",url:t,accept:DS.Any}:{protocol:t.protocol||"https",url:t.url,accept:t.accept||DS.Any}}function but(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(i9(r))))).then(r=>{let s=r.filter(f=>zEe(f)),a=r.filter(f=>XEe(f)),n=[...s,...a],c=n.length>0?n.map(f=>s9(f)):e;return{getTimeout(f,p){return(a.length===0&&f===0?1:a.length+3+f)*p},statelessHosts:c}})}var Put=({isTimedOut:t,status:e})=>!t&&~~e===0,xut=t=>{let e=t.status;return t.isTimedOut||Put(t)||~~(e/100)!==2&&~~(e/100)!==4},kut=({status:t})=>~~(t/100)===2,Qut=(t,e)=>xut(t)?e.onRetry(t):kut(t)?e.onSuccess(t):e.onFail(t);function VEe(t,e,r,s){let a=[],n=rIe(r,s),c=nIe(t,s),f=r.method,p=r.method!==JEe.MethodEnum.Get?{}:{...r.data,...s.data},h={"x-algolia-agent":t.userAgent.value,...t.queryParameters,...p,...s.queryParameters},E=0,C=(S,P)=>{let I=S.pop();if(I===void 0)throw oIe(n9(a));let R={data:n,headers:c,method:f,url:eIe(I,r.path,h),connectTimeout:P(E,t.timeouts.connect),responseTimeout:P(E,s.timeout)},N=W=>{let ee={request:R,response:W,host:I,triesLeft:S.length};return a.push(ee),ee},U={onSuccess:W=>ZEe(W),onRetry(W){let ee=N(W);return W.isTimedOut&&E++,Promise.all([t.logger.info("Retryable failure",o9(ee)),t.hostsCache.set(I,i9(I,W.isTimedOut?sw.Timeouted:sw.Down))]).then(()=>C(S,P))},onFail(W){throw N(W),$Ee(W,n9(a))}};return t.requester.send(R).then(W=>Qut(W,U))};return but(t.hostsCache,e).then(S=>C([...S.statelessHosts].reverse(),S.getTimeout))}function Tut(t){let{hostsCache:e,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,hosts:p,queryParameters:h,headers:E}=t,C={hostsCache:e,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,headers:E,queryParameters:h,hosts:p.map(S=>s9(S)),read(S,P){let I=r9(P,C.timeouts.read),R=()=>VEe(C,C.hosts.filter(W=>(W.accept&DS.Read)!==0),S,I);if((I.cacheable!==void 0?I.cacheable:S.cacheable)!==!0)return R();let U={request:S,mappedRequestOptions:I,transporter:{queryParameters:C.queryParameters,headers:C.headers}};return C.responsesCache.get(U,()=>C.requestsCache.get(U,()=>C.requestsCache.set(U,R()).then(W=>Promise.all([C.requestsCache.delete(U),W]),W=>Promise.all([C.requestsCache.delete(U),Promise.reject(W)])).then(([W,ee])=>ee)),{miss:W=>C.responsesCache.set(U,W)})},write(S,P){return VEe(C,C.hosts.filter(I=>(I.accept&DS.Write)!==0),S,r9(P,C.timeouts.write))}};return C}function Rut(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let s=`; ${r.segment}${r.version!==void 0?` (${r.version})`:""}`;return e.value.indexOf(s)===-1&&(e.value=`${e.value}${s}`),e}};return e}function ZEe(t){try{return JSON.parse(t.content)}catch(e){throw sIe(e.message,t)}}function $Ee({content:t,status:e},r){let s=t;try{s=JSON.parse(t).message}catch{}return iIe(s,e,r)}function Fut(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function eIe(t,e,r){let s=tIe(r),a=`${t.protocol}://${t.url}/${e.charAt(0)==="/"?e.substr(1):e}`;return s.length&&(a+=`?${s}`),a}function tIe(t){let e=r=>Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]";return Object.keys(t).map(r=>Fut("%s=%s",r,e(t[r])?JSON.stringify(t[r]):t[r])).join("&")}function rIe(t,e){if(t.method===JEe.MethodEnum.Get||t.data===void 0&&e.data===void 0)return;let r=Array.isArray(t.data)?t.data:{...t.data,...e.data};return JSON.stringify(r)}function nIe(t,e){let r={...t.headers,...e.headers},s={};return Object.keys(r).forEach(a=>{let n=r[a];s[a.toLowerCase()]=n}),s}function n9(t){return t.map(e=>o9(e))}function o9(t){let e=t.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...t,request:{...t.request,headers:{...t.request.headers,...e}}}}function iIe(t,e,r){return{name:"ApiError",message:t,status:e,transporterStackTrace:r}}function sIe(t,e){return{name:"DeserializationError",message:t,response:e}}function oIe(t){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:t}}Yi.CallEnum=DS;Yi.HostStatusEnum=sw;Yi.createApiError=iIe;Yi.createDeserializationError=sIe;Yi.createMappedRequestOptions=r9;Yi.createRetryError=oIe;Yi.createStatefulHost=i9;Yi.createStatelessHost=s9;Yi.createTransporter=Tut;Yi.createUserAgent=Rut;Yi.deserializeFailure=$Ee;Yi.deserializeSuccess=ZEe;Yi.isStatefulHostTimeouted=XEe;Yi.isStatefulHostUp=zEe;Yi.serializeData=rIe;Yi.serializeHeaders=nIe;Yi.serializeQueryParameters=tIe;Yi.serializeUrl=eIe;Yi.stackFrameWithoutCredentials=o9;Yi.stackTraceWithoutCredentials=n9});var bS=_((QJt,lIe)=>{lIe.exports=aIe()});var cIe=_(X0=>{"use strict";Object.defineProperty(X0,"__esModule",{value:!0});var ow=vS(),Nut=bS(),PS=SS(),Out=t=>{let e=t.region||"us",r=ow.createAuth(ow.AuthMode.WithinHeaders,t.appId,t.apiKey),s=Nut.createTransporter({hosts:[{url:`analytics.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a=t.appId;return ow.addMethods({appId:a,transporter:s},t.methods)},Lut=t=>(e,r)=>t.transporter.write({method:PS.MethodEnum.Post,path:"2/abtests",data:e},r),Mut=t=>(e,r)=>t.transporter.write({method:PS.MethodEnum.Delete,path:ow.encode("2/abtests/%s",e)},r),Uut=t=>(e,r)=>t.transporter.read({method:PS.MethodEnum.Get,path:ow.encode("2/abtests/%s",e)},r),_ut=t=>e=>t.transporter.read({method:PS.MethodEnum.Get,path:"2/abtests"},e),Hut=t=>(e,r)=>t.transporter.write({method:PS.MethodEnum.Post,path:ow.encode("2/abtests/%s/stop",e)},r);X0.addABTest=Lut;X0.createAnalyticsClient=Out;X0.deleteABTest=Mut;X0.getABTest=Uut;X0.getABTests=_ut;X0.stopABTest=Hut});var fIe=_((RJt,uIe)=>{uIe.exports=cIe()});var pIe=_(xS=>{"use strict";Object.defineProperty(xS,"__esModule",{value:!0});var a9=vS(),jut=bS(),AIe=SS(),Gut=t=>{let e=t.region||"us",r=a9.createAuth(a9.AuthMode.WithinHeaders,t.appId,t.apiKey),s=jut.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return a9.addMethods({appId:t.appId,transporter:s},t.methods)},qut=t=>e=>t.transporter.read({method:AIe.MethodEnum.Get,path:"1/strategies/personalization"},e),Wut=t=>(e,r)=>t.transporter.write({method:AIe.MethodEnum.Post,path:"1/strategies/personalization",data:e},r);xS.createPersonalizationClient=Gut;xS.getPersonalizationStrategy=qut;xS.setPersonalizationStrategy=Wut});var gIe=_((NJt,hIe)=>{hIe.exports=pIe()});var xIe=_(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});var Jt=vS(),gl=bS(),br=SS(),Yut=Ie("crypto");function AF(t){let e=r=>t.request(r).then(s=>{if(t.batch!==void 0&&t.batch(s.hits),!t.shouldStop(s))return s.cursor?e({cursor:s.cursor}):e({page:(r.page||0)+1})});return e({})}var Vut=t=>{let e=t.appId,r=Jt.createAuth(t.authMode!==void 0?t.authMode:Jt.AuthMode.WithinHeaders,e,t.apiKey),s=gl.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:gl.CallEnum.Read},{url:`${e}.algolia.net`,accept:gl.CallEnum.Write}].concat(Jt.shuffle([{url:`${e}-1.algolianet.com`},{url:`${e}-2.algolianet.com`},{url:`${e}-3.algolianet.com`}])),...t,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a={transporter:s,appId:e,addAlgoliaAgent(n,c){s.userAgent.add({segment:n,version:c})},clearCache(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then(()=>{})}};return Jt.addMethods(a,t.methods)};function dIe(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function mIe(){return{name:"ObjectNotFoundError",message:"Object not found."}}function yIe(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}var Jut=t=>(e,r)=>{let{queryParameters:s,...a}=r||{},n={acl:e,...s!==void 0?{queryParameters:s}:{}},c=(f,p)=>Jt.createRetryablePromise(h=>kS(t)(f.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:"1/keys",data:n},a),c)},Kut=t=>(e,r,s)=>{let a=gl.createMappedRequestOptions(s);return a.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:br.MethodEnum.Post,path:"1/clusters/mapping",data:{cluster:r}},a)},zut=t=>(e,r,s)=>t.transporter.write({method:br.MethodEnum.Post,path:"1/clusters/mapping/batch",data:{users:e,cluster:r}},s),Xut=t=>(e,r)=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:{action:"addEntry",body:[]}}},r),(s,a)=>aw(t)(s.taskID,a)),pF=t=>(e,r,s)=>{let a=(n,c)=>QS(t)(e,{methods:{waitTask:hs}}).waitTask(n.taskID,c);return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/operation",e),data:{operation:"copy",destination:r}},s),a)},Zut=t=>(e,r,s)=>pF(t)(e,r,{...s,scope:[gF.Rules]}),$ut=t=>(e,r,s)=>pF(t)(e,r,{...s,scope:[gF.Settings]}),eft=t=>(e,r,s)=>pF(t)(e,r,{...s,scope:[gF.Synonyms]}),tft=t=>(e,r)=>e.method===br.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),rft=t=>(e,r)=>{let s=(a,n)=>Jt.createRetryablePromise(c=>kS(t)(e,n).then(c).catch(f=>{if(f.status!==404)throw f}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode("1/keys/%s",e)},r),s)},nft=t=>(e,r,s)=>{let a=r.map(n=>({action:"deleteEntry",body:{objectID:n}}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>aw(t)(n.taskID,c))},ift=()=>(t,e)=>{let r=gl.serializeQueryParameters(e),s=Yut.createHmac("sha256",t).update(r).digest("hex");return Buffer.from(s+r).toString("base64")},kS=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/keys/%s",e)},r),EIe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/task/%s",e.toString())},r),sft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"/1/dictionaries/*/settings"},e),oft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/logs"},e),aft=()=>t=>{let e=Buffer.from(t,"base64").toString("ascii"),r=/validUntil=(\d+)/,s=e.match(r);if(s===null)throw yIe();return parseInt(s[1],10)-Math.round(new Date().getTime()/1e3)},lft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping/top"},e),cft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/clusters/mapping/%s",e)},r),uft=t=>e=>{let{retrieveMappings:r,...s}=e||{};return r===!0&&(s.getClusters=!0),t.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping/pending"},s)},QS=t=>(e,r={})=>{let s={transporter:t.transporter,appId:t.appId,indexName:e};return Jt.addMethods(s,r.methods)},fft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/keys"},e),Aft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/clusters"},e),pft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/indexes"},e),hft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping"},e),gft=t=>(e,r,s)=>{let a=(n,c)=>QS(t)(e,{methods:{waitTask:hs}}).waitTask(n.taskID,c);return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/operation",e),data:{operation:"move",destination:r}},s),a)},dft=t=>(e,r)=>{let s=(a,n)=>Promise.all(Object.keys(a.taskID).map(c=>QS(t)(c,{methods:{waitTask:hs}}).waitTask(a.taskID[c],n)));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:"1/indexes/*/batch",data:{requests:e}},r),s)},mft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:e}},r),yft=t=>(e,r)=>{let s=e.map(a=>({...a,params:gl.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/queries",data:{requests:s},cacheable:!0},r)},Eft=t=>(e,r)=>Promise.all(e.map(s=>{let{facetName:a,facetQuery:n,...c}=s.params;return QS(t)(s.indexName,{methods:{searchForFacetValues:DIe}}).searchForFacetValues(a,n,{...r,...c})})),Ift=t=>(e,r)=>{let s=gl.createMappedRequestOptions(r);return s.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:br.MethodEnum.Delete,path:"1/clusters/mapping"},s)},Cft=t=>(e,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:a}},s),(n,c)=>aw(t)(n.taskID,c))},wft=t=>(e,r)=>{let s=(a,n)=>Jt.createRetryablePromise(c=>kS(t)(e,n).catch(f=>{if(f.status!==404)throw f;return c()}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/keys/%s/restore",e)},r),s)},Bft=t=>(e,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>aw(t)(n.taskID,c))},vft=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/search",e),data:{query:r},cacheable:!0},s),Sft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:"1/clusters/mapping/search",data:{query:e}},r),Dft=t=>(e,r)=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:"/1/dictionaries/*/settings",data:e},r),(s,a)=>aw(t)(s.taskID,a)),bft=t=>(e,r)=>{let s=Object.assign({},r),{queryParameters:a,...n}=r||{},c=a?{queryParameters:a}:{},f=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"],p=E=>Object.keys(s).filter(C=>f.indexOf(C)!==-1).every(C=>{if(Array.isArray(E[C])&&Array.isArray(s[C])){let S=E[C];return S.length===s[C].length&&S.every((P,I)=>P===s[C][I])}else return E[C]===s[C]}),h=(E,C)=>Jt.createRetryablePromise(S=>kS(t)(e,C).then(P=>p(P)?Promise.resolve():S()));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:Jt.encode("1/keys/%s",e),data:c},n),h)},aw=t=>(e,r)=>Jt.createRetryablePromise(s=>EIe(t)(e,r).then(a=>a.status!=="published"?s():void 0)),IIe=t=>(e,r)=>{let s=(a,n)=>hs(t)(a.taskID,n);return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/batch",t.indexName),data:{requests:e}},r),s)},Pft=t=>e=>AF({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/browse",t.indexName),data:r},e)}),xft=t=>e=>{let r={hitsPerPage:1e3,...e};return AF({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},kft=t=>e=>{let r={hitsPerPage:1e3,...e};return AF({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},hF=t=>(e,r,s)=>{let{batchSize:a,...n}=s||{},c={taskIDs:[],objectIDs:[]},f=(p=0)=>{let h=[],E;for(E=p;E({action:r,body:C})),n).then(C=>(c.objectIDs=c.objectIDs.concat(C.objectIDs),c.taskIDs.push(C.taskID),E++,f(E)))};return Jt.createWaitablePromise(f(),(p,h)=>Promise.all(p.taskIDs.map(E=>hs(t)(E,h))))},Qft=t=>e=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/clear",t.indexName)},e),(r,s)=>hs(t)(r.taskID,s)),Tft=t=>e=>{let{forwardToReplicas:r,...s}=e||{},a=gl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/rules/clear",t.indexName)},a),(n,c)=>hs(t)(n.taskID,c))},Rft=t=>e=>{let{forwardToReplicas:r,...s}=e||{},a=gl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/synonyms/clear",t.indexName)},a),(n,c)=>hs(t)(n.taskID,c))},Fft=t=>(e,r)=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/deleteByQuery",t.indexName),data:e},r),(s,a)=>hs(t)(s.taskID,a)),Nft=t=>e=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode("1/indexes/%s",t.indexName)},e),(r,s)=>hs(t)(r.taskID,s)),Oft=t=>(e,r)=>Jt.createWaitablePromise(CIe(t)([e],r).then(s=>({taskID:s.taskIDs[0]})),(s,a)=>hs(t)(s.taskID,a)),CIe=t=>(e,r)=>{let s=e.map(a=>({objectID:a}));return hF(t)(s,km.DeleteObject,r)},Lft=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=gl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode("1/indexes/%s/rules/%s",t.indexName,e)},n),(c,f)=>hs(t)(c.taskID,f))},Mft=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=gl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},n),(c,f)=>hs(t)(c.taskID,f))},Uft=t=>e=>wIe(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),_ft=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/answers/%s/prediction",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},s),Hft=t=>(e,r)=>{let{query:s,paginate:a,...n}=r||{},c=0,f=()=>SIe(t)(s||"",{...n,page:c}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(e(E))return{object:E,position:parseInt(h,10),page:c};if(c++,a===!1||c>=p.nbPages)throw mIe();return f()});return f()},jft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/indexes/%s/%s",t.indexName,e)},r),Gft=()=>(t,e)=>{for(let[r,s]of Object.entries(t.hits))if(s.objectID===e)return parseInt(r,10);return-1},qft=t=>(e,r)=>{let{attributesToRetrieve:s,...a}=r||{},n=e.map(c=>({indexName:t.indexName,objectID:c,...s?{attributesToRetrieve:s}:{}}));return t.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:n}},a)},Wft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/indexes/%s/rules/%s",t.indexName,e)},r),wIe=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/indexes/%s/settings",t.indexName),data:{getVersion:2}},e),Yft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},r),BIe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/indexes/%s/task/%s",t.indexName,e.toString())},r),Vft=t=>(e,r)=>Jt.createWaitablePromise(vIe(t)([e],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>hs(t)(s.taskID,a)),vIe=t=>(e,r)=>{let{createIfNotExists:s,...a}=r||{},n=s?km.PartialUpdateObject:km.PartialUpdateObjectNoCreate;return hF(t)(e,n,a)},Jft=t=>(e,r)=>{let{safe:s,autoGenerateObjectIDIfNotExist:a,batchSize:n,...c}=r||{},f=(I,R,N,U)=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/operation",I),data:{operation:N,destination:R}},U),(W,ee)=>hs(t)(W.taskID,ee)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,E=l9({appId:t.appId,transporter:t.transporter,indexName:h}),C=[],S=f(t.indexName,h,"copy",{...c,scope:["settings","synonyms","rules"]});C.push(S);let P=(s?S.wait(c):S).then(()=>{let I=E(e,{...c,autoGenerateObjectIDIfNotExist:a,batchSize:n});return C.push(I),s?I.wait(c):I}).then(()=>{let I=f(h,t.indexName,"move",c);return C.push(I),s?I.wait(c):I}).then(()=>Promise.all(C)).then(([I,R,N])=>({objectIDs:R.objectIDs,taskIDs:[I.taskID,...R.taskIDs,N.taskID]}));return Jt.createWaitablePromise(P,(I,R)=>Promise.all(C.map(N=>N.wait(R))))},Kft=t=>(e,r)=>c9(t)(e,{...r,clearExistingRules:!0}),zft=t=>(e,r)=>u9(t)(e,{...r,clearExistingSynonyms:!0}),Xft=t=>(e,r)=>Jt.createWaitablePromise(l9(t)([e],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>hs(t)(s.taskID,a)),l9=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:s,...a}=r||{},n=s?km.AddObject:km.UpdateObject;if(n===km.UpdateObject){for(let c of e)if(c.objectID===void 0)return Jt.createWaitablePromise(Promise.reject(dIe()))}return hF(t)(e,n,a)},Zft=t=>(e,r)=>c9(t)([e],r),c9=t=>(e,r)=>{let{forwardToReplicas:s,clearExistingRules:a,...n}=r||{},c=gl.createMappedRequestOptions(n);return s&&(c.queryParameters.forwardToReplicas=1),a&&(c.queryParameters.clearExistingRules=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/rules/batch",t.indexName),data:e},c),(f,p)=>hs(t)(f.taskID,p))},$ft=t=>(e,r)=>u9(t)([e],r),u9=t=>(e,r)=>{let{forwardToReplicas:s,clearExistingSynonyms:a,replaceExistingSynonyms:n,...c}=r||{},f=gl.createMappedRequestOptions(c);return s&&(f.queryParameters.forwardToReplicas=1),(n||a)&&(f.queryParameters.replaceExistingSynonyms=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/synonyms/batch",t.indexName),data:e},f),(p,h)=>hs(t)(p.taskID,h))},SIe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/query",t.indexName),data:{query:e},cacheable:!0},r),DIe=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/facets/%s/query",t.indexName,e),data:{facetQuery:r},cacheable:!0},s),bIe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/rules/search",t.indexName),data:{query:e}},r),PIe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/synonyms/search",t.indexName),data:{query:e}},r),eAt=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=gl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:Jt.encode("1/indexes/%s/settings",t.indexName),data:e},n),(c,f)=>hs(t)(c.taskID,f))},hs=t=>(e,r)=>Jt.createRetryablePromise(s=>BIe(t)(e,r).then(a=>a.status!=="published"?s():void 0)),tAt={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",Inference:"inference",ListIndexes:"listIndexes",Logs:"logs",Personalization:"personalization",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},km={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject",DeleteIndex:"delete",ClearIndex:"clear"},gF={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},rAt={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},nAt={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"};Ft.ApiKeyACLEnum=tAt;Ft.BatchActionEnum=km;Ft.ScopeEnum=gF;Ft.StrategyEnum=rAt;Ft.SynonymEnum=nAt;Ft.addApiKey=Jut;Ft.assignUserID=Kut;Ft.assignUserIDs=zut;Ft.batch=IIe;Ft.browseObjects=Pft;Ft.browseRules=xft;Ft.browseSynonyms=kft;Ft.chunkedBatch=hF;Ft.clearDictionaryEntries=Xut;Ft.clearObjects=Qft;Ft.clearRules=Tft;Ft.clearSynonyms=Rft;Ft.copyIndex=pF;Ft.copyRules=Zut;Ft.copySettings=$ut;Ft.copySynonyms=eft;Ft.createBrowsablePromise=AF;Ft.createMissingObjectIDError=dIe;Ft.createObjectNotFoundError=mIe;Ft.createSearchClient=Vut;Ft.createValidUntilNotFoundError=yIe;Ft.customRequest=tft;Ft.deleteApiKey=rft;Ft.deleteBy=Fft;Ft.deleteDictionaryEntries=nft;Ft.deleteIndex=Nft;Ft.deleteObject=Oft;Ft.deleteObjects=CIe;Ft.deleteRule=Lft;Ft.deleteSynonym=Mft;Ft.exists=Uft;Ft.findAnswers=_ft;Ft.findObject=Hft;Ft.generateSecuredApiKey=ift;Ft.getApiKey=kS;Ft.getAppTask=EIe;Ft.getDictionarySettings=sft;Ft.getLogs=oft;Ft.getObject=jft;Ft.getObjectPosition=Gft;Ft.getObjects=qft;Ft.getRule=Wft;Ft.getSecuredApiKeyRemainingValidity=aft;Ft.getSettings=wIe;Ft.getSynonym=Yft;Ft.getTask=BIe;Ft.getTopUserIDs=lft;Ft.getUserID=cft;Ft.hasPendingMappings=uft;Ft.initIndex=QS;Ft.listApiKeys=fft;Ft.listClusters=Aft;Ft.listIndices=pft;Ft.listUserIDs=hft;Ft.moveIndex=gft;Ft.multipleBatch=dft;Ft.multipleGetObjects=mft;Ft.multipleQueries=yft;Ft.multipleSearchForFacetValues=Eft;Ft.partialUpdateObject=Vft;Ft.partialUpdateObjects=vIe;Ft.removeUserID=Ift;Ft.replaceAllObjects=Jft;Ft.replaceAllRules=Kft;Ft.replaceAllSynonyms=zft;Ft.replaceDictionaryEntries=Cft;Ft.restoreApiKey=wft;Ft.saveDictionaryEntries=Bft;Ft.saveObject=Xft;Ft.saveObjects=l9;Ft.saveRule=Zft;Ft.saveRules=c9;Ft.saveSynonym=$ft;Ft.saveSynonyms=u9;Ft.search=SIe;Ft.searchDictionaryEntries=vft;Ft.searchForFacetValues=DIe;Ft.searchRules=bIe;Ft.searchSynonyms=PIe;Ft.searchUserIDs=Sft;Ft.setDictionarySettings=Dft;Ft.setSettings=eAt;Ft.updateApiKey=bft;Ft.waitAppTask=aw;Ft.waitTask=hs});var QIe=_((LJt,kIe)=>{kIe.exports=xIe()});var TIe=_(dF=>{"use strict";Object.defineProperty(dF,"__esModule",{value:!0});function iAt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var sAt={Debug:1,Info:2,Error:3};dF.LogLevelEnum=sAt;dF.createNullLogger=iAt});var FIe=_((UJt,RIe)=>{RIe.exports=TIe()});var MIe=_(f9=>{"use strict";Object.defineProperty(f9,"__esModule",{value:!0});var NIe=Ie("http"),OIe=Ie("https"),oAt=Ie("url"),LIe={keepAlive:!0},aAt=new NIe.Agent(LIe),lAt=new OIe.Agent(LIe);function cAt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:s={}}={}){let a=e||t||aAt,n=r||t||lAt;return{send(c){return new Promise(f=>{let p=oAt.parse(c.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...s,agent:p.protocol==="https:"?n:a,hostname:p.hostname,path:h,method:c.method,headers:{...s&&s.headers?s.headers:{},...c.headers},...p.port!==void 0?{port:p.port||""}:{}},C=(p.protocol==="https:"?OIe:NIe).request(E,R=>{let N=[];R.on("data",U=>{N=N.concat(U)}),R.on("end",()=>{clearTimeout(P),clearTimeout(I),f({status:R.statusCode||0,content:Buffer.concat(N).toString(),isTimedOut:!1})})}),S=(R,N)=>setTimeout(()=>{C.abort(),f({status:0,content:N,isTimedOut:!0})},R*1e3),P=S(c.connectTimeout,"Connection timeout"),I;C.on("error",R=>{clearTimeout(P),clearTimeout(I),f({status:0,content:R.message,isTimedOut:!1})}),C.once("response",()=>{clearTimeout(P),I=S(c.responseTimeout,"Socket timeout")}),c.data!==void 0&&C.write(c.data),C.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}f9.createNodeHttpRequester=cAt});var _Ie=_((HJt,UIe)=>{UIe.exports=MIe()});var qIe=_((jJt,GIe)=>{"use strict";var HIe=MEe(),uAt=HEe(),lw=fIe(),p9=vS(),A9=gIe(),Gt=QIe(),fAt=FIe(),AAt=_Ie(),pAt=bS();function jIe(t,e,r){let s={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:AAt.createNodeHttpRequester(),logger:fAt.createNullLogger(),responsesCache:HIe.createNullCache(),requestsCache:HIe.createNullCache(),hostsCache:uAt.createInMemoryCache(),userAgent:pAt.createUserAgent(p9.version).add({segment:"Node.js",version:process.versions.node})},a={...s,...r},n=()=>c=>A9.createPersonalizationClient({...s,...c,methods:{getPersonalizationStrategy:A9.getPersonalizationStrategy,setPersonalizationStrategy:A9.setPersonalizationStrategy}});return Gt.createSearchClient({...a,methods:{search:Gt.multipleQueries,searchForFacetValues:Gt.multipleSearchForFacetValues,multipleBatch:Gt.multipleBatch,multipleGetObjects:Gt.multipleGetObjects,multipleQueries:Gt.multipleQueries,copyIndex:Gt.copyIndex,copySettings:Gt.copySettings,copyRules:Gt.copyRules,copySynonyms:Gt.copySynonyms,moveIndex:Gt.moveIndex,listIndices:Gt.listIndices,getLogs:Gt.getLogs,listClusters:Gt.listClusters,multipleSearchForFacetValues:Gt.multipleSearchForFacetValues,getApiKey:Gt.getApiKey,addApiKey:Gt.addApiKey,listApiKeys:Gt.listApiKeys,updateApiKey:Gt.updateApiKey,deleteApiKey:Gt.deleteApiKey,restoreApiKey:Gt.restoreApiKey,assignUserID:Gt.assignUserID,assignUserIDs:Gt.assignUserIDs,getUserID:Gt.getUserID,searchUserIDs:Gt.searchUserIDs,listUserIDs:Gt.listUserIDs,getTopUserIDs:Gt.getTopUserIDs,removeUserID:Gt.removeUserID,hasPendingMappings:Gt.hasPendingMappings,generateSecuredApiKey:Gt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Gt.getSecuredApiKeyRemainingValidity,destroy:p9.destroy,clearDictionaryEntries:Gt.clearDictionaryEntries,deleteDictionaryEntries:Gt.deleteDictionaryEntries,getDictionarySettings:Gt.getDictionarySettings,getAppTask:Gt.getAppTask,replaceDictionaryEntries:Gt.replaceDictionaryEntries,saveDictionaryEntries:Gt.saveDictionaryEntries,searchDictionaryEntries:Gt.searchDictionaryEntries,setDictionarySettings:Gt.setDictionarySettings,waitAppTask:Gt.waitAppTask,customRequest:Gt.customRequest,initIndex:c=>f=>Gt.initIndex(c)(f,{methods:{batch:Gt.batch,delete:Gt.deleteIndex,findAnswers:Gt.findAnswers,getObject:Gt.getObject,getObjects:Gt.getObjects,saveObject:Gt.saveObject,saveObjects:Gt.saveObjects,search:Gt.search,searchForFacetValues:Gt.searchForFacetValues,waitTask:Gt.waitTask,setSettings:Gt.setSettings,getSettings:Gt.getSettings,partialUpdateObject:Gt.partialUpdateObject,partialUpdateObjects:Gt.partialUpdateObjects,deleteObject:Gt.deleteObject,deleteObjects:Gt.deleteObjects,deleteBy:Gt.deleteBy,clearObjects:Gt.clearObjects,browseObjects:Gt.browseObjects,getObjectPosition:Gt.getObjectPosition,findObject:Gt.findObject,exists:Gt.exists,saveSynonym:Gt.saveSynonym,saveSynonyms:Gt.saveSynonyms,getSynonym:Gt.getSynonym,searchSynonyms:Gt.searchSynonyms,browseSynonyms:Gt.browseSynonyms,deleteSynonym:Gt.deleteSynonym,clearSynonyms:Gt.clearSynonyms,replaceAllObjects:Gt.replaceAllObjects,replaceAllSynonyms:Gt.replaceAllSynonyms,searchRules:Gt.searchRules,getRule:Gt.getRule,deleteRule:Gt.deleteRule,saveRule:Gt.saveRule,saveRules:Gt.saveRules,replaceAllRules:Gt.replaceAllRules,browseRules:Gt.browseRules,clearRules:Gt.clearRules}}),initAnalytics:()=>c=>lw.createAnalyticsClient({...s,...c,methods:{addABTest:lw.addABTest,getABTest:lw.getABTest,getABTests:lw.getABTests,stopABTest:lw.stopABTest,deleteABTest:lw.deleteABTest}}),initPersonalization:n,initRecommendation:()=>c=>(a.logger.info("The `initRecommendation` method is deprecated. Use `initPersonalization` instead."),n()(c))}})}jIe.version=p9.version;GIe.exports=jIe});var g9=_((GJt,h9)=>{var WIe=qIe();h9.exports=WIe;h9.exports.default=WIe});var y9=_((WJt,JIe)=>{"use strict";var VIe=Object.getOwnPropertySymbols,gAt=Object.prototype.hasOwnProperty,dAt=Object.prototype.propertyIsEnumerable;function mAt(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function yAt(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var s=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(s.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}JIe.exports=yAt()?Object.assign:function(t,e){for(var r,s=mAt(t),a,n=1;n{"use strict";var I9=y9(),cw=60103,XIe=60106;Dn.Fragment=60107;Dn.StrictMode=60108;Dn.Profiler=60114;var ZIe=60109,$Ie=60110,eCe=60112;Dn.Suspense=60113;var tCe=60115,rCe=60116;typeof Symbol=="function"&&Symbol.for&&(Gc=Symbol.for,cw=Gc("react.element"),XIe=Gc("react.portal"),Dn.Fragment=Gc("react.fragment"),Dn.StrictMode=Gc("react.strict_mode"),Dn.Profiler=Gc("react.profiler"),ZIe=Gc("react.provider"),$Ie=Gc("react.context"),eCe=Gc("react.forward_ref"),Dn.Suspense=Gc("react.suspense"),tCe=Gc("react.memo"),rCe=Gc("react.lazy"));var Gc,KIe=typeof Symbol=="function"&&Symbol.iterator;function EAt(t){return t===null||typeof t!="object"?null:(t=KIe&&t[KIe]||t["@@iterator"],typeof t=="function"?t:null)}function TS(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r{"use strict";fCe.exports=uCe()});var EF=_((JJt,ACe)=>{function vAt(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}ACe.exports=vAt});var hCe=_((KJt,pCe)=>{var SAt=typeof global=="object"&&global&&global.Object===Object&&global;pCe.exports=SAt});var S9=_((zJt,gCe)=>{var DAt=hCe(),bAt=typeof self=="object"&&self&&self.Object===Object&&self,PAt=DAt||bAt||Function("return this")();gCe.exports=PAt});var mCe=_((XJt,dCe)=>{var xAt=S9(),kAt=function(){return xAt.Date.now()};dCe.exports=kAt});var ECe=_((ZJt,yCe)=>{var QAt=/\s/;function TAt(t){for(var e=t.length;e--&&QAt.test(t.charAt(e)););return e}yCe.exports=TAt});var CCe=_(($Jt,ICe)=>{var RAt=ECe(),FAt=/^\s+/;function NAt(t){return t&&t.slice(0,RAt(t)+1).replace(FAt,"")}ICe.exports=NAt});var D9=_((eKt,wCe)=>{var OAt=S9(),LAt=OAt.Symbol;wCe.exports=LAt});var DCe=_((tKt,SCe)=>{var BCe=D9(),vCe=Object.prototype,MAt=vCe.hasOwnProperty,UAt=vCe.toString,RS=BCe?BCe.toStringTag:void 0;function _At(t){var e=MAt.call(t,RS),r=t[RS];try{t[RS]=void 0;var s=!0}catch{}var a=UAt.call(t);return s&&(e?t[RS]=r:delete t[RS]),a}SCe.exports=_At});var PCe=_((rKt,bCe)=>{var HAt=Object.prototype,jAt=HAt.toString;function GAt(t){return jAt.call(t)}bCe.exports=GAt});var TCe=_((nKt,QCe)=>{var xCe=D9(),qAt=DCe(),WAt=PCe(),YAt="[object Null]",VAt="[object Undefined]",kCe=xCe?xCe.toStringTag:void 0;function JAt(t){return t==null?t===void 0?VAt:YAt:kCe&&kCe in Object(t)?qAt(t):WAt(t)}QCe.exports=JAt});var FCe=_((iKt,RCe)=>{function KAt(t){return t!=null&&typeof t=="object"}RCe.exports=KAt});var OCe=_((sKt,NCe)=>{var zAt=TCe(),XAt=FCe(),ZAt="[object Symbol]";function $At(t){return typeof t=="symbol"||XAt(t)&&zAt(t)==ZAt}NCe.exports=$At});var _Ce=_((oKt,UCe)=>{var ept=CCe(),LCe=EF(),tpt=OCe(),MCe=NaN,rpt=/^[-+]0x[0-9a-f]+$/i,npt=/^0b[01]+$/i,ipt=/^0o[0-7]+$/i,spt=parseInt;function opt(t){if(typeof t=="number")return t;if(tpt(t))return MCe;if(LCe(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=LCe(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=ept(t);var r=npt.test(t);return r||ipt.test(t)?spt(t.slice(2),r?2:8):rpt.test(t)?MCe:+t}UCe.exports=opt});var GCe=_((aKt,jCe)=>{var apt=EF(),b9=mCe(),HCe=_Ce(),lpt="Expected a function",cpt=Math.max,upt=Math.min;function fpt(t,e,r){var s,a,n,c,f,p,h=0,E=!1,C=!1,S=!0;if(typeof t!="function")throw new TypeError(lpt);e=HCe(e)||0,apt(r)&&(E=!!r.leading,C="maxWait"in r,n=C?cpt(HCe(r.maxWait)||0,e):n,S="trailing"in r?!!r.trailing:S);function P(le){var me=s,pe=a;return s=a=void 0,h=le,c=t.apply(pe,me),c}function I(le){return h=le,f=setTimeout(U,e),E?P(le):c}function R(le){var me=le-p,pe=le-h,Be=e-me;return C?upt(Be,n-pe):Be}function N(le){var me=le-p,pe=le-h;return p===void 0||me>=e||me<0||C&&pe>=n}function U(){var le=b9();if(N(le))return W(le);f=setTimeout(U,R(le))}function W(le){return f=void 0,S&&s?P(le):(s=a=void 0,c)}function ee(){f!==void 0&&clearTimeout(f),h=0,s=p=a=f=void 0}function ie(){return f===void 0?c:W(b9())}function ue(){var le=b9(),me=N(le);if(s=arguments,a=this,p=le,me){if(f===void 0)return I(p);if(C)return clearTimeout(f),f=setTimeout(U,e),P(p)}return f===void 0&&(f=setTimeout(U,e)),c}return ue.cancel=ee,ue.flush=ie,ue}jCe.exports=fpt});var WCe=_((lKt,qCe)=>{var Apt=GCe(),ppt=EF(),hpt="Expected a function";function gpt(t,e,r){var s=!0,a=!0;if(typeof t!="function")throw new TypeError(hpt);return ppt(r)&&(s="leading"in r?!!r.leading:s,a="trailing"in r?!!r.trailing:a),Apt(t,e,{leading:s,maxWait:e,trailing:a})}qCe.exports=gpt});var x9=_((cKt,P9)=>{"use strict";var Cn=P9.exports;P9.exports.default=Cn;var Xn="\x1B[",NS="\x1B]",fw="\x07",IF=";",YCe=process.env.TERM_PROGRAM==="Apple_Terminal";Cn.cursorTo=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");return typeof e!="number"?Xn+(t+1)+"G":Xn+(e+1)+";"+(t+1)+"H"};Cn.cursorMove=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");let r="";return t<0?r+=Xn+-t+"D":t>0&&(r+=Xn+t+"C"),e<0?r+=Xn+-e+"A":e>0&&(r+=Xn+e+"B"),r};Cn.cursorUp=(t=1)=>Xn+t+"A";Cn.cursorDown=(t=1)=>Xn+t+"B";Cn.cursorForward=(t=1)=>Xn+t+"C";Cn.cursorBackward=(t=1)=>Xn+t+"D";Cn.cursorLeft=Xn+"G";Cn.cursorSavePosition=YCe?"\x1B7":Xn+"s";Cn.cursorRestorePosition=YCe?"\x1B8":Xn+"u";Cn.cursorGetPosition=Xn+"6n";Cn.cursorNextLine=Xn+"E";Cn.cursorPrevLine=Xn+"F";Cn.cursorHide=Xn+"?25l";Cn.cursorShow=Xn+"?25h";Cn.eraseLines=t=>{let e="";for(let r=0;r[NS,"8",IF,IF,e,fw,t,NS,"8",IF,IF,fw].join("");Cn.image=(t,e={})=>{let r=`${NS}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0"),r+":"+t.toString("base64")+fw};Cn.iTerm={setCwd:(t=process.cwd())=>`${NS}50;CurrentDir=${t}${fw}`,annotation:(t,e={})=>{let r=`${NS}1337;`,s=typeof e.x<"u",a=typeof e.y<"u";if((s||a)&&!(s&&a&&typeof e.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return t=t.replace(/\|/g,""),r+=e.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",e.length>0?r+=(s?[t,e.length,e.x,e.y]:[e.length,t]).join("|"):r+=t,r+fw}}});var JCe=_((uKt,k9)=>{"use strict";var VCe=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};k9.exports=VCe;k9.exports.default=VCe});var zCe=_((fKt,wF)=>{"use strict";var dpt=JCe(),CF=new WeakMap,KCe=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let r,s=0,a=t.displayName||t.name||"",n=function(...c){if(CF.set(n,++s),s===1)r=t.apply(this,c),t=null;else if(e.throw===!0)throw new Error(`Function \`${a}\` can only be called once`);return r};return dpt(n,t),CF.set(n,s),n};wF.exports=KCe;wF.exports.default=KCe;wF.exports.callCount=t=>{if(!CF.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return CF.get(t)}});var XCe=_((AKt,BF)=>{BF.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&BF.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&BF.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var R9=_((pKt,hw)=>{var Qi=global.process,Qm=function(t){return t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function"};Qm(Qi)?(ZCe=Ie("assert"),Aw=XCe(),$Ce=/^win/i.test(Qi.platform),OS=Ie("events"),typeof OS!="function"&&(OS=OS.EventEmitter),Qi.__signal_exit_emitter__?Js=Qi.__signal_exit_emitter__:(Js=Qi.__signal_exit_emitter__=new OS,Js.count=0,Js.emitted={}),Js.infinite||(Js.setMaxListeners(1/0),Js.infinite=!0),hw.exports=function(t,e){if(!Qm(global.process))return function(){};ZCe.equal(typeof t,"function","a callback must be provided for exit handler"),pw===!1&&Q9();var r="exit";e&&e.alwaysLast&&(r="afterexit");var s=function(){Js.removeListener(r,t),Js.listeners("exit").length===0&&Js.listeners("afterexit").length===0&&vF()};return Js.on(r,t),s},vF=function(){!pw||!Qm(global.process)||(pw=!1,Aw.forEach(function(e){try{Qi.removeListener(e,SF[e])}catch{}}),Qi.emit=DF,Qi.reallyExit=T9,Js.count-=1)},hw.exports.unload=vF,Tm=function(e,r,s){Js.emitted[e]||(Js.emitted[e]=!0,Js.emit(e,r,s))},SF={},Aw.forEach(function(t){SF[t]=function(){if(Qm(global.process)){var r=Qi.listeners(t);r.length===Js.count&&(vF(),Tm("exit",null,t),Tm("afterexit",null,t),$Ce&&t==="SIGHUP"&&(t="SIGINT"),Qi.kill(Qi.pid,t))}}}),hw.exports.signals=function(){return Aw},pw=!1,Q9=function(){pw||!Qm(global.process)||(pw=!0,Js.count+=1,Aw=Aw.filter(function(e){try{return Qi.on(e,SF[e]),!0}catch{return!1}}),Qi.emit=twe,Qi.reallyExit=ewe)},hw.exports.load=Q9,T9=Qi.reallyExit,ewe=function(e){Qm(global.process)&&(Qi.exitCode=e||0,Tm("exit",Qi.exitCode,null),Tm("afterexit",Qi.exitCode,null),T9.call(Qi,Qi.exitCode))},DF=Qi.emit,twe=function(e,r){if(e==="exit"&&Qm(global.process)){r!==void 0&&(Qi.exitCode=r);var s=DF.apply(this,arguments);return Tm("exit",Qi.exitCode,null),Tm("afterexit",Qi.exitCode,null),s}else return DF.apply(this,arguments)}):hw.exports=function(){return function(){}};var ZCe,Aw,$Ce,OS,Js,vF,Tm,SF,pw,Q9,T9,ewe,DF,twe});var nwe=_((hKt,rwe)=>{"use strict";var mpt=zCe(),ypt=R9();rwe.exports=mpt(()=>{ypt(()=>{process.stderr.write("\x1B[?25h")},{alwaysLast:!0})})});var F9=_(gw=>{"use strict";var Ept=nwe(),bF=!1;gw.show=(t=process.stderr)=>{t.isTTY&&(bF=!1,t.write("\x1B[?25h"))};gw.hide=(t=process.stderr)=>{t.isTTY&&(Ept(),bF=!0,t.write("\x1B[?25l"))};gw.toggle=(t,e)=>{t!==void 0&&(bF=t),bF?gw.show(e):gw.hide(e)}});var awe=_(LS=>{"use strict";var owe=LS&&LS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(LS,"__esModule",{value:!0});var iwe=owe(x9()),swe=owe(F9()),Ipt=(t,{showCursor:e=!1}={})=>{let r=0,s="",a=!1,n=c=>{!e&&!a&&(swe.default.hide(),a=!0);let f=c+` -`;f!==s&&(s=f,t.write(iwe.default.eraseLines(r)+f),r=f.split(` -`).length)};return n.clear=()=>{t.write(iwe.default.eraseLines(r)),s="",r=0},n.done=()=>{s="",r=0,e||(swe.default.show(),a=!1)},n};LS.default={create:Ipt}});var lwe=_((mKt,Cpt)=>{Cpt.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY_BUILD_BASE",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}}]});var fwe=_(tc=>{"use strict";var uwe=lwe(),uA=process.env;Object.defineProperty(tc,"_vendors",{value:uwe.map(function(t){return t.constant})});tc.name=null;tc.isPR=null;uwe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(s){return cwe(s)});if(tc[t.constant]=r,r)switch(tc.name=t.name,typeof t.pr){case"string":tc.isPR=!!uA[t.pr];break;case"object":"env"in t.pr?tc.isPR=t.pr.env in uA&&uA[t.pr.env]!==t.pr.ne:"any"in t.pr?tc.isPR=t.pr.any.some(function(s){return!!uA[s]}):tc.isPR=cwe(t.pr);break;default:tc.isPR=null}});tc.isCI=!!(uA.CI||uA.CONTINUOUS_INTEGRATION||uA.BUILD_NUMBER||uA.RUN_ID||tc.name);function cwe(t){return typeof t=="string"?!!uA[t]:Object.keys(t).every(function(e){return uA[e]===t[e]})}});var pwe=_((EKt,Awe)=>{"use strict";Awe.exports=fwe().isCI});var gwe=_((IKt,hwe)=>{"use strict";var wpt=t=>{let e=new Set;do for(let r of Reflect.ownKeys(t))e.add([t,r]);while((t=Reflect.getPrototypeOf(t))&&t!==Object.prototype);return e};hwe.exports=(t,{include:e,exclude:r}={})=>{let s=a=>{let n=c=>typeof c=="string"?a===c:c.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of wpt(t.constructor.prototype)){if(n==="constructor"||!s(n))continue;let c=Reflect.getOwnPropertyDescriptor(a,n);c&&typeof c.value=="function"&&(t[n]=t[n].bind(t))}return t}});var Cwe=_(Vn=>{"use strict";var mw,_S,QF,H9;typeof performance=="object"&&typeof performance.now=="function"?(dwe=performance,Vn.unstable_now=function(){return dwe.now()}):(N9=Date,mwe=N9.now(),Vn.unstable_now=function(){return N9.now()-mwe});var dwe,N9,mwe;typeof window>"u"||typeof MessageChannel!="function"?(dw=null,O9=null,L9=function(){if(dw!==null)try{var t=Vn.unstable_now();dw(!0,t),dw=null}catch(e){throw setTimeout(L9,0),e}},mw=function(t){dw!==null?setTimeout(mw,0,t):(dw=t,setTimeout(L9,0))},_S=function(t,e){O9=setTimeout(t,e)},QF=function(){clearTimeout(O9)},Vn.unstable_shouldYield=function(){return!1},H9=Vn.unstable_forceFrameRate=function(){}):(ywe=window.setTimeout,Ewe=window.clearTimeout,typeof console<"u"&&(Iwe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof Iwe!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),MS=!1,US=null,PF=-1,M9=5,U9=0,Vn.unstable_shouldYield=function(){return Vn.unstable_now()>=U9},H9=function(){},Vn.unstable_forceFrameRate=function(t){0>t||125>>1,a=t[s];if(a!==void 0&&0kF(c,r))p!==void 0&&0>kF(p,c)?(t[s]=p,t[f]=r,s=f):(t[s]=c,t[n]=r,s=n);else if(p!==void 0&&0>kF(p,r))t[s]=p,t[f]=r,s=f;else break e}}return e}return null}function kF(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var fA=[],Z0=[],Bpt=1,qc=null,$o=3,RF=!1,Rm=!1,HS=!1;function G9(t){for(var e=ef(Z0);e!==null;){if(e.callback===null)TF(Z0);else if(e.startTime<=t)TF(Z0),e.sortIndex=e.expirationTime,j9(fA,e);else break;e=ef(Z0)}}function q9(t){if(HS=!1,G9(t),!Rm)if(ef(fA)!==null)Rm=!0,mw(W9);else{var e=ef(Z0);e!==null&&_S(q9,e.startTime-t)}}function W9(t,e){Rm=!1,HS&&(HS=!1,QF()),RF=!0;var r=$o;try{for(G9(e),qc=ef(fA);qc!==null&&(!(qc.expirationTime>e)||t&&!Vn.unstable_shouldYield());){var s=qc.callback;if(typeof s=="function"){qc.callback=null,$o=qc.priorityLevel;var a=s(qc.expirationTime<=e);e=Vn.unstable_now(),typeof a=="function"?qc.callback=a:qc===ef(fA)&&TF(fA),G9(e)}else TF(fA);qc=ef(fA)}if(qc!==null)var n=!0;else{var c=ef(Z0);c!==null&&_S(q9,c.startTime-e),n=!1}return n}finally{qc=null,$o=r,RF=!1}}var vpt=H9;Vn.unstable_IdlePriority=5;Vn.unstable_ImmediatePriority=1;Vn.unstable_LowPriority=4;Vn.unstable_NormalPriority=3;Vn.unstable_Profiling=null;Vn.unstable_UserBlockingPriority=2;Vn.unstable_cancelCallback=function(t){t.callback=null};Vn.unstable_continueExecution=function(){Rm||RF||(Rm=!0,mw(W9))};Vn.unstable_getCurrentPriorityLevel=function(){return $o};Vn.unstable_getFirstCallbackNode=function(){return ef(fA)};Vn.unstable_next=function(t){switch($o){case 1:case 2:case 3:var e=3;break;default:e=$o}var r=$o;$o=e;try{return t()}finally{$o=r}};Vn.unstable_pauseExecution=function(){};Vn.unstable_requestPaint=vpt;Vn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=$o;$o=t;try{return e()}finally{$o=r}};Vn.unstable_scheduleCallback=function(t,e,r){var s=Vn.unstable_now();switch(typeof r=="object"&&r!==null?(r=r.delay,r=typeof r=="number"&&0s?(t.sortIndex=r,j9(Z0,t),ef(fA)===null&&t===ef(Z0)&&(HS?QF():HS=!0,_S(q9,r-s))):(t.sortIndex=a,j9(fA,t),Rm||RF||(Rm=!0,mw(W9))),t};Vn.unstable_wrapCallback=function(t){var e=$o;return function(){var r=$o;$o=e;try{return t.apply(this,arguments)}finally{$o=r}}}});var Y9=_((wKt,wwe)=>{"use strict";wwe.exports=Cwe()});var Bwe=_((BKt,jS)=>{jS.exports=function(e){var r={},s=y9(),a=hn(),n=Y9();function c(v){for(var D="https://reactjs.org/docs/error-decoder.html?invariant="+v,Q=1;Q_e||V[Se]!==ne[_e])return` -`+V[Se].replace(" at new "," at ");while(1<=Se&&0<=_e);break}}}finally{ve=!1,Error.prepareStackTrace=Q}return(v=v?v.displayName||v.name:"")?oc(v):""}var ac=[],Oi=-1;function no(v){return{current:v}}function Rt(v){0>Oi||(v.current=ac[Oi],ac[Oi]=null,Oi--)}function xn(v,D){Oi++,ac[Oi]=v.current,v.current=D}var la={},Gi=no(la),Li=no(!1),Na=la;function dn(v,D){var Q=v.type.contextTypes;if(!Q)return la;var H=v.stateNode;if(H&&H.__reactInternalMemoizedUnmaskedChildContext===D)return H.__reactInternalMemoizedMaskedChildContext;var V={},ne;for(ne in Q)V[ne]=D[ne];return H&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=D,v.__reactInternalMemoizedMaskedChildContext=V),V}function Kn(v){return v=v.childContextTypes,v!=null}function Au(){Rt(Li),Rt(Gi)}function yh(v,D,Q){if(Gi.current!==la)throw Error(c(168));xn(Gi,D),xn(Li,Q)}function Oa(v,D,Q){var H=v.stateNode;if(v=D.childContextTypes,typeof H.getChildContext!="function")return Q;H=H.getChildContext();for(var V in H)if(!(V in v))throw Error(c(108,g(D)||"Unknown",V));return s({},Q,H)}function La(v){return v=(v=v.stateNode)&&v.__reactInternalMemoizedMergedChildContext||la,Na=Gi.current,xn(Gi,v),xn(Li,Li.current),!0}function Ma(v,D,Q){var H=v.stateNode;if(!H)throw Error(c(169));Q?(v=Oa(v,D,Na),H.__reactInternalMemoizedMergedChildContext=v,Rt(Li),Rt(Gi),xn(Gi,v)):Rt(Li),xn(Li,Q)}var $e=null,Ua=null,hf=n.unstable_now;hf();var lc=0,wn=8;function ca(v){if(1&v)return wn=15,1;if(2&v)return wn=14,2;if(4&v)return wn=13,4;var D=24&v;return D!==0?(wn=12,D):v&32?(wn=11,32):(D=192&v,D!==0?(wn=10,D):v&256?(wn=9,256):(D=3584&v,D!==0?(wn=8,D):v&4096?(wn=7,4096):(D=4186112&v,D!==0?(wn=6,D):(D=62914560&v,D!==0?(wn=5,D):v&67108864?(wn=4,67108864):v&134217728?(wn=3,134217728):(D=805306368&v,D!==0?(wn=2,D):1073741824&v?(wn=1,1073741824):(wn=8,v))))))}function LA(v){switch(v){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function MA(v){switch(v){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(c(358,v))}}function ua(v,D){var Q=v.pendingLanes;if(Q===0)return wn=0;var H=0,V=0,ne=v.expiredLanes,Se=v.suspendedLanes,_e=v.pingedLanes;if(ne!==0)H=ne,V=wn=15;else if(ne=Q&134217727,ne!==0){var pt=ne&~Se;pt!==0?(H=ca(pt),V=wn):(_e&=ne,_e!==0&&(H=ca(_e),V=wn))}else ne=Q&~Se,ne!==0?(H=ca(ne),V=wn):_e!==0&&(H=ca(_e),V=wn);if(H===0)return 0;if(H=31-ns(H),H=Q&((0>H?0:1<Q;Q++)D.push(v);return D}function Ha(v,D,Q){v.pendingLanes|=D;var H=D-1;v.suspendedLanes&=H,v.pingedLanes&=H,v=v.eventTimes,D=31-ns(D),v[D]=Q}var ns=Math.clz32?Math.clz32:uc,cc=Math.log,pu=Math.LN2;function uc(v){return v===0?32:31-(cc(v)/pu|0)|0}var ja=n.unstable_runWithPriority,Mi=n.unstable_scheduleCallback,Is=n.unstable_cancelCallback,vl=n.unstable_shouldYield,gf=n.unstable_requestPaint,fc=n.unstable_now,wi=n.unstable_getCurrentPriorityLevel,Qn=n.unstable_ImmediatePriority,Ac=n.unstable_UserBlockingPriority,Ke=n.unstable_NormalPriority,st=n.unstable_LowPriority,St=n.unstable_IdlePriority,lr={},te=gf!==void 0?gf:function(){},Ee=null,Oe=null,dt=!1,Et=fc(),bt=1e4>Et?fc:function(){return fc()-Et};function tr(){switch(wi()){case Qn:return 99;case Ac:return 98;case Ke:return 97;case st:return 96;case St:return 95;default:throw Error(c(332))}}function An(v){switch(v){case 99:return Qn;case 98:return Ac;case 97:return Ke;case 96:return st;case 95:return St;default:throw Error(c(332))}}function li(v,D){return v=An(v),ja(v,D)}function qi(v,D,Q){return v=An(v),Mi(v,D,Q)}function Tn(){if(Oe!==null){var v=Oe;Oe=null,Is(v)}Ga()}function Ga(){if(!dt&&Ee!==null){dt=!0;var v=0;try{var D=Ee;li(99,function(){for(;vRn?(_n=kr,kr=null):_n=kr.sibling;var zr=Zt(et,kr,gt[Rn],Xt);if(zr===null){kr===null&&(kr=_n);break}v&&kr&&zr.alternate===null&&D(et,kr),qe=ne(zr,qe,Rn),Zn===null?Dr=zr:Zn.sibling=zr,Zn=zr,kr=_n}if(Rn===gt.length)return Q(et,kr),Dr;if(kr===null){for(;RnRn?(_n=kr,kr=null):_n=kr.sibling;var ci=Zt(et,kr,zr.value,Xt);if(ci===null){kr===null&&(kr=_n);break}v&&kr&&ci.alternate===null&&D(et,kr),qe=ne(ci,qe,Rn),Zn===null?Dr=ci:Zn.sibling=ci,Zn=ci,kr=_n}if(zr.done)return Q(et,kr),Dr;if(kr===null){for(;!zr.done;Rn++,zr=gt.next())zr=Lr(et,zr.value,Xt),zr!==null&&(qe=ne(zr,qe,Rn),Zn===null?Dr=zr:Zn.sibling=zr,Zn=zr);return Dr}for(kr=H(et,kr);!zr.done;Rn++,zr=gt.next())zr=zn(kr,et,Rn,zr.value,Xt),zr!==null&&(v&&zr.alternate!==null&&kr.delete(zr.key===null?Rn:zr.key),qe=ne(zr,qe,Rn),Zn===null?Dr=zr:Zn.sibling=zr,Zn=zr);return v&&kr.forEach(function(Du){return D(et,Du)}),Dr}return function(et,qe,gt,Xt){var Dr=typeof gt=="object"&>!==null&>.type===E&>.key===null;Dr&&(gt=gt.props.children);var Zn=typeof gt=="object"&>!==null;if(Zn)switch(gt.$$typeof){case p:e:{for(Zn=gt.key,Dr=qe;Dr!==null;){if(Dr.key===Zn){switch(Dr.tag){case 7:if(gt.type===E){Q(et,Dr.sibling),qe=V(Dr,gt.props.children),qe.return=et,et=qe;break e}break;default:if(Dr.elementType===gt.type){Q(et,Dr.sibling),qe=V(Dr,gt.props),qe.ref=yt(et,Dr,gt),qe.return=et,et=qe;break e}}Q(et,Dr);break}else D(et,Dr);Dr=Dr.sibling}gt.type===E?(qe=kf(gt.props.children,et.mode,Xt,gt.key),qe.return=et,et=qe):(Xt=sd(gt.type,gt.key,gt.props,null,et.mode,Xt),Xt.ref=yt(et,qe,gt),Xt.return=et,et=Xt)}return Se(et);case h:e:{for(Dr=gt.key;qe!==null;){if(qe.key===Dr)if(qe.tag===4&&qe.stateNode.containerInfo===gt.containerInfo&&qe.stateNode.implementation===gt.implementation){Q(et,qe.sibling),qe=V(qe,gt.children||[]),qe.return=et,et=qe;break e}else{Q(et,qe);break}else D(et,qe);qe=qe.sibling}qe=Qo(gt,et.mode,Xt),qe.return=et,et=qe}return Se(et)}if(typeof gt=="string"||typeof gt=="number")return gt=""+gt,qe!==null&&qe.tag===6?(Q(et,qe.sibling),qe=V(qe,gt),qe.return=et,et=qe):(Q(et,qe),qe=b2(gt,et.mode,Xt),qe.return=et,et=qe),Se(et);if(mf(gt))return yi(et,qe,gt,Xt);if(Ce(gt))return za(et,qe,gt,Xt);if(Zn&&gu(et,gt),typeof gt>"u"&&!Dr)switch(et.tag){case 1:case 22:case 0:case 11:case 15:throw Error(c(152,g(et.type)||"Component"))}return Q(et,qe)}}var Mg=By(!0),e2=By(!1),vh={},ur=no(vh),zi=no(vh),yf=no(vh);function qa(v){if(v===vh)throw Error(c(174));return v}function Ug(v,D){xn(yf,D),xn(zi,v),xn(ur,vh),v=mt(D),Rt(ur),xn(ur,v)}function du(){Rt(ur),Rt(zi),Rt(yf)}function Ef(v){var D=qa(yf.current),Q=qa(ur.current);D=j(Q,v.type,D),Q!==D&&(xn(zi,v),xn(ur,D))}function wt(v){zi.current===v&&(Rt(ur),Rt(zi))}var di=no(0);function GA(v){for(var D=v;D!==null;){if(D.tag===13){var Q=D.memoizedState;if(Q!==null&&(Q=Q.dehydrated,Q===null||gr(Q)||Bo(Q)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if(D.flags&64)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===v)break;for(;D.sibling===null;){if(D.return===null||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}var Wa=null,Aa=null,Ya=!1;function _g(v,D){var Q=Ka(5,null,null,0);Q.elementType="DELETED",Q.type="DELETED",Q.stateNode=D,Q.return=v,Q.flags=8,v.lastEffect!==null?(v.lastEffect.nextEffect=Q,v.lastEffect=Q):v.firstEffect=v.lastEffect=Q}function Sh(v,D){switch(v.tag){case 5:return D=aa(D,v.type,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 6:return D=FA(D,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function Hg(v){if(Ya){var D=Aa;if(D){var Q=D;if(!Sh(v,D)){if(D=Me(Q),!D||!Sh(v,D)){v.flags=v.flags&-1025|2,Ya=!1,Wa=v;return}_g(Wa,Q)}Wa=v,Aa=cu(D)}else v.flags=v.flags&-1025|2,Ya=!1,Wa=v}}function vy(v){for(v=v.return;v!==null&&v.tag!==5&&v.tag!==3&&v.tag!==13;)v=v.return;Wa=v}function qA(v){if(!X||v!==Wa)return!1;if(!Ya)return vy(v),Ya=!0,!1;var D=v.type;if(v.tag!==5||D!=="head"&&D!=="body"&&!it(D,v.memoizedProps))for(D=Aa;D;)_g(v,D),D=Me(D);if(vy(v),v.tag===13){if(!X)throw Error(c(316));if(v=v.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(c(317));Aa=NA(v)}else Aa=Wa?Me(v.stateNode):null;return!0}function jg(){X&&(Aa=Wa=null,Ya=!1)}var mu=[];function yu(){for(var v=0;vne))throw Error(c(301));ne+=1,Pi=is=null,D.updateQueue=null,If.current=re,v=Q(H,V)}while(Cf)}if(If.current=kt,D=is!==null&&is.next!==null,Eu=0,Pi=is=Gn=null,WA=!1,D)throw Error(c(300));return v}function ss(){var v={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Pi===null?Gn.memoizedState=Pi=v:Pi=Pi.next=v,Pi}function Pl(){if(is===null){var v=Gn.alternate;v=v!==null?v.memoizedState:null}else v=is.next;var D=Pi===null?Gn.memoizedState:Pi.next;if(D!==null)Pi=D,is=v;else{if(v===null)throw Error(c(310));is=v,v={memoizedState:is.memoizedState,baseState:is.baseState,baseQueue:is.baseQueue,queue:is.queue,next:null},Pi===null?Gn.memoizedState=Pi=v:Pi=Pi.next=v}return Pi}function Po(v,D){return typeof D=="function"?D(v):D}function wf(v){var D=Pl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=is,V=H.baseQueue,ne=Q.pending;if(ne!==null){if(V!==null){var Se=V.next;V.next=ne.next,ne.next=Se}H.baseQueue=V=ne,Q.pending=null}if(V!==null){V=V.next,H=H.baseState;var _e=Se=ne=null,pt=V;do{var Wt=pt.lane;if((Eu&Wt)===Wt)_e!==null&&(_e=_e.next={lane:0,action:pt.action,eagerReducer:pt.eagerReducer,eagerState:pt.eagerState,next:null}),H=pt.eagerReducer===v?pt.eagerState:v(H,pt.action);else{var Sr={lane:Wt,action:pt.action,eagerReducer:pt.eagerReducer,eagerState:pt.eagerState,next:null};_e===null?(Se=_e=Sr,ne=H):_e=_e.next=Sr,Gn.lanes|=Wt,Zg|=Wt}pt=pt.next}while(pt!==null&&pt!==V);_e===null?ne=H:_e.next=Se,vo(H,D.memoizedState)||(Je=!0),D.memoizedState=H,D.baseState=ne,D.baseQueue=_e,Q.lastRenderedState=H}return[D.memoizedState,Q.dispatch]}function Bf(v){var D=Pl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=Q.dispatch,V=Q.pending,ne=D.memoizedState;if(V!==null){Q.pending=null;var Se=V=V.next;do ne=v(ne,Se.action),Se=Se.next;while(Se!==V);vo(ne,D.memoizedState)||(Je=!0),D.memoizedState=ne,D.baseQueue===null&&(D.baseState=ne),Q.lastRenderedState=ne}return[ne,H]}function xl(v,D,Q){var H=D._getVersion;H=H(D._source);var V=y?D._workInProgressVersionPrimary:D._workInProgressVersionSecondary;if(V!==null?v=V===H:(v=v.mutableReadLanes,(v=(Eu&v)===v)&&(y?D._workInProgressVersionPrimary=H:D._workInProgressVersionSecondary=H,mu.push(D))),v)return Q(D._source);throw mu.push(D),Error(c(350))}function yn(v,D,Q,H){var V=so;if(V===null)throw Error(c(349));var ne=D._getVersion,Se=ne(D._source),_e=If.current,pt=_e.useState(function(){return xl(V,D,Q)}),Wt=pt[1],Sr=pt[0];pt=Pi;var Lr=v.memoizedState,Zt=Lr.refs,zn=Zt.getSnapshot,yi=Lr.source;Lr=Lr.subscribe;var za=Gn;return v.memoizedState={refs:Zt,source:D,subscribe:H},_e.useEffect(function(){Zt.getSnapshot=Q,Zt.setSnapshot=Wt;var et=ne(D._source);if(!vo(Se,et)){et=Q(D._source),vo(Sr,et)||(Wt(et),et=Bs(za),V.mutableReadLanes|=et&V.pendingLanes),et=V.mutableReadLanes,V.entangledLanes|=et;for(var qe=V.entanglements,gt=et;0Q?98:Q,function(){v(!0)}),li(97m2&&(D.flags|=64,V=!0,XA(H,!1),D.lanes=33554432)}else{if(!V)if(v=GA(ne),v!==null){if(D.flags|=64,V=!0,v=v.updateQueue,v!==null&&(D.updateQueue=v,D.flags|=4),XA(H,!0),H.tail===null&&H.tailMode==="hidden"&&!ne.alternate&&!Ya)return D=D.lastEffect=H.lastEffect,D!==null&&(D.nextEffect=null),null}else 2*bt()-H.renderingStartTime>m2&&Q!==1073741824&&(D.flags|=64,V=!0,XA(H,!1),D.lanes=33554432);H.isBackwards?(ne.sibling=D.child,D.child=ne):(v=H.last,v!==null?v.sibling=ne:D.child=ne,H.last=ne)}return H.tail!==null?(v=H.tail,H.rendering=v,H.tail=v.sibling,H.lastEffect=D.lastEffect,H.renderingStartTime=bt(),v.sibling=null,D=di.current,xn(di,V?D&1|2:D&1),v):null;case 23:case 24:return B2(),v!==null&&v.memoizedState!==null!=(D.memoizedState!==null)&&H.mode!=="unstable-defer-without-hiding"&&(D.flags|=4),null}throw Error(c(156,D.tag))}function qL(v){switch(v.tag){case 1:Kn(v.type)&&Au();var D=v.flags;return D&4096?(v.flags=D&-4097|64,v):null;case 3:if(du(),Rt(Li),Rt(Gi),yu(),D=v.flags,D&64)throw Error(c(285));return v.flags=D&-4097|64,v;case 5:return wt(v),null;case 13:return Rt(di),D=v.flags,D&4096?(v.flags=D&-4097|64,v):null;case 19:return Rt(di),null;case 4:return du(),null;case 10:return Og(v),null;case 23:case 24:return B2(),null;default:return null}}function Yg(v,D){try{var Q="",H=D;do Q+=$1(H),H=H.return;while(H);var V=Q}catch(ne){V=` -Error generating stack: `+ne.message+` -`+ne.stack}return{value:v,source:D,stack:V}}function Vg(v,D){try{console.error(D.value)}catch(Q){setTimeout(function(){throw Q})}}var WL=typeof WeakMap=="function"?WeakMap:Map;function i2(v,D,Q){Q=Dl(-1,Q),Q.tag=3,Q.payload={element:null};var H=D.value;return Q.callback=function(){_y||(_y=!0,y2=H),Vg(v,D)},Q}function Jg(v,D,Q){Q=Dl(-1,Q),Q.tag=3;var H=v.type.getDerivedStateFromError;if(typeof H=="function"){var V=D.value;Q.payload=function(){return Vg(v,D),H(V)}}var ne=v.stateNode;return ne!==null&&typeof ne.componentDidCatch=="function"&&(Q.callback=function(){typeof H!="function"&&(hc===null?hc=new Set([this]):hc.add(this),Vg(v,D));var Se=D.stack;this.componentDidCatch(D.value,{componentStack:Se!==null?Se:""})}),Q}var YL=typeof WeakSet=="function"?WeakSet:Set;function s2(v){var D=v.ref;if(D!==null)if(typeof D=="function")try{D(null)}catch(Q){xf(v,Q)}else D.current=null}function xy(v,D){switch(D.tag){case 0:case 11:case 15:case 22:return;case 1:if(D.flags&256&&v!==null){var Q=v.memoizedProps,H=v.memoizedState;v=D.stateNode,D=v.getSnapshotBeforeUpdate(D.elementType===D.type?Q:So(D.type,Q),H),v.__reactInternalSnapshotBeforeUpdate=D}return;case 3:F&&D.flags&256&&Ts(D.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(c(163))}function Th(v,D){if(D=D.updateQueue,D=D!==null?D.lastEffect:null,D!==null){var Q=D=D.next;do{if((Q.tag&v)===v){var H=Q.destroy;Q.destroy=void 0,H!==void 0&&H()}Q=Q.next}while(Q!==D)}}function uP(v,D,Q){switch(Q.tag){case 0:case 11:case 15:case 22:if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{if((v.tag&3)===3){var H=v.create;v.destroy=H()}v=v.next}while(v!==D)}if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{var V=v;H=V.next,V=V.tag,V&4&&V&1&&(vP(Q,v),tM(Q,v)),v=H}while(v!==D)}return;case 1:v=Q.stateNode,Q.flags&4&&(D===null?v.componentDidMount():(H=Q.elementType===Q.type?D.memoizedProps:So(Q.type,D.memoizedProps),v.componentDidUpdate(H,D.memoizedState,v.__reactInternalSnapshotBeforeUpdate))),D=Q.updateQueue,D!==null&&Cy(Q,D,v);return;case 3:if(D=Q.updateQueue,D!==null){if(v=null,Q.child!==null)switch(Q.child.tag){case 5:v=Re(Q.child.stateNode);break;case 1:v=Q.child.stateNode}Cy(Q,D,v)}return;case 5:v=Q.stateNode,D===null&&Q.flags&4&&$s(v,Q.type,Q.memoizedProps,Q);return;case 6:return;case 4:return;case 12:return;case 13:X&&Q.memoizedState===null&&(Q=Q.alternate,Q!==null&&(Q=Q.memoizedState,Q!==null&&(Q=Q.dehydrated,Q!==null&&uu(Q))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(c(163))}function fP(v,D){if(F)for(var Q=v;;){if(Q.tag===5){var H=Q.stateNode;D?dh(H):to(Q.stateNode,Q.memoizedProps)}else if(Q.tag===6)H=Q.stateNode,D?mh(H):jn(H,Q.memoizedProps);else if((Q.tag!==23&&Q.tag!==24||Q.memoizedState===null||Q===v)&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===v)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===v)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}}function ky(v,D){if(Ua&&typeof Ua.onCommitFiberUnmount=="function")try{Ua.onCommitFiberUnmount($e,D)}catch{}switch(D.tag){case 0:case 11:case 14:case 15:case 22:if(v=D.updateQueue,v!==null&&(v=v.lastEffect,v!==null)){var Q=v=v.next;do{var H=Q,V=H.destroy;if(H=H.tag,V!==void 0)if(H&4)vP(D,Q);else{H=D;try{V()}catch(ne){xf(H,ne)}}Q=Q.next}while(Q!==v)}break;case 1:if(s2(D),v=D.stateNode,typeof v.componentWillUnmount=="function")try{v.props=D.memoizedProps,v.state=D.memoizedState,v.componentWillUnmount()}catch(ne){xf(D,ne)}break;case 5:s2(D);break;case 4:F?gP(v,D):z&&z&&(D=D.stateNode.containerInfo,v=ou(D),TA(D,v))}}function AP(v,D){for(var Q=D;;)if(ky(v,Q),Q.child===null||F&&Q.tag===4){if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}else Q.child.return=Q,Q=Q.child}function Qy(v){v.alternate=null,v.child=null,v.dependencies=null,v.firstEffect=null,v.lastEffect=null,v.memoizedProps=null,v.memoizedState=null,v.pendingProps=null,v.return=null,v.updateQueue=null}function pP(v){return v.tag===5||v.tag===3||v.tag===4}function hP(v){if(F){e:{for(var D=v.return;D!==null;){if(pP(D))break e;D=D.return}throw Error(c(160))}var Q=D;switch(D=Q.stateNode,Q.tag){case 5:var H=!1;break;case 3:D=D.containerInfo,H=!0;break;case 4:D=D.containerInfo,H=!0;break;default:throw Error(c(161))}Q.flags&16&&(Af(D),Q.flags&=-17);e:t:for(Q=v;;){for(;Q.sibling===null;){if(Q.return===null||pP(Q.return)){Q=null;break e}Q=Q.return}for(Q.sibling.return=Q.return,Q=Q.sibling;Q.tag!==5&&Q.tag!==6&&Q.tag!==18;){if(Q.flags&2||Q.child===null||Q.tag===4)continue t;Q.child.return=Q,Q=Q.child}if(!(Q.flags&2)){Q=Q.stateNode;break e}}H?o2(v,Q,D):a2(v,Q,D)}}function o2(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?eo(Q,v,D):Io(Q,v);else if(H!==4&&(v=v.child,v!==null))for(o2(v,D,Q),v=v.sibling;v!==null;)o2(v,D,Q),v=v.sibling}function a2(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?ji(Q,v,D):ai(Q,v);else if(H!==4&&(v=v.child,v!==null))for(a2(v,D,Q),v=v.sibling;v!==null;)a2(v,D,Q),v=v.sibling}function gP(v,D){for(var Q=D,H=!1,V,ne;;){if(!H){H=Q.return;e:for(;;){if(H===null)throw Error(c(160));switch(V=H.stateNode,H.tag){case 5:ne=!1;break e;case 3:V=V.containerInfo,ne=!0;break e;case 4:V=V.containerInfo,ne=!0;break e}H=H.return}H=!0}if(Q.tag===5||Q.tag===6)AP(v,Q),ne?QA(V,Q.stateNode):wo(V,Q.stateNode);else if(Q.tag===4){if(Q.child!==null){V=Q.stateNode.containerInfo,ne=!0,Q.child.return=Q,Q=Q.child;continue}}else if(ky(v,Q),Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return,Q.tag===4&&(H=!1)}Q.sibling.return=Q.return,Q=Q.sibling}}function l2(v,D){if(F){switch(D.tag){case 0:case 11:case 14:case 15:case 22:Th(3,D);return;case 1:return;case 5:var Q=D.stateNode;if(Q!=null){var H=D.memoizedProps;v=v!==null?v.memoizedProps:H;var V=D.type,ne=D.updateQueue;D.updateQueue=null,ne!==null&&Co(Q,ne,V,v,H,D)}return;case 6:if(D.stateNode===null)throw Error(c(162));Q=D.memoizedProps,rs(D.stateNode,v!==null?v.memoizedProps:Q,Q);return;case 3:X&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,OA(D.containerInfo)));return;case 12:return;case 13:dP(D),Kg(D);return;case 19:Kg(D);return;case 17:return;case 23:case 24:fP(D,D.memoizedState!==null);return}throw Error(c(163))}switch(D.tag){case 0:case 11:case 14:case 15:case 22:Th(3,D);return;case 12:return;case 13:dP(D),Kg(D);return;case 19:Kg(D);return;case 3:X&&(Q=D.stateNode,Q.hydrate&&(Q.hydrate=!1,OA(Q.containerInfo)));break;case 23:case 24:return}e:if(z){switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,TA(D.containerInfo,D.pendingChildren);break e}throw Error(c(163))}}function dP(v){v.memoizedState!==null&&(d2=bt(),F&&fP(v.child,!0))}function Kg(v){var D=v.updateQueue;if(D!==null){v.updateQueue=null;var Q=v.stateNode;Q===null&&(Q=v.stateNode=new YL),D.forEach(function(H){var V=nM.bind(null,v,H);Q.has(H)||(Q.add(H),H.then(V,V))})}}function VL(v,D){return v!==null&&(v=v.memoizedState,v===null||v.dehydrated!==null)?(D=D.memoizedState,D!==null&&D.dehydrated===null):!1}var Ty=0,Ry=1,Fy=2,zg=3,Ny=4;if(typeof Symbol=="function"&&Symbol.for){var Xg=Symbol.for;Ty=Xg("selector.component"),Ry=Xg("selector.has_pseudo_class"),Fy=Xg("selector.role"),zg=Xg("selector.test_id"),Ny=Xg("selector.text")}function Oy(v){var D=$(v);if(D!=null){if(typeof D.memoizedProps["data-testname"]!="string")throw Error(c(364));return D}if(v=ir(v),v===null)throw Error(c(362));return v.stateNode.current}function Sf(v,D){switch(D.$$typeof){case Ty:if(v.type===D.value)return!0;break;case Ry:e:{D=D.value,v=[v,0];for(var Q=0;Q";case Ry:return":has("+(Df(v)||"")+")";case Fy:return'[role="'+v.value+'"]';case Ny:return'"'+v.value+'"';case zg:return'[data-testname="'+v.value+'"]';default:throw Error(c(365,v))}}function c2(v,D){var Q=[];v=[v,0];for(var H=0;HV&&(V=Se),Q&=~ne}if(Q=V,Q=bt()-Q,Q=(120>Q?120:480>Q?480:1080>Q?1080:1920>Q?1920:3e3>Q?3e3:4320>Q?4320:1960*KL(Q/1960))-Q,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}ws!==5&&(ws=2),pt=Yg(pt,_e),Zt=Se;do{switch(Zt.tag){case 3:ne=pt,Zt.flags|=4096,D&=-D,Zt.lanes|=D;var Zn=i2(Zt,ne,D);Iy(Zt,Zn);break e;case 1:ne=pt;var kr=Zt.type,Rn=Zt.stateNode;if(!(Zt.flags&64)&&(typeof kr.getDerivedStateFromError=="function"||Rn!==null&&typeof Rn.componentDidCatch=="function"&&(hc===null||!hc.has(Rn)))){Zt.flags|=4096,D&=-D,Zt.lanes|=D;var _n=Jg(Zt,ne,D);Iy(Zt,_n);break e}}Zt=Zt.return}while(Zt!==null)}BP(Q)}catch(zr){D=zr,Xi===Q&&Q!==null&&(Xi=Q=Q.return);continue}break}while(!0)}function CP(){var v=My.current;return My.current=kt,v===null?kt:v}function id(v,D){var Q=xr;xr|=16;var H=CP();so===v&&Ns===D||Oh(v,D);do try{XL();break}catch(V){IP(v,V)}while(!0);if(Fg(),xr=Q,My.current=H,Xi!==null)throw Error(c(261));return so=null,Ns=0,ws}function XL(){for(;Xi!==null;)wP(Xi)}function ZL(){for(;Xi!==null&&!vl();)wP(Xi)}function wP(v){var D=bP(v.alternate,v,ZA);v.memoizedProps=v.pendingProps,D===null?BP(v):Xi=D,f2.current=null}function BP(v){var D=v;do{var Q=D.alternate;if(v=D.return,D.flags&2048){if(Q=qL(D),Q!==null){Q.flags&=2047,Xi=Q;return}v!==null&&(v.firstEffect=v.lastEffect=null,v.flags|=2048)}else{if(Q=jL(Q,D,ZA),Q!==null){Xi=Q;return}if(Q=D,Q.tag!==24&&Q.tag!==23||Q.memoizedState===null||ZA&1073741824||!(Q.mode&4)){for(var H=0,V=Q.child;V!==null;)H|=V.lanes|V.childLanes,V=V.sibling;Q.childLanes=H}v!==null&&!(v.flags&2048)&&(v.firstEffect===null&&(v.firstEffect=D.firstEffect),D.lastEffect!==null&&(v.lastEffect!==null&&(v.lastEffect.nextEffect=D.firstEffect),v.lastEffect=D.lastEffect),1bt()-d2?Oh(v,0):h2|=Q),ga(v,D)}function nM(v,D){var Q=v.stateNode;Q!==null&&Q.delete(D),D=0,D===0&&(D=v.mode,D&2?D&4?(Bu===0&&(Bu=Rh),D=kn(62914560&~Bu),D===0&&(D=4194304)):D=tr()===99?1:2:D=1),Q=ko(),v=Gy(v,D),v!==null&&(Ha(v,D,Q),ga(v,Q))}var bP;bP=function(v,D,Q){var H=D.lanes;if(v!==null)if(v.memoizedProps!==D.pendingProps||Li.current)Je=!0;else if(Q&H)Je=!!(v.flags&16384);else{switch(Je=!1,D.tag){case 3:by(D),jg();break;case 5:Ef(D);break;case 1:Kn(D.type)&&La(D);break;case 4:Ug(D,D.stateNode.containerInfo);break;case 10:Ng(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return Q&D.child.childLanes?r2(v,D,Q):(xn(di,di.current&1),D=qn(v,D,Q),D!==null?D.sibling:null);xn(di,di.current&1);break;case 19:if(H=(Q&D.childLanes)!==0,v.flags&64){if(H)return cP(v,D,Q);D.flags|=64}var V=D.memoizedState;if(V!==null&&(V.rendering=null,V.tail=null,V.lastEffect=null),xn(di,di.current),H)break;return null;case 23:case 24:return D.lanes=0,mi(v,D,Q)}return qn(v,D,Q)}else Je=!1;switch(D.lanes=0,D.tag){case 2:if(H=D.type,v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,V=dn(D,Gi.current),df(D,Q),V=qg(null,D,H,v,V,Q),D.flags|=1,typeof V=="object"&&V!==null&&typeof V.render=="function"&&V.$$typeof===void 0){if(D.tag=1,D.memoizedState=null,D.updateQueue=null,Kn(H)){var ne=!0;La(D)}else ne=!1;D.memoizedState=V.state!==null&&V.state!==void 0?V.state:null,Bh(D);var Se=H.getDerivedStateFromProps;typeof Se=="function"&&_A(D,H,Se,v),V.updater=HA,D.stateNode=V,V._reactInternals=D,bo(D,H,v,Q),D=t2(null,D,H,!0,ne,Q)}else D.tag=0,At(null,D,V,Q),D=D.child;return D;case 16:V=D.elementType;e:{switch(v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,ne=V._init,V=ne(V._payload),D.type=V,ne=D.tag=sM(V),v=So(V,v),ne){case 0:D=JA(null,D,V,v,Q);break e;case 1:D=lP(null,D,V,v,Q);break e;case 11:D=dr(null,D,V,v,Q);break e;case 14:D=vr(null,D,V,So(V.type,v),H,Q);break e}throw Error(c(306,V,""))}return D;case 0:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:So(H,V),JA(v,D,H,V,Q);case 1:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:So(H,V),lP(v,D,H,V,Q);case 3:if(by(D),H=D.updateQueue,v===null||H===null)throw Error(c(282));if(H=D.pendingProps,V=D.memoizedState,V=V!==null?V.element:null,Lg(v,D),UA(D,H,null,Q),H=D.memoizedState.element,H===V)jg(),D=qn(v,D,Q);else{if(V=D.stateNode,(ne=V.hydrate)&&(X?(Aa=cu(D.stateNode.containerInfo),Wa=D,ne=Ya=!0):ne=!1),ne){if(X&&(v=V.mutableSourceEagerHydrationData,v!=null))for(V=0;V=Wt&&ne>=Lr&&V<=Sr&&Se<=Zt){v.splice(D,1);break}else if(H!==Wt||Q.width!==pt.width||ZtSe){if(!(ne!==Lr||Q.height!==pt.height||SrV)){Wt>H&&(pt.width+=Wt-H,pt.x=H),Srne&&(pt.height+=Lr-ne,pt.y=ne),ZtQ&&(Q=Se)),Se ")+` - -No matching component was found for: - `)+v.join(" > ")}return null},r.getPublicRootInstance=function(v){if(v=v.current,!v.child)return null;switch(v.child.tag){case 5:return Re(v.child.stateNode);default:return v.child.stateNode}},r.injectIntoDevTools=function(v){if(v={bundleType:v.bundleType,version:v.version,rendererPackageName:v.rendererPackageName,rendererConfig:v.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:f.ReactCurrentDispatcher,findHostInstanceByFiber:aM,findFiberByHostInstance:v.findFiberByHostInstance||lM,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")v=!1;else{var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!D.isDisabled&&D.supportsFiber)try{$e=D.inject(v),Ua=D}catch{}v=!0}return v},r.observeVisibleRects=function(v,D,Q,H){if(!qt)throw Error(c(363));v=u2(v,D);var V=on(v,Q,H).disconnect;return{disconnect:function(){V()}}},r.registerMutableSourceForHydration=function(v,D){var Q=D._getVersion;Q=Q(D._source),v.mutableSourceEagerHydrationData==null?v.mutableSourceEagerHydrationData=[D,Q]:v.mutableSourceEagerHydrationData.push(D,Q)},r.runWithPriority=function(v,D){var Q=lc;try{return lc=v,D()}finally{lc=Q}},r.shouldSuspend=function(){return!1},r.unbatchedUpdates=function(v,D){var Q=xr;xr&=-2,xr|=8;try{return v(D)}finally{xr=Q,xr===0&&(bf(),Tn())}},r.updateContainer=function(v,D,Q,H){var V=D.current,ne=ko(),Se=Bs(V);e:if(Q){Q=Q._reactInternals;t:{if(we(Q)!==Q||Q.tag!==1)throw Error(c(170));var _e=Q;do{switch(_e.tag){case 3:_e=_e.stateNode.context;break t;case 1:if(Kn(_e.type)){_e=_e.stateNode.__reactInternalMemoizedMergedChildContext;break t}}_e=_e.return}while(_e!==null);throw Error(c(171))}if(Q.tag===1){var pt=Q.type;if(Kn(pt)){Q=Oa(Q,pt,_e);break e}}Q=_e}else Q=la;return D.context===null?D.context=Q:D.pendingContext=Q,D=Dl(ne,Se),D.payload={element:v},H=H===void 0?null:H,H!==null&&(D.callback=H),bl(V,D),Tl(V,Se,ne),Se},r}});var Swe=_((vKt,vwe)=>{"use strict";vwe.exports=Bwe()});var bwe=_((SKt,Dwe)=>{"use strict";var Spt={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};Dwe.exports=Spt});var Qwe=_((DKt,kwe)=>{"use strict";var Dpt=Object.assign||function(t){for(var e=1;e"}}]),t}(),Pwe=function(){FF(t,null,[{key:"fromJS",value:function(r){var s=r.width,a=r.height;return new t(s,a)}}]);function t(e,r){J9(this,t),this.width=e,this.height=r}return FF(t,[{key:"fromJS",value:function(r){r(this.width,this.height)}},{key:"toString",value:function(){return""}}]),t}(),xwe=function(){function t(e,r){J9(this,t),this.unit=e,this.value=r}return FF(t,[{key:"fromJS",value:function(r){r(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case tf.UNIT_POINT:return String(this.value);case tf.UNIT_PERCENT:return this.value+"%";case tf.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),t}();kwe.exports=function(t,e){function r(c,f,p){var h=c[f];c[f]=function(){for(var E=arguments.length,C=Array(E),S=0;S1?C-1:0),P=1;P1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:tf.DIRECTION_LTR;return c.call(this,f,p,h)}),Dpt({Config:e.Config,Node:e.Node,Layout:t("Layout",bpt),Size:t("Size",Pwe),Value:t("Value",xwe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},tf)}});var Twe=_((exports,module)=>{(function(t,e){typeof define=="function"&&define.amd?define([],function(){return e}):typeof module=="object"&&module.exports?module.exports=e:(t.nbind=t.nbind||{}).init=e})(exports,function(Module,cb){typeof Module=="function"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(t,e){return function(){t&&t.apply(this,arguments);try{Module.ccall("nbind_init")}catch(r){e(r);return}e(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<"u"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT==="WEB")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT==="WORKER")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT==="NODE")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT==="SHELL")ENVIRONMENT_IS_SHELL=!0;else throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof Ie=="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(e,r){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),e=nodePath.normalize(e);var s=nodeFS.readFileSync(e);return r?s:s.toString()},Module.readBinary=function(e){var r=Module.read(e,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),typeof module<"u"&&(module.exports=Module),Module.inspect=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<"u"&&(Module.printErr=printErr),typeof read<"u"?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(e){if(typeof readbuffer=="function")return new Uint8Array(readbuffer(e));var r=read(e,"binary");return assert(typeof r=="object"),r},typeof scriptArgs<"u"?Module.arguments=scriptArgs:typeof arguments<"u"&&(Module.arguments=arguments),typeof quit=="function"&&(Module.quit=function(t,e){quit(t)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,s){var a=new XMLHttpRequest;a.open("GET",e,!0),a.responseType="arraybuffer",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):s()},a.onerror=s,a.send(null)},typeof arguments<"u"&&(Module.arguments=arguments),typeof console<"u")Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<"u"?function(t){dump(t)}:function(t){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>"u"&&(Module.setWindowTitle=function(t){document.title=t})}else throw"Unknown runtime environment. Where are we?";function globalEval(t){eval.call(null,t)}!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(t,e){throw e}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(t){return tempRet0=t,t},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(t){STACKTOP=t},getNativeTypeSize:function(t){switch(t){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(t[t.length-1]==="*")return Runtime.QUANTUM_SIZE;if(t[0]==="i"){var e=parseInt(t.substr(1));return assert(e%8===0),e/8}else return 0}}},getNativeFieldSize:function(t){return Math.max(Runtime.getNativeTypeSize(t),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(t,e){return e==="double"||e==="i64"?t&7&&(assert((t&7)===4),t+=4):assert((t&3)===0),t},getAlignSize:function(t,e,r){return!r&&(t=="i64"||t=="double")?8:t?Math.min(e||(t?Runtime.getNativeFieldSize(t):0),Runtime.QUANTUM_SIZE):Math.min(e,8)},dynCall:function(t,e,r){return r&&r.length?Module["dynCall_"+t].apply(null,[e].concat(r)):Module["dynCall_"+t].call(null,e)},functionPointers:[],addFunction:function(t){for(var e=0;e>2],r=(e+t+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var s=enlargeMemory();if(!s)return HEAP32[DYNAMICTOP_PTR>>2]=e,0}return e},alignMemory:function(t,e){var r=t=Math.ceil(t/(e||16))*(e||16);return r},makeBigInt:function(t,e,r){var s=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return s},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(t,e){t||abort("Assertion failed: "+e)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(t){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(t){var e=Runtime.stackAlloc(t.length);return writeArrayToMemory(t,e),e},stringToC:function(t){var e=0;if(t!=null&&t!==0){var r=(t.length<<2)+1;e=Runtime.stackAlloc(r),stringToUTF8(t,e,r)}return e}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,s,a,n){var c=getCFunc(e),f=[],p=0;if(a)for(var h=0;h>0]=e;break;case"i8":HEAP8[t>>0]=e;break;case"i16":HEAP16[t>>1]=e;break;case"i32":HEAP32[t>>2]=e;break;case"i64":tempI64=[e>>>0,(tempDouble=e,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1];break;case"float":HEAPF32[t>>2]=e;break;case"double":HEAPF64[t>>3]=e;break;default:abort("invalid type for setValue: "+r)}}Module.setValue=setValue;function getValue(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return HEAP8[t>>0];case"i8":return HEAP8[t>>0];case"i16":return HEAP16[t>>1];case"i32":return HEAP32[t>>2];case"i64":return HEAP32[t>>2];case"float":return HEAPF32[t>>2];case"double":return HEAPF64[t>>3];default:abort("invalid type for setValue: "+e)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(t,e,r,s){var a,n;typeof t=="number"?(a=!0,n=t):(a=!1,n=t.length);var c=typeof e=="string"?e:null,f;if(r==ALLOC_NONE?f=s:f=[typeof _malloc=="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,c?1:e.length)),a){var s=f,p;for(assert((f&3)==0),p=f+(n&-4);s>2]=0;for(p=f+n;s>0]=0;return f}if(c==="i8")return t.subarray||t.slice?HEAPU8.set(t,f):HEAPU8.set(new Uint8Array(t),f),f;for(var h=0,E,C,S;h>0],r|=s,!(s==0&&!e||(a++,e&&a==e)););e||(e=a);var n="";if(r<128){for(var c=1024,f;e>0;)f=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,c))),n=n?n+f:f,t+=c,e-=c;return n}return Module.UTF8ToString(t)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(t){for(var e="";;){var r=HEAP8[t++>>0];if(!r)return e;e+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(t,e){return writeAsciiToMemory(t,e,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(t,e){for(var r=e;t[r];)++r;if(r-e>16&&t.subarray&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var s,a,n,c,f,p,h="";;){if(s=t[e++],!s)return h;if(!(s&128)){h+=String.fromCharCode(s);continue}if(a=t[e++]&63,(s&224)==192){h+=String.fromCharCode((s&31)<<6|a);continue}if(n=t[e++]&63,(s&240)==224?s=(s&15)<<12|a<<6|n:(c=t[e++]&63,(s&248)==240?s=(s&7)<<18|a<<12|n<<6|c:(f=t[e++]&63,(s&252)==248?s=(s&3)<<24|a<<18|n<<12|c<<6|f:(p=t[e++]&63,s=(s&1)<<30|a<<24|n<<18|c<<12|f<<6|p))),s<65536)h+=String.fromCharCode(s);else{var E=s-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(t){return UTF8ArrayToString(HEAPU8,t)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(t,e,r,s){if(!(s>0))return 0;for(var a=r,n=r+s-1,c=0;c=55296&&f<=57343&&(f=65536+((f&1023)<<10)|t.charCodeAt(++c)&1023),f<=127){if(r>=n)break;e[r++]=f}else if(f<=2047){if(r+1>=n)break;e[r++]=192|f>>6,e[r++]=128|f&63}else if(f<=65535){if(r+2>=n)break;e[r++]=224|f>>12,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=2097151){if(r+3>=n)break;e[r++]=240|f>>18,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=67108863){if(r+4>=n)break;e[r++]=248|f>>24,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else{if(r+5>=n)break;e[r++]=252|f>>30,e[r++]=128|f>>24&63,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}}return e[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(t,e,r){return stringToUTF8Array(t,HEAPU8,e,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(t){for(var e=0,r=0;r=55296&&s<=57343&&(s=65536+((s&1023)<<10)|t.charCodeAt(++r)&1023),s<=127?++e:s<=2047?e+=2:s<=65535?e+=3:s<=2097151?e+=4:s<=67108863?e+=5:e+=6}return e}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function demangle(t){var e=Module.___cxa_demangle||Module.__cxa_demangle;if(e){try{var r=t.substr(1),s=lengthBytesUTF8(r)+1,a=_malloc(s);stringToUTF8(r,a,s);var n=_malloc(4),c=e(a,0,0,n);if(getValue(n,"i32")===0&&c)return Pointer_stringify(c)}catch{}finally{a&&_free(a),n&&_free(n),c&&_free(c)}return t}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),t}function demangleAll(t){var e=/__Z[\w\d_]+/g;return t.replace(e,function(r){var s=demangle(r);return r===s?r:r+" ["+s+"]"})}function jsStackTrace(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return"(no stack trace available)"}return t.stack.toString()}function stackTrace(){var t=jsStackTrace();return Module.extraStackTrace&&(t+=` -`+Module.extraStackTrace()),demangleAll(t)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY0;){var e=t.shift();if(typeof e=="function"){e();continue}var r=e.func;typeof r=="number"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var s=r>0?r:lengthBytesUTF8(t)+1,a=new Array(s),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r255&&(s&=255),e.push(String.fromCharCode(s))}return e.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var s,a;r&&(a=e+lengthBytesUTF8(t),s=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=s)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var s=0;s>0]=t.charCodeAt(s);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var s=e>>>16,a=e&65535,n=r>>>16,c=r&65535;return a*c+(s*c+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}function addRunDependency(t){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(t,e,r,s,a,n,c,f){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,s,a,n,c,f){return ASM_CONSTS[t](e,r,s,a,n,c,f)}function _emscripten_asm_const_iiiii(t,e,r,s,a){return ASM_CONSTS[t](e,r,s,a)}function _emscripten_asm_const_iiidddddd(t,e,r,s,a,n,c,f,p){return ASM_CONSTS[t](e,r,s,a,n,c,f,p)}function _emscripten_asm_const_iiididi(t,e,r,s,a,n,c){return ASM_CONSTS[t](e,r,s,a,n,c)}function _emscripten_asm_const_iiii(t,e,r,s){return ASM_CONSTS[t](e,r,s)}function _emscripten_asm_const_iiiid(t,e,r,s,a){return ASM_CONSTS[t](e,r,s,a)}function _emscripten_asm_const_iiiiii(t,e,r,s,a,n){return ASM_CONSTS[t](e,r,s,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,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,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,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,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,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,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,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,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,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,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,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,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,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,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,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,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,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,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,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,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,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,18,0,0,0,18,18,18,0,0,0,0,0,0,9,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,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,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,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(t,e){__ATEXIT__.unshift({func:t,arg:e})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(t,e,r,s){var a=arguments.length,n=a<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,r):s,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(t,e,r,s);else for(var f=t.length-1;f>=0;f--)(c=t[f])&&(n=(a<3?c(n):a>3?c(e,r,n):c(e,r))||n);return a>3&&n&&Object.defineProperty(e,r,n),n}function _defineHidden(t){return function(e,r){Object.defineProperty(e,r,{configurable:!1,enumerable:!1,value:t,writable:!0})}}var _nbind={};function __nbind_free_external(t){_nbind.externalList[t].dereference(t)}function __nbind_reference_external(t){_nbind.externalList[t].reference()}function _llvm_stackrestore(t){var e=_llvm_stacksave,r=e.LLVM_SAVEDSTACKS[t];e.LLVM_SAVEDSTACKS.splice(t,1),Runtime.stackRestore(r)}function __nbind_register_pool(t,e,r,s){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=s/4,HEAP32[e/4]=16909060,HEAP8[e]==1&&(_nbind.bigEndian=!0),HEAP32[e/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(t,e){if(Browser.mainLoop.timingMode=t,Browser.mainLoop.timingValue=e,!Browser.mainLoop.func)return 1;if(t==0)Browser.mainLoop.scheduler=function(){var c=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,c)},Browser.mainLoop.method="timeout";else if(t==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(t==2){if(!window.setImmediate){let n=function(c){c.source===window&&c.data===s&&(c.stopPropagation(),r.shift()())};var a=n,r=[],s="setimmediate";window.addEventListener("message",n,!0),window.setImmediate=function(f){r.push(f),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(f),window.postMessage({target:s})):window.postMessage(s,"*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(t,e,r,s,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=t,Browser.mainLoop.arg=s;var n;typeof s<"u"?n=function(){Module.dynCall_vi(t,s)}:n=function(){Module.dynCall_v(t)};var c=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,C=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=C:(C=C+.5,Browser.mainLoop.remainingBlockers=(8*E+C)/9)}if(console.log('main loop blocker "'+h.name+'" took '+(Date.now()-p)+" ms"),Browser.mainLoop.updateStatus(),c1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method==="timeout"&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(n),!(c0?_emscripten_set_main_loop_timing(0,1e3/e):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var t=Browser.mainLoop.timingMode,e=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(t,e),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var t=Module.statusMessage||"Please wait...",e=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;e?e"u"&&(console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."),Module.noImageDecoding=!0);var t={};t.canHandle=function(n){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(n)},t.handle=function(n,c,f,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(c)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(c)}))}catch(P){Runtime.warnOnce("Blob constructor present but fails: "+P+"; falling back to blob builder")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var C=Browser.URLObject.createObjectURL(h),S=new Image;S.onload=function(){assert(S.complete,"Image "+c+" could not be decoded");var I=document.createElement("canvas");I.width=S.width,I.height=S.height;var R=I.getContext("2d");R.drawImage(S,0,0),Module.preloadedImages[c]=I,Browser.URLObject.revokeObjectURL(C),f&&f(n)},S.onerror=function(I){console.log("Image "+C+" could not be decoded"),p&&p()},S.src=C},Module.preloadPlugins.push(t);var e={};e.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},e.handle=function(n,c,f,p){var h=!1;function E(R){h||(h=!0,Module.preloadedAudios[c]=R,f&&f(n))}function C(){h||(h=!0,Module.preloadedAudios[c]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var S=new Blob([n],{type:Browser.getMimetype(c)})}catch{return C()}var P=Browser.URLObject.createObjectURL(S),I=new Audio;I.addEventListener("canplaythrough",function(){E(I)},!1),I.onerror=function(N){if(h)return;console.log("warning: browser could not fully decode audio "+c+", trying slower base64 approach");function U(W){for(var ee="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ie="=",ue="",le=0,me=0,pe=0;pe=6;){var Be=le>>me-6&63;me-=6,ue+=ee[Be]}return me==2?(ue+=ee[(le&3)<<4],ue+=ie+ie):me==4&&(ue+=ee[(le&15)<<2],ue+=ie),ue}I.src="data:audio/x-"+c.substr(-3)+";base64,"+U(n),E(I)},I.src=P,Browser.safeSetTimeout(function(){E(I)},1e4)}else return C()},Module.preloadPlugins.push(e);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var s=Module.canvas;s&&(s.requestPointerLock=s.requestPointerLock||s.mozRequestPointerLock||s.webkitRequestPointerLock||s.msRequestPointerLock||function(){},s.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},s.exitPointerLock=s.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",r,!1),document.addEventListener("mozpointerlockchange",r,!1),document.addEventListener("webkitpointerlockchange",r,!1),document.addEventListener("mspointerlockchange",r,!1),Module.elementPointerLock&&s.addEventListener("click",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,s){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var c={antialias:!1,alpha:!1};if(s)for(var f in s)c[f]=s[f];n=GL.createContext(t,c),n&&(a=GL.getContext(n).GLctx)}else a=t.getContext("2d");return a?(r&&(e||assert(typeof GLctx>"u","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=a,e&&GL.makeContextCurrent(n),Module.useWebGL=e,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(t,e,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(t,e,r){Browser.lockPointer=t,Browser.resizeCanvas=e,Browser.vrDevice=r,typeof Browser.lockPointer>"u"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>"u"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>"u"&&(Browser.vrDevice=null);var s=Module.canvas;function a(){Browser.isFullscreen=!1;var c=s.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===c?(s.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},s.exitFullscreen=s.exitFullscreen.bind(document),Browser.lockPointer&&s.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(c.parentNode.insertBefore(s,c),c.parentNode.removeChild(c),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(s)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",a,!1),document.addEventListener("mozfullscreenchange",a,!1),document.addEventListener("webkitfullscreenchange",a,!1),document.addEventListener("MSFullscreenChange",a,!1));var n=document.createElement("div");s.parentNode.insertBefore(n,s),n.appendChild(s),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(t,e,r){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(s,a,n){return Browser.requestFullscreen(s,a,n)},Browser.requestFullscreen(t,e,r)},nextRAF:0,fakeRequestAnimationFrame:function(t){var e=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=e+1e3/60;else for(;e+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-e,0);setTimeout(t,r)},requestAnimationFrame:function t(e){typeof window>"u"?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(t){return function(){if(!ABORT)return t.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var t=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],t.forEach(function(e){e()})}},safeRequestAnimationFrame:function(t){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))})},safeSetTimeout:function(t,e){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))},e)},safeSetInterval:function(t,e){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&t()},e)},getMimetype:function(t){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[t.substr(t.lastIndexOf(".")+1)]},getUserMedia:function(t){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(t)},getMovementX:function(t){return t.movementX||t.mozMovementX||t.webkitMovementX||0},getMovementY:function(t){return t.movementY||t.mozMovementY||t.webkitMovementY||0},getMouseWheelDelta:function(t){var e=0;switch(t.type){case"DOMMouseScroll":e=t.detail;break;case"mousewheel":e=t.wheelDelta;break;case"wheel":e=t.deltaY;break;default:throw"unrecognized mouse wheel event: "+t.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(t){if(Browser.pointerLock)t.type!="mousemove"&&"mozMovementX"in t?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(t),Browser.mouseMovementY=Browser.getMovementY(t)),typeof SDL<"u"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var e=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,s=Module.canvas.height,a=typeof window.scrollX<"u"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<"u"?window.scrollY:window.pageYOffset;if(t.type==="touchstart"||t.type==="touchend"||t.type==="touchmove"){var c=t.touch;if(c===void 0)return;var f=c.pageX-(a+e.left),p=c.pageY-(n+e.top);f=f*(r/e.width),p=p*(s/e.height);var h={x:f,y:p};if(t.type==="touchstart")Browser.lastTouches[c.identifier]=h,Browser.touches[c.identifier]=h;else if(t.type==="touchend"||t.type==="touchmove"){var E=Browser.touches[c.identifier];E||(E=h),Browser.lastTouches[c.identifier]=E,Browser.touches[c.identifier]=h}return}var C=t.pageX-(a+e.left),S=t.pageY-(n+e.top);C=C*(r/e.width),S=S*(s/e.height),Browser.mouseMovementX=C-Browser.mouseX,Browser.mouseMovementY=S-Browser.mouseY,Browser.mouseX=C,Browser.mouseY=S}},asyncLoad:function(t,e,r,s){var a=s?"":"al "+t;Module.readAsync(t,function(n){assert(n,'Loading data file "'+t+'" failed (no arrayBuffer).'),e(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file "'+t+'" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var t=Module.canvas;Browser.resizeListeners.forEach(function(e){e(t.width,t.height)})},setCanvasSize:function(t,e,r){var s=Module.canvas;Browser.updateCanvasDimensions(s,t,e),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},updateCanvasDimensions:function(t,e,r){e&&r?(t.widthNative=e,t.heightNative=r):(e=t.widthNative,r=t.heightNative);var s=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(s/a>2];return e},getStr:function(){var t=Pointer_stringify(SYSCALLS.get());return t},get64:function(){var t=SYSCALLS.get(),e=SYSCALLS.get();return t>=0?assert(e===0):assert(e===-1),t},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(s){return(typeof FS>"u"||!(s instanceof FS.ErrnoError))&&abort(s),-s.errno}}function ___syscall54(t,e){SYSCALLS.varargs=e;try{return 0}catch(r){return(typeof FS>"u"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(t){var e=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr"],[640,1,"std::unique_ptr"],[5120,1,"std::vector"],[6144,2,"std::array"],[9216,-1,"std::function"]];function r(p,h,E,C,S,P){if(h==1){var I=C&896;(I==128||I==256||I==384)&&(p="X const")}var R;return P?R=E.replace("X",p).replace("Y",S):R=p.replace("X",E).replace("Y",S),R.replace(/([*&]) (?=[*&])/g,"$1")}function s(p,h,E,C,S){throw new Error(p+" type "+E.replace("X",h+"?")+(C?" with flag "+C:"")+" in "+S)}function a(p,h,E,C,S,P,I,R){P===void 0&&(P="X"),R===void 0&&(R=1);var N=E(p);if(N)return N;var U=C(p),W=U.placeholderFlag,ee=e[W];I&&ee&&(P=r(I[2],I[0],P,ee[0],"?",!0));var ie;W==0&&(ie="Unbound"),W>=10&&(ie="Corrupt"),R>20&&(ie="Deeply nested"),ie&&s(ie,p,P,W,S||"?");var ue=U.paramList[0],le=a(ue,h,E,C,S,P,ee,R+1),me,pe={flags:ee[0],id:p,name:"",paramList:[le]},Be=[],Ce="?";switch(U.placeholderFlag){case 1:me=le.spec;break;case 2:if((le.flags&15360)==1024&&le.spec.ptrSize==1){pe.flags=7168;break}case 3:case 6:case 5:me=le.spec,le.flags&15360;break;case 8:Ce=""+U.paramList[1],pe.paramList.push(U.paramList[1]);break;case 9:for(var g=0,we=U.paramList[1];g>2]=t),t}function _llvm_stacksave(){var t=_llvm_stacksave;return t.LLVM_SAVEDSTACKS||(t.LLVM_SAVEDSTACKS=[]),t.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),t.LLVM_SAVEDSTACKS.length-1}function ___syscall140(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),c=SYSCALLS.get(),f=a;return FS.llseek(r,f,c),HEAP32[n>>2]=r.position,r.getdents&&f===0&&c===0&&(r.getdents=null),0}catch(p){return(typeof FS>"u"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.get(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,C){var S=___syscall146.buffers[E];assert(S),C===0||C===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(S,0)),S.length=0):S.push(C)});for(var c=0;c>2],p=HEAP32[s+(c*8+4)>>2],h=0;h"u"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var t=0,e=_nbind.BindClass.list;tt.pageSize/2||e>t.pageSize-r){var s=_nbind.typeNameTbl.NBind.proto;return s.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var s=HEAPU32[t.pagePtr];if(s){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(e,r)}else HEAPU32[t.usedPtr]=e},t}();_nbind.Pool=Pool;function constructType(t,e){var r=t==10240?_nbind.makeTypeNameTbl[e.name]||_nbind.BindType:_nbind.makeTypeKindTbl[t],s=new r(e);return typeIdTbl[e.id]=s,_nbind.typeNameTbl[e.name]=s,s}_nbind.constructType=constructType;function getType(t){return typeIdTbl[t]}_nbind.getType=getType;function queryType(t){var e=HEAPU8[t],r=_nbind.structureList[e][1];t/=4,r<0&&(++t,r=HEAPU32[t]+1);var s=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(s=[s[0],s.slice(1)]),{paramList:s,placeholderFlag:e}}_nbind.queryType=queryType;function getTypes(t,e){return t.map(function(r){return typeof r=="number"?_nbind.getComplexType(r,constructType,getType,queryType,e):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(t,e){return Array.prototype.slice.call(HEAPU32,t/4,t/4+e)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(t){for(var e=t;HEAPU8[e++];);return String.fromCharCode.apply("",HEAPU8.subarray(t,e-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(t){var e={};if(t)for(;;){var r=HEAPU32[t/4];if(!r)break;e[readAsciiString(r)]=!0,t+=4}return e}_nbind.readPolicyList=readPolicyList;function getDynCall(t,e){var r={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},s=t.map(function(n){return r[n.name]||"i"}).join(""),a=Module["dynCall_"+s];if(!a)throw new Error("dynCall_"+s+" not found for "+e+"("+t.map(function(n){return n.name}).join(", ")+")");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,s){var a=t[e];t.hasOwnProperty(e)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),t[e]=a),a.addMethod(r,s)):(r.arity=s,t[e]=r)}_nbind.addMethod=addMethod;function throwError(t){throw new Error(t)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return e.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},e.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},e}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return s.heap=a[r.ptrSize*8],s.ptrSize=r.ptrSize,s}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="number")return a;throw new Error("Type mismatch")}},e}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(t,e){if(t==null){if(e&&e.Nullable)return 0;throw new Error("Type mismatch")}if(e&&e.Strict){if(typeof t!="string")throw new Error("Type mismatch")}else t=t.toString();var r=Module.lengthBytesUTF8(t)+1,s=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,s,r),s}_nbind.pushCString=pushCString;function popCString(t){return t===0?null:Module.Pointer_stringify(t)}_nbind.popCString=popCString;var CStringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,s){return function(a){return pushCString(a,s)}},e}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=function(s){return!!s},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return"!!("+r+")"},e.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="boolean")return a;throw new Error("Type mismatch")}||r},e}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function t(){}return t.prototype.persist=function(){this.__nbindState|=1},t}();_nbind.Wrapper=Wrapper;function makeBound(t,e){var r=function(s){__extends(a,s);function a(n,c,f,p){var h=s.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=c,C=f,S=p;if(n!==_nbind.ptrMarker){var P=h.__nbindConstructor.apply(h,arguments);E=4608,S=HEAPU32[P/4],C=HEAPU32[P/4+1]}var I={configurable:!0,enumerable:!1,value:null,writable:!1},R={__nbindFlags:E,__nbindPtr:C};S&&(R.__nbindShared=S,_nbind.mark(h));for(var N=0,U=Object.keys(R);N>=1;var r=_nbind.valueList[t];return _nbind.valueList[t]=firstFreeValue,firstFreeValue=t,r}else{if(e)return _nbind.popShared(t,e);throw new Error("Invalid value slot "+t)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(t){return typeof t=="number"?t:pushValue(t)*4096+valueBase}function pop64(t){return t=3?c=Buffer.from(n):c=new Buffer(n),c.copy(s)}else getBuffer(s).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var t=0,e=dirtyList;t>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(t,e,r,s,a,n){try{Module.dynCall_viiiii(t,e,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,s){try{return Module.dynCall_fiff(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_vi(t,e){try{Module.dynCall_vi(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_vii(t,e,r){try{Module.dynCall_vii(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_ii(t,e){try{return Module.dynCall_ii(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_viddi(t,e,r,s,a){try{Module.dynCall_viddi(t,e,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,s){try{Module.dynCall_vidd(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,s){try{return Module.dynCall_iiii(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,s){try{return Module.dynCall_diii(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_di(t,e){try{return Module.dynCall_di(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_iid(t,e,r){try{return Module.dynCall_iid(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,s,a,n){try{Module.dynCall_viiddi(t,e,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,s,a,n,c){try{Module.dynCall_viiiiii(t,e,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_i(t){try{return Module.dynCall_i(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_iiiiii(t,e,r,s,a,n){try{return Module.dynCall_iiiiii(t,e,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,s,a){try{Module.dynCall_viiid(t,e,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,s,a,n,c){try{Module.dynCall_viififi(t,e,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_viii(t,e,r,s){try{Module.dynCall_viii(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_v(t){try{Module.dynCall_v(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_viid(t,e,r,s){try{Module.dynCall_viid(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_idd(t,e,r){try{return Module.dynCall_idd(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,s,a){try{Module.dynCall_viiii(t,e,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(t,e,r){var s=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),c=new t.Uint8Array(r),f=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),E=new t.Float64Array(r),C=e.DYNAMICTOP_PTR|0,S=e.tempDoublePtr|0,P=e.ABORT|0,I=e.STACKTOP|0,R=e.STACK_MAX|0,N=e.cttz_i8|0,U=e.___dso_handle|0,W=0,ee=0,ie=0,ue=0,le=t.NaN,me=t.Infinity,pe=0,Be=0,Ce=0,g=0,we=0,ye=0,Ae=t.Math.floor,se=t.Math.abs,Z=t.Math.sqrt,De=t.Math.pow,Re=t.Math.cos,mt=t.Math.sin,j=t.Math.tan,rt=t.Math.acos,Fe=t.Math.asin,Ne=t.Math.atan,Pe=t.Math.atan2,Ve=t.Math.exp,ke=t.Math.log,it=t.Math.ceil,Ue=t.Math.imul,x=t.Math.min,w=t.Math.max,b=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,X=e.enlargeMemory,$=e.getTotalMemory,oe=e.abortOnCannotGrowMemory,xe=e.invoke_viiiii,Te=e.invoke_vif,lt=e.invoke_vid,Ct=e.invoke_fiff,qt=e.invoke_vi,ir=e.invoke_vii,Pt=e.invoke_ii,gn=e.invoke_viddi,Pr=e.invoke_vidd,Ir=e.invoke_iiii,Or=e.invoke_diii,on=e.invoke_di,ai=e.invoke_iid,Io=e.invoke_iii,rs=e.invoke_viiddi,$s=e.invoke_viiiiii,Co=e.invoke_dii,ji=e.invoke_i,eo=e.invoke_iiiiii,wo=e.invoke_viiid,QA=e.invoke_viififi,Af=e.invoke_viii,dh=e.invoke_v,mh=e.invoke_viid,to=e.invoke_idd,jn=e.invoke_viiii,Ts=e._emscripten_asm_const_iiiii,ro=e._emscripten_asm_const_iiidddddd,ou=e._emscripten_asm_const_iiiid,au=e.__nbind_reference_external,lu=e._emscripten_asm_const_iiiiiiii,TA=e._removeAccessorPrefix,RA=e._typeModule,oa=e.__nbind_register_pool,aa=e.__decorate,FA=e._llvm_stackrestore,gr=e.___cxa_atexit,Bo=e.__extends,Me=e.__nbind_get_value_object,cu=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,Cr=e._emscripten_set_main_loop_timing,pf=e.__nbind_register_primitive,NA=e.__nbind_register_type,OA=e._emscripten_memcpy_big,uu=e.__nbind_register_function,fu=e.___setErrNo,oc=e.__nbind_register_class,ve=e.__nbind_finish,Nt=e._abort,ac=e._nbind_value,Oi=e._llvm_stacksave,no=e.___syscall54,Rt=e._defineHidden,xn=e._emscripten_set_main_loop,la=e._emscripten_get_now,Gi=e.__nbind_register_callback_signature,Li=e._emscripten_asm_const_iiiiii,Na=e.__nbind_free_external,dn=e._emscripten_asm_const_iiii,Kn=e._emscripten_asm_const_iiididi,Au=e.___syscall6,yh=e._atexit,Oa=e.___syscall140,La=e.___syscall146,Ma=y(0);let $e=y(0);function Ua(o){o=o|0;var l=0;return l=I,I=I+o|0,I=I+15&-16,l|0}function hf(){return I|0}function lc(o){o=o|0,I=o}function wn(o,l){o=o|0,l=l|0,I=o,R=l}function ca(o,l){o=o|0,l=l|0,W||(W=o,ee=l)}function LA(o){o=o|0,ye=o}function MA(){return ye|0}function ua(){var o=0,l=0;Qr(8104,8,400)|0,Qr(8504,408,540)|0,o=9044,l=o+44|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));s[9088]=0,s[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,gr(17,8104,U|0)|0}function Bl(o){o=o|0,dt(o+948|0)}function Mt(o){return o=y(o),((fP(o)|0)&2147483647)>>>0>2139095040|0}function kn(o,l,u){o=o|0,l=l|0,u=u|0;e:do if(n[o+(l<<3)+4>>2]|0)o=o+(l<<3)|0;else{if((l|2|0)==3&&n[o+60>>2]|0){o=o+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[o+52>>2]|0){o=o+48|0;break e}break}default:}if(n[o+68>>2]|0){o=o+64|0;break}else{o=(l|1|0)==5?948:u;break}}while(!1);return o|0}function fa(o){o=o|0;var l=0;return l=_P(1e3)|0,Ha(o,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Qr(l|0,8104,1e3)|0,s[o+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=o,l|0}function Ha(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,Wg(o,5,3197,A)),I=d}function ns(){return fa(956)|0}function cc(o){o=o|0;var l=0;return l=Kt(1e3)|0,pu(l,o),Ha(n[o+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function pu(o,l){o=o|0,l=l|0;var u=0;Qr(o|0,l|0,948)|0,Dy(o+948|0,l+948|0),u=o+960|0,o=l+960|0,l=u+40|0;do n[u>>2]=n[o>>2],u=u+4|0,o=o+4|0;while((u|0)<(l|0))}function uc(o){o=o|0;var l=0,u=0,A=0,d=0;if(l=o+944|0,u=n[l>>2]|0,u|0&&(ja(u+948|0,o)|0,n[l>>2]=0),u=Mi(o)|0,u|0){l=0;do n[(Is(o,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(u|0))}u=o+948|0,A=n[u>>2]|0,d=o+952|0,l=n[d>>2]|0,(l|0)!=(A|0)&&(n[d>>2]=l+(~((l+-4-A|0)>>>2)<<2)),vl(u),HP(o),n[2276]=(n[2276]|0)+-1}function ja(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0;A=n[o>>2]|0,k=o+4|0,u=n[k>>2]|0,m=u;e:do if((A|0)==(u|0))d=A,B=4;else for(o=A;;){if((n[o>>2]|0)==(l|0)){d=o,B=4;break e}if(o=o+4|0,(o|0)==(u|0)){o=0;break}}while(!1);return(B|0)==4&&((d|0)!=(u|0)?(A=d+4|0,o=m-A|0,l=o>>2,l&&(Q2(d|0,A|0,o|0)|0,u=n[k>>2]|0),o=d+(l<<2)|0,(u|0)==(o|0)||(n[k>>2]=u+(~((u+-4-o|0)>>>2)<<2)),o=1):o=0),o|0}function Mi(o){return o=o|0,(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2|0}function Is(o,l){o=o|0,l=l|0;var u=0;return u=n[o+948>>2]|0,(n[o+952>>2]|0)-u>>2>>>0>l>>>0?o=n[u+(l<<2)>>2]|0:o=0,o|0}function vl(o){o=o|0;var l=0,u=0,A=0,d=0;A=I,I=I+32|0,l=A,d=n[o>>2]|0,u=(n[o+4>>2]|0)-d|0,((n[o+8>>2]|0)-d|0)>>>0>u>>>0&&(d=u>>2,ky(l,d,d,o+8|0),AP(o,l),Qy(l)),I=A}function gf(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0;M=Mi(o)|0;do if(M|0){if((n[(Is(o,0)|0)+944>>2]|0)==(o|0)){if(!(ja(o+948|0,l)|0))break;Qr(l+400|0,8504,540)|0,n[l+944>>2]=0,Oe(o);break}B=n[(n[o+976>>2]|0)+12>>2]|0,k=o+948|0,T=(B|0)==0,u=0,m=0;do A=n[(n[k>>2]|0)+(m<<2)>>2]|0,(A|0)==(l|0)?Oe(o):(d=cc(A)|0,n[(n[k>>2]|0)+(u<<2)>>2]=d,n[d+944>>2]=o,T||dU[B&15](A,d,o,u),u=u+1|0),m=m+1|0;while((m|0)!=(M|0));if(u>>>0>>0){T=o+948|0,k=o+952|0,B=u,u=n[k>>2]|0;do m=(n[T>>2]|0)+(B<<2)|0,A=m+4|0,d=u-A|0,l=d>>2,l&&(Q2(m|0,A|0,d|0)|0,u=n[k>>2]|0),d=u,A=m+(l<<2)|0,(d|0)!=(A|0)&&(u=d+(~((d+-4-A|0)>>>2)<<2)|0,n[k>>2]=u),B=B+1|0;while((B|0)!=(M|0))}}while(!1)}function fc(o){o=o|0;var l=0,u=0,A=0,d=0;wi(o,(Mi(o)|0)==0,2491),wi(o,(n[o+944>>2]|0)==0,2545),l=o+948|0,u=n[l>>2]|0,A=o+952|0,d=n[A>>2]|0,(d|0)!=(u|0)&&(n[A>>2]=d+(~((d+-4-u|0)>>>2)<<2)),vl(l),l=o+976|0,u=n[l>>2]|0,Qr(o|0,8104,1e3)|0,s[u+2>>0]|0&&(n[o+4>>2]=2,n[o+12>>2]=4),n[l>>2]=u}function wi(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,xo(o,5,3197,A)),I=d}function Qn(){return n[2276]|0}function Ac(){var o=0;return o=_P(20)|0,Ke((o|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[o>>2]=n[239],n[o+4>>2]=n[240],n[o+8>>2]=n[241],n[o+12>>2]=n[242],n[o+16>>2]=n[243],o|0}function Ke(o,l){o=o|0,l=l|0;var u=0,A=0;A=I,I=I+16|0,u=A,o||(n[u>>2]=l,xo(0,5,3197,u)),I=A}function st(o){o=o|0,HP(o),n[2277]=(n[2277]|0)+-1}function St(o,l){o=o|0,l=l|0;var u=0;l?(wi(o,(Mi(o)|0)==0,2629),u=1):(u=0,l=0),n[o+964>>2]=l,n[o+988>>2]=u}function lr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+8|0,d=A+4|0,B=A,n[d>>2]=l,wi(o,(n[l+944>>2]|0)==0,2709),wi(o,(n[o+964>>2]|0)==0,2763),te(o),l=o+948|0,n[B>>2]=(n[l>>2]|0)+(u<<2),n[m>>2]=n[B>>2],Ee(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=o,Oe(o),I=A}function te(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;if(u=Mi(o)|0,u|0&&(n[(Is(o,0)|0)+944>>2]|0)!=(o|0)){A=n[(n[o+976>>2]|0)+12>>2]|0,d=o+948|0,m=(A|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=cc(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=o,m||dU[A&15](B,k,o,l),l=l+1|0;while((l|0)!=(u|0))}}function Ee(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0;tt=I,I=I+64|0,q=tt+52|0,k=tt+48|0,ae=tt+28|0,Ye=tt+24|0,Le=tt+20|0,Qe=tt,A=n[o>>2]|0,m=A,l=A+((n[l>>2]|0)-m>>2<<2)|0,A=o+4|0,d=n[A>>2]|0,B=o+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[u>>2],n[A>>2]=(n[A>>2]|0)+4;break}pP(o,l,d,l+4|0),l>>>0<=u>>>0&&(u=(n[A>>2]|0)>>>0>u>>>0?u+4|0:u),n[l>>2]=n[u>>2]}else{A=(d-m>>2)+1|0,d=O(o)|0,d>>>0>>0&&an(o),L=n[o>>2]|0,M=(n[B>>2]|0)-L|0,m=M>>1,ky(Qe,M>>2>>>0>>1>>>0?m>>>0>>0?A:m:d,l-L>>2,o+8|0),L=Qe+8|0,A=n[L>>2]|0,m=Qe+12|0,M=n[m>>2]|0,B=M,T=A;do if((A|0)==(M|0)){if(M=Qe+4|0,A=n[M>>2]|0,Ze=n[Qe>>2]|0,d=Ze,A>>>0<=Ze>>>0){A=B-d>>1,A=A|0?A:1,ky(ae,A,A>>>2,n[Qe+16>>2]|0),n[Ye>>2]=n[M>>2],n[Le>>2]=n[L>>2],n[k>>2]=n[Ye>>2],n[q>>2]=n[Le>>2],o2(ae,k,q),A=n[Qe>>2]|0,n[Qe>>2]=n[ae>>2],n[ae>>2]=A,A=ae+4|0,Ze=n[M>>2]|0,n[M>>2]=n[A>>2],n[A>>2]=Ze,A=ae+8|0,Ze=n[L>>2]|0,n[L>>2]=n[A>>2],n[A>>2]=Ze,A=ae+12|0,Ze=n[m>>2]|0,n[m>>2]=n[A>>2],n[A>>2]=Ze,Qy(ae),A=n[L>>2]|0;break}m=A,B=((m-d>>2)+1|0)/-2|0,k=A+(B<<2)|0,d=T-m|0,m=d>>2,m&&(Q2(k|0,A|0,d|0)|0,A=n[M>>2]|0),Ze=k+(m<<2)|0,n[L>>2]=Ze,n[M>>2]=A+(B<<2),A=Ze}while(!1);n[A>>2]=n[u>>2],n[L>>2]=(n[L>>2]|0)+4,l=hP(o,Qe,l)|0,Qy(Qe)}while(!1);return I=tt,l|0}function Oe(o){o=o|0;var l=0;do{if(l=o+984|0,s[l>>0]|0)break;s[l>>0]=1,h[o+504>>2]=y(le),o=n[o+944>>2]|0}while(o|0)}function dt(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function Et(o){return o=o|0,n[o+944>>2]|0}function bt(o){o=o|0,wi(o,(n[o+964>>2]|0)!=0,2832),Oe(o)}function tr(o){return o=o|0,(s[o+984>>0]|0)!=0|0}function An(o,l){o=o|0,l=l|0,l6e(o,l,400)|0&&(Qr(o|0,l|0,400)|0,Oe(o))}function li(o){o=o|0;var l=$e;return l=y(h[o+44>>2]),o=Mt(l)|0,y(o?y(0):l)}function qi(o){o=o|0;var l=$e;return l=y(h[o+48>>2]),Mt(l)|0&&(l=s[(n[o+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function Tn(o,l){o=o|0,l=l|0,n[o+980>>2]=l}function Ga(o){return o=o|0,n[o+980>>2]|0}function my(o,l){o=o|0,l=l|0;var u=0;u=o+4|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Z1(o){return o=o|0,n[o+4>>2]|0}function vo(o,l){o=o|0,l=l|0;var u=0;u=o+8|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function yy(o){return o=o|0,n[o+8>>2]|0}function Eh(o,l){o=o|0,l=l|0;var u=0;u=o+12|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function $1(o){return o=o|0,n[o+12>>2]|0}function So(o,l){o=o|0,l=l|0;var u=0;u=o+16|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Ih(o){return o=o|0,n[o+16>>2]|0}function Ch(o,l){o=o|0,l=l|0;var u=0;u=o+20|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function hu(o){return o=o|0,n[o+20>>2]|0}function wh(o,l){o=o|0,l=l|0;var u=0;u=o+24|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Fg(o){return o=o|0,n[o+24>>2]|0}function Ng(o,l){o=o|0,l=l|0;var u=0;u=o+28|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Og(o){return o=o|0,n[o+28>>2]|0}function Ey(o,l){o=o|0,l=l|0;var u=0;u=o+32|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function df(o){return o=o|0,n[o+32>>2]|0}function Do(o,l){o=o|0,l=l|0;var u=0;u=o+36|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Sl(o){return o=o|0,n[o+36>>2]|0}function Bh(o,l){o=o|0,l=y(l);var u=0;u=o+40|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Lg(o,l){o=o|0,l=y(l);var u=0;u=o+44|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Dl(o,l){o=o|0,l=y(l);var u=0;u=o+48|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function bl(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+52|0,d=o+56|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Iy(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+52|0,u=o+56|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function UA(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+52|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Cy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function wy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function _A(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+132+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function HA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function Y(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function xt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+60+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function jA(o,l){o=o|0,l=l|0;var u=0;u=o+60+(l<<3)+4|0,(n[u>>2]|0)!=3&&(h[o+60+(l<<3)>>2]=y(le),n[u>>2]=3,Oe(o))}function bo(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function mf(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function yt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+204+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function gu(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+276+(l<<3)|0,l=o+276+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function By(o,l){return o=o|0,l=l|0,y(h[o+276+(l<<3)>>2])}function Mg(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+348|0,d=o+352|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function e2(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+348|0,u=o+352|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function vh(o){o=o|0;var l=0;l=o+352|0,(n[l>>2]|0)!=3&&(h[o+348>>2]=y(le),n[l>>2]=3,Oe(o))}function ur(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+348|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function zi(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+356|0,d=o+360|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function yf(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+356|0,u=o+360|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function qa(o){o=o|0;var l=0;l=o+360|0,(n[l>>2]|0)!=3&&(h[o+356>>2]=y(le),n[l>>2]=3,Oe(o))}function Ug(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+356|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function du(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ef(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function wt(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+364|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function di(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function GA(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Wa(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+372|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Aa(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ya(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function _g(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+380|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Sh(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Hg(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function vy(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+388|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function qA(o,l){o=o|0,l=y(l);var u=0;u=o+396|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function jg(o){return o=o|0,y(h[o+396>>2])}function mu(o){return o=o|0,y(h[o+400>>2])}function yu(o){return o=o|0,y(h[o+404>>2])}function If(o){return o=o|0,y(h[o+408>>2])}function Rs(o){return o=o|0,y(h[o+412>>2])}function Eu(o){return o=o|0,y(h[o+416>>2])}function Gn(o){return o=o|0,y(h[o+420>>2])}function is(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+424+(l<<2)>>2])}function Pi(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+448+(l<<2)>>2])}function WA(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+472+(l<<2)>>2])}function Cf(o,l){o=o|0,l=l|0;var u=0,A=$e;return u=n[o+4>>2]|0,(u|0)==(n[l+4>>2]|0)?u?(A=y(h[o>>2]),o=y(se(y(A-y(h[l>>2]))))>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,cu(A|0,o|0,l|0,0),xo(o,3,(s[A+11>>0]|0)<0?n[A>>2]|0:A,u),Q6e(A),I=u}function ss(o,l,u,A){o=y(o),l=y(l),u=u|0,A=A|0;var d=$e;o=y(o*l),d=y(uU(o,y(1)));do if(mn(d,y(0))|0)o=y(o-d);else{if(o=y(o-d),mn(d,y(1))|0){o=y(o+y(1));break}if(u){o=y(o+y(1));break}A||(d>y(.5)?d=y(1):(A=mn(d,y(.5))|0,d=y(A?1:0)),o=y(o+d))}while(!1);return y(o/l)}function Pl(o,l,u,A,d,m,B,k,T,M,L,q,ae){o=o|0,l=y(l),u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,k=y(k),T=y(T),M=y(M),L=y(L),q=y(q),ae=ae|0;var Ye=0,Le=$e,Qe=$e,tt=$e,Ze=$e,ct=$e,He=$e;return T>2]),Le!=y(0))?(tt=y(ss(l,Le,0,0)),Ze=y(ss(A,Le,0,0)),Qe=y(ss(m,Le,0,0)),Le=y(ss(k,Le,0,0))):(Qe=m,tt=l,Le=k,Ze=A),(d|0)==(o|0)?Ye=mn(Qe,tt)|0:Ye=0,(B|0)==(u|0)?ae=mn(Le,Ze)|0:ae=0,!Ye&&(ct=y(l-L),!(Po(o,ct,T)|0))&&!(wf(o,ct,d,T)|0)?Ye=Bf(o,ct,d,m,T)|0:Ye=1,!ae&&(He=y(A-q),!(Po(u,He,M)|0))&&!(wf(u,He,B,M)|0)?ae=Bf(u,He,B,k,M)|0:ae=1,ae=Ye&ae),ae|0}function Po(o,l,u){return o=o|0,l=y(l),u=y(u),(o|0)==1?o=mn(l,u)|0:o=0,o|0}function wf(o,l,u,A){return o=o|0,l=y(l),u=u|0,A=y(A),(o|0)==2&(u|0)==0?l>=A?o=1:o=mn(l,A)|0:o=0,o|0}function Bf(o,l,u,A,d){return o=o|0,l=y(l),u=u|0,A=y(A),d=y(d),(o|0)==2&(u|0)==2&A>l?d<=l?o=1:o=mn(l,d)|0:o=0,o|0}function xl(o,l,u,A,d,m,B,k,T,M,L){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),T=T|0,M=M|0,L=L|0;var q=0,ae=0,Ye=0,Le=0,Qe=$e,tt=$e,Ze=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=$e,To=$e,Ro=$e,Fo=0,Za=0;cr=I,I=I+160|0,$t=cr+152|0,fr=cr+120|0,Gr=cr+104|0,He=cr+72|0,Le=cr+56|0,Lt=cr+8|0,ct=cr,We=(n[2279]|0)+1|0,n[2279]=We,Tr=o+984|0,s[Tr>>0]|0&&(n[o+512>>2]|0)!=(n[2278]|0)?Ze=4:(n[o+516>>2]|0)==(A|0)?Hr=0:Ze=4,(Ze|0)==4&&(n[o+520>>2]=0,n[o+924>>2]=-1,n[o+928>>2]=-1,h[o+932>>2]=y(-1),h[o+936>>2]=y(-1),Hr=1);e:do if(n[o+964>>2]|0)if(Qe=y(yn(o,2,B)),tt=y(yn(o,0,B)),q=o+916|0,Ro=y(h[q>>2]),To=y(h[o+920>>2]),Hn=y(h[o+932>>2]),Pl(d,l,m,u,n[o+924>>2]|0,Ro,n[o+928>>2]|0,To,Hn,y(h[o+936>>2]),Qe,tt,L)|0)Ze=22;else if(Ye=n[o+520>>2]|0,!Ye)Ze=21;else for(ae=0;;){if(q=o+524+(ae*24|0)|0,Hn=y(h[q>>2]),To=y(h[o+524+(ae*24|0)+4>>2]),Ro=y(h[o+524+(ae*24|0)+16>>2]),Pl(d,l,m,u,n[o+524+(ae*24|0)+8>>2]|0,Hn,n[o+524+(ae*24|0)+12>>2]|0,To,Ro,y(h[o+524+(ae*24|0)+20>>2]),Qe,tt,L)|0){Ze=22;break e}if(ae=ae+1|0,ae>>>0>=Ye>>>0){Ze=21;break}}else{if(T){if(q=o+916|0,!(mn(y(h[q>>2]),l)|0)){Ze=21;break}if(!(mn(y(h[o+920>>2]),u)|0)){Ze=21;break}if((n[o+924>>2]|0)!=(d|0)){Ze=21;break}q=(n[o+928>>2]|0)==(m|0)?q:0,Ze=22;break}if(Ye=n[o+520>>2]|0,!Ye)Ze=21;else for(ae=0;;){if(q=o+524+(ae*24|0)|0,mn(y(h[q>>2]),l)|0&&mn(y(h[o+524+(ae*24|0)+4>>2]),u)|0&&(n[o+524+(ae*24|0)+8>>2]|0)==(d|0)&&(n[o+524+(ae*24|0)+12>>2]|0)==(m|0)){Ze=22;break e}if(ae=ae+1|0,ae>>>0>=Ye>>>0){Ze=21;break}}}while(!1);do if((Ze|0)==21)s[11697]|0?(q=0,Ze=28):(q=0,Ze=31);else if((Ze|0)==22){if(ae=(s[11697]|0)!=0,!((q|0)!=0&(Hr^1)))if(ae){Ze=28;break}else{Ze=31;break}Le=q+16|0,n[o+908>>2]=n[Le>>2],Ye=q+20|0,n[o+912>>2]=n[Ye>>2],(s[11698]|0)==0|ae^1||(n[ct>>2]=Iu(We)|0,n[ct+4>>2]=We,xo(o,4,2972,ct),ae=n[o+972>>2]|0,ae|0&&ip[ae&127](o),d=pa(d,T)|0,m=pa(m,T)|0,Za=+y(h[Le>>2]),Fo=+y(h[Ye>>2]),n[Lt>>2]=d,n[Lt+4>>2]=m,E[Lt+8>>3]=+l,E[Lt+16>>3]=+u,E[Lt+24>>3]=Za,E[Lt+32>>3]=Fo,n[Lt+40>>2]=M,xo(o,4,2989,Lt))}while(!1);return(Ze|0)==28&&(ae=Iu(We)|0,n[Le>>2]=ae,n[Le+4>>2]=We,n[Le+8>>2]=Hr?3047:11699,xo(o,4,3038,Le),ae=n[o+972>>2]|0,ae|0&&ip[ae&127](o),Lt=pa(d,T)|0,Ze=pa(m,T)|0,n[He>>2]=Lt,n[He+4>>2]=Ze,E[He+8>>3]=+l,E[He+16>>3]=+u,n[He+24>>2]=M,xo(o,4,3049,He),Ze=31),(Ze|0)==31&&(Fs(o,l,u,A,d,m,B,k,T,L),s[11697]|0&&(ae=n[2279]|0,Lt=Iu(ae)|0,n[Gr>>2]=Lt,n[Gr+4>>2]=ae,n[Gr+8>>2]=Hr?3047:11699,xo(o,4,3083,Gr),ae=n[o+972>>2]|0,ae|0&&ip[ae&127](o),Lt=pa(d,T)|0,Gr=pa(m,T)|0,Fo=+y(h[o+908>>2]),Za=+y(h[o+912>>2]),n[fr>>2]=Lt,n[fr+4>>2]=Gr,E[fr+8>>3]=Fo,E[fr+16>>3]=Za,n[fr+24>>2]=M,xo(o,4,3092,fr)),n[o+516>>2]=A,q||(ae=o+520|0,q=n[ae>>2]|0,(q|0)==16&&(s[11697]|0&&xo(o,4,3124,$t),n[ae>>2]=0,q=0),T?q=o+916|0:(n[ae>>2]=q+1,q=o+524+(q*24|0)|0),h[q>>2]=l,h[q+4>>2]=u,n[q+8>>2]=d,n[q+12>>2]=m,n[q+16>>2]=n[o+908>>2],n[q+20>>2]=n[o+912>>2],q=0)),T&&(n[o+416>>2]=n[o+908>>2],n[o+420>>2]=n[o+912>>2],s[o+985>>0]=1,s[Tr>>0]=0),n[2279]=(n[2279]|0)+-1,n[o+512>>2]=n[2278],I=cr,Hr|(q|0)==0|0}function yn(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(K(o,l,u)),y(A+y(re(o,l,u)))}function xo(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=I,I=I+16|0,d=m,n[d>>2]=A,o?A=n[o+976>>2]|0:A=0,Ph(A,o,l,u,d),I=m}function Iu(o){return o=o|0,(o>>>0>60?3201:3201+(60-o)|0)|0}function pa(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+32|0,u=d+12|0,A=d,n[u>>2]=n[254],n[u+4>>2]=n[255],n[u+8>>2]=n[256],n[A>>2]=n[257],n[A+4>>2]=n[258],n[A+8>>2]=n[259],(o|0)>2?o=11699:o=n[(l?A:u)+(o<<2)>>2]|0,I=d,o|0}function Fs(o,l,u,A,d,m,B,k,T,M){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),T=T|0,M=M|0;var L=0,q=0,ae=0,Ye=0,Le=$e,Qe=$e,tt=$e,Ze=$e,ct=$e,He=$e,We=$e,Lt=0,Gr=0,fr=0,$t=$e,Tr=$e,Hr=0,cr=$e,Hn=0,To=0,Ro=0,Fo=0,Za=0,Wh=0,Yh=0,gc=0,Vh=0,Rf=0,Ff=0,Jh=0,Kh=0,zh=0,ln=0,dc=0,Xh=0,Pu=0,Zh=$e,$h=$e,Nf=$e,Of=$e,xu=$e,oo=0,Ll=0,ma=0,mc=0,op=0,ap=$e,Lf=$e,lp=$e,cp=$e,ao=$e,Ms=$e,yc=0,Wn=$e,up=$e,No=$e,ku=$e,Oo=$e,Qu=$e,fp=0,Ap=0,Tu=$e,lo=$e,Ec=0,pp=0,hp=0,gp=0,Nr=$e,ui=0,Us=0,Lo=0,co=0,Mr=0,Ar=0,Ic=0,zt=$e,dp=0,Bi=0;Ic=I,I=I+16|0,oo=Ic+12|0,Ll=Ic+8|0,ma=Ic+4|0,mc=Ic,wi(o,(d|0)==0|(Mt(l)|0)^1,3326),wi(o,(m|0)==0|(Mt(u)|0)^1,3406),Us=At(o,A)|0,n[o+496>>2]=Us,Mr=dr(2,Us)|0,Ar=dr(0,Us)|0,h[o+440>>2]=y(K(o,Mr,B)),h[o+444>>2]=y(re(o,Mr,B)),h[o+428>>2]=y(K(o,Ar,B)),h[o+436>>2]=y(re(o,Ar,B)),h[o+464>>2]=y(vr(o,Mr)),h[o+468>>2]=y(Un(o,Mr)),h[o+452>>2]=y(vr(o,Ar)),h[o+460>>2]=y(Un(o,Ar)),h[o+488>>2]=y(mi(o,Mr,B)),h[o+492>>2]=y(Cs(o,Mr,B)),h[o+476>>2]=y(mi(o,Ar,B)),h[o+484>>2]=y(Cs(o,Ar,B));do if(n[o+964>>2]|0)JA(o,l,u,d,m,B,k);else{if(Lo=o+948|0,co=(n[o+952>>2]|0)-(n[Lo>>2]|0)>>2,!co){lP(o,l,u,d,m,B,k);break}if(!T&&t2(o,l,u,d,m,B,k)|0)break;te(o),dc=o+508|0,s[dc>>0]=0,Mr=dr(n[o+4>>2]|0,Us)|0,Ar=by(Mr,Us)|0,ui=de(Mr)|0,Xh=n[o+8>>2]|0,pp=o+28|0,Pu=(n[pp>>2]|0)!=0,Oo=ui?B:k,Tu=ui?k:B,Zh=y(kh(o,Mr,B)),$h=y(r2(o,Mr,B)),Le=y(kh(o,Ar,B)),Qu=y(Va(o,Mr,B)),lo=y(Va(o,Ar,B)),fr=ui?d:m,Ec=ui?m:d,Nr=ui?Qu:lo,ct=ui?lo:Qu,ku=y(yn(o,2,B)),Ze=y(yn(o,0,B)),Qe=y(y(Zr(o+364|0,B))-Nr),tt=y(y(Zr(o+380|0,B))-Nr),He=y(y(Zr(o+372|0,k))-ct),We=y(y(Zr(o+388|0,k))-ct),Nf=ui?Qe:He,Of=ui?tt:We,ku=y(l-ku),l=y(ku-Nr),Mt(l)|0?Nr=l:Nr=y($n(y(pd(l,tt)),Qe)),up=y(u-Ze),l=y(up-ct),Mt(l)|0?No=l:No=y($n(y(pd(l,We)),He)),Qe=ui?Nr:No,Wn=ui?No:Nr;e:do if((fr|0)==1)for(A=0,q=0;;){if(L=Is(o,q)|0,!A)y(KA(L))>y(0)&&y(Qh(L))>y(0)?A=L:A=0;else if(n2(L)|0){Ye=0;break e}if(q=q+1|0,q>>>0>=co>>>0){Ye=A;break}}else Ye=0;while(!1);Lt=Ye+500|0,Gr=Ye+504|0,A=0,L=0,l=y(0),ae=0;do{if(q=n[(n[Lo>>2]|0)+(ae<<2)>>2]|0,(n[q+36>>2]|0)==1)Py(q),s[q+985>>0]=1,s[q+984>>0]=0;else{vf(q),T&&bh(q,At(q,Us)|0,Qe,Wn,Nr);do if((n[q+24>>2]|0)!=1)if((q|0)==(Ye|0)){n[Lt>>2]=n[2278],h[Gr>>2]=y(0);break}else{cP(o,q,Nr,d,No,Nr,No,m,Us,M);break}else L|0&&(n[L+960>>2]=q),n[q+960>>2]=0,L=q,A=A|0?A:q;while(!1);Ms=y(h[q+504>>2]),l=y(l+y(Ms+y(yn(q,Mr,Nr))))}ae=ae+1|0}while((ae|0)!=(co|0));for(Ro=l>Qe,yc=Pu&((fr|0)==2&Ro)?1:fr,Hn=(Ec|0)==1,Za=Hn&(T^1),Wh=(yc|0)==1,Yh=(yc|0)==2,gc=976+(Mr<<2)|0,Vh=(Ec|2|0)==2,zh=Hn&(Pu^1),Rf=1040+(Ar<<2)|0,Ff=1040+(Mr<<2)|0,Jh=976+(Ar<<2)|0,Kh=(Ec|0)!=1,Ro=Pu&((fr|0)!=0&Ro),To=o+976|0,Hn=Hn^1,l=Qe,Hr=0,Fo=0,Ms=y(0),xu=y(0);;){e:do if(Hr>>>0>>0)for(Gr=n[Lo>>2]|0,ae=0,We=y(0),He=y(0),tt=y(0),Qe=y(0),q=0,L=0,Ye=Hr;;){if(Lt=n[Gr+(Ye<<2)>>2]|0,(n[Lt+36>>2]|0)!=1&&(n[Lt+940>>2]=Fo,(n[Lt+24>>2]|0)!=1)){if(Ze=y(yn(Lt,Mr,Nr)),ln=n[gc>>2]|0,u=y(Zr(Lt+380+(ln<<3)|0,Oo)),ct=y(h[Lt+504>>2]),u=y(pd(u,ct)),u=y($n(y(Zr(Lt+364+(ln<<3)|0,Oo)),u)),Pu&(ae|0)!=0&y(Ze+y(He+u))>l){m=ae,Ze=We,fr=Ye;break e}Ze=y(Ze+u),u=y(He+Ze),Ze=y(We+Ze),n2(Lt)|0&&(tt=y(tt+y(KA(Lt))),Qe=y(Qe-y(ct*y(Qh(Lt))))),L|0&&(n[L+960>>2]=Lt),n[Lt+960>>2]=0,ae=ae+1|0,L=Lt,q=q|0?q:Lt}else Ze=We,u=He;if(Ye=Ye+1|0,Ye>>>0>>0)We=Ze,He=u;else{m=ae,fr=Ye;break}}else m=0,Ze=y(0),tt=y(0),Qe=y(0),q=0,fr=Hr;while(!1);ln=tt>y(0)&tty(0)&QeOf&((Mt(Of)|0)^1))l=Of,ln=51;else if(s[(n[To>>2]|0)+3>>0]|0)ln=51;else{if($t!=y(0)&&y(KA(o))!=y(0)){ln=53;break}l=Ze,ln=53}while(!1);if((ln|0)==51&&(ln=0,Mt(l)|0?ln=53:(Tr=y(l-Ze),cr=l)),(ln|0)==53&&(ln=0,Ze>2]|0,Ye=Try(0),He=y(Tr/$t),tt=y(0),Ze=y(0),l=y(0),L=q;do u=y(Zr(L+380+(ae<<3)|0,Oo)),Qe=y(Zr(L+364+(ae<<3)|0,Oo)),Qe=y(pd(u,y($n(Qe,y(h[L+504>>2]))))),Ye?(u=y(Qe*y(Qh(L))),u!=y(-0)&&(zt=y(Qe-y(ct*u)),ap=y(qn(L,Mr,zt,cr,Nr)),zt!=ap)&&(tt=y(tt-y(ap-Qe)),l=y(l+u))):Lt&&(Lf=y(KA(L)),Lf!=y(0))&&(zt=y(Qe+y(He*Lf)),lp=y(qn(L,Mr,zt,cr,Nr)),zt!=lp)&&(tt=y(tt-y(lp-Qe)),Ze=y(Ze-Lf)),L=n[L+960>>2]|0;while(L|0);if(l=y(We+l),Qe=y(Tr+tt),op)l=y(0);else{ct=y($t+Ze),Ye=n[gc>>2]|0,Lt=Qey(0),ct=y(Qe/ct),l=y(0);do{zt=y(Zr(q+380+(Ye<<3)|0,Oo)),tt=y(Zr(q+364+(Ye<<3)|0,Oo)),tt=y(pd(zt,y($n(tt,y(h[q+504>>2]))))),Lt?(zt=y(tt*y(Qh(q))),Qe=y(-zt),zt!=y(-0)?(zt=y(He*Qe),Qe=y(qn(q,Mr,y(tt+(Gr?Qe:zt)),cr,Nr))):Qe=tt):ae&&(cp=y(KA(q)),cp!=y(0))?Qe=y(qn(q,Mr,y(tt+y(ct*cp)),cr,Nr)):Qe=tt,l=y(l-y(Qe-tt)),Ze=y(yn(q,Mr,Nr)),u=y(yn(q,Ar,Nr)),Qe=y(Qe+Ze),h[Ll>>2]=Qe,n[mc>>2]=1,tt=y(h[q+396>>2]);e:do if(Mt(tt)|0){L=Mt(Wn)|0;do if(!L){if(Ro|(io(q,Ar,Wn)|0|Hn)||(os(o,q)|0)!=4||(n[(kl(q,Ar)|0)+4>>2]|0)==3||(n[(Ql(q,Ar)|0)+4>>2]|0)==3)break;h[oo>>2]=Wn,n[ma>>2]=1;break e}while(!1);if(io(q,Ar,Wn)|0){L=n[q+992+(n[Jh>>2]<<2)>>2]|0,zt=y(u+y(Zr(L,Wn))),h[oo>>2]=zt,L=Kh&(n[L+4>>2]|0)==2,n[ma>>2]=((Mt(zt)|0|L)^1)&1;break}else{h[oo>>2]=Wn,n[ma>>2]=L?0:2;break}}else zt=y(Qe-Ze),$t=y(zt/tt),zt=y(tt*zt),n[ma>>2]=1,h[oo>>2]=y(u+(ui?$t:zt));while(!1);Cu(q,Mr,cr,Nr,mc,Ll),Cu(q,Ar,Wn,Nr,ma,oo);do if(!(io(q,Ar,Wn)|0)&&(os(o,q)|0)==4){if((n[(kl(q,Ar)|0)+4>>2]|0)==3){L=0;break}L=(n[(Ql(q,Ar)|0)+4>>2]|0)!=3}else L=0;while(!1);zt=y(h[Ll>>2]),$t=y(h[oo>>2]),dp=n[mc>>2]|0,Bi=n[ma>>2]|0,xl(q,ui?zt:$t,ui?$t:zt,Us,ui?dp:Bi,ui?Bi:dp,Nr,No,T&(L^1),3488,M)|0,s[dc>>0]=s[dc>>0]|s[q+508>>0],q=n[q+960>>2]|0}while(q|0)}}else l=y(0);if(l=y(Tr+l),Bi=l>0]=Bi|c[dc>>0],Yh&l>y(0)?(L=n[gc>>2]|0,n[o+364+(L<<3)+4>>2]|0&&(ao=y(Zr(o+364+(L<<3)|0,Oo)),ao>=y(0))?Qe=y($n(y(0),y(ao-y(cr-l)))):Qe=y(0)):Qe=l,Lt=Hr>>>0>>0,Lt){Ye=n[Lo>>2]|0,ae=Hr,L=0;do q=n[Ye+(ae<<2)>>2]|0,n[q+24>>2]|0||(L=((n[(kl(q,Mr)|0)+4>>2]|0)==3&1)+L|0,L=L+((n[(Ql(q,Mr)|0)+4>>2]|0)==3&1)|0),ae=ae+1|0;while((ae|0)!=(fr|0));L?(Ze=y(0),u=y(0)):ln=101}else ln=101;e:do if((ln|0)==101)switch(ln=0,Xh|0){case 1:{L=0,Ze=y(Qe*y(.5)),u=y(0);break e}case 2:{L=0,Ze=Qe,u=y(0);break e}case 3:{if(m>>>0<=1){L=0,Ze=y(0),u=y(0);break e}u=y((m+-1|0)>>>0),L=0,Ze=y(0),u=y(y($n(Qe,y(0)))/u);break e}case 5:{u=y(Qe/y((m+1|0)>>>0)),L=0,Ze=u;break e}case 4:{u=y(Qe/y(m>>>0)),L=0,Ze=y(u*y(.5));break e}default:{L=0,Ze=y(0),u=y(0);break e}}while(!1);if(l=y(Zh+Ze),Lt){tt=y(Qe/y(L|0)),ae=n[Lo>>2]|0,q=Hr,Qe=y(0);do{L=n[ae+(q<<2)>>2]|0;e:do if((n[L+36>>2]|0)!=1){switch(n[L+24>>2]|0){case 1:{if(ha(L,Mr)|0){if(!T)break e;zt=y(zA(L,Mr,cr)),zt=y(zt+y(vr(o,Mr))),zt=y(zt+y(K(L,Mr,Nr))),h[L+400+(n[Ff>>2]<<2)>>2]=zt;break e}break}case 0:if(Bi=(n[(kl(L,Mr)|0)+4>>2]|0)==3,zt=y(tt+l),l=Bi?zt:l,T&&(Bi=L+400+(n[Ff>>2]<<2)|0,h[Bi>>2]=y(l+y(h[Bi>>2]))),Bi=(n[(Ql(L,Mr)|0)+4>>2]|0)==3,zt=y(tt+l),l=Bi?zt:l,Za){zt=y(u+y(yn(L,Mr,Nr))),Qe=Wn,l=y(l+y(zt+y(h[L+504>>2])));break e}else{l=y(l+y(u+y(XA(L,Mr,Nr)))),Qe=y($n(Qe,y(XA(L,Ar,Nr))));break e}default:}T&&(zt=y(Ze+y(vr(o,Mr))),Bi=L+400+(n[Ff>>2]<<2)|0,h[Bi>>2]=y(zt+y(h[Bi>>2])))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}else Qe=y(0);if(u=y($h+l),Vh?Ze=y(y(qn(o,Ar,y(lo+Qe),Tu,B))-lo):Ze=Wn,tt=y(y(qn(o,Ar,y(lo+(zh?Wn:Qe)),Tu,B))-lo),Lt&T){q=Hr;do{ae=n[(n[Lo>>2]|0)+(q<<2)>>2]|0;do if((n[ae+36>>2]|0)!=1){if((n[ae+24>>2]|0)==1){if(ha(ae,Ar)|0){if(zt=y(zA(ae,Ar,Wn)),zt=y(zt+y(vr(o,Ar))),zt=y(zt+y(K(ae,Ar,Nr))),L=n[Rf>>2]|0,h[ae+400+(L<<2)>>2]=zt,!(Mt(zt)|0))break}else L=n[Rf>>2]|0;zt=y(vr(o,Ar)),h[ae+400+(L<<2)>>2]=y(zt+y(K(ae,Ar,Nr)));break}L=os(o,ae)|0;do if((L|0)==4){if((n[(kl(ae,Ar)|0)+4>>2]|0)==3){ln=139;break}if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){ln=139;break}if(io(ae,Ar,Wn)|0){l=Le;break}dp=n[ae+908+(n[gc>>2]<<2)>>2]|0,n[oo>>2]=dp,l=y(h[ae+396>>2]),Bi=Mt(l)|0,Qe=(n[S>>2]=dp,y(h[S>>2])),Bi?l=tt:(Tr=y(yn(ae,Ar,Nr)),zt=y(Qe/l),l=y(l*Qe),l=y(Tr+(ui?zt:l))),h[Ll>>2]=l,h[oo>>2]=y(y(yn(ae,Mr,Nr))+Qe),n[ma>>2]=1,n[mc>>2]=1,Cu(ae,Mr,cr,Nr,ma,oo),Cu(ae,Ar,Wn,Nr,mc,Ll),l=y(h[oo>>2]),Tr=y(h[Ll>>2]),zt=ui?l:Tr,l=ui?Tr:l,Bi=((Mt(zt)|0)^1)&1,xl(ae,zt,l,Us,Bi,((Mt(l)|0)^1)&1,Nr,No,1,3493,M)|0,l=Le}else ln=139;while(!1);e:do if((ln|0)==139){ln=0,l=y(Ze-y(XA(ae,Ar,Nr)));do if((n[(kl(ae,Ar)|0)+4>>2]|0)==3){if((n[(Ql(ae,Ar)|0)+4>>2]|0)!=3)break;l=y(Le+y($n(y(0),y(l*y(.5)))));break e}while(!1);if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){l=Le;break}if((n[(kl(ae,Ar)|0)+4>>2]|0)==3){l=y(Le+y($n(y(0),l)));break}switch(L|0){case 1:{l=Le;break e}case 2:{l=y(Le+y(l*y(.5)));break e}default:{l=y(Le+l);break e}}}while(!1);zt=y(Ms+l),Bi=ae+400+(n[Rf>>2]<<2)|0,h[Bi>>2]=y(zt+y(h[Bi>>2]))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}if(Ms=y(Ms+tt),xu=y($n(xu,u)),m=Fo+1|0,fr>>>0>=co>>>0)break;l=cr,Hr=fr,Fo=m}do if(T){if(L=m>>>0>1,!L&&!(jL(o)|0))break;if(!(Mt(Wn)|0)){l=y(Wn-Ms);e:do switch(n[o+12>>2]|0){case 3:{Le=y(Le+l),He=y(0);break}case 2:{Le=y(Le+y(l*y(.5))),He=y(0);break}case 4:{Wn>Ms?He=y(l/y(m>>>0)):He=y(0);break}case 7:if(Wn>Ms){Le=y(Le+y(l/y(m<<1>>>0))),He=y(l/y(m>>>0)),He=L?He:y(0);break e}else{Le=y(Le+y(l*y(.5))),He=y(0);break e}case 6:{He=y(l/y(Fo>>>0)),He=Wn>Ms&L?He:y(0);break}default:He=y(0)}while(!1);if(m|0)for(Lt=1040+(Ar<<2)|0,Gr=976+(Ar<<2)|0,Ye=0,q=0;;){e:do if(q>>>0>>0)for(Qe=y(0),tt=y(0),l=y(0),ae=q;;){L=n[(n[Lo>>2]|0)+(ae<<2)>>2]|0;do if((n[L+36>>2]|0)!=1&&!(n[L+24>>2]|0)){if((n[L+940>>2]|0)!=(Ye|0))break e;if(qL(L,Ar)|0&&(zt=y(h[L+908+(n[Gr>>2]<<2)>>2]),l=y($n(l,y(zt+y(yn(L,Ar,Nr)))))),(os(o,L)|0)!=5)break;ao=y(Yg(L)),ao=y(ao+y(K(L,0,Nr))),zt=y(h[L+912>>2]),zt=y(y(zt+y(yn(L,0,Nr)))-ao),ao=y($n(tt,ao)),zt=y($n(Qe,zt)),Qe=zt,tt=ao,l=y($n(l,y(ao+zt)))}while(!1);if(L=ae+1|0,L>>>0>>0)ae=L;else{ae=L;break}}else tt=y(0),l=y(0),ae=q;while(!1);if(ct=y(He+l),u=Le,Le=y(Le+ct),q>>>0>>0){Ze=y(u+tt),L=q;do{q=n[(n[Lo>>2]|0)+(L<<2)>>2]|0;e:do if((n[q+36>>2]|0)!=1&&!(n[q+24>>2]|0))switch(os(o,q)|0){case 1:{zt=y(u+y(K(q,Ar,Nr))),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 3:{zt=y(y(Le-y(re(q,Ar,Nr)))-y(h[q+908+(n[Gr>>2]<<2)>>2])),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 2:{zt=y(u+y(y(ct-y(h[q+908+(n[Gr>>2]<<2)>>2]))*y(.5))),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 4:{if(zt=y(u+y(K(q,Ar,Nr))),h[q+400+(n[Lt>>2]<<2)>>2]=zt,io(q,Ar,Wn)|0||(ui?(Qe=y(h[q+908>>2]),l=y(Qe+y(yn(q,Mr,Nr))),tt=ct):(tt=y(h[q+912>>2]),tt=y(tt+y(yn(q,Ar,Nr))),l=ct,Qe=y(h[q+908>>2])),mn(l,Qe)|0&&mn(tt,y(h[q+912>>2]))|0))break e;xl(q,l,tt,Us,1,1,Nr,No,1,3501,M)|0;break e}case 5:{h[q+404>>2]=y(y(Ze-y(Yg(q)))+y(zA(q,0,Wn)));break e}default:break e}while(!1);L=L+1|0}while((L|0)!=(ae|0))}if(Ye=Ye+1|0,(Ye|0)==(m|0))break;q=ae}}}while(!1);if(h[o+908>>2]=y(qn(o,2,ku,B,B)),h[o+912>>2]=y(qn(o,0,up,k,B)),yc|0&&(fp=n[o+32>>2]|0,Ap=(yc|0)==2,!(Ap&(fp|0)!=2))?Ap&(fp|0)==2&&(l=y(Qu+cr),l=y($n(y(pd(l,y(Vg(o,Mr,xu,Oo)))),Qu)),ln=198):(l=y(qn(o,Mr,xu,Oo,B)),ln=198),(ln|0)==198&&(h[o+908+(n[976+(Mr<<2)>>2]<<2)>>2]=l),Ec|0&&(hp=n[o+32>>2]|0,gp=(Ec|0)==2,!(gp&(hp|0)!=2))?gp&(hp|0)==2&&(l=y(lo+Wn),l=y($n(y(pd(l,y(Vg(o,Ar,y(lo+Ms),Tu)))),lo)),ln=204):(l=y(qn(o,Ar,y(lo+Ms),Tu,B)),ln=204),(ln|0)==204&&(h[o+908+(n[976+(Ar<<2)>>2]<<2)>>2]=l),T){if((n[pp>>2]|0)==2){q=976+(Ar<<2)|0,ae=1040+(Ar<<2)|0,L=0;do Ye=Is(o,L)|0,n[Ye+24>>2]|0||(dp=n[q>>2]|0,zt=y(h[o+908+(dp<<2)>>2]),Bi=Ye+400+(n[ae>>2]<<2)|0,zt=y(zt-y(h[Bi>>2])),h[Bi>>2]=y(zt-y(h[Ye+908+(dp<<2)>>2]))),L=L+1|0;while((L|0)!=(co|0))}if(A|0){L=ui?yc:d;do WL(o,A,Nr,L,No,Us,M),A=n[A+960>>2]|0;while(A|0)}if(L=(Mr|2|0)==3,q=(Ar|2|0)==3,L|q){A=0;do ae=n[(n[Lo>>2]|0)+(A<<2)>>2]|0,(n[ae+36>>2]|0)!=1&&(L&&i2(o,ae,Mr),q&&i2(o,ae,Ar)),A=A+1|0;while((A|0)!=(co|0))}}}while(!1);I=Ic}function Dh(o,l){o=o|0,l=y(l);var u=0;Ha(o,l>=y(0),3147),u=l==y(0),h[o+4>>2]=u?y(0):l}function YA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=A|0;var d=$e,m=$e,B=0,k=0,T=0;n[2278]=(n[2278]|0)+1,vf(o),io(o,2,l)|0?(d=y(Zr(n[o+992>>2]|0,l)),T=1,d=y(d+y(yn(o,2,l)))):(d=y(Zr(o+380|0,l)),d>=y(0)?T=2:(T=((Mt(l)|0)^1)&1,d=l)),io(o,0,u)|0?(m=y(Zr(n[o+996>>2]|0,u)),k=1,m=y(m+y(yn(o,0,l)))):(m=y(Zr(o+388|0,u)),m>=y(0)?k=2:(k=((Mt(u)|0)^1)&1,m=u)),B=o+976|0,xl(o,d,m,A,T,k,l,u,1,3189,n[B>>2]|0)|0&&(bh(o,n[o+496>>2]|0,l,u,l),VA(o,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),s[11696]|0)&&Gg(o,7)}function vf(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;k=I,I=I+32|0,B=k+24|0,m=k+16|0,A=k+8|0,d=k,u=0;do l=o+380+(u<<3)|0,n[o+380+(u<<3)+4>>2]|0&&(T=l,M=n[T+4>>2]|0,L=A,n[L>>2]=n[T>>2],n[L+4>>2]=M,L=o+364+(u<<3)|0,M=n[L+4>>2]|0,T=d,n[T>>2]=n[L>>2],n[T+4>>2]=M,n[m>>2]=n[A>>2],n[m+4>>2]=n[A+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],Cf(m,B)|0)||(l=o+348+(u<<3)|0),n[o+992+(u<<2)>>2]=l,u=u+1|0;while((u|0)!=2);I=k}function io(o,l,u){o=o|0,l=l|0,u=y(u);var A=0;switch(o=n[o+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[o+4>>2]|0){case 0:case 3:{o=0;break}case 1:{y(h[o>>2])>2])>2]|0){case 2:{l=y(y(y(h[o>>2])*l)/y(100));break}case 1:{l=y(h[o>>2]);break}default:l=y(le)}return y(l)}function bh(o,l,u,A,d){o=o|0,l=l|0,u=y(u),A=y(A),d=y(d);var m=0,B=$e;l=n[o+944>>2]|0?l:1,m=dr(n[o+4>>2]|0,l)|0,l=by(m,l)|0,u=y(uP(o,m,u)),A=y(uP(o,l,A)),B=y(u+y(K(o,m,d))),h[o+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,u=y(u+y(re(o,m,d))),h[o+400+(n[1e3+(m<<2)>>2]<<2)>>2]=u,u=y(A+y(K(o,l,d))),h[o+400+(n[1040+(l<<2)>>2]<<2)>>2]=u,d=y(A+y(re(o,l,d))),h[o+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function VA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=y(A);var d=0,m=0,B=$e,k=$e,T=0,M=0,L=$e,q=0,ae=$e,Ye=$e,Le=$e,Qe=$e;if(l!=y(0)&&(d=o+400|0,Qe=y(h[d>>2]),m=o+404|0,Le=y(h[m>>2]),q=o+416|0,Ye=y(h[q>>2]),M=o+420|0,B=y(h[M>>2]),ae=y(Qe+u),L=y(Le+A),A=y(ae+Ye),k=y(L+B),T=(n[o+988>>2]|0)==1,h[d>>2]=y(ss(Qe,l,0,T)),h[m>>2]=y(ss(Le,l,0,T)),u=y(uU(y(Ye*l),y(1))),mn(u,y(0))|0?m=0:m=(mn(u,y(1))|0)^1,u=y(uU(y(B*l),y(1))),mn(u,y(0))|0?d=0:d=(mn(u,y(1))|0)^1,Qe=y(ss(A,l,T&m,T&(m^1))),h[q>>2]=y(Qe-y(ss(ae,l,0,T))),Qe=y(ss(k,l,T&d,T&(d^1))),h[M>>2]=y(Qe-y(ss(L,l,0,T))),m=(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2,m|0)){d=0;do VA(Is(o,d)|0,l,ae,L),d=d+1|0;while((d|0)!=(m|0))}}function Sy(o,l,u,A,d){switch(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,u|0){case 5:case 0:{o=IZ(n[489]|0,A,d)|0;break}default:o=b6e(A,d)|0}return o|0}function Wg(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;d=I,I=I+16|0,m=d,n[m>>2]=A,Ph(o,0,l,u,m),I=d}function Ph(o,l,u,A,d){if(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,o=o|0?o:956,HZ[n[o+8>>2]&1](o,l,u,A,d)|0,(u|0)==5)Nt();else return}function pc(o,l,u){o=o|0,l=l|0,u=u|0,s[o+l>>0]=u&1}function Dy(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(xh(o,A),kt(o,n[l>>2]|0,n[u>>2]|0,A))}function xh(o,l){o=o|0,l=l|0;var u=0;if((O(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function kt(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function O(o){return o=o|0,1073741823}function K(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+96>>2]|0?o=o+92|0:o=kn(o+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(Je(o,u))}function re(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+104>>2]|0?o=o+100|0:o=kn(o+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(Je(o,u))}function de(o){return o=o|0,(o|1|0)==3|0}function Je(o,l){return o=o|0,l=y(l),(n[o+4>>2]|0)==3?l=y(0):l=y(Zr(o,l)),y(l)}function At(o,l){return o=o|0,l=l|0,o=n[o>>2]|0,(o|0?o:(l|0)>1?l:1)|0}function dr(o,l){o=o|0,l=l|0;var u=0;e:do if((l|0)==2){switch(o|0){case 2:{o=3;break e}case 3:break;default:{u=4;break e}}o=2}else u=4;while(!1);return o|0}function vr(o,l){o=o|0,l=l|0;var u=$e;return de(l)|0&&n[o+312>>2]|0&&(u=y(h[o+308>>2]),u>=y(0))||(u=y($n(y(h[(kn(o+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function Un(o,l){o=o|0,l=l|0;var u=$e;return de(l)|0&&n[o+320>>2]|0&&(u=y(h[o+316>>2]),u>=y(0))||(u=y($n(y(h[(kn(o+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function mi(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return de(l)|0&&n[o+240>>2]|0&&(A=y(Zr(o+236|0,u)),A>=y(0))||(A=y($n(y(Zr(kn(o+204|0,n[1040+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function Cs(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return de(l)|0&&n[o+248>>2]|0&&(A=y(Zr(o+244|0,u)),A>=y(0))||(A=y($n(y(Zr(kn(o+204|0,n[1e3+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function JA(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=$e,T=$e,M=$e,L=$e,q=$e,ae=$e,Ye=0,Le=0,Qe=0;Qe=I,I=I+16|0,Ye=Qe,Le=o+964|0,wi(o,(n[Le>>2]|0)!=0,3519),k=y(Va(o,2,l)),T=y(Va(o,0,l)),M=y(yn(o,2,l)),L=y(yn(o,0,l)),Mt(l)|0?q=l:q=y($n(y(0),y(y(l-M)-k))),Mt(u)|0?ae=u:ae=y($n(y(0),y(y(u-L)-T))),(A|0)==1&(d|0)==1?(h[o+908>>2]=y(qn(o,2,y(l-M),m,m)),l=y(qn(o,0,y(u-L),B,m))):(jZ[n[Le>>2]&1](Ye,o,q,A,ae,d),q=y(k+y(h[Ye>>2])),ae=y(l-M),h[o+908>>2]=y(qn(o,2,(A|2|0)==2?q:ae,m,m)),ae=y(T+y(h[Ye+4>>2])),l=y(u-L),l=y(qn(o,0,(d|2|0)==2?ae:l,B,m))),h[o+912>>2]=l,I=Qe}function lP(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=$e,T=$e,M=$e,L=$e;M=y(Va(o,2,m)),k=y(Va(o,0,m)),L=y(yn(o,2,m)),T=y(yn(o,0,m)),l=y(l-L),h[o+908>>2]=y(qn(o,2,(A|2|0)==2?M:l,m,m)),u=y(u-T),h[o+912>>2]=y(qn(o,0,(d|2|0)==2?k:u,B,m))}function t2(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=0,T=$e,M=$e;return k=(A|0)==2,!(l<=y(0)&k)&&!(u<=y(0)&(d|0)==2)&&!((A|0)==1&(d|0)==1)?o=0:(T=y(yn(o,0,m)),M=y(yn(o,2,m)),k=l>2]=y(qn(o,2,k?y(0):l,m,m)),l=y(u-T),k=u>2]=y(qn(o,0,k?y(0):l,B,m)),o=1),o|0}function by(o,l){return o=o|0,l=l|0,Jg(o)|0?o=dr(2,l)|0:o=0,o|0}function kh(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(mi(o,l,u)),y(u+y(vr(o,l)))}function r2(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(Cs(o,l,u)),y(u+y(Un(o,l)))}function Va(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(kh(o,l,u)),y(A+y(r2(o,l,u)))}function n2(o){return o=o|0,n[o+24>>2]|0?o=0:y(KA(o))!=y(0)?o=1:o=y(Qh(o))!=y(0),o|0}function KA(o){o=o|0;var l=$e;if(n[o+944>>2]|0){if(l=y(h[o+44>>2]),Mt(l)|0)return l=y(h[o+40>>2]),o=l>y(0)&((Mt(l)|0)^1),y(o?l:y(0))}else l=y(0);return y(l)}function Qh(o){o=o|0;var l=$e,u=0,A=$e;do if(n[o+944>>2]|0){if(l=y(h[o+48>>2]),Mt(l)|0){if(u=s[(n[o+976>>2]|0)+2>>0]|0,!(u<<24>>24)&&(A=y(h[o+40>>2]),A>24?y(1):y(0)}}else l=y(0);while(!1);return y(l)}function Py(o){o=o|0;var l=0,u=0;if(eE(o+400|0,0,540)|0,s[o+985>>0]=1,te(o),u=Mi(o)|0,u|0){l=o+948|0,o=0;do Py(n[(n[l>>2]|0)+(o<<2)>>2]|0),o=o+1|0;while((o|0)!=(u|0))}}function cP(o,l,u,A,d,m,B,k,T,M){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=y(m),B=y(B),k=k|0,T=T|0,M=M|0;var L=0,q=$e,ae=0,Ye=0,Le=$e,Qe=$e,tt=0,Ze=$e,ct=0,He=$e,We=0,Lt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0,To=0;Hn=I,I=I+16|0,Gr=Hn+12|0,fr=Hn+8|0,$t=Hn+4|0,Tr=Hn,cr=dr(n[o+4>>2]|0,T)|0,We=de(cr)|0,q=y(Zr(YL(l)|0,We?m:B)),Lt=io(l,2,m)|0,Hr=io(l,0,B)|0;do if(!(Mt(q)|0)&&!(Mt(We?u:d)|0)){if(L=l+504|0,!(Mt(y(h[L>>2]))|0)&&(!(s2(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[L>>2]=y($n(q,y(Va(l,cr,m))))}else ae=7;while(!1);do if((ae|0)==7){if(ct=We^1,!(ct|Lt^1)){B=y(Zr(n[l+992>>2]|0,m)),h[l+504>>2]=y($n(B,y(Va(l,2,m))));break}if(!(We|Hr^1)){B=y(Zr(n[l+996>>2]|0,B)),h[l+504>>2]=y($n(B,y(Va(l,0,m))));break}h[Gr>>2]=y(le),h[fr>>2]=y(le),n[$t>>2]=0,n[Tr>>2]=0,Ze=y(yn(l,2,m)),He=y(yn(l,0,m)),Lt?(Le=y(Ze+y(Zr(n[l+992>>2]|0,m))),h[Gr>>2]=Le,n[$t>>2]=1,Ye=1):(Ye=0,Le=y(le)),Hr?(q=y(He+y(Zr(n[l+996>>2]|0,B))),h[fr>>2]=q,n[Tr>>2]=1,L=1):(L=0,q=y(le)),ae=n[o+32>>2]|0,We&(ae|0)==2?ae=2:Mt(Le)|0&&!(Mt(u)|0)&&(h[Gr>>2]=u,n[$t>>2]=2,Ye=2,Le=u),!((ae|0)==2&ct)&&Mt(q)|0&&!(Mt(d)|0)&&(h[fr>>2]=d,n[Tr>>2]=2,L=2,q=d),Qe=y(h[l+396>>2]),tt=Mt(Qe)|0;do if(tt)ae=Ye;else{if((Ye|0)==1&ct){h[fr>>2]=y(y(Le-Ze)/Qe),n[Tr>>2]=1,L=1,ae=1;break}We&(L|0)==1?(h[Gr>>2]=y(Qe*y(q-He)),n[$t>>2]=1,L=1,ae=1):ae=Ye}while(!1);To=Mt(u)|0,Ye=(os(o,l)|0)!=4,!(We|Lt|((A|0)!=1|To)|(Ye|(ae|0)==1))&&(h[Gr>>2]=u,n[$t>>2]=1,!tt)&&(h[fr>>2]=y(y(u-Ze)/Qe),n[Tr>>2]=1,L=1),!(Hr|ct|((k|0)!=1|(Mt(d)|0))|(Ye|(L|0)==1))&&(h[fr>>2]=d,n[Tr>>2]=1,!tt)&&(h[Gr>>2]=y(Qe*y(d-He)),n[$t>>2]=1),Cu(l,2,m,m,$t,Gr),Cu(l,0,B,m,Tr,fr),u=y(h[Gr>>2]),d=y(h[fr>>2]),xl(l,u,d,T,n[$t>>2]|0,n[Tr>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(cr<<2)>>2]<<2)>>2]),h[l+504>>2]=y($n(B,y(Va(l,cr,m))))}while(!1);n[l+500>>2]=n[2278],I=Hn}function qn(o,l,u,A,d){return o=o|0,l=l|0,u=y(u),A=y(A),d=y(d),A=y(Vg(o,l,u,A)),y($n(A,y(Va(o,l,d))))}function os(o,l){return o=o|0,l=l|0,l=l+20|0,l=n[(n[l>>2]|0?l:o+16|0)>>2]|0,(l|0)==5&&Jg(n[o+4>>2]|0)|0&&(l=1),l|0}function kl(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+96>>2]|0?l=4:l=n[1040+(l<<2)>>2]|0,o+60+(l<<3)|0}function Ql(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+104>>2]|0?l=5:l=n[1e3+(l<<2)>>2]|0,o+60+(l<<3)|0}function Cu(o,l,u,A,d,m){switch(o=o|0,l=l|0,u=y(u),A=y(A),d=d|0,m=m|0,u=y(Zr(o+380+(n[976+(l<<2)>>2]<<3)|0,u)),u=y(u+y(yn(o,l,A))),n[d>>2]|0){case 2:case 1:{d=Mt(u)|0,A=y(h[m>>2]),h[m>>2]=d|A>2]=2,h[m>>2]=u);break}default:}}function ha(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(kn(o,4,948)|0)+4>>2]|0?o=1:o=(n[(kn(o,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function zA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,de(l)|0&&(A=kn(o,4,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=kn(o,n[1040+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Zr(A,u))),y(u)}function XA(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),A=y(A+y(K(o,l,u))),y(A+y(re(o,l,u)))}function jL(o){o=o|0;var l=0,u=0,A=0;e:do if(Jg(n[o+4>>2]|0)|0)l=0;else if((n[o+16>>2]|0)!=5)if(u=Mi(o)|0,!u)l=0;else for(l=0;;){if(A=Is(o,l)|0,!(n[A+24>>2]|0)&&(n[A+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=u>>>0){l=0;break}}else l=1;while(!1);return l|0}function qL(o,l){o=o|0,l=l|0;var u=$e;return u=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),u>=y(0)&((Mt(u)|0)^1)|0}function Yg(o){o=o|0;var l=$e,u=0,A=0,d=0,m=0,B=0,k=0,T=$e;if(u=n[o+968>>2]|0,u)T=y(h[o+908>>2]),l=y(h[o+912>>2]),l=y(LZ[u&0](o,T,l)),wi(o,(Mt(l)|0)^1,3573);else{m=Mi(o)|0;do if(m|0){for(u=0,d=0;;){if(A=Is(o,d)|0,n[A+940>>2]|0){B=8;break}if((n[A+24>>2]|0)!=1)if(k=(os(o,A)|0)==5,k){u=A;break}else u=u|0?u:A;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!u)break;return l=y(Yg(u)),y(l+y(h[u+404>>2]))}while(!1);l=y(h[o+912>>2])}return y(l)}function Vg(o,l,u,A){o=o|0,l=l|0,u=y(u),A=y(A);var d=$e,m=0;return Jg(l)|0?(l=1,m=3):de(l)|0?(l=0,m=3):(A=y(le),d=y(le)),(m|0)==3&&(d=y(Zr(o+364+(l<<3)|0,A)),A=y(Zr(o+380+(l<<3)|0,A))),m=A=y(0)&((Mt(A)|0)^1)),u=m?A:u,m=d>=y(0)&((Mt(d)|0)^1)&u>2]|0,m)|0,Le=by(tt,m)|0,Qe=de(tt)|0,q=y(yn(l,2,u)),ae=y(yn(l,0,u)),io(l,2,u)|0?k=y(q+y(Zr(n[l+992>>2]|0,u))):ha(l,2)|0&&xy(l,2)|0?(k=y(h[o+908>>2]),T=y(vr(o,2)),T=y(k-y(T+y(Un(o,2)))),k=y(zA(l,2,u)),k=y(qn(l,2,y(T-y(k+y(Th(l,2,u)))),u,u))):k=y(le),io(l,0,d)|0?T=y(ae+y(Zr(n[l+996>>2]|0,d))):ha(l,0)|0&&xy(l,0)|0?(T=y(h[o+912>>2]),ct=y(vr(o,0)),ct=y(T-y(ct+y(Un(o,0)))),T=y(zA(l,0,d)),T=y(qn(l,0,y(ct-y(T+y(Th(l,0,d)))),d,u))):T=y(le),M=Mt(k)|0,L=Mt(T)|0;do if(M^L&&(Ye=y(h[l+396>>2]),!(Mt(Ye)|0)))if(M){k=y(q+y(y(T-ae)*Ye));break}else{ct=y(ae+y(y(k-q)/Ye)),T=L?ct:T;break}while(!1);L=Mt(k)|0,M=Mt(T)|0,L|M&&(He=(L^1)&1,A=u>y(0)&((A|0)!=0&L),k=Qe?k:A?u:k,xl(l,k,T,m,Qe?He:A?2:He,L&(M^1)&1,k,T,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(yn(l,2,u))),T=y(h[l+912>>2]),T=y(T+y(yn(l,0,u)))),xl(l,k,T,m,1,1,k,T,1,3635,B)|0,xy(l,tt)|0&&!(ha(l,tt)|0)?(He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),ct=y(ct-y(Un(o,tt))),ct=y(ct-y(re(l,tt,u))),ct=y(ct-y(Th(l,tt,Qe?u:d))),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct):Ze=21;do if((Ze|0)==21){if(!(ha(l,tt)|0)&&(n[o+8>>2]|0)==1){He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(y(ct-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct;break}!(ha(l,tt)|0)&&(n[o+8>>2]|0)==2&&(He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct)}while(!1);xy(l,Le)|0&&!(ha(l,Le)|0)?(He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),ct=y(ct-y(Un(o,Le))),ct=y(ct-y(re(l,Le,u))),ct=y(ct-y(Th(l,Le,Qe?d:u))),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct):Ze=30;do if((Ze|0)==30&&!(ha(l,Le)|0)){if((os(o,l)|0)==2){He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(y(ct-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct;break}He=(os(o,l)|0)==3,He^(n[o+28>>2]|0)==2&&(He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct)}while(!1)}function i2(o,l,u){o=o|0,l=l|0,u=u|0;var A=$e,d=0;d=n[976+(u<<2)>>2]|0,A=y(h[l+908+(d<<2)>>2]),A=y(y(h[o+908+(d<<2)>>2])-A),A=y(A-y(h[l+400+(n[1040+(u<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(u<<2)>>2]<<2)>>2]=A}function Jg(o){return o=o|0,(o|1|0)==1|0}function YL(o){o=o|0;var l=$e;switch(n[o+56>>2]|0){case 0:case 3:{l=y(h[o+40>>2]),l>y(0)&((Mt(l)|0)^1)?o=s[(n[o+976>>2]|0)+2>>0]|0?1056:992:o=1056;break}default:o=o+52|0}return o|0}function s2(o,l){return o=o|0,l=l|0,(s[o+l>>0]|0)!=0|0}function xy(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(kn(o,5,948)|0)+4>>2]|0?o=1:o=(n[(kn(o,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function Th(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,de(l)|0&&(A=kn(o,5,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=kn(o,n[1e3+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Zr(A,u))),y(u)}function uP(o,l,u){return o=o|0,l=l|0,u=y(u),ha(o,l)|0?u=y(zA(o,l,u)):u=y(-y(Th(o,l,u))),y(u)}function fP(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function ky(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Kt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function AP(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Qy(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function pP(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;if(B=o+4|0,k=n[B>>2]|0,d=k-A|0,m=d>>2,o=l+(m<<2)|0,o>>>0>>0){A=k;do n[A>>2]=n[o>>2],o=o+4|0,A=(n[B>>2]|0)+4|0,n[B>>2]=A;while(o>>>0>>0)}m|0&&Q2(k+(0-m<<2)|0,l|0,d|0)|0}function hP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0;return k=l+4|0,T=n[k>>2]|0,d=n[o>>2]|0,B=u,m=B-d|0,A=T+(0-(m>>2)<<2)|0,n[k>>2]=A,(m|0)>0&&Qr(A|0,d|0,m|0)|0,d=o+4|0,m=l+8|0,A=(n[d>>2]|0)-B|0,(A|0)>0&&(Qr(n[m>>2]|0,u|0,A|0)|0,n[m>>2]=(n[m>>2]|0)+(A>>>2<<2)),B=n[o>>2]|0,n[o>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=o+8|0,u=l+12|0,o=n[B>>2]|0,n[B>>2]=n[u>>2],n[u>>2]=o,n[l>>2]=n[k>>2],T|0}function o2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[u>>2]|0,(B|0)!=(m|0)){d=o+8|0,u=((m+-4-B|0)>>>2)+1|0,o=B,A=n[d>>2]|0;do n[A>>2]=n[o>>2],A=(n[d>>2]|0)+4|0,n[d>>2]=A,o=o+4|0;while((o|0)!=(m|0));n[l>>2]=B+(u<<2)}}function a2(){ua()}function gP(){var o=0;return o=Kt(4)|0,l2(o),o|0}function l2(o){o=o|0,n[o>>2]=Ac()|0}function dP(o){o=o|0,o|0&&(Kg(o),It(o))}function Kg(o){o=o|0,st(n[o>>2]|0)}function VL(o,l,u){o=o|0,l=l|0,u=u|0,pc(n[o>>2]|0,l,u)}function Ty(o,l){o=o|0,l=y(l),Dh(n[o>>2]|0,l)}function Ry(o,l){return o=o|0,l=l|0,s2(n[o>>2]|0,l)|0}function Fy(){var o=0;return o=Kt(8)|0,zg(o,0),o|0}function zg(o,l){o=o|0,l=l|0,l?l=fa(n[l>>2]|0)|0:l=ns()|0,n[o>>2]=l,n[o+4>>2]=0,Tn(l,o)}function Ny(o){o=o|0;var l=0;return l=Kt(8)|0,zg(l,o),l|0}function Xg(o){o=o|0,o|0&&(Oy(o),It(o))}function Oy(o){o=o|0;var l=0;uc(n[o>>2]|0),l=o+4|0,o=n[l>>2]|0,n[l>>2]=0,o|0&&(Sf(o),It(o))}function Sf(o){o=o|0,Df(o)}function Df(o){o=o|0,o=n[o>>2]|0,o|0&&Na(o|0)}function c2(o){return o=o|0,Ga(o)|0}function u2(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Sf(l),It(l)),fc(n[o>>2]|0)}function Ly(o,l){o=o|0,l=l|0,An(n[o>>2]|0,n[l>>2]|0)}function JL(o,l){o=o|0,l=l|0,wh(n[o>>2]|0,l)}function KL(o,l,u){o=o|0,l=l|0,u=+u,Cy(n[o>>2]|0,l,y(u))}function My(o,l,u){o=o|0,l=l|0,u=+u,wy(n[o>>2]|0,l,y(u))}function f2(o,l){o=o|0,l=l|0,Eh(n[o>>2]|0,l)}function A2(o,l){o=o|0,l=l|0,So(n[o>>2]|0,l)}function xr(o,l){o=o|0,l=l|0,Ch(n[o>>2]|0,l)}function so(o,l){o=o|0,l=l|0,my(n[o>>2]|0,l)}function Xi(o,l){o=o|0,l=l|0,Ng(n[o>>2]|0,l)}function Ns(o,l){o=o|0,l=l|0,vo(n[o>>2]|0,l)}function ZA(o,l,u){o=o|0,l=l|0,u=+u,HA(n[o>>2]|0,l,y(u))}function p2(o,l,u){o=o|0,l=l|0,u=+u,Y(n[o>>2]|0,l,y(u))}function ws(o,l){o=o|0,l=l|0,jA(n[o>>2]|0,l)}function Uy(o,l){o=o|0,l=l|0,Ey(n[o>>2]|0,l)}function Rh(o,l){o=o|0,l=l|0,Do(n[o>>2]|0,l)}function Zg(o,l){o=o|0,l=+l,Bh(n[o>>2]|0,y(l))}function Fh(o,l){o=o|0,l=+l,bl(n[o>>2]|0,y(l))}function h2(o,l){o=o|0,l=+l,Iy(n[o>>2]|0,y(l))}function g2(o,l){o=o|0,l=+l,Lg(n[o>>2]|0,y(l))}function d2(o,l){o=o|0,l=+l,Dl(n[o>>2]|0,y(l))}function m2(o,l){o=o|0,l=+l,Mg(n[o>>2]|0,y(l))}function bf(o,l){o=o|0,l=+l,e2(n[o>>2]|0,y(l))}function sr(o){o=o|0,vh(n[o>>2]|0)}function _y(o,l){o=o|0,l=+l,zi(n[o>>2]|0,y(l))}function y2(o,l){o=o|0,l=+l,yf(n[o>>2]|0,y(l))}function hc(o){o=o|0,qa(n[o>>2]|0)}function Pf(o,l){o=o|0,l=+l,du(n[o>>2]|0,y(l))}function $g(o,l){o=o|0,l=+l,Ef(n[o>>2]|0,y(l))}function ed(o,l){o=o|0,l=+l,di(n[o>>2]|0,y(l))}function E2(o,l){o=o|0,l=+l,GA(n[o>>2]|0,y(l))}function I2(o,l){o=o|0,l=+l,Aa(n[o>>2]|0,y(l))}function wu(o,l){o=o|0,l=+l,Ya(n[o>>2]|0,y(l))}function td(o,l){o=o|0,l=+l,Sh(n[o>>2]|0,y(l))}function C2(o,l){o=o|0,l=+l,Hg(n[o>>2]|0,y(l))}function Hy(o,l){o=o|0,l=+l,qA(n[o>>2]|0,y(l))}function Bu(o,l,u){o=o|0,l=l|0,u=+u,gu(n[o>>2]|0,l,y(u))}function jy(o,l,u){o=o|0,l=l|0,u=+u,bo(n[o>>2]|0,l,y(u))}function rd(o,l,u){o=o|0,l=l|0,u=+u,mf(n[o>>2]|0,l,y(u))}function nd(o){return o=o|0,Fg(n[o>>2]|0)|0}function ko(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,_A(d,n[l>>2]|0,u),Bs(o,d),I=A}function Bs(o,l){o=o|0,l=l|0,Tl(o,n[l+4>>2]|0,+y(h[l>>2]))}function Tl(o,l,u){o=o|0,l=l|0,u=+u,n[o>>2]=l,E[o+8>>3]=u}function Gy(o){return o=o|0,$1(n[o>>2]|0)|0}function ga(o){return o=o|0,Ih(n[o>>2]|0)|0}function mP(o){return o=o|0,hu(n[o>>2]|0)|0}function Nh(o){return o=o|0,Z1(n[o>>2]|0)|0}function w2(o){return o=o|0,Og(n[o>>2]|0)|0}function zL(o){return o=o|0,yy(n[o>>2]|0)|0}function yP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,xt(d,n[l>>2]|0,u),Bs(o,d),I=A}function EP(o){return o=o|0,df(n[o>>2]|0)|0}function qy(o){return o=o|0,Sl(n[o>>2]|0)|0}function B2(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,UA(A,n[l>>2]|0),Bs(o,A),I=u}function Oh(o){return o=o|0,+ +y(li(n[o>>2]|0))}function IP(o){return o=o|0,+ +y(qi(n[o>>2]|0))}function CP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ur(A,n[l>>2]|0),Bs(o,A),I=u}function id(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Ug(A,n[l>>2]|0),Bs(o,A),I=u}function XL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,wt(A,n[l>>2]|0),Bs(o,A),I=u}function ZL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Wa(A,n[l>>2]|0),Bs(o,A),I=u}function wP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,_g(A,n[l>>2]|0),Bs(o,A),I=u}function BP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,vy(A,n[l>>2]|0),Bs(o,A),I=u}function $A(o){return o=o|0,+ +y(jg(n[o>>2]|0))}function $L(o,l){return o=o|0,l=l|0,+ +y(By(n[o>>2]|0,l))}function eM(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,yt(d,n[l>>2]|0,u),Bs(o,d),I=A}function vu(o,l,u){o=o|0,l=l|0,u=u|0,lr(n[o>>2]|0,n[l>>2]|0,u)}function tM(o,l){o=o|0,l=l|0,gf(n[o>>2]|0,n[l>>2]|0)}function vP(o){return o=o|0,Mi(n[o>>2]|0)|0}function rM(o){return o=o|0,o=Et(n[o>>2]|0)|0,o?o=c2(o)|0:o=0,o|0}function SP(o,l){return o=o|0,l=l|0,o=Is(n[o>>2]|0,l)|0,o?o=c2(o)|0:o=0,o|0}function xf(o,l){o=o|0,l=l|0;var u=0,A=0;A=Kt(4)|0,DP(A,l),u=o+4|0,l=n[u>>2]|0,n[u>>2]=A,l|0&&(Sf(l),It(l)),St(n[o>>2]|0,1)}function DP(o,l){o=o|0,l=l|0,oM(o,l)}function nM(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,bP(k,Ga(l)|0,+u,A,+d,m),h[o>>2]=y(+E[k>>3]),h[o+4>>2]=y(+E[k+8>>3]),I=B}function bP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0,k=0,T=0,M=0,L=0;B=I,I=I+32|0,L=B+8|0,M=B+20|0,T=B,k=B+16|0,E[L>>3]=u,n[M>>2]=A,E[T>>3]=d,n[k>>2]=m,Wy(o,n[l+4>>2]|0,L,M,T,k),I=B}function Wy(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,Fl(k),l=Os(l)|0,PP(o,l,+E[u>>3],n[A>>2]|0,+E[d>>3],n[m>>2]|0),Nl(k),I=B}function Os(o){return o=o|0,n[o>>2]|0}function PP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0;B=da(v2()|0)|0,u=+Ja(u),A=Yy(A)|0,d=+Ja(d),iM(o,Kn(0,B|0,l|0,+u,A|0,+d,Yy(m)|0)|0)}function v2(){var o=0;return s[7608]|0||(D2(9120),o=7608,n[o>>2]=1,n[o+4>>2]=0),9120}function da(o){return o=o|0,n[o+8>>2]|0}function Ja(o){return o=+o,+ +kf(o)}function Yy(o){return o=o|0,sd(o)|0}function iM(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=l,A&1?(Ka(u,0),Me(A|0,u|0)|0,S2(o,u),sM(u)):(n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]),I=d}function Ka(o,l){o=o|0,l=l|0,Su(o,l),n[o+8>>2]=0,s[o+24>>0]=0}function S2(o,l){o=o|0,l=l|0,l=l+8|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]}function sM(o){o=o|0,s[o+24>>0]=0}function Su(o,l){o=o|0,l=l|0,n[o>>2]=l}function sd(o){return o=o|0,o|0}function kf(o){return o=+o,+o}function D2(o){o=o|0,Qo(o,b2()|0,4)}function b2(){return 1064}function Qo(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=Gi(l|0,u+1|0)|0}function oM(o,l){o=o|0,l=l|0,l=n[l>>2]|0,n[o>>2]=l,au(l|0)}function xP(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Sf(l),It(l)),St(n[o>>2]|0,0)}function kP(o){o=o|0,bt(n[o>>2]|0)}function Vy(o){return o=o|0,tr(n[o>>2]|0)|0}function aM(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,YA(n[o>>2]|0,y(l),y(u),A)}function lM(o){return o=o|0,+ +y(mu(n[o>>2]|0))}function v(o){return o=o|0,+ +y(If(n[o>>2]|0))}function D(o){return o=o|0,+ +y(yu(n[o>>2]|0))}function Q(o){return o=o|0,+ +y(Rs(n[o>>2]|0))}function H(o){return o=o|0,+ +y(Eu(n[o>>2]|0))}function V(o){return o=o|0,+ +y(Gn(n[o>>2]|0))}function ne(o,l){o=o|0,l=l|0,E[o>>3]=+y(mu(n[l>>2]|0)),E[o+8>>3]=+y(If(n[l>>2]|0)),E[o+16>>3]=+y(yu(n[l>>2]|0)),E[o+24>>3]=+y(Rs(n[l>>2]|0)),E[o+32>>3]=+y(Eu(n[l>>2]|0)),E[o+40>>3]=+y(Gn(n[l>>2]|0))}function Se(o,l){return o=o|0,l=l|0,+ +y(is(n[o>>2]|0,l))}function _e(o,l){return o=o|0,l=l|0,+ +y(Pi(n[o>>2]|0,l))}function pt(o,l){return o=o|0,l=l|0,+ +y(WA(n[o>>2]|0,l))}function Wt(){return Qn()|0}function Sr(){Lr(),Zt(),zn(),yi(),za(),et()}function Lr(){p4e(11713,4938,1)}function Zt(){T_e(10448)}function zn(){p_e(10408)}function yi(){OUe(10324)}function za(){qLe(10096)}function et(){qe(9132)}function qe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0,To=0,Ro=0,Fo=0,Za=0,Wh=0,Yh=0,gc=0,Vh=0,Rf=0,Ff=0,Jh=0,Kh=0,zh=0,ln=0,dc=0,Xh=0,Pu=0,Zh=0,$h=0,Nf=0,Of=0,xu=0,oo=0,Ll=0,ma=0,mc=0,op=0,ap=0,Lf=0,lp=0,cp=0,ao=0,Ms=0,yc=0,Wn=0,up=0,No=0,ku=0,Oo=0,Qu=0,fp=0,Ap=0,Tu=0,lo=0,Ec=0,pp=0,hp=0,gp=0,Nr=0,ui=0,Us=0,Lo=0,co=0,Mr=0,Ar=0,Ic=0;l=I,I=I+672|0,u=l+656|0,Ic=l+648|0,Ar=l+640|0,Mr=l+632|0,co=l+624|0,Lo=l+616|0,Us=l+608|0,ui=l+600|0,Nr=l+592|0,gp=l+584|0,hp=l+576|0,pp=l+568|0,Ec=l+560|0,lo=l+552|0,Tu=l+544|0,Ap=l+536|0,fp=l+528|0,Qu=l+520|0,Oo=l+512|0,ku=l+504|0,No=l+496|0,up=l+488|0,Wn=l+480|0,yc=l+472|0,Ms=l+464|0,ao=l+456|0,cp=l+448|0,lp=l+440|0,Lf=l+432|0,ap=l+424|0,op=l+416|0,mc=l+408|0,ma=l+400|0,Ll=l+392|0,oo=l+384|0,xu=l+376|0,Of=l+368|0,Nf=l+360|0,$h=l+352|0,Zh=l+344|0,Pu=l+336|0,Xh=l+328|0,dc=l+320|0,ln=l+312|0,zh=l+304|0,Kh=l+296|0,Jh=l+288|0,Ff=l+280|0,Rf=l+272|0,Vh=l+264|0,gc=l+256|0,Yh=l+248|0,Wh=l+240|0,Za=l+232|0,Fo=l+224|0,Ro=l+216|0,To=l+208|0,Hn=l+200|0,cr=l+192|0,Hr=l+184|0,Tr=l+176|0,$t=l+168|0,fr=l+160|0,Gr=l+152|0,Lt=l+144|0,We=l+136|0,He=l+128|0,ct=l+120|0,Ze=l+112|0,tt=l+104|0,Qe=l+96|0,Le=l+88|0,Ye=l+80|0,ae=l+72|0,q=l+64|0,L=l+56|0,M=l+48|0,T=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,A=l,gt(o,3646),Xt(o,3651,2)|0,Dr(o,3665,2)|0,Zn(o,3682,18)|0,n[Ic>>2]=19,n[Ic+4>>2]=0,n[u>>2]=n[Ic>>2],n[u+4>>2]=n[Ic+4>>2],kr(o,3690,u)|0,n[Ar>>2]=1,n[Ar+4>>2]=0,n[u>>2]=n[Ar>>2],n[u+4>>2]=n[Ar+4>>2],Rn(o,3696,u)|0,n[Mr>>2]=2,n[Mr+4>>2]=0,n[u>>2]=n[Mr>>2],n[u+4>>2]=n[Mr+4>>2],_n(o,3706,u)|0,n[co>>2]=1,n[co+4>>2]=0,n[u>>2]=n[co>>2],n[u+4>>2]=n[co+4>>2],zr(o,3722,u)|0,n[Lo>>2]=2,n[Lo+4>>2]=0,n[u>>2]=n[Lo>>2],n[u+4>>2]=n[Lo+4>>2],zr(o,3734,u)|0,n[Us>>2]=3,n[Us+4>>2]=0,n[u>>2]=n[Us>>2],n[u+4>>2]=n[Us+4>>2],_n(o,3753,u)|0,n[ui>>2]=4,n[ui+4>>2]=0,n[u>>2]=n[ui>>2],n[u+4>>2]=n[ui+4>>2],_n(o,3769,u)|0,n[Nr>>2]=5,n[Nr+4>>2]=0,n[u>>2]=n[Nr>>2],n[u+4>>2]=n[Nr+4>>2],_n(o,3783,u)|0,n[gp>>2]=6,n[gp+4>>2]=0,n[u>>2]=n[gp>>2],n[u+4>>2]=n[gp+4>>2],_n(o,3796,u)|0,n[hp>>2]=7,n[hp+4>>2]=0,n[u>>2]=n[hp>>2],n[u+4>>2]=n[hp+4>>2],_n(o,3813,u)|0,n[pp>>2]=8,n[pp+4>>2]=0,n[u>>2]=n[pp>>2],n[u+4>>2]=n[pp+4>>2],_n(o,3825,u)|0,n[Ec>>2]=3,n[Ec+4>>2]=0,n[u>>2]=n[Ec>>2],n[u+4>>2]=n[Ec+4>>2],zr(o,3843,u)|0,n[lo>>2]=4,n[lo+4>>2]=0,n[u>>2]=n[lo>>2],n[u+4>>2]=n[lo+4>>2],zr(o,3853,u)|0,n[Tu>>2]=9,n[Tu+4>>2]=0,n[u>>2]=n[Tu>>2],n[u+4>>2]=n[Tu+4>>2],_n(o,3870,u)|0,n[Ap>>2]=10,n[Ap+4>>2]=0,n[u>>2]=n[Ap>>2],n[u+4>>2]=n[Ap+4>>2],_n(o,3884,u)|0,n[fp>>2]=11,n[fp+4>>2]=0,n[u>>2]=n[fp>>2],n[u+4>>2]=n[fp+4>>2],_n(o,3896,u)|0,n[Qu>>2]=1,n[Qu+4>>2]=0,n[u>>2]=n[Qu>>2],n[u+4>>2]=n[Qu+4>>2],ci(o,3907,u)|0,n[Oo>>2]=2,n[Oo+4>>2]=0,n[u>>2]=n[Oo>>2],n[u+4>>2]=n[Oo+4>>2],ci(o,3915,u)|0,n[ku>>2]=3,n[ku+4>>2]=0,n[u>>2]=n[ku>>2],n[u+4>>2]=n[ku+4>>2],ci(o,3928,u)|0,n[No>>2]=4,n[No+4>>2]=0,n[u>>2]=n[No>>2],n[u+4>>2]=n[No+4>>2],ci(o,3948,u)|0,n[up>>2]=5,n[up+4>>2]=0,n[u>>2]=n[up>>2],n[u+4>>2]=n[up+4>>2],ci(o,3960,u)|0,n[Wn>>2]=6,n[Wn+4>>2]=0,n[u>>2]=n[Wn>>2],n[u+4>>2]=n[Wn+4>>2],ci(o,3974,u)|0,n[yc>>2]=7,n[yc+4>>2]=0,n[u>>2]=n[yc>>2],n[u+4>>2]=n[yc+4>>2],ci(o,3983,u)|0,n[Ms>>2]=20,n[Ms+4>>2]=0,n[u>>2]=n[Ms>>2],n[u+4>>2]=n[Ms+4>>2],kr(o,3999,u)|0,n[ao>>2]=8,n[ao+4>>2]=0,n[u>>2]=n[ao>>2],n[u+4>>2]=n[ao+4>>2],ci(o,4012,u)|0,n[cp>>2]=9,n[cp+4>>2]=0,n[u>>2]=n[cp>>2],n[u+4>>2]=n[cp+4>>2],ci(o,4022,u)|0,n[lp>>2]=21,n[lp+4>>2]=0,n[u>>2]=n[lp>>2],n[u+4>>2]=n[lp+4>>2],kr(o,4039,u)|0,n[Lf>>2]=10,n[Lf+4>>2]=0,n[u>>2]=n[Lf>>2],n[u+4>>2]=n[Lf+4>>2],ci(o,4053,u)|0,n[ap>>2]=11,n[ap+4>>2]=0,n[u>>2]=n[ap>>2],n[u+4>>2]=n[ap+4>>2],ci(o,4065,u)|0,n[op>>2]=12,n[op+4>>2]=0,n[u>>2]=n[op>>2],n[u+4>>2]=n[op+4>>2],ci(o,4084,u)|0,n[mc>>2]=13,n[mc+4>>2]=0,n[u>>2]=n[mc>>2],n[u+4>>2]=n[mc+4>>2],ci(o,4097,u)|0,n[ma>>2]=14,n[ma+4>>2]=0,n[u>>2]=n[ma>>2],n[u+4>>2]=n[ma+4>>2],ci(o,4117,u)|0,n[Ll>>2]=15,n[Ll+4>>2]=0,n[u>>2]=n[Ll>>2],n[u+4>>2]=n[Ll+4>>2],ci(o,4129,u)|0,n[oo>>2]=16,n[oo+4>>2]=0,n[u>>2]=n[oo>>2],n[u+4>>2]=n[oo+4>>2],ci(o,4148,u)|0,n[xu>>2]=17,n[xu+4>>2]=0,n[u>>2]=n[xu>>2],n[u+4>>2]=n[xu+4>>2],ci(o,4161,u)|0,n[Of>>2]=18,n[Of+4>>2]=0,n[u>>2]=n[Of>>2],n[u+4>>2]=n[Of+4>>2],ci(o,4181,u)|0,n[Nf>>2]=5,n[Nf+4>>2]=0,n[u>>2]=n[Nf>>2],n[u+4>>2]=n[Nf+4>>2],zr(o,4196,u)|0,n[$h>>2]=6,n[$h+4>>2]=0,n[u>>2]=n[$h>>2],n[u+4>>2]=n[$h+4>>2],zr(o,4206,u)|0,n[Zh>>2]=7,n[Zh+4>>2]=0,n[u>>2]=n[Zh>>2],n[u+4>>2]=n[Zh+4>>2],zr(o,4217,u)|0,n[Pu>>2]=3,n[Pu+4>>2]=0,n[u>>2]=n[Pu>>2],n[u+4>>2]=n[Pu+4>>2],Du(o,4235,u)|0,n[Xh>>2]=1,n[Xh+4>>2]=0,n[u>>2]=n[Xh>>2],n[u+4>>2]=n[Xh+4>>2],cM(o,4251,u)|0,n[dc>>2]=4,n[dc+4>>2]=0,n[u>>2]=n[dc>>2],n[u+4>>2]=n[dc+4>>2],Du(o,4263,u)|0,n[ln>>2]=5,n[ln+4>>2]=0,n[u>>2]=n[ln>>2],n[u+4>>2]=n[ln+4>>2],Du(o,4279,u)|0,n[zh>>2]=6,n[zh+4>>2]=0,n[u>>2]=n[zh>>2],n[u+4>>2]=n[zh+4>>2],Du(o,4293,u)|0,n[Kh>>2]=7,n[Kh+4>>2]=0,n[u>>2]=n[Kh>>2],n[u+4>>2]=n[Kh+4>>2],Du(o,4306,u)|0,n[Jh>>2]=8,n[Jh+4>>2]=0,n[u>>2]=n[Jh>>2],n[u+4>>2]=n[Jh+4>>2],Du(o,4323,u)|0,n[Ff>>2]=9,n[Ff+4>>2]=0,n[u>>2]=n[Ff>>2],n[u+4>>2]=n[Ff+4>>2],Du(o,4335,u)|0,n[Rf>>2]=2,n[Rf+4>>2]=0,n[u>>2]=n[Rf>>2],n[u+4>>2]=n[Rf+4>>2],cM(o,4353,u)|0,n[Vh>>2]=12,n[Vh+4>>2]=0,n[u>>2]=n[Vh>>2],n[u+4>>2]=n[Vh+4>>2],od(o,4363,u)|0,n[gc>>2]=1,n[gc+4>>2]=0,n[u>>2]=n[gc>>2],n[u+4>>2]=n[gc+4>>2],ep(o,4376,u)|0,n[Yh>>2]=2,n[Yh+4>>2]=0,n[u>>2]=n[Yh>>2],n[u+4>>2]=n[Yh+4>>2],ep(o,4388,u)|0,n[Wh>>2]=13,n[Wh+4>>2]=0,n[u>>2]=n[Wh>>2],n[u+4>>2]=n[Wh+4>>2],od(o,4402,u)|0,n[Za>>2]=14,n[Za+4>>2]=0,n[u>>2]=n[Za>>2],n[u+4>>2]=n[Za+4>>2],od(o,4411,u)|0,n[Fo>>2]=15,n[Fo+4>>2]=0,n[u>>2]=n[Fo>>2],n[u+4>>2]=n[Fo+4>>2],od(o,4421,u)|0,n[Ro>>2]=16,n[Ro+4>>2]=0,n[u>>2]=n[Ro>>2],n[u+4>>2]=n[Ro+4>>2],od(o,4433,u)|0,n[To>>2]=17,n[To+4>>2]=0,n[u>>2]=n[To>>2],n[u+4>>2]=n[To+4>>2],od(o,4446,u)|0,n[Hn>>2]=18,n[Hn+4>>2]=0,n[u>>2]=n[Hn>>2],n[u+4>>2]=n[Hn+4>>2],od(o,4458,u)|0,n[cr>>2]=3,n[cr+4>>2]=0,n[u>>2]=n[cr>>2],n[u+4>>2]=n[cr+4>>2],ep(o,4471,u)|0,n[Hr>>2]=1,n[Hr+4>>2]=0,n[u>>2]=n[Hr>>2],n[u+4>>2]=n[Hr+4>>2],QP(o,4486,u)|0,n[Tr>>2]=10,n[Tr+4>>2]=0,n[u>>2]=n[Tr>>2],n[u+4>>2]=n[Tr+4>>2],Du(o,4496,u)|0,n[$t>>2]=11,n[$t+4>>2]=0,n[u>>2]=n[$t>>2],n[u+4>>2]=n[$t+4>>2],Du(o,4508,u)|0,n[fr>>2]=3,n[fr+4>>2]=0,n[u>>2]=n[fr>>2],n[u+4>>2]=n[fr+4>>2],cM(o,4519,u)|0,n[Gr>>2]=4,n[Gr+4>>2]=0,n[u>>2]=n[Gr>>2],n[u+4>>2]=n[Gr+4>>2],Cke(o,4530,u)|0,n[Lt>>2]=19,n[Lt+4>>2]=0,n[u>>2]=n[Lt>>2],n[u+4>>2]=n[Lt+4>>2],wke(o,4542,u)|0,n[We>>2]=12,n[We+4>>2]=0,n[u>>2]=n[We>>2],n[u+4>>2]=n[We+4>>2],Bke(o,4554,u)|0,n[He>>2]=13,n[He+4>>2]=0,n[u>>2]=n[He>>2],n[u+4>>2]=n[He+4>>2],vke(o,4568,u)|0,n[ct>>2]=2,n[ct+4>>2]=0,n[u>>2]=n[ct>>2],n[u+4>>2]=n[ct+4>>2],Ske(o,4578,u)|0,n[Ze>>2]=20,n[Ze+4>>2]=0,n[u>>2]=n[Ze>>2],n[u+4>>2]=n[Ze+4>>2],Dke(o,4587,u)|0,n[tt>>2]=22,n[tt+4>>2]=0,n[u>>2]=n[tt>>2],n[u+4>>2]=n[tt+4>>2],kr(o,4602,u)|0,n[Qe>>2]=23,n[Qe+4>>2]=0,n[u>>2]=n[Qe>>2],n[u+4>>2]=n[Qe+4>>2],kr(o,4619,u)|0,n[Le>>2]=14,n[Le+4>>2]=0,n[u>>2]=n[Le>>2],n[u+4>>2]=n[Le+4>>2],bke(o,4629,u)|0,n[Ye>>2]=1,n[Ye+4>>2]=0,n[u>>2]=n[Ye>>2],n[u+4>>2]=n[Ye+4>>2],Pke(o,4637,u)|0,n[ae>>2]=4,n[ae+4>>2]=0,n[u>>2]=n[ae>>2],n[u+4>>2]=n[ae+4>>2],ep(o,4653,u)|0,n[q>>2]=5,n[q+4>>2]=0,n[u>>2]=n[q>>2],n[u+4>>2]=n[q+4>>2],ep(o,4669,u)|0,n[L>>2]=6,n[L+4>>2]=0,n[u>>2]=n[L>>2],n[u+4>>2]=n[L+4>>2],ep(o,4686,u)|0,n[M>>2]=7,n[M+4>>2]=0,n[u>>2]=n[M>>2],n[u+4>>2]=n[M+4>>2],ep(o,4701,u)|0,n[T>>2]=8,n[T+4>>2]=0,n[u>>2]=n[T>>2],n[u+4>>2]=n[T+4>>2],ep(o,4719,u)|0,n[k>>2]=9,n[k+4>>2]=0,n[u>>2]=n[k>>2],n[u+4>>2]=n[k+4>>2],ep(o,4736,u)|0,n[B>>2]=21,n[B+4>>2]=0,n[u>>2]=n[B>>2],n[u+4>>2]=n[B+4>>2],xke(o,4754,u)|0,n[m>>2]=2,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],QP(o,4772,u)|0,n[d>>2]=3,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],QP(o,4790,u)|0,n[A>>2]=4,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],QP(o,4808,u)|0,I=l}function gt(o,l){o=o|0,l=l|0;var u=0;u=NLe()|0,n[o>>2]=u,OLe(u,l),jh(n[o>>2]|0)}function Xt(o,l,u){return o=o|0,l=l|0,u=u|0,CLe(o,Bn(l)|0,u,0),o|0}function Dr(o,l,u){return o=o|0,l=l|0,u=u|0,sLe(o,Bn(l)|0,u,0),o|0}function Zn(o,l,u){return o=o|0,l=l|0,u=u|0,WOe(o,Bn(l)|0,u,0),o|0}function kr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xOe(o,l,d),I=A,o|0}function Rn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uOe(o,l,d),I=A,o|0}function _n(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JNe(o,l,d),I=A,o|0}function zr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TNe(o,l,d),I=A,o|0}function ci(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],dNe(o,l,d),I=A,o|0}function Du(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eNe(o,l,d),I=A,o|0}function cM(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],MFe(o,l,d),I=A,o|0}function od(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uFe(o,l,d),I=A,o|0}function ep(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JRe(o,l,d),I=A,o|0}function QP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TRe(o,l,d),I=A,o|0}function Cke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],dRe(o,l,d),I=A,o|0}function wke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eRe(o,l,d),I=A,o|0}function Bke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],UTe(o,l,d),I=A,o|0}function vke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vTe(o,l,d),I=A,o|0}function Ske(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],aTe(o,l,d),I=A,o|0}function Dke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],qQe(o,l,d),I=A,o|0}function bke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],PQe(o,l,d),I=A,o|0}function Pke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uQe(o,l,d),I=A,o|0}function xke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kke(o,l,d),I=A,o|0}function kke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Qke(o,u,d,1),I=A}function Bn(o){return o=o|0,o|0}function Qke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=uM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Tke(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,Rke(m,A)|0,A),I=d}function uM(){var o=0,l=0;if(s[7616]|0||(mz(9136),gr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(_r(9136)|0)){o=9136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));mz(9136)}return 9136}function Tke(o){return o=o|0,0}function Rke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=uM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],dz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Oke(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function vn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0;B=I,I=I+32|0,ae=B+24|0,q=B+20|0,T=B+16|0,L=B+12|0,M=B+8|0,k=B+4|0,Ye=B,n[q>>2]=l,n[T>>2]=u,n[L>>2]=A,n[M>>2]=d,n[k>>2]=m,m=o+28|0,n[Ye>>2]=n[m>>2],n[ae>>2]=n[Ye>>2],Fke(o+24|0,ae,q,L,M,T,k)|0,n[m>>2]=n[n[m>>2]>>2],I=B}function Fke(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,o=Nke(l)|0,l=Kt(24)|0,gz(l+4|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[o>>2],n[o>>2]=l,l|0}function Nke(o){return o=o|0,n[o>>2]|0}function gz(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function yr(o,l){return o=o|0,l=l|0,l|o|0}function dz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Oke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Lke(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,Mke(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],dz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,Uke(o,k),_ke(k),I=M;return}}function Lke(o){return o=o|0,357913941}function Mke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Uke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _ke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function mz(o){o=o|0,Gke(o)}function Hke(o){o=o|0,jke(o+24|0)}function _r(o){return o=o|0,n[o>>2]|0}function jke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Gke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,qke()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function tn(){return 9228}function qke(){return 1140}function Wke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=Yke(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=Vke(l,A)|0,I=u,l|0}function rn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function Yke(o){return o=o|0,(n[(uM()|0)+24>>2]|0)+(o*12|0)|0}function Vke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+48|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),sp[u&31](A,o),A=Jke(A)|0,I=d,A|0}function Jke(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=fM(yz()|0)|0,A?(AM(l,A),pM(u,l),Kke(o,u),o=hM(l)|0):o=zke(o)|0,I=d,o|0}function yz(){var o=0;return s[7632]|0||(oQe(9184),gr(25,9184,U|0)|0,o=7632,n[o>>2]=1,n[o+4>>2]=0),9184}function fM(o){return o=o|0,n[o+36>>2]|0}function AM(o,l){o=o|0,l=l|0,n[o>>2]=l,n[o+4>>2]=o,n[o+8>>2]=0}function pM(o,l){o=o|0,l=l|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=0}function Kke(o,l){o=o|0,l=l|0,eQe(l,o,o+8|0,o+16|0,o+24|0,o+32|0,o+40|0)|0}function hM(o){return o=o|0,n[(n[o+4>>2]|0)+8>>2]|0}function zke(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0;T=I,I=I+16|0,u=T+4|0,A=T,d=Rl(8)|0,m=d,B=Kt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[o>>2],k=k+4|0,o=o+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Kt(8)|0,B=n[l>>2]|0,n[A>>2]=0,n[u>>2]=n[A>>2],Ez(k,B,u),n[d>>2]=k,I=T,m|0}function Ez(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1092,n[u+12>>2]=l,n[o+4>>2]=u}function Xke(o){o=o|0,$y(o),It(o)}function Zke(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function $ke(o){o=o|0,It(o)}function eQe(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,m=tQe(n[o>>2]|0,l,u,A,d,m,B)|0,B=o+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function tQe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0;var k=0,T=0;return k=I,I=I+16|0,T=k,Fl(T),o=Os(o)|0,B=rQe(o,+E[l>>3],+E[u>>3],+E[A>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Nl(T),I=k,B|0}function rQe(o,l,u,A,d,m,B){o=o|0,l=+l,u=+u,A=+A,d=+d,m=+m,B=+B;var k=0;return k=da(nQe()|0)|0,l=+Ja(l),u=+Ja(u),A=+Ja(A),d=+Ja(d),m=+Ja(m),ro(0,k|0,o|0,+l,+u,+A,+d,+m,+ +Ja(B))|0}function nQe(){var o=0;return s[7624]|0||(iQe(9172),o=7624,n[o>>2]=1,n[o+4>>2]=0),9172}function iQe(o){o=o|0,Qo(o,sQe()|0,6)}function sQe(){return 1112}function oQe(o){o=o|0,Lh(o)}function aQe(o){o=o|0,Iz(o+24|0),Cz(o+16|0)}function Iz(o){o=o|0,cQe(o)}function Cz(o){o=o|0,lQe(o)}function lQe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function cQe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function Lh(o){o=o|0;var l=0;n[o+16>>2]=0,n[o+20>>2]=0,l=o+24|0,n[l>>2]=0,n[o+28>>2]=l,n[o+36>>2]=0,s[o+40>>0]=0,s[o+41>>0]=0}function uQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fQe(o,u,d,0),I=A}function fQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=gM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=AQe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,pQe(m,A)|0,A),I=d}function gM(){var o=0,l=0;if(s[7640]|0||(Bz(9232),gr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(_r(9232)|0)){o=9232,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Bz(9232)}return 9232}function AQe(o){return o=o|0,0}function pQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=gM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],wz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(hQe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function wz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function hQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=gQe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,dQe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],wz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,mQe(o,k),yQe(k),I=M;return}}function gQe(o){return o=o|0,357913941}function dQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function mQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function yQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Bz(o){o=o|0,CQe(o)}function EQe(o){o=o|0,IQe(o+24|0)}function IQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function CQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,wQe()|0,3),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function wQe(){return 1144}function BQe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+16|0,B=m+8|0,k=m,T=vQe(o)|0,o=n[T+4>>2]|0,n[k>>2]=n[T>>2],n[k+4>>2]=o,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],SQe(l,B,u,A,d),I=m}function vQe(o){return o=o|0,(n[(gM()|0)+24>>2]|0)+(o*12|0)|0}function SQe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,T=0,M=0;M=I,I=I+16|0,B=M+2|0,k=M+1|0,T=M,m=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(m=n[(n[o>>2]|0)+m>>2]|0),Qf(B,u),u=+Tf(B,u),Qf(k,A),A=+Tf(k,A),tp(T,d),T=rp(T,d)|0,MZ[m&1](o,u,A,T),I=M}function Qf(o,l){o=o|0,l=+l}function Tf(o,l){return o=o|0,l=+l,+ +bQe(l)}function tp(o,l){o=o|0,l=l|0}function rp(o,l){return o=o|0,l=l|0,DQe(l)|0}function DQe(o){return o=o|0,o|0}function bQe(o){return o=+o,+o}function PQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xQe(o,u,d,1),I=A}function xQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=dM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=kQe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,QQe(m,A)|0,A),I=d}function dM(){var o=0,l=0;if(s[7648]|0||(Sz(9268),gr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(_r(9268)|0)){o=9268,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Sz(9268)}return 9268}function kQe(o){return o=o|0,0}function QQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=dM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],vz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(TQe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function vz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function TQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=RQe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,FQe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],vz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,NQe(o,k),OQe(k),I=M;return}}function RQe(o){return o=o|0,357913941}function FQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function NQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function OQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Sz(o){o=o|0,UQe(o)}function LQe(o){o=o|0,MQe(o+24|0)}function MQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function UQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,_Qe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function _Qe(){return 1160}function HQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=jQe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=GQe(l,A)|0,I=u,l|0}function jQe(o){return o=o|0,(n[(dM()|0)+24>>2]|0)+(o*12|0)|0}function GQe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),Dz(gd[u&31](o)|0)|0}function Dz(o){return o=o|0,o&1|0}function qQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],WQe(o,u,d,0),I=A}function WQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=mM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=YQe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,VQe(m,A)|0,A),I=d}function mM(){var o=0,l=0;if(s[7656]|0||(Pz(9304),gr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(_r(9304)|0)){o=9304,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Pz(9304)}return 9304}function YQe(o){return o=o|0,0}function VQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=mM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],bz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(JQe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function bz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function JQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=KQe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,zQe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],bz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,XQe(o,k),ZQe(k),I=M;return}}function KQe(o){return o=o|0,357913941}function zQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function XQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ZQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Pz(o){o=o|0,tTe(o)}function $Qe(o){o=o|0,eTe(o+24|0)}function eTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function tTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,rTe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function rTe(){return 1164}function nTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=iTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],sTe(l,d,u),I=A}function iTe(o){return o=o|0,(n[(mM()|0)+24>>2]|0)+(o*12|0)|0}function sTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Mh(d,u),u=Uh(d,u)|0,sp[A&31](o,u),_h(d),I=m}function Mh(o,l){o=o|0,l=l|0,oTe(o,l)}function Uh(o,l){return o=o|0,l=l|0,o|0}function _h(o){o=o|0,Sf(o)}function oTe(o,l){o=o|0,l=l|0,yM(o,l)}function yM(o,l){o=o|0,l=l|0,n[o>>2]=l}function aTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lTe(o,u,d,0),I=A}function lTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=EM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=cTe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,uTe(m,A)|0,A),I=d}function EM(){var o=0,l=0;if(s[7664]|0||(kz(9340),gr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(_r(9340)|0)){o=9340,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));kz(9340)}return 9340}function cTe(o){return o=o|0,0}function uTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=EM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],xz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(fTe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function xz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function fTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=ATe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,pTe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],xz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,hTe(o,k),gTe(k),I=M;return}}function ATe(o){return o=o|0,357913941}function pTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function hTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function gTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function kz(o){o=o|0,yTe(o)}function dTe(o){o=o|0,mTe(o+24|0)}function mTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function yTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,ETe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ETe(){return 1180}function ITe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=CTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=wTe(l,d,u)|0,I=A,u|0}function CTe(o){return o=o|0,(n[(EM()|0)+24>>2]|0)+(o*12|0)|0}function wTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),ad(d,u),d=ld(d,u)|0,d=TP(gU[A&15](o,d)|0)|0,I=m,d|0}function ad(o,l){o=o|0,l=l|0}function ld(o,l){return o=o|0,l=l|0,BTe(l)|0}function TP(o){return o=o|0,o|0}function BTe(o){return o=o|0,o|0}function vTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],STe(o,u,d,0),I=A}function STe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=IM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=DTe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,bTe(m,A)|0,A),I=d}function IM(){var o=0,l=0;if(s[7672]|0||(Tz(9376),gr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(_r(9376)|0)){o=9376,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Tz(9376)}return 9376}function DTe(o){return o=o|0,0}function bTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=IM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Qz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(PTe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Qz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function PTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=xTe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,kTe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Qz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,QTe(o,k),TTe(k),I=M;return}}function xTe(o){return o=o|0,357913941}function kTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function QTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function TTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Tz(o){o=o|0,NTe(o)}function RTe(o){o=o|0,FTe(o+24|0)}function FTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function NTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,Rz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Rz(){return 1196}function OTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=LTe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=MTe(l,A)|0,I=u,l|0}function LTe(o){return o=o|0,(n[(IM()|0)+24>>2]|0)+(o*12|0)|0}function MTe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),TP(gd[u&31](o)|0)|0}function UTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_Te(o,u,d,1),I=A}function _Te(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=CM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=HTe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,jTe(m,A)|0,A),I=d}function CM(){var o=0,l=0;if(s[7680]|0||(Nz(9412),gr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(_r(9412)|0)){o=9412,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Nz(9412)}return 9412}function HTe(o){return o=o|0,0}function jTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=CM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Fz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(GTe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Fz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function GTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=qTe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,WTe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Fz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,YTe(o,k),VTe(k),I=M;return}}function qTe(o){return o=o|0,357913941}function WTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function YTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function VTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Nz(o){o=o|0,zTe(o)}function JTe(o){o=o|0,KTe(o+24|0)}function KTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function zTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,Oz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Oz(){return 1200}function XTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=ZTe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=$Te(l,A)|0,I=u,l|0}function ZTe(o){return o=o|0,(n[(CM()|0)+24>>2]|0)+(o*12|0)|0}function $Te(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),RP(gd[u&31](o)|0)|0}function RP(o){return o=o|0,o|0}function eRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tRe(o,u,d,0),I=A}function tRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=wM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=rRe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,nRe(m,A)|0,A),I=d}function wM(){var o=0,l=0;if(s[7688]|0||(Mz(9448),gr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(_r(9448)|0)){o=9448,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Mz(9448)}return 9448}function rRe(o){return o=o|0,0}function nRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=wM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Lz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(iRe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Lz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function iRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=sRe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,oRe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Lz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,aRe(o,k),lRe(k),I=M;return}}function sRe(o){return o=o|0,357913941}function oRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function aRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function lRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Mz(o){o=o|0,fRe(o)}function cRe(o){o=o|0,uRe(o+24|0)}function uRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function fRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,Uz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Uz(){return 1204}function ARe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=pRe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hRe(l,d,u),I=A}function pRe(o){return o=o|0,(n[(wM()|0)+24>>2]|0)+(o*12|0)|0}function hRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),BM(d,u),d=vM(d,u)|0,sp[A&31](o,d),I=m}function BM(o,l){o=o|0,l=l|0}function vM(o,l){return o=o|0,l=l|0,gRe(l)|0}function gRe(o){return o=o|0,o|0}function dRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mRe(o,u,d,0),I=A}function mRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=SM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=yRe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,ERe(m,A)|0,A),I=d}function SM(){var o=0,l=0;if(s[7696]|0||(Hz(9484),gr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(_r(9484)|0)){o=9484,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Hz(9484)}return 9484}function yRe(o){return o=o|0,0}function ERe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=SM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],_z(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(IRe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function _z(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function IRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=CRe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,wRe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],_z(m,A,u),n[T>>2]=(n[T>>2]|0)+12,BRe(o,k),vRe(k),I=M;return}}function CRe(o){return o=o|0,357913941}function wRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function BRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function vRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Hz(o){o=o|0,bRe(o)}function SRe(o){o=o|0,DRe(o+24|0)}function DRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function bRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,PRe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function PRe(){return 1212}function xRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=kRe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],QRe(l,m,u,A),I=d}function kRe(o){return o=o|0,(n[(SM()|0)+24>>2]|0)+(o*12|0)|0}function QRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),BM(m,u),m=vM(m,u)|0,ad(B,A),B=ld(B,A)|0,F2[d&15](o,m,B),I=k}function TRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RRe(o,u,d,1),I=A}function RRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=DM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=FRe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,NRe(m,A)|0,A),I=d}function DM(){var o=0,l=0;if(s[7704]|0||(Gz(9520),gr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(_r(9520)|0)){o=9520,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Gz(9520)}return 9520}function FRe(o){return o=o|0,0}function NRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=DM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],jz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(ORe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function jz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function ORe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=LRe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,MRe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],jz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,URe(o,k),_Re(k),I=M;return}}function LRe(o){return o=o|0,357913941}function MRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function URe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _Re(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Gz(o){o=o|0,GRe(o)}function HRe(o){o=o|0,jRe(o+24|0)}function jRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function GRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,qRe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qRe(){return 1224}function WRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;return d=I,I=I+16|0,m=d+8|0,B=d,k=YRe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],A=+VRe(l,m,u),I=d,+A}function YRe(o){return o=o|0,(n[(DM()|0)+24>>2]|0)+(o*12|0)|0}function VRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(d,u),d=rp(d,u)|0,B=+kf(+_Z[A&7](o,d)),I=m,+B}function JRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KRe(o,u,d,1),I=A}function KRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=bM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=zRe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,XRe(m,A)|0,A),I=d}function bM(){var o=0,l=0;if(s[7712]|0||(Wz(9556),gr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(_r(9556)|0)){o=9556,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Wz(9556)}return 9556}function zRe(o){return o=o|0,0}function XRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=bM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],qz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(ZRe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function qz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function ZRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=$Re(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,eFe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],qz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,tFe(o,k),rFe(k),I=M;return}}function $Re(o){return o=o|0,357913941}function eFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function tFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function rFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Wz(o){o=o|0,sFe(o)}function nFe(o){o=o|0,iFe(o+24|0)}function iFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function sFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,oFe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oFe(){return 1232}function aFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=lFe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=+cFe(l,d),I=A,+u}function lFe(o){return o=o|0,(n[(bM()|0)+24>>2]|0)+(o*12|0)|0}function cFe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),+ +kf(+UZ[u&15](o))}function uFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fFe(o,u,d,1),I=A}function fFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=PM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=AFe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,pFe(m,A)|0,A),I=d}function PM(){var o=0,l=0;if(s[7720]|0||(Vz(9592),gr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(_r(9592)|0)){o=9592,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Vz(9592)}return 9592}function AFe(o){return o=o|0,0}function pFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=PM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Yz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(hFe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Yz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function hFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=gFe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,dFe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Yz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,mFe(o,k),yFe(k),I=M;return}}function gFe(o){return o=o|0,357913941}function dFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function mFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function yFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Vz(o){o=o|0,CFe(o)}function EFe(o){o=o|0,IFe(o+24|0)}function IFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function CFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,wFe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function wFe(){return 1276}function BFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=vFe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=SFe(l,A)|0,I=u,l|0}function vFe(o){return o=o|0,(n[(PM()|0)+24>>2]|0)+(o*12|0)|0}function SFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+16|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),sp[u&31](A,o),A=Jz(A)|0,I=d,A|0}function Jz(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=fM(Kz()|0)|0,A?(AM(l,A),pM(u,l),DFe(o,u),o=hM(l)|0):o=bFe(o)|0,I=d,o|0}function Kz(){var o=0;return s[7736]|0||(LFe(9640),gr(25,9640,U|0)|0,o=7736,n[o>>2]=1,n[o+4>>2]=0),9640}function DFe(o,l){o=o|0,l=l|0,QFe(l,o,o+8|0)|0}function bFe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Rl(8)|0,l=A,k=Kt(16)|0,n[k>>2]=n[o>>2],n[k+4>>2]=n[o+4>>2],n[k+8>>2]=n[o+8>>2],n[k+12>>2]=n[o+12>>2],m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],xM(o,m,d),n[A>>2]=o,I=u,l|0}function xM(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1244,n[u+12>>2]=l,n[o+4>>2]=u}function PFe(o){o=o|0,$y(o),It(o)}function xFe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function kFe(o){o=o|0,It(o)}function QFe(o,l,u){return o=o|0,l=l|0,u=u|0,l=TFe(n[o>>2]|0,l,u)|0,u=o+4|0,n[(n[u>>2]|0)+8>>2]=l,n[(n[u>>2]|0)+8>>2]|0}function TFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return A=I,I=I+16|0,d=A,Fl(d),o=Os(o)|0,u=RFe(o,n[l>>2]|0,+E[u>>3])|0,Nl(d),I=A,u|0}function RFe(o,l,u){o=o|0,l=l|0,u=+u;var A=0;return A=da(FFe()|0)|0,l=Yy(l)|0,ou(0,A|0,o|0,l|0,+ +Ja(u))|0}function FFe(){var o=0;return s[7728]|0||(NFe(9628),o=7728,n[o>>2]=1,n[o+4>>2]=0),9628}function NFe(o){o=o|0,Qo(o,OFe()|0,2)}function OFe(){return 1264}function LFe(o){o=o|0,Lh(o)}function MFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],UFe(o,u,d,1),I=A}function UFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=kM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=_Fe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,HFe(m,A)|0,A),I=d}function kM(){var o=0,l=0;if(s[7744]|0||(Xz(9684),gr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(_r(9684)|0)){o=9684,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Xz(9684)}return 9684}function _Fe(o){return o=o|0,0}function HFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=kM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],zz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(jFe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function zz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function jFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=GFe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,qFe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],zz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,WFe(o,k),YFe(k),I=M;return}}function GFe(o){return o=o|0,357913941}function qFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function WFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function YFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Xz(o){o=o|0,KFe(o)}function VFe(o){o=o|0,JFe(o+24|0)}function JFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function KFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,zFe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function zFe(){return 1280}function XFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=ZFe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=$Fe(l,d,u)|0,I=A,u|0}function ZFe(o){return o=o|0,(n[(kM()|0)+24>>2]|0)+(o*12|0)|0}function $Fe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return B=I,I=I+32|0,d=B,m=B+16|0,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(m,u),m=rp(m,u)|0,F2[A&15](d,o,m),m=Jz(d)|0,I=B,m|0}function eNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tNe(o,u,d,1),I=A}function tNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=QM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=rNe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,nNe(m,A)|0,A),I=d}function QM(){var o=0,l=0;if(s[7752]|0||($z(9720),gr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(_r(9720)|0)){o=9720,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));$z(9720)}return 9720}function rNe(o){return o=o|0,0}function nNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=QM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Zz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(iNe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Zz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function iNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=sNe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,oNe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Zz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,aNe(o,k),lNe(k),I=M;return}}function sNe(o){return o=o|0,357913941}function oNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function aNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function lNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function $z(o){o=o|0,fNe(o)}function cNe(o){o=o|0,uNe(o+24|0)}function uNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function fNe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,ANe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ANe(){return 1288}function pNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=hNe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=gNe(l,A)|0,I=u,l|0}function hNe(o){return o=o|0,(n[(QM()|0)+24>>2]|0)+(o*12|0)|0}function gNe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),sd(gd[u&31](o)|0)|0}function dNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mNe(o,u,d,0),I=A}function mNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=TM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=yNe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,ENe(m,A)|0,A),I=d}function TM(){var o=0,l=0;if(s[7760]|0||(tX(9756),gr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(_r(9756)|0)){o=9756,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));tX(9756)}return 9756}function yNe(o){return o=o|0,0}function ENe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=TM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],eX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(INe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function eX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function INe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=CNe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,wNe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],eX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,BNe(o,k),vNe(k),I=M;return}}function CNe(o){return o=o|0,357913941}function wNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function BNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function vNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function tX(o){o=o|0,bNe(o)}function SNe(o){o=o|0,DNe(o+24|0)}function DNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function bNe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,PNe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function PNe(){return 1292}function xNe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=kNe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],QNe(l,d,u),I=A}function kNe(o){return o=o|0,(n[(TM()|0)+24>>2]|0)+(o*12|0)|0}function QNe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Qf(d,u),u=+Tf(d,u),OZ[A&31](o,u),I=m}function TNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RNe(o,u,d,0),I=A}function RNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=RM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=FNe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,NNe(m,A)|0,A),I=d}function RM(){var o=0,l=0;if(s[7768]|0||(nX(9792),gr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(_r(9792)|0)){o=9792,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));nX(9792)}return 9792}function FNe(o){return o=o|0,0}function NNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=RM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],rX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(ONe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function rX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function ONe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=LNe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,MNe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],rX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,UNe(o,k),_Ne(k),I=M;return}}function LNe(o){return o=o|0,357913941}function MNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function UNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _Ne(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function nX(o){o=o|0,GNe(o)}function HNe(o){o=o|0,jNe(o+24|0)}function jNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function GNe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,qNe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qNe(){return 1300}function WNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=YNe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],VNe(l,m,u,A),I=d}function YNe(o){return o=o|0,(n[(RM()|0)+24>>2]|0)+(o*12|0)|0}function VNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),tp(m,u),m=rp(m,u)|0,Qf(B,A),A=+Tf(B,A),qZ[d&15](o,m,A),I=k}function JNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KNe(o,u,d,0),I=A}function KNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=FM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=zNe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,XNe(m,A)|0,A),I=d}function FM(){var o=0,l=0;if(s[7776]|0||(sX(9828),gr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(_r(9828)|0)){o=9828,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));sX(9828)}return 9828}function zNe(o){return o=o|0,0}function XNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=FM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],iX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(ZNe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function iX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function ZNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=$Ne(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,eOe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],iX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,tOe(o,k),rOe(k),I=M;return}}function $Ne(o){return o=o|0,357913941}function eOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function tOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function rOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function sX(o){o=o|0,sOe(o)}function nOe(o){o=o|0,iOe(o+24|0)}function iOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function sOe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,oOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oOe(){return 1312}function aOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=lOe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],cOe(l,d,u),I=A}function lOe(o){return o=o|0,(n[(FM()|0)+24>>2]|0)+(o*12|0)|0}function cOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(d,u),d=rp(d,u)|0,sp[A&31](o,d),I=m}function uOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fOe(o,u,d,0),I=A}function fOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=NM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=AOe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,pOe(m,A)|0,A),I=d}function NM(){var o=0,l=0;if(s[7784]|0||(aX(9864),gr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(_r(9864)|0)){o=9864,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));aX(9864)}return 9864}function AOe(o){return o=o|0,0}function pOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=NM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],oX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(hOe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function oX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function hOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=gOe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,dOe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],oX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,mOe(o,k),yOe(k),I=M;return}}function gOe(o){return o=o|0,357913941}function dOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function mOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function yOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function aX(o){o=o|0,COe(o)}function EOe(o){o=o|0,IOe(o+24|0)}function IOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function COe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,wOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function wOe(){return 1320}function BOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=vOe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],SOe(l,d,u),I=A}function vOe(o){return o=o|0,(n[(NM()|0)+24>>2]|0)+(o*12|0)|0}function SOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),DOe(d,u),d=bOe(d,u)|0,sp[A&31](o,d),I=m}function DOe(o,l){o=o|0,l=l|0}function bOe(o,l){return o=o|0,l=l|0,POe(l)|0}function POe(o){return o=o|0,o|0}function xOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kOe(o,u,d,0),I=A}function kOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=OM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=QOe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,TOe(m,A)|0,A),I=d}function OM(){var o=0,l=0;if(s[7792]|0||(cX(9900),gr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(_r(9900)|0)){o=9900,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));cX(9900)}return 9900}function QOe(o){return o=o|0,0}function TOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=OM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],lX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(ROe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function lX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function ROe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=FOe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,NOe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],lX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,OOe(o,k),LOe(k),I=M;return}}function FOe(o){return o=o|0,357913941}function NOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function OOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function LOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function cX(o){o=o|0,_Oe(o)}function MOe(o){o=o|0,UOe(o+24|0)}function UOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function _Oe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,22,l,HOe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function HOe(){return 1344}function jOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;u=I,I=I+16|0,A=u+8|0,d=u,m=GOe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],qOe(l,A),I=u}function GOe(o){return o=o|0,(n[(OM()|0)+24>>2]|0)+(o*12|0)|0}function qOe(o,l){o=o|0,l=l|0;var u=0;u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),ip[u&127](o)}function WOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=LM()|0,o=YOe(u)|0,vn(m,l,d,o,VOe(u,A)|0,A)}function LM(){var o=0,l=0;if(s[7800]|0||(fX(9936),gr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(_r(9936)|0)){o=9936,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));fX(9936)}return 9936}function YOe(o){return o=o|0,o|0}function VOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=LM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(uX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(JOe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function uX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function JOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=KOe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,zOe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,uX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,XOe(o,d),ZOe(d),I=k;return}}function KOe(o){return o=o|0,536870911}function zOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function XOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ZOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function fX(o){o=o|0,tLe(o)}function $Oe(o){o=o|0,eLe(o+24|0)}function eLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function tLe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,23,l,Uz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function rLe(o,l){o=o|0,l=l|0,iLe(n[(nLe(o)|0)>>2]|0,l)}function nLe(o){return o=o|0,(n[(LM()|0)+24>>2]|0)+(o<<3)|0}function iLe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,BM(A,l),l=vM(A,l)|0,ip[o&127](l),I=u}function sLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=MM()|0,o=oLe(u)|0,vn(m,l,d,o,aLe(u,A)|0,A)}function MM(){var o=0,l=0;if(s[7808]|0||(pX(9972),gr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(_r(9972)|0)){o=9972,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));pX(9972)}return 9972}function oLe(o){return o=o|0,o|0}function aLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=MM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(AX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(lLe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function AX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function lLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=cLe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,uLe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,AX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,fLe(o,d),ALe(d),I=k;return}}function cLe(o){return o=o|0,536870911}function uLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function fLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ALe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function pX(o){o=o|0,gLe(o)}function pLe(o){o=o|0,hLe(o+24|0)}function hLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function gLe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,9,l,dLe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function dLe(){return 1348}function mLe(o,l){return o=o|0,l=l|0,ELe(n[(yLe(o)|0)>>2]|0,l)|0}function yLe(o){return o=o|0,(n[(MM()|0)+24>>2]|0)+(o<<3)|0}function ELe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,hX(A,l),l=gX(A,l)|0,l=TP(gd[o&31](l)|0)|0,I=u,l|0}function hX(o,l){o=o|0,l=l|0}function gX(o,l){return o=o|0,l=l|0,ILe(l)|0}function ILe(o){return o=o|0,o|0}function CLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=UM()|0,o=wLe(u)|0,vn(m,l,d,o,BLe(u,A)|0,A)}function UM(){var o=0,l=0;if(s[7816]|0||(mX(10008),gr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(_r(10008)|0)){o=10008,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));mX(10008)}return 10008}function wLe(o){return o=o|0,o|0}function BLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=UM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(dX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(vLe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function dX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function vLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=SLe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,DLe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,dX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,bLe(o,d),PLe(d),I=k;return}}function SLe(o){return o=o|0,536870911}function DLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function bLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function PLe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function mX(o){o=o|0,QLe(o)}function xLe(o){o=o|0,kLe(o+24|0)}function kLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function QLe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,15,l,Rz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function TLe(o){return o=o|0,FLe(n[(RLe(o)|0)>>2]|0)|0}function RLe(o){return o=o|0,(n[(UM()|0)+24>>2]|0)+(o<<3)|0}function FLe(o){return o=o|0,TP(VP[o&7]()|0)|0}function NLe(){var o=0;return s[7832]|0||(GLe(10052),gr(25,10052,U|0)|0,o=7832,n[o>>2]=1,n[o+4>>2]=0),10052}function OLe(o,l){o=o|0,l=l|0,n[o>>2]=LLe()|0,n[o+4>>2]=MLe()|0,n[o+12>>2]=l,n[o+8>>2]=ULe()|0,n[o+32>>2]=2}function LLe(){return 11709}function MLe(){return 1188}function ULe(){return FP()|0}function _Le(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(HLe(u),It(u)):l|0&&(Oy(l),It(l))}function Hh(o,l){return o=o|0,l=l|0,l&o|0}function HLe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function FP(){var o=0;return s[7824]|0||(n[2511]=jLe()|0,n[2512]=0,o=7824,n[o>>2]=1,n[o+4>>2]=0),10044}function jLe(){return 0}function GLe(o){o=o|0,Lh(o)}function qLe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0;l=I,I=I+32|0,u=l+24|0,m=l+16|0,d=l+8|0,A=l,WLe(o,4827),YLe(o,4834,3)|0,VLe(o,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],JLe(o,4841,u)|0,n[d>>2]=1,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],KLe(o,4871,u)|0,n[A>>2]=10,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],zLe(o,4891,u)|0,I=l}function WLe(o,l){o=o|0,l=l|0;var u=0;u=PUe()|0,n[o>>2]=u,xUe(u,l),jh(n[o>>2]|0)}function YLe(o,l,u){return o=o|0,l=l|0,u=u|0,AUe(o,Bn(l)|0,u,0),o|0}function VLe(o,l,u){return o=o|0,l=l|0,u=u|0,XMe(o,Bn(l)|0,u,0),o|0}function JLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TMe(o,l,d),I=A,o|0}function KLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pMe(o,l,d),I=A,o|0}function zLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],XLe(o,l,d),I=A,o|0}function XLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZLe(o,u,d,1),I=A}function ZLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=_M()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=$Le(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,eMe(m,A)|0,A),I=d}function _M(){var o=0,l=0;if(s[7840]|0||(EX(10100),gr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(_r(10100)|0)){o=10100,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));EX(10100)}return 10100}function $Le(o){return o=o|0,0}function eMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=_M()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],yX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(tMe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function yX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function tMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=rMe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,nMe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],yX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,iMe(o,k),sMe(k),I=M;return}}function rMe(o){return o=o|0,357913941}function nMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function iMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function EX(o){o=o|0,lMe(o)}function oMe(o){o=o|0,aMe(o+24|0)}function aMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function lMe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,cMe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cMe(){return 1364}function uMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=fMe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=AMe(l,d,u)|0,I=A,u|0}function fMe(o){return o=o|0,(n[(_M()|0)+24>>2]|0)+(o*12|0)|0}function AMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(d,u),d=rp(d,u)|0,d=Dz(gU[A&15](o,d)|0)|0,I=m,d|0}function pMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hMe(o,u,d,0),I=A}function hMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=HM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=gMe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,dMe(m,A)|0,A),I=d}function HM(){var o=0,l=0;if(s[7848]|0||(CX(10136),gr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(_r(10136)|0)){o=10136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));CX(10136)}return 10136}function gMe(o){return o=o|0,0}function dMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=HM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],IX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(mMe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function IX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function mMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=yMe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,EMe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],IX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,IMe(o,k),CMe(k),I=M;return}}function yMe(o){return o=o|0,357913941}function EMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function IMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function CMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function CX(o){o=o|0,vMe(o)}function wMe(o){o=o|0,BMe(o+24|0)}function BMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function vMe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,9,l,SMe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function SMe(){return 1372}function DMe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=bMe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],PMe(l,d,u),I=A}function bMe(o){return o=o|0,(n[(HM()|0)+24>>2]|0)+(o*12|0)|0}function PMe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=$e;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),xMe(d,u),B=y(kMe(d,u)),NZ[A&1](o,B),I=m}function xMe(o,l){o=o|0,l=+l}function kMe(o,l){return o=o|0,l=+l,y(QMe(l))}function QMe(o){return o=+o,y(o)}function TMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RMe(o,u,d,0),I=A}function RMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=jM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=FMe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,NMe(m,A)|0,A),I=d}function jM(){var o=0,l=0;if(s[7856]|0||(BX(10172),gr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(_r(10172)|0)){o=10172,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));BX(10172)}return 10172}function FMe(o){return o=o|0,0}function NMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=jM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],wX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(OMe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function wX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function OMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=LMe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,MMe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],wX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,UMe(o,k),_Me(k),I=M;return}}function LMe(o){return o=o|0,357913941}function MMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function UMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _Me(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function BX(o){o=o|0,GMe(o)}function HMe(o){o=o|0,jMe(o+24|0)}function jMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function GMe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,qMe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qMe(){return 1380}function WMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=YMe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],VMe(l,m,u,A),I=d}function YMe(o){return o=o|0,(n[(jM()|0)+24>>2]|0)+(o*12|0)|0}function VMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),tp(m,u),m=rp(m,u)|0,JMe(B,A),B=KMe(B,A)|0,F2[d&15](o,m,B),I=k}function JMe(o,l){o=o|0,l=l|0}function KMe(o,l){return o=o|0,l=l|0,zMe(l)|0}function zMe(o){return o=o|0,(o|0)!=0|0}function XMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=GM()|0,o=ZMe(u)|0,vn(m,l,d,o,$Me(u,A)|0,A)}function GM(){var o=0,l=0;if(s[7864]|0||(SX(10208),gr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(_r(10208)|0)){o=10208,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));SX(10208)}return 10208}function ZMe(o){return o=o|0,o|0}function $Me(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=GM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(vX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(eUe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function vX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function eUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=tUe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,rUe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,vX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,nUe(o,d),iUe(d),I=k;return}}function tUe(o){return o=o|0,536870911}function rUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function nUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function iUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function SX(o){o=o|0,aUe(o)}function sUe(o){o=o|0,oUe(o+24|0)}function oUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function aUe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,24,l,lUe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function lUe(){return 1392}function cUe(o,l){o=o|0,l=l|0,fUe(n[(uUe(o)|0)>>2]|0,l)}function uUe(o){return o=o|0,(n[(GM()|0)+24>>2]|0)+(o<<3)|0}function fUe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,hX(A,l),l=gX(A,l)|0,ip[o&127](l),I=u}function AUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=qM()|0,o=pUe(u)|0,vn(m,l,d,o,hUe(u,A)|0,A)}function qM(){var o=0,l=0;if(s[7872]|0||(bX(10244),gr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(_r(10244)|0)){o=10244,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));bX(10244)}return 10244}function pUe(o){return o=o|0,o|0}function hUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=qM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(DX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(gUe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function DX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function gUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=dUe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,mUe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,DX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,yUe(o,d),EUe(d),I=k;return}}function dUe(o){return o=o|0,536870911}function mUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function yUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function EUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function bX(o){o=o|0,wUe(o)}function IUe(o){o=o|0,CUe(o+24|0)}function CUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function wUe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,16,l,BUe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function BUe(){return 1400}function vUe(o){return o=o|0,DUe(n[(SUe(o)|0)>>2]|0)|0}function SUe(o){return o=o|0,(n[(qM()|0)+24>>2]|0)+(o<<3)|0}function DUe(o){return o=o|0,bUe(VP[o&7]()|0)|0}function bUe(o){return o=o|0,o|0}function PUe(){var o=0;return s[7880]|0||(NUe(10280),gr(25,10280,U|0)|0,o=7880,n[o>>2]=1,n[o+4>>2]=0),10280}function xUe(o,l){o=o|0,l=l|0,n[o>>2]=kUe()|0,n[o+4>>2]=QUe()|0,n[o+12>>2]=l,n[o+8>>2]=TUe()|0,n[o+32>>2]=4}function kUe(){return 11711}function QUe(){return 1356}function TUe(){return FP()|0}function RUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(FUe(u),It(u)):l|0&&(Kg(l),It(l))}function FUe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function NUe(o){o=o|0,Lh(o)}function OUe(o){o=o|0,LUe(o,4920),MUe(o)|0,UUe(o)|0}function LUe(o,l){o=o|0,l=l|0;var u=0;u=Kz()|0,n[o>>2]=u,o_e(u,l),jh(n[o>>2]|0)}function MUe(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,zUe()|0),o|0}function UUe(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,_Ue()|0),o|0}function _Ue(){var o=0;return s[7888]|0||(PX(10328),gr(53,10328,U|0)|0,o=7888,n[o>>2]=1,n[o+4>>2]=0),_r(10328)|0||PX(10328),10328}function cd(o,l){o=o|0,l=l|0,vn(o,0,l,0,0,0)}function PX(o){o=o|0,GUe(o),ud(o,10)}function HUe(o){o=o|0,jUe(o+24|0)}function jUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function GUe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,VUe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qUe(o,l,u){o=o|0,l=l|0,u=+u,WUe(o,l,u)}function ud(o,l){o=o|0,l=l|0,n[o+20>>2]=l}function WUe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,m=A+8|0,k=A+13|0,d=A,B=A+12|0,tp(k,l),n[m>>2]=rp(k,l)|0,Qf(B,u),E[d>>3]=+Tf(B,u),YUe(o,m,d),I=A}function YUe(o,l,u){o=o|0,l=l|0,u=u|0,Tl(o+8|0,n[l>>2]|0,+E[u>>3]),s[o+24>>0]=1}function VUe(){return 1404}function JUe(o,l){return o=o|0,l=+l,KUe(o,l)|0}function KUe(o,l){o=o|0,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+16|0,m=A+4|0,B=A+8|0,k=A,d=Rl(8)|0,u=d,T=Kt(16)|0,tp(m,o),o=rp(m,o)|0,Qf(B,l),Tl(T,o,+Tf(B,l)),B=u+4|0,n[B>>2]=T,o=Kt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],xM(o,B,m),n[d>>2]=o,I=A,u|0}function zUe(){var o=0;return s[7896]|0||(xX(10364),gr(54,10364,U|0)|0,o=7896,n[o>>2]=1,n[o+4>>2]=0),_r(10364)|0||xX(10364),10364}function xX(o){o=o|0,$Ue(o),ud(o,55)}function XUe(o){o=o|0,ZUe(o+24|0)}function ZUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function $Ue(o){o=o|0;var l=0;l=tn()|0,rn(o,5,4,l,n_e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function e_e(o){o=o|0,t_e(o)}function t_e(o){o=o|0,r_e(o)}function r_e(o){o=o|0,kX(o+8|0),s[o+24>>0]=1}function kX(o){o=o|0,n[o>>2]=0,E[o+8>>3]=0}function n_e(){return 1424}function i_e(){return s_e()|0}function s_e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Rl(8)|0,o=u,A=Kt(16)|0,kX(A),m=o+4|0,n[m>>2]=A,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],xM(A,m,d),n[u>>2]=A,I=l,o|0}function o_e(o,l){o=o|0,l=l|0,n[o>>2]=a_e()|0,n[o+4>>2]=l_e()|0,n[o+12>>2]=l,n[o+8>>2]=c_e()|0,n[o+32>>2]=5}function a_e(){return 11710}function l_e(){return 1416}function c_e(){return NP()|0}function u_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(f_e(u),It(u)):l|0&&It(l)}function f_e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function NP(){var o=0;return s[7904]|0||(n[2600]=A_e()|0,n[2601]=0,o=7904,n[o>>2]=1,n[o+4>>2]=0),10400}function A_e(){return n[357]|0}function p_e(o){o=o|0,h_e(o,4926),g_e(o)|0}function h_e(o,l){o=o|0,l=l|0;var u=0;u=yz()|0,n[o>>2]=u,D_e(u,l),jh(n[o>>2]|0)}function g_e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,d_e()|0),o|0}function d_e(){var o=0;return s[7912]|0||(QX(10412),gr(56,10412,U|0)|0,o=7912,n[o>>2]=1,n[o+4>>2]=0),_r(10412)|0||QX(10412),10412}function QX(o){o=o|0,E_e(o),ud(o,57)}function m_e(o){o=o|0,y_e(o+24|0)}function y_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function E_e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,5,l,B_e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function I_e(o){o=o|0,C_e(o)}function C_e(o){o=o|0,w_e(o)}function w_e(o){o=o|0;var l=0,u=0;l=o+8|0,u=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(u|0));s[o+56>>0]=1}function B_e(){return 1432}function v_e(){return S_e()|0}function S_e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0;B=I,I=I+16|0,o=B+4|0,l=B,u=Rl(8)|0,A=u,d=Kt(48)|0,m=d,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=A+4|0,n[m>>2]=d,k=Kt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[o>>2]=n[l>>2],Ez(k,m,o),n[u>>2]=k,I=B,A|0}function D_e(o,l){o=o|0,l=l|0,n[o>>2]=b_e()|0,n[o+4>>2]=P_e()|0,n[o+12>>2]=l,n[o+8>>2]=x_e()|0,n[o+32>>2]=6}function b_e(){return 11704}function P_e(){return 1436}function x_e(){return NP()|0}function k_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(Q_e(u),It(u)):l|0&&It(l)}function Q_e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function T_e(o){o=o|0,R_e(o,4933),F_e(o)|0,N_e(o)|0}function R_e(o,l){o=o|0,l=l|0;var u=0;u=s4e()|0,n[o>>2]=u,o4e(u,l),jh(n[o>>2]|0)}function F_e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,K_e()|0),o|0}function N_e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,O_e()|0),o|0}function O_e(){var o=0;return s[7920]|0||(TX(10452),gr(58,10452,U|0)|0,o=7920,n[o>>2]=1,n[o+4>>2]=0),_r(10452)|0||TX(10452),10452}function TX(o){o=o|0,U_e(o),ud(o,1)}function L_e(o){o=o|0,M_e(o+24|0)}function M_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function U_e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,G_e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function __e(o,l,u){o=o|0,l=+l,u=+u,H_e(o,l,u)}function H_e(o,l,u){o=o|0,l=+l,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,m=A+8|0,k=A+17|0,d=A,B=A+16|0,Qf(k,l),E[m>>3]=+Tf(k,l),Qf(B,u),E[d>>3]=+Tf(B,u),j_e(o,m,d),I=A}function j_e(o,l,u){o=o|0,l=l|0,u=u|0,RX(o+8|0,+E[l>>3],+E[u>>3]),s[o+24>>0]=1}function RX(o,l,u){o=o|0,l=+l,u=+u,E[o>>3]=l,E[o+8>>3]=u}function G_e(){return 1472}function q_e(o,l){return o=+o,l=+l,W_e(o,l)|0}function W_e(o,l){o=+o,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+16|0,B=A+4|0,k=A+8|0,T=A,d=Rl(8)|0,u=d,m=Kt(16)|0,Qf(B,o),o=+Tf(B,o),Qf(k,l),RX(m,o,+Tf(k,l)),k=u+4|0,n[k>>2]=m,m=Kt(8)|0,k=n[k>>2]|0,n[T>>2]=0,n[B>>2]=n[T>>2],FX(m,k,B),n[d>>2]=m,I=A,u|0}function FX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1452,n[u+12>>2]=l,n[o+4>>2]=u}function Y_e(o){o=o|0,$y(o),It(o)}function V_e(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function J_e(o){o=o|0,It(o)}function K_e(){var o=0;return s[7928]|0||(NX(10488),gr(59,10488,U|0)|0,o=7928,n[o>>2]=1,n[o+4>>2]=0),_r(10488)|0||NX(10488),10488}function NX(o){o=o|0,Z_e(o),ud(o,60)}function z_e(o){o=o|0,X_e(o+24|0)}function X_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function Z_e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,6,l,r4e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function $_e(o){o=o|0,e4e(o)}function e4e(o){o=o|0,t4e(o)}function t4e(o){o=o|0,OX(o+8|0),s[o+24>>0]=1}function OX(o){o=o|0,n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,n[o+12>>2]=0}function r4e(){return 1492}function n4e(){return i4e()|0}function i4e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Rl(8)|0,o=u,A=Kt(16)|0,OX(A),m=o+4|0,n[m>>2]=A,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],FX(A,m,d),n[u>>2]=A,I=l,o|0}function s4e(){var o=0;return s[7936]|0||(A4e(10524),gr(25,10524,U|0)|0,o=7936,n[o>>2]=1,n[o+4>>2]=0),10524}function o4e(o,l){o=o|0,l=l|0,n[o>>2]=a4e()|0,n[o+4>>2]=l4e()|0,n[o+12>>2]=l,n[o+8>>2]=c4e()|0,n[o+32>>2]=7}function a4e(){return 11700}function l4e(){return 1484}function c4e(){return NP()|0}function u4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(f4e(u),It(u)):l|0&&It(l)}function f4e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function A4e(o){o=o|0,Lh(o)}function p4e(o,l,u){o=o|0,l=l|0,u=u|0,o=Bn(l)|0,l=h4e(u)|0,u=g4e(u,0)|0,W4e(o,l,u,WM()|0,0)}function h4e(o){return o=o|0,o|0}function g4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=WM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(MX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(w4e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function WM(){var o=0,l=0;if(s[7944]|0||(LX(10568),gr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(_r(10568)|0)){o=10568,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));LX(10568)}return 10568}function LX(o){o=o|0,y4e(o)}function d4e(o){o=o|0,m4e(o+24|0)}function m4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function y4e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,17,l,Oz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function E4e(o){return o=o|0,C4e(n[(I4e(o)|0)>>2]|0)|0}function I4e(o){return o=o|0,(n[(WM()|0)+24>>2]|0)+(o<<3)|0}function C4e(o){return o=o|0,RP(VP[o&7]()|0)|0}function MX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function w4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=B4e(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,v4e(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,MX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,S4e(o,d),D4e(d),I=k;return}}function B4e(o){return o=o|0,536870911}function v4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function S4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function D4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function b4e(){P4e()}function P4e(){x4e(10604)}function x4e(o){o=o|0,k4e(o,4955)}function k4e(o,l){o=o|0,l=l|0;var u=0;u=Q4e()|0,n[o>>2]=u,T4e(u,l),jh(n[o>>2]|0)}function Q4e(){var o=0;return s[7952]|0||(H4e(10612),gr(25,10612,U|0)|0,o=7952,n[o>>2]=1,n[o+4>>2]=0),10612}function T4e(o,l){o=o|0,l=l|0,n[o>>2]=O4e()|0,n[o+4>>2]=L4e()|0,n[o+12>>2]=l,n[o+8>>2]=M4e()|0,n[o+32>>2]=8}function jh(o){o=o|0;var l=0,u=0;l=I,I=I+16|0,u=l,Jy()|0,n[u>>2]=o,R4e(10608,u),I=l}function Jy(){return s[11714]|0||(n[2652]=0,gr(62,10608,U|0)|0,s[11714]=1),10608}function R4e(o,l){o=o|0,l=l|0;var u=0;u=Kt(8)|0,n[u+4>>2]=n[l>>2],n[u>>2]=n[o>>2],n[o>>2]=u}function F4e(o){o=o|0,N4e(o)}function N4e(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function O4e(){return 11715}function L4e(){return 1496}function M4e(){return FP()|0}function U4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(_4e(u),It(u)):l|0&&It(l)}function _4e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function H4e(o){o=o|0,Lh(o)}function j4e(o,l){o=o|0,l=l|0;var u=0,A=0;Jy()|0,u=n[2652]|0;e:do if(u|0){for(;A=n[u+4>>2]|0,!(A|0&&!(EZ(YM(A)|0,o)|0));)if(u=n[u>>2]|0,!u)break e;G4e(A,l)}while(!1)}function YM(o){return o=o|0,n[o+12>>2]|0}function G4e(o,l){o=o|0,l=l|0;var u=0;o=o+36|0,u=n[o>>2]|0,u|0&&(Sf(u),It(u)),u=Kt(4)|0,DP(u,l),n[o>>2]=u}function VM(){return s[11716]|0||(n[2664]=0,gr(63,10656,U|0)|0,s[11716]=1),10656}function UX(){var o=0;return s[11717]|0?o=n[2665]|0:(q4e(),n[2665]=1504,s[11717]=1,o=1504),o|0}function q4e(){s[11740]|0||(s[11718]=yr(yr(8,0)|0,0)|0,s[11719]=yr(yr(0,0)|0,0)|0,s[11720]=yr(yr(0,16)|0,0)|0,s[11721]=yr(yr(8,0)|0,0)|0,s[11722]=yr(yr(0,0)|0,0)|0,s[11723]=yr(yr(8,0)|0,0)|0,s[11724]=yr(yr(0,0)|0,0)|0,s[11725]=yr(yr(8,0)|0,0)|0,s[11726]=yr(yr(0,0)|0,0)|0,s[11727]=yr(yr(8,0)|0,0)|0,s[11728]=yr(yr(0,0)|0,0)|0,s[11729]=yr(yr(0,0)|0,32)|0,s[11730]=yr(yr(0,0)|0,32)|0,s[11740]=1)}function _X(){return 1572}function W4e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0,L=0;m=I,I=I+32|0,L=m+16|0,M=m+12|0,T=m+8|0,k=m+4|0,B=m,n[L>>2]=o,n[M>>2]=l,n[T>>2]=u,n[k>>2]=A,n[B>>2]=d,VM()|0,Y4e(10656,L,M,T,k,B),I=m}function Y4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0;B=Kt(24)|0,gz(B+4|0,n[l>>2]|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[o>>2],n[o>>2]=B}function HX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0,ct=0;if(ct=I,I=I+32|0,Le=ct+20|0,Qe=ct+8|0,tt=ct+4|0,Ze=ct,l=n[l>>2]|0,l|0){Ye=Le+4|0,T=Le+8|0,M=Qe+4|0,L=Qe+8|0,q=Qe+8|0,ae=Le+8|0;do{if(B=l+4|0,k=JM(B)|0,k|0){if(d=P2(k)|0,n[Le>>2]=0,n[Ye>>2]=0,n[T>>2]=0,A=(x2(k)|0)+1|0,V4e(Le,A),A|0)for(;A=A+-1|0,bu(Qe,n[d>>2]|0),m=n[Ye>>2]|0,m>>>0<(n[ae>>2]|0)>>>0?(n[m>>2]=n[Qe>>2],n[Ye>>2]=(n[Ye>>2]|0)+4):KM(Le,Qe),A;)d=d+4|0;A=k2(k)|0,n[Qe>>2]=0,n[M>>2]=0,n[L>>2]=0;e:do if(n[A>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?J4e(Qe,A):(n[d>>2]=n[A>>2],n[M>>2]=(n[M>>2]|0)+4),A=A+4|0,!(n[A>>2]|0))break e;d=n[M>>2]|0,m=n[q>>2]|0}while(!1);n[tt>>2]=OP(B)|0,n[Ze>>2]=_r(k)|0,K4e(u,o,tt,Ze,Le,Qe),zM(Qe),np(Le)}l=n[l>>2]|0}while(l|0)}I=ct}function JM(o){return o=o|0,n[o+12>>2]|0}function P2(o){return o=o|0,n[o+12>>2]|0}function x2(o){return o=o|0,n[o+16>>2]|0}function V4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=n[o>>2]|0,(n[o+8>>2]|0)-A>>2>>>0>>0&&(KX(u,l,(n[o+4>>2]|0)-A>>2,o+8|0),zX(o,u),XX(u)),I=d}function KM(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=JX(o)|0,m>>>0>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,T=M>>1,KX(u,M>>2>>>0>>1>>>0?T>>>0>>0?d:T:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,zX(o,u),XX(u),I=B;return}}function k2(o){return o=o|0,n[o+8>>2]|0}function J4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=VX(o)|0,m>>>0>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,T=M>>1,h3e(u,M>>2>>>0>>1>>>0?T>>>0>>0?d:T:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,g3e(o,u),d3e(u),I=B;return}}function OP(o){return o=o|0,n[o>>2]|0}function K4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,z4e(o,l,u,A,d,m)}function zM(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function np(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function z4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0;B=I,I=I+48|0,L=B+40|0,k=B+32|0,q=B+24|0,T=B+12|0,M=B,Fl(k),o=Os(o)|0,n[q>>2]=n[l>>2],u=n[u>>2]|0,A=n[A>>2]|0,XM(T,d),X4e(M,m),n[L>>2]=n[q>>2],Z4e(o,L,u,A,T,M),zM(M),np(T),Nl(k),I=B}function XM(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(A3e(o,A),p3e(o,n[l>>2]|0,n[u>>2]|0,A))}function X4e(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(u3e(o,A),f3e(o,n[l>>2]|0,n[u>>2]|0,A))}function Z4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0;B=I,I=I+32|0,L=B+28|0,q=B+24|0,k=B+12|0,T=B,M=da($4e()|0)|0,n[q>>2]=n[l>>2],n[L>>2]=n[q>>2],l=fd(L)|0,u=jX(u)|0,A=ZM(A)|0,n[k>>2]=n[d>>2],L=d+4|0,n[k+4>>2]=n[L>>2],q=d+8|0,n[k+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[d>>2]=0,d=$M(k)|0,n[T>>2]=n[m>>2],L=m+4|0,n[T+4>>2]=n[L>>2],q=m+8|0,n[T+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[m>>2]=0,lu(0,M|0,o|0,l|0,u|0,A|0,d|0,e3e(T)|0)|0,zM(T),np(k),I=B}function $4e(){var o=0;return s[7968]|0||(l3e(10708),o=7968,n[o>>2]=1,n[o+4>>2]=0),10708}function fd(o){return o=o|0,qX(o)|0}function jX(o){return o=o|0,GX(o)|0}function ZM(o){return o=o|0,RP(o)|0}function $M(o){return o=o|0,r3e(o)|0}function e3e(o){return o=o|0,t3e(o)|0}function t3e(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Rl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=GX(n[(n[o>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function GX(o){return o=o|0,o|0}function r3e(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Rl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=qX((n[o>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function qX(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=fM(WX()|0)|0,A?(AM(l,A),pM(u,l),Mje(o,u),o=hM(l)|0):o=n3e(o)|0,I=d,o|0}function WX(){var o=0;return s[7960]|0||(a3e(10664),gr(25,10664,U|0)|0,o=7960,n[o>>2]=1,n[o+4>>2]=0),10664}function n3e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Rl(8)|0,l=A,k=Kt(4)|0,n[k>>2]=n[o>>2],m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],YX(o,m,d),n[A>>2]=o,I=u,l|0}function YX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1656,n[u+12>>2]=l,n[o+4>>2]=u}function i3e(o){o=o|0,$y(o),It(o)}function s3e(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function o3e(o){o=o|0,It(o)}function a3e(o){o=o|0,Lh(o)}function l3e(o){o=o|0,Qo(o,c3e()|0,5)}function c3e(){return 1676}function u3e(o,l){o=o|0,l=l|0;var u=0;if((VX(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function f3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function VX(o){return o=o|0,1073741823}function A3e(o,l){o=o|0,l=l|0;var u=0;if((JX(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function p3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function JX(o){return o=o|0,1073741823}function h3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Kt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function g3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function d3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function KX(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Kt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function zX(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function XX(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function m3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0;if(Qe=I,I=I+32|0,L=Qe+20|0,q=Qe+12|0,M=Qe+16|0,ae=Qe+4|0,Ye=Qe,Le=Qe+8|0,k=UX()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(T=n[k+8>>2]|0,k=n[k+4>>2]|0;bu(L,B),y3e(o,L,k,T),m=m+4|0,B=n[m>>2]|0,B;)T=T+1|0,k=k+1|0;if(m=_X()|0,B=n[m>>2]|0,B|0)do bu(L,B),n[q>>2]=n[m+4>>2],E3e(l,L,q),m=m+8|0,B=n[m>>2]|0;while(B|0);if(m=n[(Jy()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,bu(L,n[(Ky(l)|0)>>2]|0),n[q>>2]=YM(l)|0,I3e(u,L,q),m=n[m>>2]|0;while(m|0);if(bu(M,0),m=VM()|0,n[L>>2]=n[M>>2],HX(L,m,d),m=n[(Jy()|0)>>2]|0,m|0){o=L+4|0,l=L+8|0,u=L+8|0;do{if(T=n[m+4>>2]|0,bu(q,n[(Ky(T)|0)>>2]|0),C3e(ae,ZX(T)|0),B=n[ae>>2]|0,B|0){n[L>>2]=0,n[o>>2]=0,n[l>>2]=0;do bu(Ye,n[(Ky(n[B+4>>2]|0)|0)>>2]|0),k=n[o>>2]|0,k>>>0<(n[u>>2]|0)>>>0?(n[k>>2]=n[Ye>>2],n[o>>2]=(n[o>>2]|0)+4):KM(L,Ye),B=n[B>>2]|0;while(B|0);w3e(A,q,L),np(L)}n[Le>>2]=n[q>>2],M=$X(T)|0,n[L>>2]=n[Le>>2],HX(L,M,d),Cz(ae),m=n[m>>2]|0}while(m|0)}I=Qe}function y3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F3e(o,l,u,A)}function E3e(o,l,u){o=o|0,l=l|0,u=u|0,R3e(o,l,u)}function Ky(o){return o=o|0,o|0}function I3e(o,l,u){o=o|0,l=l|0,u=u|0,x3e(o,l,u)}function ZX(o){return o=o|0,o+16|0}function C3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;if(m=I,I=I+16|0,d=m+8|0,u=m,n[o>>2]=0,A=n[l>>2]|0,n[d>>2]=A,n[u>>2]=o,u=P3e(u)|0,A|0){if(A=Kt(12)|0,B=(eZ(d)|0)+4|0,o=n[B+4>>2]|0,l=A+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=o,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)o=A;else for(l=A;o=Kt(12)|0,T=(eZ(d)|0)+4|0,k=n[T+4>>2]|0,B=o+4|0,n[B>>2]=n[T>>2],n[B+4>>2]=k,n[l>>2]=o,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=o;n[o>>2]=n[u>>2],n[u>>2]=A}I=m}function w3e(o,l,u){o=o|0,l=l|0,u=u|0,B3e(o,l,u)}function $X(o){return o=o|0,o+24|0}function B3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+24|0,d=A+16|0,k=A+12|0,m=A,Fl(d),o=Os(o)|0,n[k>>2]=n[l>>2],XM(m,u),n[B>>2]=n[k>>2],v3e(o,B,m),np(m),Nl(d),I=A}function v3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+16|0,k=A+12|0,d=A,m=da(S3e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=fd(B)|0,n[d>>2]=n[u>>2],B=u+4|0,n[d+4>>2]=n[B>>2],k=u+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[u>>2]=0,Ts(0,m|0,o|0,l|0,$M(d)|0)|0,np(d),I=A}function S3e(){var o=0;return s[7976]|0||(D3e(10720),o=7976,n[o>>2]=1,n[o+4>>2]=0),10720}function D3e(o){o=o|0,Qo(o,b3e()|0,2)}function b3e(){return 1732}function P3e(o){return o=o|0,n[o>>2]|0}function eZ(o){return o=o|0,n[o>>2]|0}function x3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,Fl(d),o=Os(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],tZ(o,m,u),Nl(d),I=A}function tZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+4|0,B=A,d=da(k3e()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=fd(m)|0,Ts(0,d|0,o|0,l|0,jX(u)|0)|0,I=A}function k3e(){var o=0;return s[7984]|0||(Q3e(10732),o=7984,n[o>>2]=1,n[o+4>>2]=0),10732}function Q3e(o){o=o|0,Qo(o,T3e()|0,2)}function T3e(){return 1744}function R3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,Fl(d),o=Os(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],tZ(o,m,u),Nl(d),I=A}function F3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,Fl(m),o=Os(o)|0,n[k>>2]=n[l>>2],u=s[u>>0]|0,A=s[A>>0]|0,n[B>>2]=n[k>>2],N3e(o,B,u,A),Nl(m),I=d}function N3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,B=d+4|0,k=d,m=da(O3e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=fd(B)|0,u=zy(u)|0,Li(0,m|0,o|0,l|0,u|0,zy(A)|0)|0,I=d}function O3e(){var o=0;return s[7992]|0||(M3e(10744),o=7992,n[o>>2]=1,n[o+4>>2]=0),10744}function zy(o){return o=o|0,L3e(o)|0}function L3e(o){return o=o|0,o&255|0}function M3e(o){o=o|0,Qo(o,U3e()|0,3)}function U3e(){return 1756}function _3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;switch(ae=I,I=I+32|0,k=ae+8|0,T=ae+4|0,M=ae+20|0,L=ae,yM(o,0),A=Lje(l)|0,n[k>>2]=0,q=k+4|0,n[q>>2]=0,n[k+8>>2]=0,A<<24>>24){case 0:{s[M>>0]=0,H3e(T,u,M),LP(o,T)|0,Df(T);break}case 8:{q=sU(l)|0,s[M>>0]=8,bu(L,n[q+4>>2]|0),j3e(T,u,M,L,q+8|0),LP(o,T)|0,Df(T);break}case 9:{if(m=sU(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,bu(T,n[d>>2]|0),A=n[q>>2]|0,A>>>0<(n[B>>2]|0)>>>0?(n[A>>2]=n[T>>2],n[q>>2]=(n[q>>2]|0)+4):KM(k,T),l;)d=d+4|0;s[M>>0]=9,bu(L,n[m+8>>2]|0),G3e(T,u,M,L,k),LP(o,T)|0,Df(T);break}default:q=sU(l)|0,s[M>>0]=A,bu(L,n[q+4>>2]|0),q3e(T,u,M,L),LP(o,T)|0,Df(T)}np(k),I=ae}function H3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,Fl(d),l=Os(l)|0,n8e(o,l,s[u>>0]|0),Nl(d),I=A}function LP(o,l){o=o|0,l=l|0;var u=0;return u=n[o>>2]|0,u|0&&Na(u|0),n[o>>2]=n[l>>2],n[l>>2]=0,o|0}function j3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+32|0,k=m+16|0,B=m+8|0,T=m,Fl(B),l=Os(l)|0,u=s[u>>0]|0,n[T>>2]=n[A>>2],d=n[d>>2]|0,n[k>>2]=n[T>>2],$3e(o,l,u,k,d),Nl(B),I=m}function G3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0;m=I,I=I+32|0,T=m+24|0,B=m+16|0,M=m+12|0,k=m,Fl(B),l=Os(l)|0,u=s[u>>0]|0,n[M>>2]=n[A>>2],XM(k,d),n[T>>2]=n[M>>2],K3e(o,l,u,T,k),np(k),Nl(B),I=m}function q3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,Fl(m),l=Os(l)|0,u=s[u>>0]|0,n[k>>2]=n[A>>2],n[B>>2]=n[k>>2],W3e(o,l,u,B),Nl(m),I=d}function W3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+4|0,k=d,B=da(Y3e()|0)|0,u=zy(u)|0,n[k>>2]=n[A>>2],n[m>>2]=n[k>>2],MP(o,Ts(0,B|0,l|0,u|0,fd(m)|0)|0),I=d}function Y3e(){var o=0;return s[8e3]|0||(V3e(10756),o=8e3,n[o>>2]=1,n[o+4>>2]=0),10756}function MP(o,l){o=o|0,l=l|0,yM(o,l)}function V3e(o){o=o|0,Qo(o,J3e()|0,2)}function J3e(){return 1772}function K3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0;m=I,I=I+32|0,T=m+16|0,M=m+12|0,B=m,k=da(z3e()|0)|0,u=zy(u)|0,n[M>>2]=n[A>>2],n[T>>2]=n[M>>2],A=fd(T)|0,n[B>>2]=n[d>>2],T=d+4|0,n[B+4>>2]=n[T>>2],M=d+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[T>>2]=0,n[d>>2]=0,MP(o,Li(0,k|0,l|0,u|0,A|0,$M(B)|0)|0),np(B),I=m}function z3e(){var o=0;return s[8008]|0||(X3e(10768),o=8008,n[o>>2]=1,n[o+4>>2]=0),10768}function X3e(o){o=o|0,Qo(o,Z3e()|0,3)}function Z3e(){return 1784}function $3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+16|0,k=m+4|0,T=m,B=da(e8e()|0)|0,u=zy(u)|0,n[T>>2]=n[A>>2],n[k>>2]=n[T>>2],A=fd(k)|0,MP(o,Li(0,B|0,l|0,u|0,A|0,ZM(d)|0)|0),I=m}function e8e(){var o=0;return s[8016]|0||(t8e(10780),o=8016,n[o>>2]=1,n[o+4>>2]=0),10780}function t8e(o){o=o|0,Qo(o,r8e()|0,3)}function r8e(){return 1800}function n8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=da(i8e()|0)|0,MP(o,dn(0,A|0,l|0,zy(u)|0)|0)}function i8e(){var o=0;return s[8024]|0||(s8e(10792),o=8024,n[o>>2]=1,n[o+4>>2]=0),10792}function s8e(o){o=o|0,Qo(o,o8e()|0,1)}function o8e(){return 1816}function a8e(){l8e(),c8e(),u8e()}function l8e(){n[2702]=xZ(65536)|0}function c8e(){k8e(10856)}function u8e(){f8e(10816)}function f8e(o){o=o|0,A8e(o,5044),p8e(o)|0}function A8e(o,l){o=o|0,l=l|0;var u=0;u=WX()|0,n[o>>2]=u,v8e(u,l),jh(n[o>>2]|0)}function p8e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,h8e()|0),o|0}function h8e(){var o=0;return s[8032]|0||(rZ(10820),gr(64,10820,U|0)|0,o=8032,n[o>>2]=1,n[o+4>>2]=0),_r(10820)|0||rZ(10820),10820}function rZ(o){o=o|0,m8e(o),ud(o,25)}function g8e(o){o=o|0,d8e(o+24|0)}function d8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function m8e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,18,l,C8e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function y8e(o,l){o=o|0,l=l|0,E8e(o,l)}function E8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;u=I,I=I+16|0,A=u,d=u+4|0,ad(d,l),n[A>>2]=ld(d,l)|0,I8e(o,A),I=u}function I8e(o,l){o=o|0,l=l|0,nZ(o+4|0,n[l>>2]|0),s[o+8>>0]=1}function nZ(o,l){o=o|0,l=l|0,n[o>>2]=l}function C8e(){return 1824}function w8e(o){return o=o|0,B8e(o)|0}function B8e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Rl(8)|0,l=A,k=Kt(4)|0,ad(d,o),nZ(k,ld(d,o)|0),m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],YX(o,m,d),n[A>>2]=o,I=u,l|0}function Rl(o){o=o|0;var l=0,u=0;return o=o+7&-8,o>>>0<=32768&&(l=n[2701]|0,o>>>0<=(65536-l|0)>>>0)?(u=(n[2702]|0)+l|0,n[2701]=l+o,o=u):(o=xZ(o+8|0)|0,n[o>>2]=n[2703],n[2703]=o,o=o+8|0),o|0}function v8e(o,l){o=o|0,l=l|0,n[o>>2]=S8e()|0,n[o+4>>2]=D8e()|0,n[o+12>>2]=l,n[o+8>>2]=b8e()|0,n[o+32>>2]=9}function S8e(){return 11744}function D8e(){return 1832}function b8e(){return NP()|0}function P8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(x8e(u),It(u)):l|0&&It(l)}function x8e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function k8e(o){o=o|0,Q8e(o,5052),T8e(o)|0,R8e(o,5058,26)|0,F8e(o,5069,1)|0,N8e(o,5077,10)|0,O8e(o,5087,19)|0,L8e(o,5094,27)|0}function Q8e(o,l){o=o|0,l=l|0;var u=0;u=xje()|0,n[o>>2]=u,kje(u,l),jh(n[o>>2]|0)}function T8e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,gje()|0),o|0}function R8e(o,l,u){return o=o|0,l=l|0,u=u|0,XHe(o,Bn(l)|0,u,0),o|0}function F8e(o,l,u){return o=o|0,l=l|0,u=u|0,OHe(o,Bn(l)|0,u,0),o|0}function N8e(o,l,u){return o=o|0,l=l|0,u=u|0,hHe(o,Bn(l)|0,u,0),o|0}function O8e(o,l,u){return o=o|0,l=l|0,u=u|0,$8e(o,Bn(l)|0,u,0),o|0}function iZ(o,l){o=o|0,l=l|0;var u=0,A=0;e:for(;;){for(u=n[2703]|0;;){if((u|0)==(l|0))break e;if(A=n[u>>2]|0,n[2703]=A,!u)u=A;else break}It(u)}n[2701]=o}function L8e(o,l,u){return o=o|0,l=l|0,u=u|0,M8e(o,Bn(l)|0,u,0),o|0}function M8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=eU()|0,o=U8e(u)|0,vn(m,l,d,o,_8e(u,A)|0,A)}function eU(){var o=0,l=0;if(s[8040]|0||(oZ(10860),gr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(_r(10860)|0)){o=10860,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));oZ(10860)}return 10860}function U8e(o){return o=o|0,o|0}function _8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=eU()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(sZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(H8e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function sZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function H8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=j8e(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,G8e(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,sZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,q8e(o,d),W8e(d),I=k;return}}function j8e(o){return o=o|0,536870911}function G8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function q8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function W8e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function oZ(o){o=o|0,J8e(o)}function Y8e(o){o=o|0,V8e(o+24|0)}function V8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function J8e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,K8e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function K8e(){return 1840}function z8e(o,l,u){o=o|0,l=l|0,u=u|0,Z8e(n[(X8e(o)|0)>>2]|0,l,u)}function X8e(o){return o=o|0,(n[(eU()|0)+24>>2]|0)+(o<<3)|0}function Z8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+1|0,d=A,ad(m,l),l=ld(m,l)|0,ad(d,u),u=ld(d,u)|0,sp[o&31](l,u),I=A}function $8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=tU()|0,o=eHe(u)|0,vn(m,l,d,o,tHe(u,A)|0,A)}function tU(){var o=0,l=0;if(s[8048]|0||(lZ(10896),gr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(_r(10896)|0)){o=10896,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));lZ(10896)}return 10896}function eHe(o){return o=o|0,o|0}function tHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=tU()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(aZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(rHe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function aZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function rHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=nHe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,iHe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,aZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,sHe(o,d),oHe(d),I=k;return}}function nHe(o){return o=o|0,536870911}function iHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function sHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function oHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function lZ(o){o=o|0,cHe(o)}function aHe(o){o=o|0,lHe(o+24|0)}function lHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function cHe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,uHe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function uHe(){return 1852}function fHe(o,l){return o=o|0,l=l|0,pHe(n[(AHe(o)|0)>>2]|0,l)|0}function AHe(o){return o=o|0,(n[(tU()|0)+24>>2]|0)+(o<<3)|0}function pHe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,ad(A,l),l=ld(A,l)|0,l=RP(gd[o&31](l)|0)|0,I=u,l|0}function hHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=rU()|0,o=gHe(u)|0,vn(m,l,d,o,dHe(u,A)|0,A)}function rU(){var o=0,l=0;if(s[8056]|0||(uZ(10932),gr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(_r(10932)|0)){o=10932,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));uZ(10932)}return 10932}function gHe(o){return o=o|0,o|0}function dHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=rU()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(cZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(mHe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function cZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function mHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=yHe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,EHe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,cZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,IHe(o,d),CHe(d),I=k;return}}function yHe(o){return o=o|0,536870911}function EHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function IHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function CHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function uZ(o){o=o|0,vHe(o)}function wHe(o){o=o|0,BHe(o+24|0)}function BHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function vHe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,7,l,SHe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function SHe(){return 1860}function DHe(o,l,u){return o=o|0,l=l|0,u=u|0,PHe(n[(bHe(o)|0)>>2]|0,l,u)|0}function bHe(o){return o=o|0,(n[(rU()|0)+24>>2]|0)+(o<<3)|0}function PHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+32|0,B=A+12|0,m=A+8|0,k=A,T=A+16|0,d=A+4|0,xHe(T,l),kHe(k,T,l),Mh(d,u),u=Uh(d,u)|0,n[B>>2]=n[k>>2],F2[o&15](m,B,u),u=QHe(m)|0,Df(m),_h(d),I=A,u|0}function xHe(o,l){o=o|0,l=l|0}function kHe(o,l,u){o=o|0,l=l|0,u=u|0,THe(o,u)}function QHe(o){return o=o|0,Os(o)|0}function THe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+16|0,u=d,A=l,A&1?(RHe(u,0),Me(A|0,u|0)|0,FHe(o,u),NHe(u)):n[o>>2]=n[l>>2],I=d}function RHe(o,l){o=o|0,l=l|0,Su(o,l),n[o+4>>2]=0,s[o+8>>0]=0}function FHe(o,l){o=o|0,l=l|0,n[o>>2]=n[l+4>>2]}function NHe(o){o=o|0,s[o+8>>0]=0}function OHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=nU()|0,o=LHe(u)|0,vn(m,l,d,o,MHe(u,A)|0,A)}function nU(){var o=0,l=0;if(s[8064]|0||(AZ(10968),gr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(_r(10968)|0)){o=10968,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));AZ(10968)}return 10968}function LHe(o){return o=o|0,o|0}function MHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=nU()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(fZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(UHe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function fZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function UHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=_He(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,HHe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,fZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,jHe(o,d),GHe(d),I=k;return}}function _He(o){return o=o|0,536870911}function HHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function jHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function GHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function AZ(o){o=o|0,YHe(o)}function qHe(o){o=o|0,WHe(o+24|0)}function WHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function YHe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,1,l,VHe()|0,5),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function VHe(){return 1872}function JHe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,zHe(n[(KHe(o)|0)>>2]|0,l,u,A,d,m)}function KHe(o){return o=o|0,(n[(nU()|0)+24>>2]|0)+(o<<3)|0}function zHe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0;B=I,I=I+32|0,k=B+16|0,T=B+12|0,M=B+8|0,L=B+4|0,q=B,Mh(k,l),l=Uh(k,l)|0,Mh(T,u),u=Uh(T,u)|0,Mh(M,A),A=Uh(M,A)|0,Mh(L,d),d=Uh(L,d)|0,Mh(q,m),m=Uh(q,m)|0,FZ[o&1](l,u,A,d,m),_h(q),_h(L),_h(M),_h(T),_h(k),I=B}function XHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=iU()|0,o=ZHe(u)|0,vn(m,l,d,o,$He(u,A)|0,A)}function iU(){var o=0,l=0;if(s[8072]|0||(hZ(11004),gr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(_r(11004)|0)){o=11004,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));hZ(11004)}return 11004}function ZHe(o){return o=o|0,o|0}function $He(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=iU()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(pZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(eje(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function pZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function eje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=tje(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,rje(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,pZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,nje(o,d),ije(d),I=k;return}}function tje(o){return o=o|0,536870911}function rje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function nje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ije(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function hZ(o){o=o|0,aje(o)}function sje(o){o=o|0,oje(o+24|0)}function oje(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function aje(o){o=o|0;var l=0;l=tn()|0,rn(o,1,12,l,lje()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function lje(){return 1896}function cje(o,l,u){o=o|0,l=l|0,u=u|0,fje(n[(uje(o)|0)>>2]|0,l,u)}function uje(o){return o=o|0,(n[(iU()|0)+24>>2]|0)+(o<<3)|0}function fje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+4|0,d=A,Aje(m,l),l=pje(m,l)|0,Mh(d,u),u=Uh(d,u)|0,sp[o&31](l,u),_h(d),I=A}function Aje(o,l){o=o|0,l=l|0}function pje(o,l){return o=o|0,l=l|0,hje(l)|0}function hje(o){return o=o|0,o|0}function gje(){var o=0;return s[8080]|0||(gZ(11040),gr(70,11040,U|0)|0,o=8080,n[o>>2]=1,n[o+4>>2]=0),_r(11040)|0||gZ(11040),11040}function gZ(o){o=o|0,yje(o),ud(o,71)}function dje(o){o=o|0,mje(o+24|0)}function mje(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function yje(o){o=o|0;var l=0;l=tn()|0,rn(o,5,7,l,wje()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Eje(o){o=o|0,Ije(o)}function Ije(o){o=o|0,Cje(o)}function Cje(o){o=o|0,s[o+8>>0]=1}function wje(){return 1936}function Bje(){return vje()|0}function vje(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Rl(8)|0,o=u,m=o+4|0,n[m>>2]=Kt(1)|0,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],Sje(A,m,d),n[u>>2]=A,I=l,o|0}function Sje(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1916,n[u+12>>2]=l,n[o+4>>2]=u}function Dje(o){o=o|0,$y(o),It(o)}function bje(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function Pje(o){o=o|0,It(o)}function xje(){var o=0;return s[8088]|0||(Oje(11076),gr(25,11076,U|0)|0,o=8088,n[o>>2]=1,n[o+4>>2]=0),11076}function kje(o,l){o=o|0,l=l|0,n[o>>2]=Qje()|0,n[o+4>>2]=Tje()|0,n[o+12>>2]=l,n[o+8>>2]=Rje()|0,n[o+32>>2]=10}function Qje(){return 11745}function Tje(){return 1940}function Rje(){return FP()|0}function Fje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(Nje(u),It(u)):l|0&&It(l)}function Nje(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function Oje(o){o=o|0,Lh(o)}function bu(o,l){o=o|0,l=l|0,n[o>>2]=l}function sU(o){return o=o|0,n[o>>2]|0}function Lje(o){return o=o|0,s[n[o>>2]>>0]|0}function Mje(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,n[A>>2]=n[o>>2],Uje(l,A)|0,I=u}function Uje(o,l){o=o|0,l=l|0;var u=0;return u=_je(n[o>>2]|0,l)|0,l=o+4|0,n[(n[l>>2]|0)+8>>2]=u,n[(n[l>>2]|0)+8>>2]|0}function _je(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,Fl(A),o=Os(o)|0,l=Hje(o,n[l>>2]|0)|0,Nl(A),I=u,l|0}function Fl(o){o=o|0,n[o>>2]=n[2701],n[o+4>>2]=n[2703]}function Hje(o,l){o=o|0,l=l|0;var u=0;return u=da(jje()|0)|0,dn(0,u|0,o|0,ZM(l)|0)|0}function Nl(o){o=o|0,iZ(n[o>>2]|0,n[o+4>>2]|0)}function jje(){var o=0;return s[8096]|0||(Gje(11120),o=8096,n[o>>2]=1,n[o+4>>2]=0),11120}function Gje(o){o=o|0,Qo(o,qje()|0,1)}function qje(){return 1948}function Wje(){Yje()}function Yje(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0;if(Le=I,I=I+16|0,L=Le+4|0,q=Le,oa(65536,10804,n[2702]|0,10812),u=UX()|0,l=n[u>>2]|0,o=n[l>>2]|0,o|0)for(A=n[u+8>>2]|0,u=n[u+4>>2]|0;pf(o|0,c[u>>0]|0|0,s[A>>0]|0),l=l+4|0,o=n[l>>2]|0,o;)A=A+1|0,u=u+1|0;if(o=_X()|0,l=n[o>>2]|0,l|0)do NA(l|0,n[o+4>>2]|0),o=o+8|0,l=n[o>>2]|0;while(l|0);NA(Vje()|0,5167),M=Jy()|0,o=n[M>>2]|0;e:do if(o|0){do Jje(n[o+4>>2]|0),o=n[o>>2]|0;while(o|0);if(o=n[M>>2]|0,o|0){T=M;do{for(;d=o,o=n[o>>2]|0,d=n[d+4>>2]|0,!!(Kje(d)|0);)if(n[q>>2]=T,n[L>>2]=n[q>>2],zje(M,L)|0,!o)break e;if(Xje(d),T=n[T>>2]|0,l=dZ(d)|0,m=Oi()|0,B=I,I=I+((1*(l<<2)|0)+15&-16)|0,k=I,I=I+((1*(l<<2)|0)+15&-16)|0,l=n[(ZX(d)|0)>>2]|0,l|0)for(u=B,A=k;n[u>>2]=n[(Ky(n[l+4>>2]|0)|0)>>2],n[A>>2]=n[l+8>>2],l=n[l>>2]|0,l;)u=u+4|0,A=A+4|0;Qe=Ky(d)|0,l=Zje(d)|0,u=dZ(d)|0,A=$je(d)|0,oc(Qe|0,l|0,B|0,k|0,u|0,A|0,YM(d)|0),FA(m|0)}while(o|0)}}while(!1);if(o=n[(VM()|0)>>2]|0,o|0)do Qe=o+4|0,M=JM(Qe)|0,d=k2(M)|0,m=P2(M)|0,B=(x2(M)|0)+1|0,k=UP(M)|0,T=mZ(Qe)|0,M=_r(M)|0,L=OP(Qe)|0,q=oU(Qe)|0,uu(0,d|0,m|0,B|0,k|0,T|0,M|0,L|0,q|0,aU(Qe)|0),o=n[o>>2]|0;while(o|0);o=n[(Jy()|0)>>2]|0;e:do if(o|0){t:for(;;){if(l=n[o+4>>2]|0,l|0&&(ae=n[(Ky(l)|0)>>2]|0,Ye=n[($X(l)|0)>>2]|0,Ye|0)){u=Ye;do{l=u+4|0,A=JM(l)|0;r:do if(A|0)switch(_r(A)|0){case 0:break t;case 4:case 3:case 2:{k=k2(A)|0,T=P2(A)|0,M=(x2(A)|0)+1|0,L=UP(A)|0,q=_r(A)|0,Qe=OP(l)|0,uu(ae|0,k|0,T|0,M|0,L|0,0,q|0,Qe|0,oU(l)|0,aU(l)|0);break r}case 1:{B=k2(A)|0,k=P2(A)|0,T=(x2(A)|0)+1|0,M=UP(A)|0,L=mZ(l)|0,q=_r(A)|0,Qe=OP(l)|0,uu(ae|0,B|0,k|0,T|0,M|0,L|0,q|0,Qe|0,oU(l)|0,aU(l)|0);break r}case 5:{M=k2(A)|0,L=P2(A)|0,q=(x2(A)|0)+1|0,Qe=UP(A)|0,uu(ae|0,M|0,L|0,q|0,Qe|0,e6e(A)|0,_r(A)|0,0,0,0);break r}default:break r}while(!1);u=n[u>>2]|0}while(u|0)}if(o=n[o>>2]|0,!o)break e}Nt()}while(!1);ve(),I=Le}function Vje(){return 11703}function Jje(o){o=o|0,s[o+40>>0]=0}function Kje(o){return o=o|0,(s[o+40>>0]|0)!=0|0}function zje(o,l){return o=o|0,l=l|0,l=t6e(l)|0,o=n[l>>2]|0,n[l>>2]=n[o>>2],It(o),n[l>>2]|0}function Xje(o){o=o|0,s[o+40>>0]=1}function dZ(o){return o=o|0,n[o+20>>2]|0}function Zje(o){return o=o|0,n[o+8>>2]|0}function $je(o){return o=o|0,n[o+32>>2]|0}function UP(o){return o=o|0,n[o+4>>2]|0}function mZ(o){return o=o|0,n[o+4>>2]|0}function oU(o){return o=o|0,n[o+8>>2]|0}function aU(o){return o=o|0,n[o+16>>2]|0}function e6e(o){return o=o|0,n[o+20>>2]|0}function t6e(o){return o=o|0,n[o>>2]|0}function _P(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,We=0,Lt=0;Lt=I,I=I+16|0,ae=Lt;do if(o>>>0<245){if(M=o>>>0<11?16:o+11&-8,o=M>>>3,q=n[2783]|0,u=q>>>o,u&3|0)return l=(u&1^1)+o|0,o=11172+(l<<1<<2)|0,u=o+8|0,A=n[u>>2]|0,d=A+8|0,m=n[d>>2]|0,(o|0)==(m|0)?n[2783]=q&~(1<>2]=o,n[u>>2]=m),We=l<<3,n[A+4>>2]=We|3,We=A+We+4|0,n[We>>2]=n[We>>2]|1,We=d,I=Lt,We|0;if(L=n[2785]|0,M>>>0>L>>>0){if(u|0)return l=2<>>12&16,l=l>>>B,u=l>>>5&8,l=l>>>u,d=l>>>2&4,l=l>>>d,o=l>>>1&2,l=l>>>o,A=l>>>1&1,A=(u|B|d|o|A)+(l>>>A)|0,l=11172+(A<<1<<2)|0,o=l+8|0,d=n[o>>2]|0,B=d+8|0,u=n[B>>2]|0,(l|0)==(u|0)?(o=q&~(1<>2]=l,n[o>>2]=u,o=q),m=(A<<3)-M|0,n[d+4>>2]=M|3,A=d+M|0,n[A+4>>2]=m|1,n[A+m>>2]=m,L|0&&(d=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=u),n[2785]=m,n[2788]=A,We=B,I=Lt,We|0;if(k=n[2784]|0,k){if(u=(k&0-k)+-1|0,B=u>>>12&16,u=u>>>B,m=u>>>5&8,u=u>>>m,T=u>>>2&4,u=u>>>T,A=u>>>1&2,u=u>>>A,o=u>>>1&1,o=n[11436+((m|B|T|A|o)+(u>>>o)<<2)>>2]|0,u=(n[o+4>>2]&-8)-M|0,A=n[o+16+(((n[o+16>>2]|0)==0&1)<<2)>>2]|0,!A)T=o,m=u;else{do B=(n[A+4>>2]&-8)-M|0,T=B>>>0>>0,u=T?B:u,o=T?A:o,A=n[A+16+(((n[A+16>>2]|0)==0&1)<<2)>>2]|0;while(A|0);T=o,m=u}if(B=T+M|0,T>>>0>>0){d=n[T+24>>2]|0,l=n[T+12>>2]|0;do if((l|0)==(T|0)){if(o=T+20|0,l=n[o>>2]|0,!l&&(o=T+16|0,l=n[o>>2]|0,!l)){u=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0,u=l}else u=n[T+8>>2]|0,n[u+12>>2]=l,n[l+8>>2]=u,u=l;while(!1);do if(d|0){if(l=n[T+28>>2]|0,o=11436+(l<<2)|0,(T|0)==(n[o>>2]|0)){if(n[o>>2]=u,!u){n[2784]=k&~(1<>2]|0)!=(T|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=d,l=n[T+16>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),l=n[T+20>>2]|0,l|0&&(n[u+20>>2]=l,n[l+24>>2]=u)}while(!1);return m>>>0<16?(We=m+M|0,n[T+4>>2]=We|3,We=T+We+4|0,n[We>>2]=n[We>>2]|1):(n[T+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,L|0&&(A=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=q|l,l=u,o=u+8|0),n[o>>2]=A,n[l+12>>2]=A,n[A+8>>2]=l,n[A+12>>2]=u),n[2785]=m,n[2788]=B),We=T+8|0,I=Lt,We|0}else q=M}else q=M}else q=M}else if(o>>>0<=4294967231)if(o=o+11|0,M=o&-8,T=n[2784]|0,T){A=0-M|0,o=o>>>8,o?M>>>0>16777215?k=31:(q=(o+1048320|0)>>>16&8,He=o<>>16&4,He=He<>>16&2,k=14-(L|q|k)+(He<>>15)|0,k=M>>>(k+7|0)&1|k<<1):k=0,u=n[11436+(k<<2)>>2]|0;e:do if(!u)u=0,o=0,He=57;else for(o=0,B=M<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[u+4>>2]&-8)-M|0,d>>>0>>0)if(d)o=u,A=d;else{o=u,A=0,d=u,He=61;break e}if(d=n[u+20>>2]|0,u=n[u+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(u|0)?m:d,d=(u|0)==0,d){u=m,He=57;break}else B=B<<((d^1)&1)}while(!1);if((He|0)==57){if((u|0)==0&(o|0)==0){if(o=2<>>12&16,q=q>>>B,m=q>>>5&8,q=q>>>m,k=q>>>2&4,q=q>>>k,L=q>>>1&2,q=q>>>L,u=q>>>1&1,o=0,u=n[11436+((m|B|k|L|u)+(q>>>u)<<2)>>2]|0}u?(d=u,He=61):(k=o,B=A)}if((He|0)==61)for(;;)if(He=0,u=(n[d+4>>2]&-8)-M|0,q=u>>>0>>0,u=q?u:A,o=q?d:o,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)A=u,He=61;else{k=o,B=u;break}if(k|0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=k+M|0,k>>>0>=m>>>0)return We=0,I=Lt,We|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(o=k+20|0,l=n[o>>2]|0,!l&&(o=k+16|0,l=n[o>>2]|0,!l)){l=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0}else We=n[k+8>>2]|0,n[We+12>>2]=l,n[l+8>>2]=We;while(!1);do if(d){if(o=n[k+28>>2]|0,u=11436+(o<<2)|0,(k|0)==(n[u>>2]|0)){if(n[u>>2]=l,!l){A=T&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){A=T;break}n[l+24>>2]=d,o=n[k+16>>2]|0,o|0&&(n[l+16>>2]=o,n[o+24>>2]=l),o=n[k+20>>2]|0,o&&(n[l+20>>2]=o,n[o+24>>2]=l),A=T}else A=T;while(!1);do if(B>>>0>=16){if(n[k+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=u;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(He=(l+1048320|0)>>>16&8,We=l<>>16&4,We=We<>>16&2,l=14-(ct|He|l)+(We<>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,u=11436+(l<<2)|0,n[m+28>>2]=l,o=m+16|0,n[o+4>>2]=0,n[o>>2]=0,o=1<>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}for(o=B<<((l|0)==31?0:25-(l>>>1)|0),u=n[u>>2]|0;;){if((n[u+4>>2]&-8|0)==(B|0)){He=97;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=96;break}}if((He|0)==96){n[A>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((He|0)==97){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=m,n[He>>2]=m,n[m+8>>2]=We,n[m+12>>2]=u,n[m+24>>2]=0;break}}else We=B+M|0,n[k+4>>2]=We|3,We=k+We+4|0,n[We>>2]=n[We>>2]|1;while(!1);return We=k+8|0,I=Lt,We|0}else q=M}else q=M;else q=-1;while(!1);if(u=n[2785]|0,u>>>0>=q>>>0)return l=u-q|0,o=n[2788]|0,l>>>0>15?(We=o+q|0,n[2788]=We,n[2785]=l,n[We+4>>2]=l|1,n[We+l>>2]=l,n[o+4>>2]=q|3):(n[2785]=0,n[2788]=0,n[o+4>>2]=u|3,We=o+u+4|0,n[We>>2]=n[We>>2]|1),We=o+8|0,I=Lt,We|0;if(B=n[2786]|0,B>>>0>q>>>0)return ct=B-q|0,n[2786]=ct,We=n[2789]|0,He=We+q|0,n[2789]=He,n[He+4>>2]=ct|1,n[We+4>>2]=q|3,We=We+8|0,I=Lt,We|0;if(n[2901]|0?o=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,o=ae&-16^1431655768,n[ae>>2]=o,n[2901]=o,o=4096),k=q+48|0,T=q+47|0,m=o+T|0,d=0-o|0,M=m&d,M>>>0<=q>>>0||(o=n[2893]|0,o|0&&(L=n[2891]|0,ae=L+M|0,ae>>>0<=L>>>0|ae>>>0>o>>>0)))return We=0,I=Lt,We|0;e:do if(n[2894]&4)l=0,He=133;else{u=n[2789]|0;t:do if(u){for(A=11580;o=n[A>>2]|0,!(o>>>0<=u>>>0&&(Qe=A+4|0,(o+(n[Qe>>2]|0)|0)>>>0>u>>>0));)if(o=n[A+8>>2]|0,o)A=o;else{He=118;break t}if(l=m-B&d,l>>>0<2147483647)if(o=qh(l|0)|0,(o|0)==((n[A>>2]|0)+(n[Qe>>2]|0)|0)){if((o|0)!=-1){B=l,m=o,He=135;break e}}else A=o,He=126;else l=0}else He=118;while(!1);do if((He|0)==118)if(u=qh(0)|0,(u|0)!=-1&&(l=u,Ye=n[2902]|0,Le=Ye+-1|0,l=(Le&l|0?(Le+l&0-Ye)-l|0:0)+M|0,Ye=n[2891]|0,Le=l+Ye|0,l>>>0>q>>>0&l>>>0<2147483647)){if(Qe=n[2893]|0,Qe|0&&Le>>>0<=Ye>>>0|Le>>>0>Qe>>>0){l=0;break}if(o=qh(l|0)|0,(o|0)==(u|0)){B=l,m=u,He=135;break e}else A=o,He=126}else l=0;while(!1);do if((He|0)==126){if(u=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(A|0)!=-1)))if((A|0)==-1){l=0;break}else{B=l,m=A,He=135;break e}if(o=n[2903]|0,o=T-l+o&0-o,o>>>0>=2147483647){B=l,m=A,He=135;break e}if((qh(o|0)|0)==-1){qh(u|0)|0,l=0;break}else{B=o+l|0,m=A,He=135;break e}}while(!1);n[2894]=n[2894]|4,He=133}while(!1);if((He|0)==133&&M>>>0<2147483647&&(ct=qh(M|0)|0,Qe=qh(0)|0,tt=Qe-ct|0,Ze=tt>>>0>(q+40|0)>>>0,!((ct|0)==-1|Ze^1|ct>>>0>>0&((ct|0)!=-1&(Qe|0)!=-1)^1))&&(B=Ze?tt:l,m=ct,He=135),(He|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),T=n[2789]|0;do if(T){for(l=11580;;){if(o=n[l>>2]|0,u=l+4|0,A=n[u>>2]|0,(m|0)==(o+A|0)){He=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((He|0)==145&&!(n[l+12>>2]&8|0)&&T>>>0>>0&T>>>0>=o>>>0){n[u>>2]=A+B,We=T+8|0,We=We&7|0?0-We&7:0,He=T+We|0,We=(n[2786]|0)+(B-We)|0,n[2789]=He,n[2786]=We,n[He+4>>2]=We|1,n[He+We+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),u=m+B|0,l=11580;;){if((n[l>>2]|0)==(u|0)){He=153;break}if(o=n[l+8>>2]|0,o)l=o;else break}if((He|0)==153&&!(n[l+12>>2]&8|0)){n[l>>2]=m,L=l+4|0,n[L>>2]=(n[L>>2]|0)+B,L=m+8|0,L=m+(L&7|0?0-L&7:0)|0,l=u+8|0,l=u+(l&7|0?0-l&7:0)|0,M=L+q|0,k=l-L-q|0,n[L+4>>2]=q|3;do if((l|0)!=(T|0)){if((l|0)==(n[2788]|0)){We=(n[2785]|0)+k|0,n[2785]=We,n[2788]=M,n[M+4>>2]=We|1,n[M+We>>2]=We;break}if(o=n[l+4>>2]|0,(o&3|0)==1){B=o&-8,A=o>>>3;e:do if(o>>>0<256)if(o=n[l+8>>2]|0,u=n[l+12>>2]|0,(u|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=u,n[u+8>>2]=o;break}else{m=n[l+24>>2]|0,o=n[l+12>>2]|0;do if((o|0)==(l|0)){if(A=l+16|0,u=A+4|0,o=n[u>>2]|0,!o)if(o=n[A>>2]|0,o)u=A;else{o=0;break}for(;;){if(A=o+20|0,d=n[A>>2]|0,d|0){o=d,u=A;continue}if(A=o+16|0,d=n[A>>2]|0,d)o=d,u=A;else break}n[u>>2]=0}else We=n[l+8>>2]|0,n[We+12>>2]=o,n[o+8>>2]=We;while(!1);if(!m)break;u=n[l+28>>2]|0,A=11436+(u<<2)|0;do if((l|0)!=(n[A>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=o,!o)break e}else{if(n[A>>2]=o,o|0)break;n[2784]=n[2784]&~(1<>2]=m,u=l+16|0,A=n[u>>2]|0,A|0&&(n[o+16>>2]=A,n[A+24>>2]=o),u=n[u+4>>2]|0,!u)break;n[o+20>>2]=u,n[u+24>>2]=o}while(!1);l=l+B|0,d=B+k|0}else d=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=d|1,n[M+d>>2]=d,l=d>>>3,d>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=u;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}He=(l+1048320|0)>>>16&8,We=l<>>16&4,We=We<>>16&2,l=14-(ct|He|l)+(We<>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(!1);if(A=11436+(l<<2)|0,n[M+28>>2]=l,o=M+16|0,n[o+4>>2]=0,n[o>>2]=0,o=n[2784]|0,u=1<>2]=M,n[M+24>>2]=A,n[M+12>>2]=M,n[M+8>>2]=M;break}for(o=d<<((l|0)==31?0:25-(l>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){He=194;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=193;break}}if((He|0)==193){n[A>>2]=M,n[M+24>>2]=u,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((He|0)==194){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=M,n[He>>2]=M,n[M+8>>2]=We,n[M+12>>2]=u,n[M+24>>2]=0;break}}else We=(n[2786]|0)+k|0,n[2786]=We,n[2789]=M,n[M+4>>2]=We|1;while(!1);return We=L+8|0,I=Lt,We|0}for(l=11580;o=n[l>>2]|0,!(o>>>0<=T>>>0&&(We=o+(n[l+4>>2]|0)|0,We>>>0>T>>>0));)l=n[l+8>>2]|0;d=We+-47|0,o=d+8|0,o=d+(o&7|0?0-o&7:0)|0,d=T+16|0,o=o>>>0>>0?T:o,l=o+8|0,u=m+8|0,u=u&7|0?0-u&7:0,He=m+u|0,u=B+-40-u|0,n[2789]=He,n[2786]=u,n[He+4>>2]=u|1,n[He+u+4>>2]=40,n[2790]=n[2905],u=o+4|0,n[u>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=o+24|0;do He=l,l=l+4|0,n[l>>2]=7;while((He+8|0)>>>0>>0);if((o|0)!=(T|0)){if(m=o-T|0,n[u>>2]=n[u>>2]&-2,n[T+4>>2]=m|1,n[o>>2]=m,l=m>>>3,m>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=T,n[l+12>>2]=T,n[T+8>>2]=l,n[T+12>>2]=u;break}if(l=m>>>8,l?m>>>0>16777215?u=31:(He=(l+1048320|0)>>>16&8,We=l<>>16&4,We=We<>>16&2,u=14-(ct|He|u)+(We<>>15)|0,u=m>>>(u+7|0)&1|u<<1):u=0,A=11436+(u<<2)|0,n[T+28>>2]=u,n[T+20>>2]=0,n[d>>2]=0,l=n[2784]|0,o=1<>2]=T,n[T+24>>2]=A,n[T+12>>2]=T,n[T+8>>2]=T;break}for(o=m<<((u|0)==31?0:25-(u>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(m|0)){He=216;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=215;break}}if((He|0)==215){n[A>>2]=T,n[T+24>>2]=u,n[T+12>>2]=T,n[T+8>>2]=T;break}else if((He|0)==216){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=T,n[He>>2]=T,n[T+8>>2]=We,n[T+12>>2]=u,n[T+24>>2]=0;break}}}else{We=n[2787]|0,(We|0)==0|m>>>0>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do We=11172+(l<<1<<2)|0,n[We+12>>2]=We,n[We+8>>2]=We,l=l+1|0;while((l|0)!=32);We=m+8|0,We=We&7|0?0-We&7:0,He=m+We|0,We=B+-40-We|0,n[2789]=He,n[2786]=We,n[He+4>>2]=We|1,n[He+We+4>>2]=40,n[2790]=n[2905]}while(!1);if(l=n[2786]|0,l>>>0>q>>>0)return ct=l-q|0,n[2786]=ct,We=n[2789]|0,He=We+q|0,n[2789]=He,n[He+4>>2]=ct|1,n[We+4>>2]=q|3,We=We+8|0,I=Lt,We|0}return n[(Xy()|0)>>2]=12,We=0,I=Lt,We|0}function HP(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0;if(o){u=o+-8|0,d=n[2787]|0,o=n[o+-4>>2]|0,l=o&-8,T=u+l|0;do if(o&1)k=u,B=u;else{if(A=n[u>>2]|0,!(o&3)||(B=u+(0-A)|0,m=A+l|0,B>>>0>>0))return;if((B|0)==(n[2788]|0)){if(o=T+4|0,l=n[o>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[o>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(u=A>>>3,A>>>0<256)if(o=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=l,n[l+8>>2]=o,k=B,l=m;break}d=n[B+24>>2]|0,o=n[B+12>>2]|0;do if((o|0)==(B|0)){if(u=B+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{o=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=o,n[o+8>>2]=k;while(!1);if(d){if(l=n[B+28>>2]|0,u=11436+(l<<2)|0,(B|0)==(n[u>>2]|0)){if(n[u>>2]=o,!o){n[2784]=n[2784]&~(1<>2]|0)!=(B|0)&1)<<2)>>2]=o,!o){k=B,l=m;break}n[o+24>>2]=d,l=B+16|0,u=n[l>>2]|0,u|0&&(n[o+16>>2]=u,n[u+24>>2]=o),l=n[l+4>>2]|0,l?(n[o+20>>2]=l,n[l+24>>2]=o,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(!1);if(!(B>>>0>=T>>>0)&&(o=T+4|0,A=n[o>>2]|0,!!(A&1))){if(A&2)n[o>>2]=A&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(o=n[2788]|0,(T|0)==(n[2789]|0)){if(T=(n[2786]|0)+l|0,n[2786]=T,n[2789]=k,n[k+4>>2]=T|1,(k|0)!=(o|0))return;n[2788]=0,n[2785]=0;return}if((T|0)==(o|0)){T=(n[2785]|0)+l|0,n[2785]=T,n[2788]=B,n[k+4>>2]=T|1,n[B+T>>2]=T;return}d=(A&-8)+l|0,u=A>>>3;do if(A>>>0<256)if(l=n[T+8>>2]|0,o=n[T+12>>2]|0,(o|0)==(l|0)){n[2783]=n[2783]&~(1<>2]=o,n[o+8>>2]=l;break}else{m=n[T+24>>2]|0,o=n[T+12>>2]|0;do if((o|0)==(T|0)){if(u=T+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{u=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0,u=o}else u=n[T+8>>2]|0,n[u+12>>2]=o,n[o+8>>2]=u,u=o;while(!1);if(m|0){if(o=n[T+28>>2]|0,l=11436+(o<<2)|0,(T|0)==(n[l>>2]|0)){if(n[l>>2]=u,!u){n[2784]=n[2784]&~(1<>2]|0)!=(T|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=m,o=T+16|0,l=n[o>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),o=n[o+4>>2]|0,o|0&&(n[u+20>>2]=o,n[o+24>>2]=u)}}while(!1);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(o=d>>>3,d>>>0<256){u=11172+(o<<1<<2)|0,l=n[2783]|0,o=1<>2]|0):(n[2783]=l|o,o=u,l=u+8|0),n[l>>2]=k,n[o+12>>2]=k,n[k+8>>2]=o,n[k+12>>2]=u;return}o=d>>>8,o?d>>>0>16777215?o=31:(B=(o+1048320|0)>>>16&8,T=o<>>16&4,T=T<>>16&2,o=14-(m|B|o)+(T<>>15)|0,o=d>>>(o+7|0)&1|o<<1):o=0,A=11436+(o<<2)|0,n[k+28>>2]=o,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,u=1<>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){o=73;break}if(A=u+16+(l>>>31<<2)|0,o=n[A>>2]|0,o)l=l<<1,u=o;else{o=72;break}}if((o|0)==72){n[A>>2]=k,n[k+24>>2]=u,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((o|0)==73){B=u+8|0,T=n[B>>2]|0,n[T+12>>2]=k,n[B>>2]=k,n[k+8>>2]=T,n[k+12>>2]=u,n[k+24>>2]=0;break}}else n[2784]=l|u,n[A>>2]=k,n[k+24>>2]=A,n[k+12>>2]=k,n[k+8>>2]=k;while(!1);if(T=(n[2791]|0)+-1|0,n[2791]=T,!T)o=11588;else return;for(;o=n[o>>2]|0,o;)o=o+8|0;n[2791]=-1}}}function r6e(){return 11628}function n6e(o){o=o|0;var l=0,u=0;return l=I,I=I+16|0,u=l,n[u>>2]=o6e(n[o+60>>2]|0)|0,o=jP(Au(6,u|0)|0)|0,I=l,o|0}function yZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0;q=I,I=I+48|0,M=q+16|0,m=q,d=q+32|0,k=o+28|0,A=n[k>>2]|0,n[d>>2]=A,T=o+20|0,A=(n[T>>2]|0)-A|0,n[d+4>>2]=A,n[d+8>>2]=l,n[d+12>>2]=u,A=A+u|0,B=o+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=jP(La(146,m|0)|0)|0;e:do if((A|0)!=(m|0)){for(l=2;!((m|0)<0);)if(A=A-m|0,Ye=n[d+4>>2]|0,ae=m>>>0>Ye>>>0,d=ae?d+8|0:d,l=(ae<<31>>31)+l|0,Ye=m-(ae?Ye:0)|0,n[d>>2]=(n[d>>2]|0)+Ye,ae=d+4|0,n[ae>>2]=(n[ae>>2]|0)-Ye,n[M>>2]=n[B>>2],n[M+4>>2]=d,n[M+8>>2]=l,m=jP(La(146,M|0)|0)|0,(A|0)==(m|0)){L=3;break e}n[o+16>>2]=0,n[k>>2]=0,n[T>>2]=0,n[o>>2]=n[o>>2]|32,(l|0)==2?u=0:u=u-(n[d+4>>2]|0)|0}else L=3;while(!1);return(L|0)==3&&(Ye=n[o+44>>2]|0,n[o+16>>2]=Ye+(n[o+48>>2]|0),n[k>>2]=Ye,n[T>>2]=Ye),I=q,u|0}function i6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return d=I,I=I+32|0,m=d,A=d+20|0,n[m>>2]=n[o+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=A,n[m+16>>2]=u,(jP(Oa(140,m|0)|0)|0)<0?(n[A>>2]=-1,o=-1):o=n[A>>2]|0,I=d,o|0}function jP(o){return o=o|0,o>>>0>4294963200&&(n[(Xy()|0)>>2]=0-o,o=-1),o|0}function Xy(){return(s6e()|0)+64|0}function s6e(){return lU()|0}function lU(){return 2084}function o6e(o){return o=o|0,o|0}function a6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return d=I,I=I+32|0,A=d,n[o+36>>2]=1,!(n[o>>2]&64|0)&&(n[A>>2]=n[o+60>>2],n[A+4>>2]=21523,n[A+8>>2]=d+16,no(54,A|0)|0)&&(s[o+75>>0]=-1),A=yZ(o,l,u)|0,I=d,A|0}function EZ(o,l){o=o|0,l=l|0;var u=0,A=0;if(u=s[o>>0]|0,A=s[l>>0]|0,!(u<<24>>24)||u<<24>>24!=A<<24>>24)o=A;else{do o=o+1|0,l=l+1|0,u=s[o>>0]|0,A=s[l>>0]|0;while(!(!(u<<24>>24)||u<<24>>24!=A<<24>>24));o=A}return(u&255)-(o&255)|0}function l6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;e:do if(!u)o=0;else{for(;A=s[o>>0]|0,d=s[l>>0]|0,A<<24>>24==d<<24>>24;)if(u=u+-1|0,u)o=o+1|0,l=l+1|0;else{o=0;break e}o=(A&255)-(d&255)|0}while(!1);return o|0}function IZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0;Qe=I,I=I+224|0,L=Qe+120|0,q=Qe+80|0,Ye=Qe,Le=Qe+136|0,A=q,d=A+40|0;do n[A>>2]=0,A=A+4|0;while((A|0)<(d|0));return n[L>>2]=n[u>>2],(cU(0,l,L,Ye,q)|0)<0?u=-1:((n[o+76>>2]|0)>-1?ae=c6e(o)|0:ae=0,u=n[o>>2]|0,M=u&32,(s[o+74>>0]|0)<1&&(n[o>>2]=u&-33),A=o+48|0,n[A>>2]|0?u=cU(o,l,L,Ye,q)|0:(d=o+44|0,m=n[d>>2]|0,n[d>>2]=Le,B=o+28|0,n[B>>2]=Le,k=o+20|0,n[k>>2]=Le,n[A>>2]=80,T=o+16|0,n[T>>2]=Le+80,u=cU(o,l,L,Ye,q)|0,m&&(YP[n[o+36>>2]&7](o,0,0)|0,u=n[k>>2]|0?u:-1,n[d>>2]=m,n[A>>2]=0,n[T>>2]=0,n[B>>2]=0,n[k>>2]=0)),A=n[o>>2]|0,n[o>>2]=A|M,ae|0&&u6e(o),u=A&32|0?-1:u),I=Qe,u|0}function cU(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0;cr=I,I=I+64|0,fr=cr+16|0,$t=cr,Lt=cr+24|0,Tr=cr+8|0,Hr=cr+20|0,n[fr>>2]=l,ct=(o|0)!=0,He=Lt+40|0,We=He,Lt=Lt+39|0,Gr=Tr+4|0,B=0,m=0,L=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(Xy()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(!1);if(B=s[l>>0]|0,B<<24>>24)k=l;else{Ze=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Ze=9;break t}case 0:{B=k;break t}default:}tt=k+1|0,n[fr>>2]=tt,B=s[tt>>0]|0,k=tt}t:do if((Ze|0)==9)for(;;){if(Ze=0,(s[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[fr>>2]=k,(s[k>>0]|0)==37)Ze=9;else break}while(!1);if(B=B-l|0,ct&&vs(o,l,B),B|0){l=k;continue}T=k+1|0,B=(s[T>>0]|0)+-48|0,B>>>0<10?(tt=(s[k+2>>0]|0)==36,Qe=tt?B:-1,L=tt?1:L,T=tt?k+3|0:T):Qe=-1,n[fr>>2]=T,B=s[T>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(M=0,q=B;;){if(B=1<>2]=T,B=s[T>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;q=B}else M=0;while(!1);if(B<<24>>24==42){if(k=T+1|0,B=(s[k>>0]|0)+-48|0,B>>>0<10&&(s[T+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[A+((s[k>>0]|0)+-48<<3)>>2]|0,L=1,T=T+3|0;else{if(L|0){m=-1;break}ct?(L=(n[u>>2]|0)+3&-4,B=n[L>>2]|0,n[u>>2]=L+4,L=0,T=k):(B=0,L=0,T=k)}n[fr>>2]=T,tt=(B|0)<0,B=tt?0-B|0:B,M=tt?M|8192:M}else{if(B=CZ(fr)|0,(B|0)<0){m=-1;break}T=n[fr>>2]|0}do if((s[T>>0]|0)==46){if((s[T+1>>0]|0)!=42){n[fr>>2]=T+1,k=CZ(fr)|0,T=n[fr>>2]|0;break}if(q=T+2|0,k=(s[q>>0]|0)+-48|0,k>>>0<10&&(s[T+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[A+((s[q>>0]|0)+-48<<3)>>2]|0,T=T+4|0,n[fr>>2]=T;break}if(L|0){m=-1;break e}ct?(tt=(n[u>>2]|0)+3&-4,k=n[tt>>2]|0,n[u>>2]=tt+4):k=0,n[fr>>2]=q,T=q}else k=-1;while(!1);for(Le=0;;){if(((s[T>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(tt=T+1|0,n[fr>>2]=tt,q=s[(s[T>>0]|0)+-65+(5178+(Le*58|0))>>0]|0,ae=q&255,(ae+-1|0)>>>0<8)Le=ae,T=tt;else break}if(!(q<<24>>24)){m=-1;break}Ye=(Qe|0)>-1;do if(q<<24>>24==19)if(Ye){m=-1;break e}else Ze=49;else{if(Ye){n[d+(Qe<<2)>>2]=ae,Ye=A+(Qe<<3)|0,Qe=n[Ye+4>>2]|0,Ze=$t,n[Ze>>2]=n[Ye>>2],n[Ze+4>>2]=Qe,Ze=49;break}if(!ct){m=0;break e}wZ($t,ae,u)}while(!1);if((Ze|0)==49&&(Ze=0,!ct)){B=0,l=tt;continue}T=s[T>>0]|0,T=(Le|0)!=0&(T&15|0)==3?T&-33:T,Ye=M&-65537,Qe=M&8192|0?Ye:M;t:do switch(T|0){case 110:switch((Le&255)<<24>>24){case 0:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 1:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 2:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=tt;continue e}case 3:{a[n[$t>>2]>>1]=m,B=0,l=tt;continue e}case 4:{s[n[$t>>2]>>0]=m,B=0,l=tt;continue e}case 6:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 7:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=tt;continue e}default:{B=0,l=tt;continue e}}case 112:{T=120,k=k>>>0>8?k:8,l=Qe|8,Ze=61;break}case 88:case 120:{l=Qe,Ze=61;break}case 111:{T=$t,l=n[T>>2]|0,T=n[T+4>>2]|0,ae=A6e(l,T,He)|0,Ye=We-ae|0,M=0,q=5642,k=(Qe&8|0)==0|(k|0)>(Ye|0)?k:Ye+1|0,Ye=Qe,Ze=67;break}case 105:case 100:if(T=$t,l=n[T>>2]|0,T=n[T+4>>2]|0,(T|0)<0){l=GP(0,0,l|0,T|0)|0,T=ye,M=$t,n[M>>2]=l,n[M+4>>2]=T,M=1,q=5642,Ze=66;break t}else{M=(Qe&2049|0)!=0&1,q=Qe&2048|0?5643:Qe&1|0?5644:5642,Ze=66;break t}case 117:{T=$t,M=0,q=5642,l=n[T>>2]|0,T=n[T+4>>2]|0,Ze=66;break}case 99:{s[Lt>>0]=n[$t>>2],l=Lt,M=0,q=5642,ae=He,T=1,k=Ye;break}case 109:{T=p6e(n[(Xy()|0)>>2]|0)|0,Ze=71;break}case 115:{T=n[$t>>2]|0,T=T|0?T:5652,Ze=71;break}case 67:{n[Tr>>2]=n[$t>>2],n[Gr>>2]=0,n[$t>>2]=Tr,ae=-1,T=Tr,Ze=75;break}case 83:{l=n[$t>>2]|0,k?(ae=k,T=l,Ze=75):(Ls(o,32,B,0,Qe),l=0,Ze=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=g6e(o,+E[$t>>3],B,k,Qe,T)|0,l=tt;continue e}default:M=0,q=5642,ae=He,T=k,k=Qe}while(!1);t:do if((Ze|0)==61)Qe=$t,Le=n[Qe>>2]|0,Qe=n[Qe+4>>2]|0,ae=f6e(Le,Qe,He,T&32)|0,q=(l&8|0)==0|(Le|0)==0&(Qe|0)==0,M=q?0:2,q=q?5642:5642+(T>>4)|0,Ye=l,l=Le,T=Qe,Ze=67;else if((Ze|0)==66)ae=Zy(l,T,He)|0,Ye=Qe,Ze=67;else if((Ze|0)==71)Ze=0,Qe=h6e(T,0,k)|0,Le=(Qe|0)==0,l=T,M=0,q=5642,ae=Le?T+k|0:Qe,T=Le?k:Qe-T|0,k=Ye;else if((Ze|0)==75){for(Ze=0,q=T,l=0,k=0;M=n[q>>2]|0,!(!M||(k=BZ(Hr,M)|0,(k|0)<0|k>>>0>(ae-l|0)>>>0));)if(l=k+l|0,ae>>>0>l>>>0)q=q+4|0;else break;if((k|0)<0){m=-1;break e}if(Ls(o,32,B,l,Qe),!l)l=0,Ze=84;else for(M=0;;){if(k=n[T>>2]|0,!k){Ze=84;break t}if(k=BZ(Hr,k)|0,M=k+M|0,(M|0)>(l|0)){Ze=84;break t}if(vs(o,Hr,k),M>>>0>=l>>>0){Ze=84;break}else T=T+4|0}}while(!1);if((Ze|0)==67)Ze=0,T=(l|0)!=0|(T|0)!=0,Qe=(k|0)!=0|T,T=((T^1)&1)+(We-ae)|0,l=Qe?ae:He,ae=He,T=Qe?(k|0)>(T|0)?k:T:k,k=(k|0)>-1?Ye&-65537:Ye;else if((Ze|0)==84){Ze=0,Ls(o,32,B,l,Qe^8192),B=(B|0)>(l|0)?B:l,l=tt;continue}Le=ae-l|0,Ye=(T|0)<(Le|0)?Le:T,Qe=Ye+M|0,B=(B|0)<(Qe|0)?Qe:B,Ls(o,32,B,Qe,k),vs(o,q,M),Ls(o,48,B,Qe,k^65536),Ls(o,48,Ye,Le,0),vs(o,l,Le),Ls(o,32,B,Qe,k^8192),l=tt}e:do if((Ze|0)==87&&!o)if(!L)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(wZ(A+(m<<3)|0,l,u),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(!1);return I=cr,m|0}function c6e(o){return o=o|0,0}function u6e(o){o=o|0}function vs(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]&32||v6e(l,u,o)|0}function CZ(o){o=o|0;var l=0,u=0,A=0;if(u=n[o>>2]|0,A=(s[u>>0]|0)+-48|0,A>>>0<10){l=0;do l=A+(l*10|0)|0,u=u+1|0,n[o>>2]=u,A=(s[u>>0]|0)+-48|0;while(A>>>0<10)}else l=0;return l|0}function wZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,n[o>>2]=l;break e}case 10:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=0;break e}case 12:{A=(n[u>>2]|0)+7&-8,l=A,d=n[l>>2]|0,l=n[l+4>>2]|0,n[u>>2]=A+8,A=o,n[A>>2]=d,n[A+4>>2]=l;break e}case 13:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&65535)<<16>>16,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 14:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&65535,n[d+4>>2]=0;break e}case 15:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&255)<<24>>24,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 16:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&255,n[d+4>>2]=0;break e}case 17:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}case 18:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}default:break e}while(!1);while(!1)}function f6e(o,l,u,A){if(o=o|0,l=l|0,u=u|0,A=A|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=c[5694+(o&15)>>0]|0|A,o=qP(o|0,l|0,4)|0,l=ye;while(!((o|0)==0&(l|0)==0));return u|0}function A6e(o,l,u){if(o=o|0,l=l|0,u=u|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=o&7|48,o=qP(o|0,l|0,3)|0,l=ye;while(!((o|0)==0&(l|0)==0));return u|0}function Zy(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if(l>>>0>0|(l|0)==0&o>>>0>4294967295){for(;A=pU(o|0,l|0,10,0)|0,u=u+-1|0,s[u>>0]=A&255|48,A=o,o=AU(o|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&A>>>0>4294967295;)l=ye;l=o}else l=o;if(l)for(;u=u+-1|0,s[u>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return u|0}function p6e(o){return o=o|0,I6e(o,n[(E6e()|0)+188>>2]|0)|0}function h6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;m=l&255,A=(u|0)!=0;e:do if(A&(o&3|0)!=0)for(d=l&255;;){if((s[o>>0]|0)==d<<24>>24){B=6;break e}if(o=o+1|0,u=u+-1|0,A=(u|0)!=0,!(A&(o&3|0)!=0)){B=5;break}}else B=5;while(!1);(B|0)==5&&(A?B=6:u=0);e:do if((B|0)==6&&(d=l&255,(s[o>>0]|0)!=d<<24>>24)){A=Ue(m,16843009)|0;t:do if(u>>>0>3){for(;m=n[o>>2]^A,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(o=o+4|0,u=u+-4|0,u>>>0<=3){B=11;break t}}else B=11;while(!1);if((B|0)==11&&!u){u=0;break}for(;;){if((s[o>>0]|0)==d<<24>>24)break e;if(o=o+1|0,u=u+-1|0,!u){u=0;break}}}while(!1);return(u|0?o:0)|0}function Ls(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0;if(B=I,I=I+256|0,m=B,(u|0)>(A|0)&(d&73728|0)==0){if(d=u-A|0,eE(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=u-A|0;do vs(o,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}vs(o,m,d)}I=B}function BZ(o,l){return o=o|0,l=l|0,o?o=m6e(o,l,0)|0:o=0,o|0}function g6e(o,l,u,A,d,m){o=o|0,l=+l,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0;Hn=I,I=I+560|0,T=Hn+8|0,tt=Hn,cr=Hn+524|0,Hr=cr,M=Hn+512|0,n[tt>>2]=0,Tr=M+12|0,vZ(l)|0,(ye|0)<0?(l=-l,fr=1,Gr=5659):(fr=(d&2049|0)!=0&1,Gr=d&2048|0?5662:d&1|0?5665:5660),vZ(l)|0,$t=ye&2146435072;do if($t>>>0<2146435072|($t|0)==2146435072&!1){if(Ye=+d6e(l,tt)*2,B=Ye!=0,B&&(n[tt>>2]=(n[tt>>2]|0)+-1),ct=m|32,(ct|0)==97){Le=m&32,ae=Le|0?Gr+9|0:Gr,q=fr|2,B=12-A|0;do if(A>>>0>11|(B|0)==0)l=Ye;else{l=8;do B=B+-1|0,l=l*16;while(B|0);if((s[ae>>0]|0)==45){l=-(l+(-Ye-l));break}else{l=Ye+l-l;break}}while(!1);k=n[tt>>2]|0,B=(k|0)<0?0-k|0:k,B=Zy(B,((B|0)<0)<<31>>31,Tr)|0,(B|0)==(Tr|0)&&(B=M+11|0,s[B>>0]=48),s[B+-1>>0]=(k>>31&2)+43,L=B+-2|0,s[L>>0]=m+15,M=(A|0)<1,T=(d&8|0)==0,B=cr;do $t=~~l,k=B+1|0,s[B>>0]=c[5694+$t>>0]|Le,l=(l-+($t|0))*16,(k-Hr|0)==1&&!(T&(M&l==0))?(s[k>>0]=46,B=B+2|0):B=k;while(l!=0);$t=B-Hr|0,Hr=Tr-L|0,Tr=(A|0)!=0&($t+-2|0)<(A|0)?A+2|0:$t,B=Hr+q+Tr|0,Ls(o,32,u,B,d),vs(o,ae,q),Ls(o,48,u,B,d^65536),vs(o,cr,$t),Ls(o,48,Tr-$t|0,0,0),vs(o,L,Hr),Ls(o,32,u,B,d^8192);break}k=(A|0)<0?6:A,B?(B=(n[tt>>2]|0)+-28|0,n[tt>>2]=B,l=Ye*268435456):(l=Ye,B=n[tt>>2]|0),$t=(B|0)<0?T:T+288|0,T=$t;do We=~~l>>>0,n[T>>2]=We,T=T+4|0,l=(l-+(We>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=$t,q=T;;){if(L=(B|0)<29?B:29,B=q+-4|0,B>>>0>=M>>>0){T=0;do He=kZ(n[B>>2]|0,0,L|0)|0,He=fU(He|0,ye|0,T|0,0)|0,We=ye,Ze=pU(He|0,We|0,1e9,0)|0,n[B>>2]=Ze,T=AU(He|0,We|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);T&&(M=M+-4|0,n[M>>2]=T)}for(T=q;!(T>>>0<=M>>>0);)if(B=T+-4|0,!(n[B>>2]|0))T=B;else break;if(B=(n[tt>>2]|0)-L|0,n[tt>>2]=B,(B|0)>0)q=T;else break}else M=$t;if((B|0)<0){A=((k+25|0)/9|0)+1|0,Qe=(ct|0)==102;do{if(Le=0-B|0,Le=(Le|0)<9?Le:9,M>>>0>>0){L=(1<>>Le,ae=0,B=M;do We=n[B>>2]|0,n[B>>2]=(We>>>Le)+ae,ae=Ue(We&L,q)|0,B=B+4|0;while(B>>>0>>0);B=n[M>>2]|0?M:M+4|0,ae?(n[T>>2]=ae,M=B,B=T+4|0):(M=B,B=T)}else M=n[M>>2]|0?M:M+4|0,B=T;T=Qe?$t:M,T=(B-T>>2|0)>(A|0)?T+(A<<2)|0:B,B=(n[tt>>2]|0)+Le|0,n[tt>>2]=B}while((B|0)<0);B=M,A=T}else B=M,A=T;if(We=$t,B>>>0>>0){if(T=(We-B>>2)*9|0,L=n[B>>2]|0,L>>>0>=10){M=10;do M=M*10|0,T=T+1|0;while(L>>>0>=M>>>0)}}else T=0;if(Qe=(ct|0)==103,Ze=(k|0)!=0,M=k-((ct|0)!=102?T:0)+((Ze&Qe)<<31>>31)|0,(M|0)<(((A-We>>2)*9|0)+-9|0)){if(M=M+9216|0,Le=$t+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){L=10;do L=L*10|0,M=M+1|0;while((M|0)!=9)}else L=10;if(q=n[Le>>2]|0,ae=(q>>>0)%(L>>>0)|0,M=(Le+4|0)==(A|0),M&(ae|0)==0)M=Le;else if(Ye=((q>>>0)/(L>>>0)|0)&1|0?9007199254740994:9007199254740992,He=(L|0)/2|0,l=ae>>>0>>0?.5:M&(ae|0)==(He|0)?1:1.5,fr&&(He=(s[Gr>>0]|0)==45,l=He?-l:l,Ye=He?-Ye:Ye),M=q-ae|0,n[Le>>2]=M,Ye+l!=Ye){if(He=M+L|0,n[Le>>2]=He,He>>>0>999999999)for(T=Le;M=T+-4|0,n[T>>2]=0,M>>>0>>0&&(B=B+-4|0,n[B>>2]=0),He=(n[M>>2]|0)+1|0,n[M>>2]=He,He>>>0>999999999;)T=M;else M=Le;if(T=(We-B>>2)*9|0,q=n[B>>2]|0,q>>>0>=10){L=10;do L=L*10|0,T=T+1|0;while(q>>>0>=L>>>0)}}else M=Le;M=M+4|0,M=A>>>0>M>>>0?M:A,He=B}else M=A,He=B;for(ct=M;;){if(ct>>>0<=He>>>0){tt=0;break}if(B=ct+-4|0,!(n[B>>2]|0))ct=B;else{tt=1;break}}A=0-T|0;do if(Qe)if(B=((Ze^1)&1)+k|0,(B|0)>(T|0)&(T|0)>-5?(L=m+-1|0,k=B+-1-T|0):(L=m+-2|0,k=B+-1|0),B=d&8,B)Le=B;else{if(tt&&(Lt=n[ct+-4>>2]|0,(Lt|0)!=0))if((Lt>>>0)%10|0)M=0;else{M=0,B=10;do B=B*10|0,M=M+1|0;while(!((Lt>>>0)%(B>>>0)|0|0))}else M=9;if(B=((ct-We>>2)*9|0)+-9|0,(L|32|0)==102){Le=B-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}else{Le=B+T-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}}else L=m,Le=d&8;while(!1);if(Qe=k|Le,q=(Qe|0)!=0&1,ae=(L|32|0)==102,ae)Ze=0,B=(T|0)>0?T:0;else{if(B=(T|0)<0?A:T,B=Zy(B,((B|0)<0)<<31>>31,Tr)|0,M=Tr,(M-B|0)<2)do B=B+-1|0,s[B>>0]=48;while((M-B|0)<2);s[B+-1>>0]=(T>>31&2)+43,B=B+-2|0,s[B>>0]=L,Ze=B,B=M-B|0}if(B=fr+1+k+q+B|0,Ls(o,32,u,B,d),vs(o,Gr,fr),Ls(o,48,u,B,d^65536),ae){L=He>>>0>$t>>>0?$t:He,Le=cr+9|0,q=Le,ae=cr+8|0,M=L;do{if(T=Zy(n[M>>2]|0,0,Le)|0,(M|0)==(L|0))(T|0)==(Le|0)&&(s[ae>>0]=48,T=ae);else if(T>>>0>cr>>>0){eE(cr|0,48,T-Hr|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}vs(o,T,q-T|0),M=M+4|0}while(M>>>0<=$t>>>0);if(Qe|0&&vs(o,5710,1),M>>>0>>0&(k|0)>0)for(;;){if(T=Zy(n[M>>2]|0,0,Le)|0,T>>>0>cr>>>0){eE(cr|0,48,T-Hr|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}if(vs(o,T,(k|0)<9?k:9),M=M+4|0,T=k+-9|0,M>>>0>>0&(k|0)>9)k=T;else{k=T;break}}Ls(o,48,k+9|0,9,0)}else{if(Qe=tt?ct:He+4|0,(k|0)>-1){tt=cr+9|0,Le=(Le|0)==0,A=tt,q=0-Hr|0,ae=cr+8|0,L=He;do{T=Zy(n[L>>2]|0,0,tt)|0,(T|0)==(tt|0)&&(s[ae>>0]=48,T=ae);do if((L|0)==(He|0)){if(M=T+1|0,vs(o,T,1),Le&(k|0)<1){T=M;break}vs(o,5710,1),T=M}else{if(T>>>0<=cr>>>0)break;eE(cr|0,48,T+q|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}while(!1);Hr=A-T|0,vs(o,T,(k|0)>(Hr|0)?Hr:k),k=k-Hr|0,L=L+4|0}while(L>>>0>>0&(k|0)>-1)}Ls(o,48,k+18|0,18,0),vs(o,Ze,Tr-Ze|0)}Ls(o,32,u,B,d^8192)}else cr=(m&32|0)!=0,B=fr+3|0,Ls(o,32,u,B,d&-65537),vs(o,Gr,fr),vs(o,l!=l|!1?cr?5686:5690:cr?5678:5682,3),Ls(o,32,u,B,d^8192);while(!1);return I=Hn,((B|0)<(u|0)?u:B)|0}function vZ(o){o=+o;var l=0;return E[S>>3]=o,l=n[S>>2]|0,ye=n[S+4>>2]|0,l|0}function d6e(o,l){return o=+o,l=l|0,+ +SZ(o,l)}function SZ(o,l){o=+o,l=l|0;var u=0,A=0,d=0;switch(E[S>>3]=o,u=n[S>>2]|0,A=n[S+4>>2]|0,d=qP(u|0,A|0,52)|0,d&2047){case 0:{o!=0?(o=+SZ(o*18446744073709552e3,l),u=(n[l>>2]|0)+-64|0):u=0,n[l>>2]=u;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[S>>2]=u,n[S+4>>2]=A&-2146435073|1071644672,o=+E[S>>3]}return+o}function m6e(o,l,u){o=o|0,l=l|0,u=u|0;do if(o){if(l>>>0<128){s[o>>0]=l,o=1;break}if(!(n[n[(y6e()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){s[o>>0]=l,o=1;break}else{n[(Xy()|0)>>2]=84,o=-1;break}if(l>>>0<2048){s[o>>0]=l>>>6|192,s[o+1>>0]=l&63|128,o=2;break}if(l>>>0<55296|(l&-8192|0)==57344){s[o>>0]=l>>>12|224,s[o+1>>0]=l>>>6&63|128,s[o+2>>0]=l&63|128,o=3;break}if((l+-65536|0)>>>0<1048576){s[o>>0]=l>>>18|240,s[o+1>>0]=l>>>12&63|128,s[o+2>>0]=l>>>6&63|128,s[o+3>>0]=l&63|128,o=4;break}else{n[(Xy()|0)>>2]=84,o=-1;break}}else o=1;while(!1);return o|0}function y6e(){return lU()|0}function E6e(){return lU()|0}function I6e(o,l){o=o|0,l=l|0;var u=0,A=0;for(A=0;;){if((c[5712+A>>0]|0)==(o|0)){o=2;break}if(u=A+1|0,(u|0)==87){u=5800,A=87,o=5;break}else A=u}if((o|0)==2&&(A?(u=5800,o=5):u=5800),(o|0)==5)for(;;){do o=u,u=u+1|0;while(s[o>>0]|0);if(A=A+-1|0,A)o=5;else break}return C6e(u,n[l+20>>2]|0)|0}function C6e(o,l){return o=o|0,l=l|0,w6e(o,l)|0}function w6e(o,l){return o=o|0,l=l|0,l?l=B6e(n[l>>2]|0,n[l+4>>2]|0,o)|0:l=0,(l|0?l:o)|0}function B6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;ae=(n[o>>2]|0)+1794895138|0,m=Ad(n[o+8>>2]|0,ae)|0,A=Ad(n[o+12>>2]|0,ae)|0,d=Ad(n[o+16>>2]|0,ae)|0;e:do if(m>>>0>>2>>>0&&(q=l-(m<<2)|0,A>>>0>>0&d>>>0>>0)&&!((d|A)&3|0)){for(q=A>>>2,L=d>>>2,M=0;;){if(k=m>>>1,T=M+k|0,B=T<<1,d=B+q|0,A=Ad(n[o+(d<<2)>>2]|0,ae)|0,d=Ad(n[o+(d+1<<2)>>2]|0,ae)|0,!(d>>>0>>0&A>>>0<(l-d|0)>>>0)){A=0;break e}if(s[o+(d+A)>>0]|0){A=0;break e}if(A=EZ(u,o+d|0)|0,!A)break;if(A=(A|0)<0,(m|0)==1){A=0;break e}else M=A?M:T,m=A?k:m-k|0}A=B+L|0,d=Ad(n[o+(A<<2)>>2]|0,ae)|0,A=Ad(n[o+(A+1<<2)>>2]|0,ae)|0,A>>>0>>0&d>>>0<(l-A|0)>>>0?A=s[o+(A+d)>>0]|0?0:o+A|0:A=0}else A=0;while(!1);return A|0}function Ad(o,l){o=o|0,l=l|0;var u=0;return u=RZ(o|0)|0,(l|0?u:o)|0}function v6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=u+16|0,d=n[A>>2]|0,d?m=5:S6e(u)|0?A=0:(d=n[A>>2]|0,m=5);e:do if((m|0)==5){if(k=u+20|0,B=n[k>>2]|0,A=B,(d-B|0)>>>0>>0){A=YP[n[u+36>>2]&7](u,o,l)|0;break}t:do if((s[u+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=o;break t}if(d=B+-1|0,(s[o+d>>0]|0)==10)break;B=d}if(A=YP[n[u+36>>2]&7](u,o,B)|0,A>>>0>>0)break e;m=B,d=o+B|0,l=l-B|0,A=n[k>>2]|0}else m=0,d=o;while(!1);Qr(A|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,A=m+l|0}while(!1);return A|0}function S6e(o){o=o|0;var l=0,u=0;return l=o+74|0,u=s[l>>0]|0,s[l>>0]=u+255|u,l=n[o>>2]|0,l&8?(n[o>>2]=l|32,o=-1):(n[o+8>>2]=0,n[o+4>>2]=0,u=n[o+44>>2]|0,n[o+28>>2]=u,n[o+20>>2]=u,n[o+16>>2]=u+(n[o+48>>2]|0),o=0),o|0}function $n(o,l){o=y(o),l=y(l);var u=0,A=0;u=DZ(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=DZ(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?l:o;break}else{o=o>2]=o,n[S>>2]|0|0}function pd(o,l){o=y(o),l=y(l);var u=0,A=0;u=bZ(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=bZ(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?o:l;break}else{o=o>2]=o,n[S>>2]|0|0}function uU(o,l){o=y(o),l=y(l);var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0;m=(h[S>>2]=o,n[S>>2]|0),k=(h[S>>2]=l,n[S>>2]|0),u=m>>>23&255,B=k>>>23&255,T=m&-2147483648,d=k<<1;e:do if(d|0&&!((u|0)==255|((D6e(l)|0)&2147483647)>>>0>2139095040)){if(A=m<<1,A>>>0<=d>>>0)return l=y(o*y(0)),y((A|0)==(d|0)?l:o);if(u)A=m&8388607|8388608;else{if(u=m<<9,(u|0)>-1){A=u,u=0;do u=u+-1|0,A=A<<1;while((A|0)>-1)}else u=0;A=m<<1-u}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,k=k<<1-d}d=A-k|0,m=(d|0)>-1;t:do if((u|0)>(B|0)){for(;;){if(m)if(d)A=d;else break;if(A=A<<1,u=u+-1|0,d=A-k|0,m=(d|0)>-1,(u|0)<=(B|0))break t}l=y(o*y(0));break e}while(!1);if(m)if(d)A=d;else{l=y(o*y(0));break}if(A>>>0<8388608)do A=A<<1,u=u+-1|0;while(A>>>0<8388608);(u|0)>0?u=A+-8388608|u<<23:u=A>>>(1-u|0),l=(n[S>>2]=u|T,y(h[S>>2]))}else M=3;while(!1);return(M|0)==3&&(l=y(o*l),l=y(l/l)),y(l)}function D6e(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function b6e(o,l){return o=o|0,l=l|0,IZ(n[582]|0,o,l)|0}function an(o){o=o|0,Nt()}function $y(o){o=o|0}function P6e(o,l){return o=o|0,l=l|0,0}function x6e(o){return o=o|0,(PZ(o+4|0)|0)==-1?(ip[n[(n[o>>2]|0)+8>>2]&127](o),o=1):o=0,o|0}function PZ(o){o=o|0;var l=0;return l=n[o>>2]|0,n[o>>2]=l+-1,l+-1|0}function Gh(o){o=o|0,x6e(o)|0&&k6e(o)}function k6e(o){o=o|0;var l=0;l=o+8|0,n[l>>2]|0&&(PZ(l)|0)!=-1||ip[n[(n[o>>2]|0)+16>>2]&127](o)}function Kt(o){o=o|0;var l=0;for(l=o|0?o:1;o=_P(l)|0,!(o|0);){if(o=T6e()|0,!o){o=0;break}GZ[o&0]()}return o|0}function xZ(o){return o=o|0,Kt(o)|0}function It(o){o=o|0,HP(o)}function Q6e(o){o=o|0,(s[o+11>>0]|0)<0&&It(n[o>>2]|0)}function T6e(){var o=0;return o=n[2923]|0,n[2923]=o+0,o|0}function R6e(){}function GP(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,A=l-A-(u>>>0>o>>>0|0)>>>0,ye=A,o-u>>>0|0|0}function fU(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,u=o+u>>>0,ye=l+A+(u>>>0>>0|0)>>>0,u|0|0}function eE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(m=o+u|0,l=l&255,(u|0)>=67){for(;o&3;)s[o>>0]=l,o=o+1|0;for(A=m&-4|0,d=A-64|0,B=l|l<<8|l<<16|l<<24;(o|0)<=(d|0);)n[o>>2]=B,n[o+4>>2]=B,n[o+8>>2]=B,n[o+12>>2]=B,n[o+16>>2]=B,n[o+20>>2]=B,n[o+24>>2]=B,n[o+28>>2]=B,n[o+32>>2]=B,n[o+36>>2]=B,n[o+40>>2]=B,n[o+44>>2]=B,n[o+48>>2]=B,n[o+52>>2]=B,n[o+56>>2]=B,n[o+60>>2]=B,o=o+64|0;for(;(o|0)<(A|0);)n[o>>2]=B,o=o+4|0}for(;(o|0)<(m|0);)s[o>>0]=l,o=o+1|0;return m-u|0}function kZ(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(ye=l<>>32-u,o<>>u,o>>>u|(l&(1<>>u-32|0)}function Qr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;if((u|0)>=8192)return OA(o|0,l|0,u|0)|0;if(m=o|0,d=o+u|0,(o&3)==(l&3)){for(;o&3;){if(!u)return m|0;s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0,u=u-1|0}for(u=d&-4|0,A=u-64|0;(o|0)<=(A|0);)n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2],n[o+16>>2]=n[l+16>>2],n[o+20>>2]=n[l+20>>2],n[o+24>>2]=n[l+24>>2],n[o+28>>2]=n[l+28>>2],n[o+32>>2]=n[l+32>>2],n[o+36>>2]=n[l+36>>2],n[o+40>>2]=n[l+40>>2],n[o+44>>2]=n[l+44>>2],n[o+48>>2]=n[l+48>>2],n[o+52>>2]=n[l+52>>2],n[o+56>>2]=n[l+56>>2],n[o+60>>2]=n[l+60>>2],o=o+64|0,l=l+64|0;for(;(o|0)<(u|0);)n[o>>2]=n[l>>2],o=o+4|0,l=l+4|0}else for(u=d-4|0;(o|0)<(u|0);)s[o>>0]=s[l>>0]|0,s[o+1>>0]=s[l+1>>0]|0,s[o+2>>0]=s[l+2>>0]|0,s[o+3>>0]=s[l+3>>0]|0,o=o+4|0,l=l+4|0;for(;(o|0)<(d|0);)s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0;return m|0}function QZ(o){o=o|0;var l=0;return l=s[N+(o&255)>>0]|0,(l|0)<8?l|0:(l=s[N+(o>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=s[N+(o>>16&255)>>0]|0,(l|0)<8?l+16|0:(s[N+(o>>>24)>>0]|0)+24|0))}function TZ(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0;if(L=o,T=l,M=T,B=u,ae=A,k=ae,!M)return m=(d|0)!=0,k?m?(n[d>>2]=o|0,n[d+4>>2]=l&0,ae=0,d=0,ye=ae,d|0):(ae=0,d=0,ye=ae,d|0):(m&&(n[d>>2]=(L>>>0)%(B>>>0),n[d+4>>2]=0),ae=0,d=(L>>>0)/(B>>>0)>>>0,ye=ae,d|0);m=(k|0)==0;do if(B){if(!m){if(m=(b(k|0)|0)-(b(M|0)|0)|0,m>>>0<=31){q=m+1|0,k=31-m|0,l=m-31>>31,B=q,o=L>>>(q>>>0)&l|M<>>(q>>>0)&l,m=0,k=L<>2]=o|0,n[d+4>>2]=T|l&0,ae=0,d=0,ye=ae,d|0):(ae=0,d=0,ye=ae,d|0)}if(m=B-1|0,m&B|0){k=(b(B|0)|0)+33-(b(M|0)|0)|0,Le=64-k|0,q=32-k|0,T=q>>31,Ye=k-32|0,l=Ye>>31,B=k,o=q-1>>31&M>>>(Ye>>>0)|(M<>>(k>>>0))&l,l=l&M>>>(k>>>0),m=L<>>(Ye>>>0))&T|L<>31;break}return d|0&&(n[d>>2]=m&L,n[d+4>>2]=0),(B|0)==1?(Ye=T|l&0,Le=o|0|0,ye=Ye,Le|0):(Le=QZ(B|0)|0,Ye=M>>>(Le>>>0)|0,Le=M<<32-Le|L>>>(Le>>>0)|0,ye=Ye,Le|0)}else{if(m)return d|0&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),Ye=0,Le=(M>>>0)/(B>>>0)>>>0,ye=Ye,Le|0;if(!L)return d|0&&(n[d>>2]=0,n[d+4>>2]=(M>>>0)%(k>>>0)),Ye=0,Le=(M>>>0)/(k>>>0)>>>0,ye=Ye,Le|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=o|0,n[d+4>>2]=m&M|l&0),Ye=0,Le=M>>>((QZ(k|0)|0)>>>0),ye=Ye,Le|0;if(m=(b(k|0)|0)-(b(M|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,o=M<>>(l>>>0),l=M>>>(l>>>0),m=0,k=L<>2]=o|0,n[d+4>>2]=T|l&0,Ye=0,Le=0,ye=Ye,Le|0):(Ye=0,Le=0,ye=Ye,Le|0)}while(!1);if(!B)M=k,T=0,k=0;else{q=u|0|0,L=ae|A&0,M=fU(q|0,L|0,-1,-1)|0,u=ye,T=k,k=0;do A=T,T=m>>>31|T<<1,m=k|m<<1,A=o<<1|A>>>31|0,ae=o>>>31|l<<1|0,GP(M|0,u|0,A|0,ae|0)|0,Le=ye,Ye=Le>>31|((Le|0)<0?-1:0)<<1,k=Ye&1,o=GP(A|0,ae|0,Ye&q|0,(((Le|0)<0?-1:0)>>31|((Le|0)<0?-1:0)<<1)&L|0)|0,l=ye,B=B-1|0;while(B|0);M=T,T=0}return B=0,d|0&&(n[d>>2]=o,n[d+4>>2]=l),Ye=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|T,Le=(m<<1|0)&-2|k,ye=Ye,Le|0}function AU(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,TZ(o,l,u,A,0)|0}function qh(o){o=o|0;var l=0,u=0;return u=o+15&-16|0,l=n[C>>2]|0,o=l+u|0,(u|0)>0&(o|0)<(l|0)|(o|0)<0?(oe()|0,fu(12),-1):(n[C>>2]=o,(o|0)>($()|0)&&!(X()|0)?(n[C>>2]=l,fu(12),-1):l|0)}function Q2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if((l|0)<(o|0)&(o|0)<(l+u|0)){for(A=o,l=l+u|0,o=o+u|0;(u|0)>0;)o=o-1|0,l=l-1|0,u=u-1|0,s[o>>0]=s[l>>0]|0;o=A}else Qr(o,l,u)|0;return o|0}function pU(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;return m=I,I=I+16|0,d=m|0,TZ(o,l,u,A,d)|0,I=m,ye=n[d+4>>2]|0,n[d>>2]|0|0}function RZ(o){return o=o|0,(o&255)<<24|(o>>8&255)<<16|(o>>16&255)<<8|o>>>24|0}function F6e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,FZ[o&1](l|0,u|0,A|0,d|0,m|0)}function N6e(o,l,u){o=o|0,l=l|0,u=y(u),NZ[o&1](l|0,y(u))}function O6e(o,l,u){o=o|0,l=l|0,u=+u,OZ[o&31](l|0,+u)}function L6e(o,l,u,A){return o=o|0,l=l|0,u=y(u),A=y(A),y(LZ[o&0](l|0,y(u),y(A)))}function M6e(o,l){o=o|0,l=l|0,ip[o&127](l|0)}function U6e(o,l,u){o=o|0,l=l|0,u=u|0,sp[o&31](l|0,u|0)}function _6e(o,l){return o=o|0,l=l|0,gd[o&31](l|0)|0}function H6e(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,MZ[o&1](l|0,+u,+A,d|0)}function j6e(o,l,u,A){o=o|0,l=l|0,u=+u,A=+A,wGe[o&1](l|0,+u,+A)}function G6e(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,YP[o&7](l|0,u|0,A|0)|0}function q6e(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,+BGe[o&1](l|0,u|0,A|0)}function W6e(o,l){return o=o|0,l=l|0,+UZ[o&15](l|0)}function Y6e(o,l,u){return o=o|0,l=l|0,u=+u,vGe[o&1](l|0,+u)|0}function V6e(o,l,u){return o=o|0,l=l|0,u=u|0,gU[o&15](l|0,u|0)|0}function J6e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=+A,d=+d,m=m|0,SGe[o&1](l|0,u|0,+A,+d,m|0)}function K6e(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,DGe[o&1](l|0,u|0,A|0,d|0,m|0,B|0)}function z6e(o,l,u){return o=o|0,l=l|0,u=u|0,+_Z[o&7](l|0,u|0)}function X6e(o){return o=o|0,VP[o&7]()|0}function Z6e(o,l,u,A,d,m){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,HZ[o&1](l|0,u|0,A|0,d|0,m|0)|0}function $6e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=+d,bGe[o&1](l|0,u|0,A|0,+d)}function eGe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,jZ[o&1](l|0,u|0,y(A),d|0,y(m),B|0)}function tGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F2[o&15](l|0,u|0,A|0)}function rGe(o){o=o|0,GZ[o&0]()}function nGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,qZ[o&15](l|0,u|0,+A)}function iGe(o,l,u){return o=o|0,l=+l,u=+u,PGe[o&1](+l,+u)|0}function sGe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,dU[o&15](l|0,u|0,A|0,d|0)}function oGe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(0)}function aGe(o,l){o=o|0,l=y(l),F(1)}function Xa(o,l){o=o|0,l=+l,F(2)}function lGe(o,l,u){return o=o|0,l=y(l),u=y(u),F(3),$e}function wr(o){o=o|0,F(4)}function T2(o,l){o=o|0,l=l|0,F(5)}function Ol(o){return o=o|0,F(6),0}function cGe(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,F(7)}function uGe(o,l,u){o=o|0,l=+l,u=+u,F(8)}function fGe(o,l,u){return o=o|0,l=l|0,u=u|0,F(9),0}function AGe(o,l,u){return o=o|0,l=l|0,u=u|0,F(10),0}function hd(o){return o=o|0,F(11),0}function pGe(o,l){return o=o|0,l=+l,F(12),0}function R2(o,l){return o=o|0,l=l|0,F(13),0}function hGe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,F(14)}function gGe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,F(15)}function hU(o,l){return o=o|0,l=l|0,F(16),0}function dGe(){return F(17),0}function mGe(o,l,u,A,d){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(18),0}function yGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,F(19)}function EGe(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0,F(20)}function WP(o,l,u){o=o|0,l=l|0,u=u|0,F(21)}function IGe(){F(22)}function tE(o,l,u){o=o|0,l=l|0,u=+u,F(23)}function CGe(o,l){return o=+o,l=+l,F(24),0}function rE(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F(25)}var FZ=[oGe,m3e],NZ=[aGe,Ty],OZ=[Xa,Zg,Fh,h2,g2,d2,m2,bf,_y,y2,Pf,$g,ed,E2,I2,wu,td,C2,Hy,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa],LZ=[lGe],ip=[wr,$y,Xke,Zke,$ke,PFe,xFe,kFe,Y_e,V_e,J_e,i3e,s3e,o3e,Dje,bje,Pje,Bl,Xg,u2,sr,hc,xP,kP,Hke,aQe,EQe,LQe,$Qe,dTe,RTe,JTe,cRe,SRe,HRe,nFe,EFe,VFe,cNe,SNe,HNe,nOe,EOe,MOe,$Oe,pLe,xLe,dP,oMe,wMe,HMe,sUe,IUe,HUe,XUe,e_e,m_e,I_e,L_e,z_e,$_e,d4e,F4e,Iz,g8e,Y8e,aHe,wHe,qHe,sje,dje,Eje,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr],sp=[T2,Ly,JL,f2,A2,xr,so,Xi,Ns,ws,Uy,Rh,B2,CP,id,XL,ZL,wP,BP,tM,xf,ne,jOe,rLe,cUe,y8e,j4e,iZ,T2,T2,T2,T2],gd=[Ol,n6e,Ny,nd,Gy,ga,mP,Nh,w2,zL,EP,qy,vP,rM,Vy,TLe,vUe,E4e,w8e,Rl,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol],MZ=[cGe,aM],wGe=[uGe,__e],YP=[fGe,yZ,i6e,a6e,ITe,XFe,uMe,DHe],BGe=[AGe,WRe],UZ=[hd,Oh,IP,$A,lM,v,D,Q,H,V,hd,hd,hd,hd,hd,hd],vGe=[pGe,JUe],gU=[R2,P6e,SP,Wke,HQe,OTe,XTe,BFe,pNe,mLe,Ry,fHe,R2,R2,R2,R2],SGe=[hGe,BQe],DGe=[gGe,JHe],_Z=[hU,$L,Se,_e,pt,aFe,hU,hU],VP=[dGe,Wt,Fy,gP,i_e,v_e,n4e,Bje],HZ=[mGe,Sy],bGe=[yGe,WNe],jZ=[EGe,nM],F2=[WP,ko,yP,eM,vu,nTe,ARe,aOe,BOe,VL,_3e,z8e,cje,WP,WP,WP],GZ=[IGe],qZ=[tE,KL,My,ZA,p2,Bu,jy,rd,xNe,DMe,qUe,tE,tE,tE,tE,tE],PGe=[CGe,q_e],dU=[rE,xRe,_Le,WMe,RUe,u_e,k_e,u4e,U4e,P8e,Fje,rE,rE,rE,rE,rE];return{_llvm_bswap_i32:RZ,dynCall_idd:iGe,dynCall_i:X6e,_i64Subtract:GP,___udivdi3:AU,dynCall_vif:N6e,setThrew:ca,dynCall_viii:tGe,_bitshift64Lshr:qP,_bitshift64Shl:kZ,dynCall_vi:M6e,dynCall_viiddi:J6e,dynCall_diii:q6e,dynCall_iii:V6e,_memset:eE,_sbrk:qh,_memcpy:Qr,__GLOBAL__sub_I_Yoga_cpp:a2,dynCall_vii:U6e,___uremdi3:pU,dynCall_vid:O6e,stackAlloc:Ua,_nbind_init:Wje,getTempRet0:MA,dynCall_di:W6e,dynCall_iid:Y6e,setTempRet0:LA,_i64Add:fU,dynCall_fiff:L6e,dynCall_iiii:G6e,_emscripten_get_global_libc:r6e,dynCall_viid:nGe,dynCall_viiid:$6e,dynCall_viififi:eGe,dynCall_ii:_6e,__GLOBAL__sub_I_Binding_cc:a8e,dynCall_viiii:sGe,dynCall_iiiiii:Z6e,stackSave:hf,dynCall_viiiii:F6e,__GLOBAL__sub_I_nbind_cc:Sr,dynCall_vidd:j6e,_free:HP,runPostSets:R6e,dynCall_viiiiii:K6e,establishStackSpace:wn,_memmove:Q2,stackRestore:lc,_malloc:_P,__GLOBAL__sub_I_common_cc:b4e,dynCall_viddi:H6e,dynCall_dii:z6e,dynCall_v:rGe}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function t(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=t)},Module.callMain=Module.callMain=function t(e){e=e||[],ensureInitRuntime();var r=e.length+1;function s(){for(var p=0;p<3;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];s();for(var n=0;n0||(preRun(),runDependencies>0)||Module.calledRun)return;function e(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(t),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),e()},1)):e()}Module.run=Module.run=run;function exit(t,e){e&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=t,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(t)),ENVIRONMENT_IS_NODE&&process.exit(t),Module.quit(t,new ExitStatus(t)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(t){Module.onAbort&&Module.onAbort(t),t!==void 0?(Module.print(t),Module.printErr(t),t=JSON.stringify(t)):t="",ABORT=!0,EXITSTATUS=1;var e=` -If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r="abort("+t+") at "+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(s){r=s(r,t)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var Fm=_((PKt,Rwe)=>{"use strict";var Ppt=Qwe(),xpt=Twe(),K9=!1,z9=null;xpt({},function(t,e){if(!K9){if(K9=!0,t)throw t;z9=e}});if(!K9)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");Rwe.exports=Ppt(z9.bind,z9.lib)});var Z9=_((xKt,X9)=>{"use strict";var Fwe=t=>Number.isNaN(t)?!1:t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141);X9.exports=Fwe;X9.exports.default=Fwe});var Owe=_((kKt,Nwe)=>{"use strict";Nwe.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var GS=_((QKt,$9)=>{"use strict";var kpt=dk(),Qpt=Z9(),Tpt=Owe(),Lwe=t=>{if(typeof t!="string"||t.length===0||(t=kpt(t),t.length===0))return 0;t=t.replace(Tpt()," ");let e=0;for(let r=0;r=127&&s<=159||s>=768&&s<=879||(s>65535&&r++,e+=Qpt(s)?2:1)}return e};$9.exports=Lwe;$9.exports.default=Lwe});var tW=_((TKt,eW)=>{"use strict";var Rpt=GS(),Mwe=t=>{let e=0;for(let r of t.split(` -`))e=Math.max(e,Rpt(r));return e};eW.exports=Mwe;eW.exports.default=Mwe});var Uwe=_(qS=>{"use strict";var Fpt=qS&&qS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(qS,"__esModule",{value:!0});var Npt=Fpt(tW()),rW={};qS.default=t=>{if(t.length===0)return{width:0,height:0};if(rW[t])return rW[t];let e=Npt.default(t),r=t.split(` -`).length;return rW[t]={width:e,height:r},{width:e,height:r}}});var _we=_(WS=>{"use strict";var Opt=WS&&WS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(WS,"__esModule",{value:!0});var bn=Opt(Fm()),Lpt=(t,e)=>{"position"in e&&t.setPositionType(e.position==="absolute"?bn.default.POSITION_TYPE_ABSOLUTE:bn.default.POSITION_TYPE_RELATIVE)},Mpt=(t,e)=>{"marginLeft"in e&&t.setMargin(bn.default.EDGE_START,e.marginLeft||0),"marginRight"in e&&t.setMargin(bn.default.EDGE_END,e.marginRight||0),"marginTop"in e&&t.setMargin(bn.default.EDGE_TOP,e.marginTop||0),"marginBottom"in e&&t.setMargin(bn.default.EDGE_BOTTOM,e.marginBottom||0)},Upt=(t,e)=>{"paddingLeft"in e&&t.setPadding(bn.default.EDGE_LEFT,e.paddingLeft||0),"paddingRight"in e&&t.setPadding(bn.default.EDGE_RIGHT,e.paddingRight||0),"paddingTop"in e&&t.setPadding(bn.default.EDGE_TOP,e.paddingTop||0),"paddingBottom"in e&&t.setPadding(bn.default.EDGE_BOTTOM,e.paddingBottom||0)},_pt=(t,e)=>{var r;"flexGrow"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),"flexShrink"in e&&t.setFlexShrink(typeof e.flexShrink=="number"?e.flexShrink:1),"flexDirection"in e&&(e.flexDirection==="row"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_ROW),e.flexDirection==="row-reverse"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection==="column"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_COLUMN),e.flexDirection==="column-reverse"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in e&&(typeof e.flexBasis=="number"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis=="string"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),"alignItems"in e&&((e.alignItems==="stretch"||!e.alignItems)&&t.setAlignItems(bn.default.ALIGN_STRETCH),e.alignItems==="flex-start"&&t.setAlignItems(bn.default.ALIGN_FLEX_START),e.alignItems==="center"&&t.setAlignItems(bn.default.ALIGN_CENTER),e.alignItems==="flex-end"&&t.setAlignItems(bn.default.ALIGN_FLEX_END)),"alignSelf"in e&&((e.alignSelf==="auto"||!e.alignSelf)&&t.setAlignSelf(bn.default.ALIGN_AUTO),e.alignSelf==="flex-start"&&t.setAlignSelf(bn.default.ALIGN_FLEX_START),e.alignSelf==="center"&&t.setAlignSelf(bn.default.ALIGN_CENTER),e.alignSelf==="flex-end"&&t.setAlignSelf(bn.default.ALIGN_FLEX_END)),"justifyContent"in e&&((e.justifyContent==="flex-start"||!e.justifyContent)&&t.setJustifyContent(bn.default.JUSTIFY_FLEX_START),e.justifyContent==="center"&&t.setJustifyContent(bn.default.JUSTIFY_CENTER),e.justifyContent==="flex-end"&&t.setJustifyContent(bn.default.JUSTIFY_FLEX_END),e.justifyContent==="space-between"&&t.setJustifyContent(bn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent==="space-around"&&t.setJustifyContent(bn.default.JUSTIFY_SPACE_AROUND))},Hpt=(t,e)=>{var r,s;"width"in e&&(typeof e.width=="number"?t.setWidth(e.width):typeof e.width=="string"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),"height"in e&&(typeof e.height=="number"?t.setHeight(e.height):typeof e.height=="string"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),"minWidth"in e&&(typeof e.minWidth=="string"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),"minHeight"in e&&(typeof e.minHeight=="string"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((s=e.minHeight)!==null&&s!==void 0?s:0))},jpt=(t,e)=>{"display"in e&&t.setDisplay(e.display==="flex"?bn.default.DISPLAY_FLEX:bn.default.DISPLAY_NONE)},Gpt=(t,e)=>{if("borderStyle"in e){let r=typeof e.borderStyle=="string"?1:0;t.setBorder(bn.default.EDGE_TOP,r),t.setBorder(bn.default.EDGE_BOTTOM,r),t.setBorder(bn.default.EDGE_LEFT,r),t.setBorder(bn.default.EDGE_RIGHT,r)}};WS.default=(t,e={})=>{Lpt(t,e),Mpt(t,e),Upt(t,e),_pt(t,e),Hpt(t,e),jpt(t,e),Gpt(t,e)}});var Gwe=_((NKt,jwe)=>{"use strict";var YS=GS(),qpt=dk(),Wpt=sk(),iW=new Set(["\x1B","\x9B"]),Ypt=39,Hwe=t=>`${iW.values().next().value}[${t}m`,Vpt=t=>t.split(" ").map(e=>YS(e)),nW=(t,e,r)=>{let s=[...e],a=!1,n=YS(qpt(t[t.length-1]));for(let[c,f]of s.entries()){let p=YS(f);if(n+p<=r?t[t.length-1]+=f:(t.push(f),n=0),iW.has(f))a=!0;else if(a&&f==="m"){a=!1;continue}a||(n+=p,n===r&&c0&&t.length>1&&(t[t.length-2]+=t.pop())},Jpt=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(YS(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},Kpt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let s="",a="",n,c=Vpt(t),f=[""];for(let[p,h]of t.split(" ").entries()){r.trim!==!1&&(f[f.length-1]=f[f.length-1].trimLeft());let E=YS(f[f.length-1]);if(p!==0&&(E>=e&&(r.wordWrap===!1||r.trim===!1)&&(f.push(""),E=0),(E>0||r.trim===!1)&&(f[f.length-1]+=" ",E++)),r.hard&&c[p]>e){let C=e-E,S=1+Math.floor((c[p]-C-1)/e);Math.floor((c[p]-1)/e)e&&E>0&&c[p]>0){if(r.wordWrap===!1&&Ee&&r.wordWrap===!1){nW(f,h,e);continue}f[f.length-1]+=h}r.trim!==!1&&(f=f.map(Jpt)),s=f.join(` -`);for(let[p,h]of[...s].entries()){if(a+=h,iW.has(h)){let C=parseFloat(/\d[^m]*/.exec(s.slice(p,p+4)));n=C===Ypt?null:C}let E=Wpt.codes.get(Number(n));n&&E&&(s[p+1]===` -`?a+=Hwe(E):h===` -`&&(a+=Hwe(n)))}return a};jwe.exports=(t,e,r)=>String(t).normalize().replace(/\r\n/g,` -`).split(` -`).map(s=>Kpt(s,e,r)).join(` -`)});var Ywe=_((OKt,Wwe)=>{"use strict";var qwe="[\uD800-\uDBFF][\uDC00-\uDFFF]",zpt=t=>t&&t.exact?new RegExp(`^${qwe}$`):new RegExp(qwe,"g");Wwe.exports=zpt});var sW=_((LKt,zwe)=>{"use strict";var Xpt=Z9(),Zpt=Ywe(),Vwe=sk(),Kwe=["\x1B","\x9B"],NF=t=>`${Kwe[0]}[${t}m`,Jwe=(t,e,r)=>{let s=[];t=[...t];for(let a of t){let n=a;a.match(";")&&(a=a.split(";")[0][0]+"0");let c=Vwe.codes.get(parseInt(a,10));if(c){let f=t.indexOf(c.toString());f>=0?t.splice(f,1):s.push(NF(e?c:n))}else if(e){s.push(NF(0));break}else s.push(NF(n))}if(e&&(s=s.filter((a,n)=>s.indexOf(a)===n),r!==void 0)){let a=NF(Vwe.codes.get(parseInt(r,10)));s=s.reduce((n,c)=>c===a?[c,...n]:[...n,c],[])}return s.join("")};zwe.exports=(t,e,r)=>{let s=[...t.normalize()],a=[];r=typeof r=="number"?r:s.length;let n=!1,c,f=0,p="";for(let[h,E]of s.entries()){let C=!1;if(Kwe.includes(E)){let S=/\d[^m]*/.exec(t.slice(h,h+18));c=S&&S.length>0?S[0]:void 0,fe&&f<=r)p+=E;else if(f===e&&!n&&c!==void 0)p=Jwe(a);else if(f>=r){p+=Jwe(a,!0,c);break}}return p}});var Zwe=_((MKt,Xwe)=>{"use strict";var $0=sW(),$pt=GS();function OF(t,e,r){if(t.charAt(e)===" ")return e;for(let s=1;s<=3;s++)if(r){if(t.charAt(e+s)===" ")return e+s}else if(t.charAt(e-s)===" ")return e-s;return e}Xwe.exports=(t,e,r)=>{r={position:"end",preferTruncationOnSpace:!1,...r};let{position:s,space:a,preferTruncationOnSpace:n}=r,c="\u2026",f=1;if(typeof t!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof t}`);if(typeof e!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof e}`);if(e<1)return"";if(e===1)return c;let p=$pt(t);if(p<=e)return t;if(s==="start"){if(n){let h=OF(t,p-e+1,!0);return c+$0(t,h,p).trim()}return a===!0&&(c+=" ",f=2),c+$0(t,p-e+f,p)}if(s==="middle"){a===!0&&(c=" "+c+" ",f=3);let h=Math.floor(e/2);if(n){let E=OF(t,h),C=OF(t,p-(e-h)+1,!0);return $0(t,0,E)+c+$0(t,C,p).trim()}return $0(t,0,h)+c+$0(t,p-(e-h)+f,p)}if(s==="end"){if(n){let h=OF(t,e-1);return $0(t,0,h)+c}return a===!0&&(c=" "+c,f=2),$0(t,0,e-f)+c}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${s}`)}});var aW=_(VS=>{"use strict";var $we=VS&&VS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(VS,"__esModule",{value:!0});var eht=$we(Gwe()),tht=$we(Zwe()),oW={};VS.default=(t,e,r)=>{let s=t+String(e)+String(r);if(oW[s])return oW[s];let a=t;if(r==="wrap"&&(a=eht.default(t,e,{trim:!1,hard:!0})),r.startsWith("truncate")){let n="end";r==="truncate-middle"&&(n="middle"),r==="truncate-start"&&(n="start"),a=tht.default(t,e,{position:n})}return oW[s]=a,a}});var cW=_(lW=>{"use strict";Object.defineProperty(lW,"__esModule",{value:!0});var e1e=t=>{let e="";if(t.childNodes.length>0)for(let r of t.childNodes){let s="";r.nodeName==="#text"?s=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(s=e1e(r)),s.length>0&&typeof r.internal_transform=="function"&&(s=r.internal_transform(s))),e+=s}return e};lW.default=e1e});var uW=_(bi=>{"use strict";var JS=bi&&bi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bi,"__esModule",{value:!0});bi.setTextNodeValue=bi.createTextNode=bi.setStyle=bi.setAttribute=bi.removeChildNode=bi.insertBeforeNode=bi.appendChildNode=bi.createNode=bi.TEXT_NAME=void 0;var rht=JS(Fm()),t1e=JS(Uwe()),nht=JS(_we()),iht=JS(aW()),sht=JS(cW());bi.TEXT_NAME="#text";bi.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t==="ink-virtual-text"?void 0:rht.default.Node.create()};return t==="ink-text"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(oht.bind(null,r))),r};bi.appendChildNode=(t,e)=>{var r;e.parentNode&&bi.removeChildNode(e.parentNode,e),e.parentNode=t,t.childNodes.push(e),e.yogaNode&&((r=t.yogaNode)===null||r===void 0||r.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&LF(t)};bi.insertBeforeNode=(t,e,r)=>{var s,a;e.parentNode&&bi.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((s=t.yogaNode)===null||s===void 0||s.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&LF(t)};bi.removeChildNode=(t,e)=>{var r,s;e.yogaNode&&((s=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||s===void 0||s.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&LF(t)};bi.setAttribute=(t,e,r)=>{t.attributes[e]=r};bi.setStyle=(t,e)=>{t.style=e,t.yogaNode&&nht.default(t.yogaNode,e)};bi.createTextNode=t=>{let e={nodeName:"#text",nodeValue:t,yogaNode:void 0,parentNode:null,style:{}};return bi.setTextNodeValue(e,t),e};var oht=function(t,e){var r,s;let a=t.nodeName==="#text"?t.nodeValue:sht.default(t),n=t1e.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let c=(s=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&s!==void 0?s:"wrap",f=iht.default(a,e,c);return t1e.default(f)},r1e=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:r1e(t.parentNode)},LF=t=>{let e=r1e(t);e?.markDirty()};bi.setTextNodeValue=(t,e)=>{typeof e!="string"&&(e=String(e)),t.nodeValue=e,LF(t)}});var a1e=_(KS=>{"use strict";var o1e=KS&&KS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(KS,"__esModule",{value:!0});var n1e=Y9(),aht=o1e(Swe()),i1e=o1e(Fm()),ea=uW(),s1e=t=>{t?.unsetMeasureFunc(),t?.freeRecursive()};KS.default=aht.default({schedulePassiveEffects:n1e.unstable_scheduleCallback,cancelPassiveEffects:n1e.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>null,preparePortalMount:()=>null,clearContainer:()=>!1,shouldDeprioritizeSubtree:()=>!1,resetAfterCommit:t=>{if(t.isStaticDirty){t.isStaticDirty=!1,typeof t.onImmediateRender=="function"&&t.onImmediateRender();return}typeof t.onRender=="function"&&t.onRender()},getChildHostContext:(t,e)=>{let r=t.isInsideText,s=e==="ink-text"||e==="ink-virtual-text";return r===s?t:{isInsideText:s}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,s)=>{if(s.isInsideText&&t==="ink-box")throw new Error(" can\u2019t be nested inside component");let a=t==="ink-text"&&s.isInsideText?"ink-virtual-text":t,n=ea.createNode(a);for(let[c,f]of Object.entries(e))c!=="children"&&(c==="style"?ea.setStyle(n,f):c==="internal_transform"?n.internal_transform=f:c==="internal_static"?n.internal_static=!0:ea.setAttribute(n,c,f));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string "${t}" must be rendered inside component`);return ea.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{ea.setTextNodeValue(t,"")},unhideTextInstance:(t,e)=>{ea.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(i1e.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(i1e.default.DISPLAY_FLEX)},appendInitialChild:ea.appendChildNode,appendChild:ea.appendChildNode,insertBefore:ea.insertBeforeNode,finalizeInitialChildren:(t,e,r,s)=>(t.internal_static&&(s.isStaticDirty=!0,s.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:ea.appendChildNode,insertInContainerBefore:ea.insertBeforeNode,removeChildFromContainer:(t,e)=>{ea.removeChildNode(t,e),s1e(e.yogaNode)},prepareUpdate:(t,e,r,s,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},c=Object.keys(s);for(let f of c)if(s[f]!==r[f]){if(f==="style"&&typeof s.style=="object"&&typeof r.style=="object"){let h=s.style,E=r.style,C=Object.keys(h);for(let S of C){if(S==="borderStyle"||S==="borderColor"){if(typeof n.style!="object"){let P={};n.style=P}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[S]!==E[S]){if(typeof n.style!="object"){let P={};n.style=P}n.style[S]=h[S]}}continue}n[f]=s[f]}return n},commitUpdate:(t,e)=>{for(let[r,s]of Object.entries(e))r!=="children"&&(r==="style"?ea.setStyle(t,s):r==="internal_transform"?t.internal_transform=s:r==="internal_static"?t.internal_static=!0:ea.setAttribute(t,r,s))},commitTextUpdate:(t,e,r)=>{ea.setTextNodeValue(t,r)},removeChild:(t,e)=>{ea.removeChildNode(t,e),s1e(e.yogaNode)}})});var c1e=_((GKt,l1e)=>{"use strict";l1e.exports=(t,e=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof t!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if(typeof e!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(e===0)return t;let s=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(s,r.indent.repeat(e))}});var u1e=_(zS=>{"use strict";var lht=zS&&zS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(zS,"__esModule",{value:!0});var MF=lht(Fm());zS.default=t=>t.getComputedWidth()-t.getComputedPadding(MF.default.EDGE_LEFT)-t.getComputedPadding(MF.default.EDGE_RIGHT)-t.getComputedBorder(MF.default.EDGE_LEFT)-t.getComputedBorder(MF.default.EDGE_RIGHT)});var f1e=_((WKt,cht)=>{cht.exports={single:{topLeft:"\u250C",topRight:"\u2510",bottomRight:"\u2518",bottomLeft:"\u2514",vertical:"\u2502",horizontal:"\u2500"},double:{topLeft:"\u2554",topRight:"\u2557",bottomRight:"\u255D",bottomLeft:"\u255A",vertical:"\u2551",horizontal:"\u2550"},round:{topLeft:"\u256D",topRight:"\u256E",bottomRight:"\u256F",bottomLeft:"\u2570",vertical:"\u2502",horizontal:"\u2500"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomRight:"\u251B",bottomLeft:"\u2517",vertical:"\u2503",horizontal:"\u2501"},singleDouble:{topLeft:"\u2553",topRight:"\u2556",bottomRight:"\u255C",bottomLeft:"\u2559",vertical:"\u2551",horizontal:"\u2500"},doubleSingle:{topLeft:"\u2552",topRight:"\u2555",bottomRight:"\u255B",bottomLeft:"\u2558",vertical:"\u2502",horizontal:"\u2550"},classic:{topLeft:"+",topRight:"+",bottomRight:"+",bottomLeft:"+",vertical:"|",horizontal:"-"}}});var p1e=_((YKt,fW)=>{"use strict";var A1e=f1e();fW.exports=A1e;fW.exports.default=A1e});var AW=_(ZS=>{"use strict";var uht=ZS&&ZS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ZS,"__esModule",{value:!0});var XS=uht(TE()),fht=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,Aht=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,UF=(t,e)=>e==="foreground"?t:"bg"+t[0].toUpperCase()+t.slice(1);ZS.default=(t,e,r)=>{if(!e)return t;if(e in XS.default){let a=UF(e,r);return XS.default[a](t)}if(e.startsWith("#")){let a=UF("hex",r);return XS.default[a](e)(t)}if(e.startsWith("ansi")){let a=Aht.exec(e);if(!a)return t;let n=UF(a[1],r),c=Number(a[2]);return XS.default[n](c)(t)}if(e.startsWith("rgb")||e.startsWith("hsl")||e.startsWith("hsv")||e.startsWith("hwb")){let a=fht.exec(e);if(!a)return t;let n=UF(a[1],r),c=Number(a[2]),f=Number(a[3]),p=Number(a[4]);return XS.default[n](c,f,p)(t)}return t}});var g1e=_($S=>{"use strict";var h1e=$S&&$S.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty($S,"__esModule",{value:!0});var pht=h1e(p1e()),pW=h1e(AW());$S.default=(t,e,r,s)=>{if(typeof r.style.borderStyle=="string"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),c=r.style.borderColor,f=pht.default[r.style.borderStyle],p=pW.default(f.topLeft+f.horizontal.repeat(a-2)+f.topRight,c,"foreground"),h=(pW.default(f.vertical,c,"foreground")+` -`).repeat(n-2),E=pW.default(f.bottomLeft+f.horizontal.repeat(a-2)+f.bottomRight,c,"foreground");s.write(t,e,p,{transformers:[]}),s.write(t,e+1,h,{transformers:[]}),s.write(t+a-1,e+1,h,{transformers:[]}),s.write(t,e+n-1,E,{transformers:[]})}}});var m1e=_(eD=>{"use strict";var Nm=eD&&eD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(eD,"__esModule",{value:!0});var hht=Nm(Fm()),ght=Nm(tW()),dht=Nm(c1e()),mht=Nm(aW()),yht=Nm(u1e()),Eht=Nm(cW()),Iht=Nm(g1e()),Cht=(t,e)=>{var r;let s=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(s){let a=s.getComputedLeft(),n=s.getComputedTop();e=` -`.repeat(n)+dht.default(e,a)}return e},d1e=(t,e,r)=>{var s;let{offsetX:a=0,offsetY:n=0,transformers:c=[],skipStaticElements:f}=r;if(f&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===hht.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),C=c;if(typeof t.internal_transform=="function"&&(C=[t.internal_transform,...c]),t.nodeName==="ink-text"){let S=Eht.default(t);if(S.length>0){let P=ght.default(S),I=yht.default(p);if(P>I){let R=(s=t.style.textWrap)!==null&&s!==void 0?s:"wrap";S=mht.default(S,I,R)}S=Cht(t,S),e.write(h,E,S,{transformers:C})}return}if(t.nodeName==="ink-box"&&Iht.default(h,E,t,e),t.nodeName==="ink-root"||t.nodeName==="ink-box")for(let S of t.childNodes)d1e(S,e,{offsetX:h,offsetY:E,transformers:C,skipStaticElements:f})}};eD.default=d1e});var I1e=_(tD=>{"use strict";var E1e=tD&&tD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(tD,"__esModule",{value:!0});var y1e=E1e(sW()),wht=E1e(GS()),hW=class{constructor(e){this.writes=[];let{width:r,height:s}=e;this.width=r,this.height=s}write(e,r,s,a){let{transformers:n}=a;s&&this.writes.push({x:e,y:r,text:s,transformers:n})}get(){let e=[];for(let s=0;ss.trimRight()).join(` -`),height:e.length}}};tD.default=hW});var B1e=_(rD=>{"use strict";var gW=rD&&rD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(rD,"__esModule",{value:!0});var Bht=gW(Fm()),C1e=gW(m1e()),w1e=gW(I1e());rD.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,Bht.default.DIRECTION_LTR);let s=new w1e.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});C1e.default(t,s,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new w1e.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),C1e.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:c}=s.get();return{output:n,outputHeight:c,staticOutput:a?`${a.get().output} -`:""}}return{output:"",outputHeight:0,staticOutput:""}}});var b1e=_((ZKt,D1e)=>{"use strict";var v1e=Ie("stream"),S1e=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],dW={},vht=t=>{let e=new v1e.PassThrough,r=new v1e.PassThrough;e.write=a=>t("stdout",a),r.write=a=>t("stderr",a);let s=new console.Console(e,r);for(let a of S1e)dW[a]=console[a],console[a]=s[a];return()=>{for(let a of S1e)console[a]=dW[a];dW={}}};D1e.exports=vht});var yW=_(mW=>{"use strict";Object.defineProperty(mW,"__esModule",{value:!0});mW.default=new WeakMap});var IW=_(EW=>{"use strict";Object.defineProperty(EW,"__esModule",{value:!0});var Sht=hn(),P1e=Sht.createContext({exit:()=>{}});P1e.displayName="InternalAppContext";EW.default=P1e});var wW=_(CW=>{"use strict";Object.defineProperty(CW,"__esModule",{value:!0});var Dht=hn(),x1e=Dht.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});x1e.displayName="InternalStdinContext";CW.default=x1e});var vW=_(BW=>{"use strict";Object.defineProperty(BW,"__esModule",{value:!0});var bht=hn(),k1e=bht.createContext({stdout:void 0,write:()=>{}});k1e.displayName="InternalStdoutContext";BW.default=k1e});var DW=_(SW=>{"use strict";Object.defineProperty(SW,"__esModule",{value:!0});var Pht=hn(),Q1e=Pht.createContext({stderr:void 0,write:()=>{}});Q1e.displayName="InternalStderrContext";SW.default=Q1e});var _F=_(bW=>{"use strict";Object.defineProperty(bW,"__esModule",{value:!0});var xht=hn(),T1e=xht.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{},focus:()=>{}});T1e.displayName="InternalFocusContext";bW.default=T1e});var F1e=_((szt,R1e)=>{"use strict";var kht=/[|\\{}()[\]^$+*?.-]/g;R1e.exports=t=>{if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(kht,"\\$&")}});var M1e=_((ozt,L1e)=>{"use strict";var Qht=F1e(),Tht=typeof process=="object"&&process&&typeof process.cwd=="function"?process.cwd():".",O1e=[].concat(Ie("module").builtinModules,"bootstrap_node","node").map(t=>new RegExp(`(?:\\((?:node:)?${t}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${t}(?:\\.js)?:\\d+:\\d+$)`));O1e.push(/\((?:node:)?internal\/[^:]+:\d+:\d+\)$/,/\s*at (?:node:)?internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var PW=class t{constructor(e){e={ignoredPackages:[],...e},"internals"in e||(e.internals=t.nodeInternals()),"cwd"in e||(e.cwd=Tht),this._cwd=e.cwd.replace(/\\/g,"/"),this._internals=[].concat(e.internals,Rht(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...O1e]}clean(e,r=0){r=" ".repeat(r),Array.isArray(e)||(e=e.split(` -`)),!/^\s*at /.test(e[0])&&/^\s*at /.test(e[1])&&(e=e.slice(1));let s=!1,a=null,n=[];return e.forEach(c=>{if(c=c.replace(/\\/g,"/"),this._internals.some(p=>p.test(c)))return;let f=/^\s*at /.test(c);s?c=c.trimEnd().replace(/^(\s+)at /,"$1"):(c=c.trim(),f&&(c=c.slice(3))),c=c.replace(`${this._cwd}/`,""),c&&(f?(a&&(n.push(a),a=null),n.push(c)):(s=!0,a=c))}),n.map(c=>`${r}${c} -`).join("")}captureString(e,r=this.captureString){typeof e=="function"&&(r=e,e=1/0);let{stackTraceLimit:s}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=s,this.clean(n)}capture(e,r=this.capture){typeof e=="function"&&(r=e,e=1/0);let{prepareStackTrace:s,stackTraceLimit:a}=Error;Error.prepareStackTrace=(f,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:c}=n;return Object.assign(Error,{prepareStackTrace:s,stackTraceLimit:a}),c}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let s={line:r.getLineNumber(),column:r.getColumnNumber()};N1e(s,r.getFileName(),this._cwd),r.isConstructor()&&(s.constructor=!0),r.isEval()&&(s.evalOrigin=r.getEvalOrigin()),r.isNative()&&(s.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!=="Object"&&a!=="[object Object]"&&(s.type=a);let n=r.getFunctionName();n&&(s.function=n);let c=r.getMethodName();return c&&n!==c&&(s.method=c),s}parseLine(e){let r=e&&e.match(Fht);if(!r)return null;let s=r[1]==="new",a=r[2],n=r[3],c=r[4],f=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],C=r[9],S=r[10]==="native",P=r[11]===")",I,R={};if(E&&(R.line=Number(E)),C&&(R.column=Number(C)),P&&h){let N=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===")")N++;else if(h.charAt(U)==="("&&h.charAt(U-1)===" "&&(N--,N===-1&&h.charAt(U-1)===" ")){let W=h.slice(0,U-1);h=h.slice(U+1),a+=` (${W}`;break}}if(a){let N=a.match(Nht);N&&(a=N[1],I=N[2])}return N1e(R,h,this._cwd),s&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=f,R.evalColumn=p,R.evalFile=c&&c.replace(/\\/g,"/")),S&&(R.native=!0),a&&(R.function=a),I&&a!==I&&(R.method=I),R}};function N1e(t,e,r){e&&(e=e.replace(/\\/g,"/"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function Rht(t){if(t.length===0)return[];let e=t.map(r=>Qht(r));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${e.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var Fht=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),Nht=/^(.*?) \[as (.*?)\]$/;L1e.exports=PW});var _1e=_((azt,U1e)=>{"use strict";U1e.exports=(t,e)=>t.replace(/^\t+/gm,r=>" ".repeat(r.length*(e||2)))});var j1e=_((lzt,H1e)=>{"use strict";var Oht=_1e(),Lht=(t,e)=>{let r=[],s=t-e,a=t+e;for(let n=s;n<=a;n++)r.push(n);return r};H1e.exports=(t,e,r)=>{if(typeof t!="string")throw new TypeError("Source code is missing.");if(!e||e<1)throw new TypeError("Line number must start from `1`.");if(t=Oht(t).split(/\r?\n/),!(e>t.length))return r={around:3,...r},Lht(e,r.around).filter(s=>t[s-1]!==void 0).map(s=>({line:s,value:t[s-1]}))}});var HF=_(rf=>{"use strict";var Mht=rf&&rf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Uht=rf&&rf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),_ht=rf&&rf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&Mht(e,t,r);return Uht(e,t),e},Hht=rf&&rf.__rest||function(t,e){var r={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(r[s]=t[s]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,s=Object.getOwnPropertySymbols(t);a{var{children:r}=t,s=Hht(t,["children"]);let a=Object.assign(Object.assign({},s),{marginLeft:s.marginLeft||s.marginX||s.margin||0,marginRight:s.marginRight||s.marginX||s.margin||0,marginTop:s.marginTop||s.marginY||s.margin||0,marginBottom:s.marginBottom||s.marginY||s.margin||0,paddingLeft:s.paddingLeft||s.paddingX||s.padding||0,paddingRight:s.paddingRight||s.paddingX||s.padding||0,paddingTop:s.paddingTop||s.paddingY||s.padding||0,paddingBottom:s.paddingBottom||s.paddingY||s.padding||0});return G1e.default.createElement("ink-box",{ref:e,style:a},r)});xW.displayName="Box";xW.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};rf.default=xW});var TW=_(nD=>{"use strict";var kW=nD&&nD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nD,"__esModule",{value:!0});var jht=kW(hn()),yw=kW(TE()),q1e=kW(AW()),QW=({color:t,backgroundColor:e,dimColor:r,bold:s,italic:a,underline:n,strikethrough:c,inverse:f,wrap:p,children:h})=>{if(h==null)return null;let E=C=>(r&&(C=yw.default.dim(C)),t&&(C=q1e.default(C,t,"foreground")),e&&(C=q1e.default(C,e,"background")),s&&(C=yw.default.bold(C)),a&&(C=yw.default.italic(C)),n&&(C=yw.default.underline(C)),c&&(C=yw.default.strikethrough(C)),f&&(C=yw.default.inverse(C)),C);return jht.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:p},internal_transform:E},h)};QW.displayName="Text";QW.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"};nD.default=QW});var J1e=_(nf=>{"use strict";var Ght=nf&&nf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),qht=nf&&nf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Wht=nf&&nf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&Ght(e,t,r);return qht(e,t),e},iD=nf&&nf.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nf,"__esModule",{value:!0});var W1e=Wht(Ie("fs")),Qs=iD(hn()),Y1e=iD(M1e()),Yht=iD(j1e()),$p=iD(HF()),AA=iD(TW()),V1e=new Y1e.default({cwd:process.cwd(),internals:Y1e.default.nodeInternals()}),Vht=({error:t})=>{let e=t.stack?t.stack.split(` -`).slice(1):void 0,r=e?V1e.parseLine(e[0]):void 0,s,a=0;if(r?.file&&r?.line&&W1e.existsSync(r.file)){let n=W1e.readFileSync(r.file,"utf8");if(s=Yht.default(n,r.line),s)for(let{line:c}of s)a=Math.max(a,String(c).length)}return Qs.default.createElement($p.default,{flexDirection:"column",padding:1},Qs.default.createElement($p.default,null,Qs.default.createElement(AA.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),Qs.default.createElement(AA.default,null," ",t.message)),r&&Qs.default.createElement($p.default,{marginTop:1},Qs.default.createElement(AA.default,{dimColor:!0},r.file,":",r.line,":",r.column)),r&&s&&Qs.default.createElement($p.default,{marginTop:1,flexDirection:"column"},s.map(({line:n,value:c})=>Qs.default.createElement($p.default,{key:n},Qs.default.createElement($p.default,{width:a+1},Qs.default.createElement(AA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0},String(n).padStart(a," "),":")),Qs.default.createElement(AA.default,{key:n,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0}," "+c)))),t.stack&&Qs.default.createElement($p.default,{marginTop:1,flexDirection:"column"},t.stack.split(` -`).slice(1).map(n=>{let c=V1e.parseLine(n);return c?Qs.default.createElement($p.default,{key:n},Qs.default.createElement(AA.default,{dimColor:!0},"- "),Qs.default.createElement(AA.default,{dimColor:!0,bold:!0},c.function),Qs.default.createElement(AA.default,{dimColor:!0,color:"gray"}," ","(",c.file,":",c.line,":",c.column,")")):Qs.default.createElement($p.default,{key:n},Qs.default.createElement(AA.default,{dimColor:!0},"- "),Qs.default.createElement(AA.default,{dimColor:!0,bold:!0},n))})))};nf.default=Vht});var z1e=_(sf=>{"use strict";var Jht=sf&&sf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Kht=sf&&sf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),zht=sf&&sf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&Jht(e,t,r);return Kht(e,t),e},Lm=sf&&sf.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(sf,"__esModule",{value:!0});var Om=zht(hn()),K1e=Lm(F9()),Xht=Lm(IW()),Zht=Lm(wW()),$ht=Lm(vW()),e0t=Lm(DW()),t0t=Lm(_F()),r0t=Lm(J1e()),n0t=" ",i0t="\x1B[Z",s0t="\x1B",jF=class extends Om.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default. -Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink. -Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding("utf8"),e){this.rawModeEnabledCount===0&&(r.addListener("data",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener("data",this.handleInput),r.pause())},this.handleInput=e=>{e===""&&this.props.exitOnCtrlC&&this.handleExit(),e===s0t&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===n0t&&this.focusNext(),e===i0t&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focus=e=>{this.setState(r=>r.focusables.some(a=>a?.id===e)?{activeFocusId:e}:r)},this.focusNext=()=>{this.setState(e=>{var r;let s=(r=e.focusables[0])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findNextFocusable(e)||s}})},this.focusPrevious=()=>{this.setState(e=>{var r;let s=(r=e.focusables[e.focusables.length-1])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findPreviousFocusable(e)||s}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(s=>{let a=s.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...s.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(s=>s.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s+1;a{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s-1;a>=0;a--)if(!((r=e.focusables[a])===null||r===void 0)&&r.isActive)return e.focusables[a].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return Om.default.createElement(Xht.default.Provider,{value:{exit:this.handleExit}},Om.default.createElement(Zht.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},Om.default.createElement($ht.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},Om.default.createElement(e0t.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},Om.default.createElement(t0t.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?Om.default.createElement(r0t.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){K1e.default.hide(this.props.stdout)}componentWillUnmount(){K1e.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};sf.default=jF;jF.displayName="InternalApp"});var $1e=_(of=>{"use strict";var o0t=of&&of.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),a0t=of&&of.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),l0t=of&&of.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&o0t(e,t,r);return a0t(e,t),e},af=of&&of.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(of,"__esModule",{value:!0});var c0t=af(hn()),X1e=WCe(),u0t=af(awe()),f0t=af(x9()),A0t=af(pwe()),p0t=af(gwe()),RW=af(a1e()),h0t=af(B1e()),g0t=af(R9()),d0t=af(b1e()),m0t=l0t(uW()),y0t=af(yW()),E0t=af(z1e()),Ew=process.env.CI==="false"?!1:A0t.default,Z1e=()=>{},FW=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:s,staticOutput:a}=h0t.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==` -`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(Ew){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),s>=this.options.stdout.rows){this.options.stdout.write(f0t.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},p0t.default(this),this.options=e,this.rootNode=m0t.createNode("ink-root"),this.rootNode.onRender=e.debug?this.onRender:X1e(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=u0t.default.create(e.stdout),this.throttledLog=e.debug?this.log:X1e(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=RW.default.createContainer(this.rootNode,0,!1,null),this.unsubscribeExit=g0t.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),Ew||(e.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{e.stdout.off("resize",this.onRender)})}render(e){let r=c0t.default.createElement(E0t.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);RW.default.updateContainer(r,this.container,null,Z1e)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(Ew){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(Ew){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),Ew?this.options.stdout.write(this.lastOutput+` -`):this.options.debug||this.log.done(),this.isUnmounted=!0,RW.default.updateContainer(null,this.container,null,Z1e),y0t.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,r)=>{this.resolveExitPromise=e,this.rejectExitPromise=r})),this.exitPromise}clear(){!Ew&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=d0t.default((e,r)=>{e==="stdout"&&this.writeToStdout(r),e==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}};of.default=FW});var t2e=_(sD=>{"use strict";var e2e=sD&&sD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(sD,"__esModule",{value:!0});var I0t=e2e($1e()),GF=e2e(yW()),C0t=Ie("stream"),w0t=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},B0t(e)),s=v0t(r.stdout,()=>new I0t.default(r));return s.render(t),{rerender:s.render,unmount:()=>s.unmount(),waitUntilExit:s.waitUntilExit,cleanup:()=>GF.default.delete(r.stdout),clear:s.clear}};sD.default=w0t;var B0t=(t={})=>t instanceof C0t.Stream?{stdout:t,stdin:process.stdin}:t,v0t=(t,e)=>{let r;return GF.default.has(t)?r=GF.default.get(t):(r=e(),GF.default.set(t,r)),r}});var n2e=_(eh=>{"use strict";var S0t=eh&&eh.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),D0t=eh&&eh.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),b0t=eh&&eh.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&S0t(e,t,r);return D0t(e,t),e};Object.defineProperty(eh,"__esModule",{value:!0});var oD=b0t(hn()),r2e=t=>{let{items:e,children:r,style:s}=t,[a,n]=oD.useState(0),c=oD.useMemo(()=>e.slice(a),[e,a]);oD.useLayoutEffect(()=>{n(e.length)},[e.length]);let f=c.map((h,E)=>r(h,a+E)),p=oD.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},s),[s]);return oD.default.createElement("ink-box",{internal_static:!0,style:p},f)};r2e.displayName="Static";eh.default=r2e});var s2e=_(aD=>{"use strict";var P0t=aD&&aD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(aD,"__esModule",{value:!0});var x0t=P0t(hn()),i2e=({children:t,transform:e})=>t==null?null:x0t.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:e},t);i2e.displayName="Transform";aD.default=i2e});var a2e=_(lD=>{"use strict";var k0t=lD&&lD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(lD,"__esModule",{value:!0});var Q0t=k0t(hn()),o2e=({count:t=1})=>Q0t.default.createElement("ink-text",null,` -`.repeat(t));o2e.displayName="Newline";lD.default=o2e});var u2e=_(cD=>{"use strict";var l2e=cD&&cD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(cD,"__esModule",{value:!0});var T0t=l2e(hn()),R0t=l2e(HF()),c2e=()=>T0t.default.createElement(R0t.default,{flexGrow:1});c2e.displayName="Spacer";cD.default=c2e});var qF=_(uD=>{"use strict";var F0t=uD&&uD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uD,"__esModule",{value:!0});var N0t=hn(),O0t=F0t(wW()),L0t=()=>N0t.useContext(O0t.default);uD.default=L0t});var A2e=_(fD=>{"use strict";var M0t=fD&&fD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fD,"__esModule",{value:!0});var f2e=hn(),U0t=M0t(qF()),_0t=(t,e={})=>{let{stdin:r,setRawMode:s,internal_exitOnCtrlC:a}=U0t.default();f2e.useEffect(()=>{if(e.isActive!==!1)return s(!0),()=>{s(!1)}},[e.isActive,s]),f2e.useEffect(()=>{if(e.isActive===!1)return;let n=c=>{let f=String(c),p={upArrow:f==="\x1B[A",downArrow:f==="\x1B[B",leftArrow:f==="\x1B[D",rightArrow:f==="\x1B[C",pageDown:f==="\x1B[6~",pageUp:f==="\x1B[5~",return:f==="\r",escape:f==="\x1B",ctrl:!1,shift:!1,tab:f===" "||f==="\x1B[Z",backspace:f==="\b",delete:f==="\x7F"||f==="\x1B[3~",meta:!1};f<=""&&!p.return&&(f=String.fromCharCode(f.charCodeAt(0)+97-1),p.ctrl=!0),f.startsWith("\x1B")&&(f=f.slice(1),p.meta=!0);let h=f>="A"&&f<="Z",E=f>="\u0410"&&f<="\u042F";f.length===1&&(h||E)&&(p.shift=!0),p.tab&&f==="[Z"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(f=""),(!(f==="c"&&p.ctrl)||!a)&&t(f,p)};return r?.on("data",n),()=>{r?.off("data",n)}},[e.isActive,r,a,t])};fD.default=_0t});var p2e=_(AD=>{"use strict";var H0t=AD&&AD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(AD,"__esModule",{value:!0});var j0t=hn(),G0t=H0t(IW()),q0t=()=>j0t.useContext(G0t.default);AD.default=q0t});var h2e=_(pD=>{"use strict";var W0t=pD&&pD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pD,"__esModule",{value:!0});var Y0t=hn(),V0t=W0t(vW()),J0t=()=>Y0t.useContext(V0t.default);pD.default=J0t});var g2e=_(hD=>{"use strict";var K0t=hD&&hD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hD,"__esModule",{value:!0});var z0t=hn(),X0t=K0t(DW()),Z0t=()=>z0t.useContext(X0t.default);hD.default=Z0t});var m2e=_(dD=>{"use strict";var d2e=dD&&dD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(dD,"__esModule",{value:!0});var gD=hn(),$0t=d2e(_F()),egt=d2e(qF()),tgt=({isActive:t=!0,autoFocus:e=!1,id:r}={})=>{let{isRawModeSupported:s,setRawMode:a}=egt.default(),{activeId:n,add:c,remove:f,activate:p,deactivate:h,focus:E}=gD.useContext($0t.default),C=gD.useMemo(()=>r??Math.random().toString().slice(2,7),[r]);return gD.useEffect(()=>(c(C,{autoFocus:e}),()=>{f(C)}),[C,e]),gD.useEffect(()=>{t?p(C):h(C)},[t,C]),gD.useEffect(()=>{if(!(!s||!t))return a(!0),()=>{a(!1)}},[t]),{isFocused:!!C&&n===C,focus:E}};dD.default=tgt});var y2e=_(mD=>{"use strict";var rgt=mD&&mD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mD,"__esModule",{value:!0});var ngt=hn(),igt=rgt(_F()),sgt=()=>{let t=ngt.useContext(igt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious,focus:t.focus}};mD.default=sgt});var E2e=_(NW=>{"use strict";Object.defineProperty(NW,"__esModule",{value:!0});NW.default=t=>{var e,r,s,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(s=t.yogaNode)===null||s===void 0?void 0:s.getComputedHeight())!==null&&a!==void 0?a:0}}});var Wc=_(mo=>{"use strict";Object.defineProperty(mo,"__esModule",{value:!0});var ogt=t2e();Object.defineProperty(mo,"render",{enumerable:!0,get:function(){return ogt.default}});var agt=HF();Object.defineProperty(mo,"Box",{enumerable:!0,get:function(){return agt.default}});var lgt=TW();Object.defineProperty(mo,"Text",{enumerable:!0,get:function(){return lgt.default}});var cgt=n2e();Object.defineProperty(mo,"Static",{enumerable:!0,get:function(){return cgt.default}});var ugt=s2e();Object.defineProperty(mo,"Transform",{enumerable:!0,get:function(){return ugt.default}});var fgt=a2e();Object.defineProperty(mo,"Newline",{enumerable:!0,get:function(){return fgt.default}});var Agt=u2e();Object.defineProperty(mo,"Spacer",{enumerable:!0,get:function(){return Agt.default}});var pgt=A2e();Object.defineProperty(mo,"useInput",{enumerable:!0,get:function(){return pgt.default}});var hgt=p2e();Object.defineProperty(mo,"useApp",{enumerable:!0,get:function(){return hgt.default}});var ggt=qF();Object.defineProperty(mo,"useStdin",{enumerable:!0,get:function(){return ggt.default}});var dgt=h2e();Object.defineProperty(mo,"useStdout",{enumerable:!0,get:function(){return dgt.default}});var mgt=g2e();Object.defineProperty(mo,"useStderr",{enumerable:!0,get:function(){return mgt.default}});var ygt=m2e();Object.defineProperty(mo,"useFocus",{enumerable:!0,get:function(){return ygt.default}});var Egt=y2e();Object.defineProperty(mo,"useFocusManager",{enumerable:!0,get:function(){return Egt.default}});var Igt=E2e();Object.defineProperty(mo,"measureElement",{enumerable:!0,get:function(){return Igt.default}})});var LW={};Vt(LW,{Gem:()=>OW});var I2e,Mm,OW,WF=Xe(()=>{I2e=ut(Wc()),Mm=ut(hn()),OW=(0,Mm.memo)(({active:t})=>{let e=(0,Mm.useMemo)(()=>t?"\u25C9":"\u25EF",[t]),r=(0,Mm.useMemo)(()=>t?"green":"yellow",[t]);return Mm.default.createElement(I2e.Text,{color:r},e)})});var w2e={};Vt(w2e,{useKeypress:()=>Um});function Um({active:t},e,r){let{stdin:s}=(0,C2e.useStdin)(),a=(0,YF.useCallback)((n,c)=>e(n,c),r);(0,YF.useEffect)(()=>{if(!(!t||!s))return s.on("keypress",a),()=>{s.off("keypress",a)}},[t,a,s])}var C2e,YF,yD=Xe(()=>{C2e=ut(Wc()),YF=ut(hn())});var v2e={};Vt(v2e,{FocusRequest:()=>B2e,useFocusRequest:()=>MW});var B2e,MW,UW=Xe(()=>{yD();B2e=(r=>(r.BEFORE="before",r.AFTER="after",r))(B2e||{}),MW=function({active:t},e,r){Um({active:t},(s,a)=>{a.name==="tab"&&(a.shift?e("before"):e("after"))},r)}});var S2e={};Vt(S2e,{useListInput:()=>ED});var ED,VF=Xe(()=>{yD();ED=function(t,e,{active:r,minus:s,plus:a,set:n,loop:c=!0}){Um({active:r},(f,p)=>{let h=e.indexOf(t);switch(p.name){case s:{let E=h-1;if(c){n(e[(e.length+E)%e.length]);return}if(E<0)return;n(e[E])}break;case a:{let E=h+1;if(c){n(e[E%e.length]);return}if(E>=e.length)return;n(e[E])}break}},[e,t,a,n,c])}});var JF={};Vt(JF,{ScrollableItems:()=>Cgt});var eg,dl,Cgt,KF=Xe(()=>{eg=ut(Wc()),dl=ut(hn());UW();VF();Cgt=({active:t=!0,children:e=[],radius:r=10,size:s=1,loop:a=!0,onFocusRequest:n,willReachEnd:c})=>{let f=N=>{if(N.key===null)throw new Error("Expected all children to have a key");return N.key},p=dl.default.Children.map(e,N=>f(N)),h=p[0],[E,C]=(0,dl.useState)(h),S=p.indexOf(E);(0,dl.useEffect)(()=>{p.includes(E)||C(h)},[e]),(0,dl.useEffect)(()=>{c&&S>=p.length-2&&c()},[S]),MW({active:t&&!!n},N=>{n?.(N)},[n]),ED(E,p,{active:t,minus:"up",plus:"down",set:C,loop:a});let P=S-r,I=S+r;I>p.length&&(P-=I-p.length,I=p.length),P<0&&(I+=-P,P=0),I>=p.length&&(I=p.length-1);let R=[];for(let N=P;N<=I;++N){let U=p[N],W=t&&U===E;R.push(dl.default.createElement(eg.Box,{key:U,height:s},dl.default.createElement(eg.Box,{marginLeft:1,marginRight:1},dl.default.createElement(eg.Text,null,W?dl.default.createElement(eg.Text,{color:"cyan",bold:!0},">"):" ")),dl.default.createElement(eg.Box,null,dl.default.cloneElement(e[N],{active:W}))))}return dl.default.createElement(eg.Box,{flexDirection:"column",width:"100%"},R)}});var D2e,th,b2e,_W,P2e,HW=Xe(()=>{D2e=ut(Wc()),th=ut(hn()),b2e=Ie("readline"),_W=th.default.createContext(null),P2e=({children:t})=>{let{stdin:e,setRawMode:r}=(0,D2e.useStdin)();(0,th.useEffect)(()=>{r&&r(!0),e&&(0,b2e.emitKeypressEvents)(e)},[e,r]);let[s,a]=(0,th.useState)(new Map),n=(0,th.useMemo)(()=>({getAll:()=>s,get:c=>s.get(c),set:(c,f)=>a(new Map([...s,[c,f]]))}),[s,a]);return th.default.createElement(_W.Provider,{value:n,children:t})}});var jW={};Vt(jW,{useMinistore:()=>wgt});function wgt(t,e){let r=(0,zF.useContext)(_W);if(r===null)throw new Error("Expected this hook to run with a ministore context attached");if(typeof t>"u")return r.getAll();let s=(0,zF.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>"u"&&(a=e),[a,s]}var zF,GW=Xe(()=>{zF=ut(hn());HW()});var ZF={};Vt(ZF,{renderForm:()=>Bgt});async function Bgt(t,e,{stdin:r,stdout:s,stderr:a}){let n,c=p=>{let{exit:h}=(0,XF.useApp)();Um({active:!0},(E,C)=>{C.name==="return"&&(n=p,h())},[h,p])},{waitUntilExit:f}=(0,XF.render)(qW.default.createElement(P2e,null,qW.default.createElement(t,{...e,useSubmit:c})),{stdin:r,stdout:s,stderr:a});return await f(),n}var XF,qW,$F=Xe(()=>{XF=ut(Wc()),qW=ut(hn());HW();yD()});var T2e=_(ID=>{"use strict";Object.defineProperty(ID,"__esModule",{value:!0});ID.UncontrolledTextInput=void 0;var k2e=hn(),WW=hn(),x2e=Wc(),_m=TE(),Q2e=({value:t,placeholder:e="",focus:r=!0,mask:s,highlightPastedText:a=!1,showCursor:n=!0,onChange:c,onSubmit:f})=>{let[{cursorOffset:p,cursorWidth:h},E]=WW.useState({cursorOffset:(t||"").length,cursorWidth:0});WW.useEffect(()=>{E(R=>{if(!r||!n)return R;let N=t||"";return R.cursorOffset>N.length-1?{cursorOffset:N.length,cursorWidth:0}:R})},[t,r,n]);let C=a?h:0,S=s?s.repeat(t.length):t,P=S,I=e?_m.grey(e):void 0;if(n&&r){I=e.length>0?_m.inverse(e[0])+_m.grey(e.slice(1)):_m.inverse(" "),P=S.length>0?"":_m.inverse(" ");let R=0;for(let N of S)R>=p-C&&R<=p?P+=_m.inverse(N):P+=N,R++;S.length>0&&p===S.length&&(P+=_m.inverse(" "))}return x2e.useInput((R,N)=>{if(N.upArrow||N.downArrow||N.ctrl&&R==="c"||N.tab||N.shift&&N.tab)return;if(N.return){f&&f(t);return}let U=p,W=t,ee=0;N.leftArrow?n&&U--:N.rightArrow?n&&U++:N.backspace||N.delete?p>0&&(W=t.slice(0,p-1)+t.slice(p,t.length),U--):(W=t.slice(0,p)+R+t.slice(p,t.length),U+=R.length,R.length>1&&(ee=R.length)),p<0&&(U=0),p>t.length&&(U=t.length),E({cursorOffset:U,cursorWidth:ee}),W!==t&&c(W)},{isActive:r}),k2e.createElement(x2e.Text,null,e?S.length>0?P:I:P)};ID.default=Q2e;ID.UncontrolledTextInput=({initialValue:t="",...e})=>{let[r,s]=WW.useState(t);return k2e.createElement(Q2e,Object.assign({},e,{value:r,onChange:s}))}});var N2e={};Vt(N2e,{Pad:()=>YW});var R2e,F2e,YW,VW=Xe(()=>{R2e=ut(Wc()),F2e=ut(hn()),YW=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${"-".repeat(t-1)}`:" ";return F2e.default.createElement(R2e.Text,{dimColor:!e},r)}});var O2e={};Vt(O2e,{ItemOptions:()=>vgt});var wD,tg,vgt,L2e=Xe(()=>{wD=ut(Wc()),tg=ut(hn());VF();WF();VW();vgt=function({active:t,skewer:e,options:r,value:s,onChange:a,sizes:n=[]}){let c=r.filter(({label:p})=>!!p).map(({value:p})=>p),f=r.findIndex(p=>p.value===s&&p.label!="");return ED(s,c,{active:t,minus:"left",plus:"right",set:a}),tg.default.createElement(tg.default.Fragment,null,r.map(({label:p},h)=>{let E=h===f,C=n[h]-1||0,S=p.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),P=Math.max(0,C-S.length-2);return p?tg.default.createElement(wD.Box,{key:p,width:C,marginLeft:1},tg.default.createElement(wD.Text,{wrap:"truncate"},tg.default.createElement(OW,{active:E})," ",p),e?tg.default.createElement(YW,{active:t,length:P}):null):tg.default.createElement(wD.Box,{key:`spacer-${h}`,width:C,marginLeft:1})}))}});var Z2e=_((AZt,X2e)=>{var iY;X2e.exports=()=>(typeof iY>"u"&&(iY=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),iY)});var EBe=_((LZt,yBe)=>{var pY=Symbol("arg flag"),Yc=class t extends Error{constructor(e,r){super(e),this.name="ArgError",this.code=r,Object.setPrototypeOf(this,t.prototype)}};function UD(t,{argv:e=process.argv.slice(2),permissive:r=!1,stopAtPositional:s=!1}={}){if(!t)throw new Yc("argument specification object is required","ARG_CONFIG_NO_SPEC");let a={_:[]},n={},c={};for(let f of Object.keys(t)){if(!f)throw new Yc("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(f[0]!=="-")throw new Yc(`argument key must start with '-' but found: '${f}'`,"ARG_CONFIG_NONOPT_KEY");if(f.length===1)throw new Yc(`argument key must have a name; singular '-' keys are not allowed: ${f}`,"ARG_CONFIG_NONAME_KEY");if(typeof t[f]=="string"){n[f]=t[f];continue}let p=t[f],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]=="function"){let[E]=p;p=(C,S,P=[])=>(P.push(E(C,S,P[P.length-1])),P),h=E===Boolean||E[pY]===!0}else if(typeof p=="function")h=p===Boolean||p[pY]===!0;else throw new Yc(`type missing or not a function or valid array type: ${f}`,"ARG_CONFIG_VAD_TYPE");if(f[1]!=="-"&&f.length>2)throw new Yc(`short argument keys (with a single hyphen) must have only one character: ${f}`,"ARG_CONFIG_SHORTOPT_TOOLONG");c[f]=[p,h]}for(let f=0,p=e.length;f0){a._=a._.concat(e.slice(f));break}if(h==="--"){a._=a._.concat(e.slice(f+1));break}if(h.length>1&&h[0]==="-"){let E=h[1]==="-"||h.length===2?[h]:h.slice(1).split("").map(C=>`-${C}`);for(let C=0;C1&&e[f+1][0]==="-"&&!(e[f+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(N===Number||typeof BigInt<"u"&&N===BigInt))){let W=P===R?"":` (alias for ${R})`;throw new Yc(`option requires argument: ${P}${W}`,"ARG_MISSING_REQUIRED_LONGARG")}a[R]=N(e[f+1],R,a[R]),++f}else a[R]=N(I,R,a[R])}}else a._.push(h)}return a}UD.flag=t=>(t[pY]=!0,t);UD.COUNT=UD.flag((t,e,r)=>(r||0)+1);UD.ArgError=Yc;yBe.exports=UD});var bBe=_((p$t,DBe)=>{var mY;DBe.exports=()=>(typeof mY>"u"&&(mY=Ie("zlib").brotliDecompressSync(Buffer.from("W7YZIYpg4/ADhvxMjEQIGwcAGt8pgGWBbYj0o7UviYayJiw3vPFeTWWzdDZyI4g/zgB3ckSMeng+3aqqyQXxrRke/8Sqq0wDa5K1CuJ/ezX/3z9fZ50Gk2s5pcrpxSnVo3lixZWXGAHDxdl15uF/qnNnmbDSZHOomC6KSBu2bPKR50q1+UC6iJWq1rOp1jRMYxXuzFYYDpzTV4Je9yHEA03SbVpbvGIj/FQJeL7mh66qm3q9nguUEq1qZdc5Bn12j6J2/kKrr2lzEef375uWG0mAuCZIlekoidc4xutCHUUBu+q+d8U26Bl0A9ACxME4cD051ryqev+hu9GDRYNcCVxyjXWRjAtdFk8QbxhxKJvFUmkvPyEM1vBe/pU5naPXNGFth1H+DrZxgMyxYUJtZhbCaRtLz27ruqft3aYkgfCKiCF2X2y+j35IelDY2sSHrMOWZSUQ/ub3Y5mPrFirEXvpHAx4f9Rs/55yglK8C2Wx18DfjESbpWL5Uxafo02ms1ZJqz/dtngtnMql1YJ+v71s08jzoZlHGNE7NvPPiEXF3le+xheXLcUhOThn/6HG0jL516CHg6SeKYP/iC4fUokGT71K5LM7212ZyHT2QzO2dMJGJ1tpT7XjAjQYVWBIR2RJBjCjJxuzntxFq6x96E/kH0A/snZ/1w3kBnPChH8d4GdAjrG0oDZrAfb/C4KgIV+fEmjqxTLdJnB4PF7VGbJgQxu7OPuYJkVxZ7Bi+rub4dQCXGP+EAZk/mUFvUvi4pxd/N0U/HHhuh3F4lj5iO6bVyhvIQyNSyZRtBrzQOMO7JFSRbHsfiNEDB8IXTG4CSDMi3KKtNtQqRCwbDtpfUezkpqP+JuqmwsuZcL2NkgQjEedwMnFr6TCWRvXQwPUXAD+lhMwu+lNro/7VpwXEtxj8hHtrXMOADNQ4cFD7h+rxUrlZko0NfmIb8I54Nos5DONiyQQZmP9ow+RKkJ0i1cgfUQ4aUBgwp+rKUzly6REWSPwLqbpA+zAVnNGNZB8Uu1qeJ6vkhPp8u2pwbnk4QZnmIaTvHCgzBbcRDjvDv2eCf6WdNfch/zVQ+jk+T+kQD6NLl38f7xoh1ZEDAryVb1wCLBHFy0aE3FuZY73LGF3dKslVQu59ysM5G4pYvnKAU9damJz/0eknF708c2eC6wBHcdur37hekn2fh9EgmYq/4RWTQHrNglQkyMyDBAoFL+hHT3BjXoy96O8psGR+QTvg4XW5KdjMGCj0atxV61XAJlhVBWA/HvRqn+8qL4h2gNT9Yj7mznFCcCaVC6Uvr6DLEmJcs5J6fPPjBB8kkPjz6vQ4AmU99Vqs809/uySk4TSwfKNaXmfh0UsyzkMy09SgFWth+lu7VtImU9KhadmM4sd5KZZ2jZW/I2qLTj50XNwv3jOwlLMU69B22pogDPr1gYaobzhO+HRC6tF0ryj65xKZ2hgiQOI36RLUjllTXiDVwG8UKh+kgT6u45VlC95L2DZXrPln6Uko337svBb6fCfIF+p/F5+YeWijIfxC4z0qcEXZsDAJnXWDqKtIuVjmya4DHUjndKETXIMIHFKCFAmcsVmtu99MVy37vZRymW3R9rJR7/+82E484JOGqGW0mJDAo5bHOdYZjmS2DXSmhOCfs1LMQXjpoyEHpEctD1t2lmXU9QqlPY4Wb2xVynNDz4PcGyFK9+5Dv9ZKh9cfz0lr7A2S4g6g/BGTGzLJW7pxCq7Yoougq4Uzu7gVbfeSI8FCIj0OJ5BDmPpI2ioFgE4Q82q0iREfbgxfrEUz2gmkxSPRF2Z0uylN6krioG0dMdUewkyUdKRoGT2czC2BSmrmlf67wzXCu6+hlENc0YAAHnU8ifl6W4VjxKe3Gwn24DMgiG+HwWQrBnLSnsZ86BxcsDTk3ARbIx+yAZSPA0YffDCJtGaiC6JIqqW4IHC6NikeQ+A8+Iyq/LIan+Tomj4e84V+3DedENFS5MC9eqkCuh1fs9cOm6BTseTMjhtfPXFoTzAk7cpW2qwpSL8fHTeMSHVXLdUWrc2aZoqNOLevM3c5KGk8XFvCPZ7k+WyP5putfYT9bhWBHwyy35+QqoY9xAyeSiyN/Ow+de8dEVxjiO/1/TdUwIyC4LBQgjzh9NSDX1DFDVj81S3SNrrcoskAwU+MfkV5qRqO3GSCUCiPAkBBqqlSRWct75lqe4fTsrja5xDx8KNq26ZgwXNkKn69zIjzJ76RGpANs0ahAwhnfp9QPAk23SNIcHP/nVWhaJsIcXf7P2ZQYfAtgxIp5RAqdVVk3T5ZyXzGUUPyQ5DcHQpCOxCiyk2lFkLtOEE0xzugED1vI8S1U/4Y5jlZgGVM2bvTY8xPPpsvuHu5KyrEecMGIigi0WOLtR5g6OD95i9BmSl24ORZsYMf0ZusSSNq7qSRpQCLUe2BbB40bdsFJBmrLH+FXLczUK0WyUf9B0xk+lYqk6yXzmQYPVf3e4xlUbETyNDp7m59l7XHZNtJpbcgOMYLatBVKxjLGKSMIc0s3R1rZqWlHgABmx+eRyqfgqrt8T0AMdw/j0OY4oX9D4ymSMsiD6cJvyyQEuJKxB+tI0MNcy9784oIq+H+n6FqEZl1wihMarly7SOuO3KfrI0BZudTh6W6FPhx4m5eioQazCRNsnfFn1jRymtjVt0htfNi8QOOi79TUBwqDfqgtH7ms/mPCuZ5deTajrWhrxFlk+yYdWzpcHjuIk5S6c0pvA4RWKQhW0ZrlcpTLGiiihb227YY4IsOUOpafaanHlrFz7L+kyXTB/vMKf+wOcJrKJvpq/aDf2+oNNC9Nc9wFQP9BZfh68s3LsbQfyIlBOc95FoUOAeTW23njcxvoxurud1/XZ6IdaTrP3vsJ13AATa9njnpzaW/4ICcmkU+INciDjNr6DRTLOHPIOzF7HzXtiXFsainupUGqfh8nIUW1vGlbYBeAwn04D4NPsjJYFIrzko/1jViy0NwT65o0usO95lc/3sz/HM0lqNSFrepApkLuArH7MLk4Ud2FpCkHxxlVt3rrBOMa8tQt/aO8s6UaNd1oE9Mvb1ZfjlY4KdXhvNNHXKM5S6zxuj93bUaUFTFs0hXlBIyzyvhqqwtH3J57JCDfVqilT2+4v1T7RV/lc1IMp3jGuhyfkV6Rhd3OCiE7ElRGRCEDNHXazuEzKPP9lfqZ4l/rrpuXVydf/Eny+O48Cu1LPqAb3hPsyELxbyuE/EmXNcy0UNUFcsWhYzAY09S3+HOthcOAFEbCGK72x47AIAlbKq1LOqxZyGnOiLqTIzF82ko/YMPdZA1u35gWi2dXytsg6Dx73BLHPvNbr0+ZbGWhn2K8Jng+R75gfUN+TnNozA27QvgezhtGt3cw465Ve1o6BxRtgYL/mZIfKl2N4Q7I9rchlh+uVgH0tVBdKxp3lySqXkD2YbQzzh3uz4xRdomZ1A0OH9IGa1Moud+rbztgKiAzHAxOOTNxy+ZtPWnPWTHFDmlIfZMmvpU7jOtakpxejjhh3gYIcd9vH3766rS4/UFJnzFQuS0BeljjW9MY2mGhjFisY2jAFticOIgG9ntAnTVOx/Yy5wYdIMjLjLXrvgDQUGJ2runk1niyi1G0LrgH4rFw9bfuT6UzCP+8QwxdNPdnDsLWzHkrwSWt/EAfY6AZevfFPtcMsZU4t7aWrvJLiN70CzN8AUHnfzquATdPr342AYsZJj/rQ72YddOnbdf4ZzY7yPw7cgZmQlSBdfDqfJPpqzeNOPVaEY+l/2XNAeCstnNhZQKwtmH6sAAXfl9yuVJTi/magBJAxUbivQRKHCyxBmEl8pPIyk0MPq58LYx1iJkVg9Iu1/yLotS1F4y2fD1mm3CQnrphi6KURxydEshzi6W58CRn7afwPntq4bq12rzdlnlsD5AZMAyRK9fQbQNR3rAdvfG8eZ1/n49icsiUssBfYXK2iaVlUfYTkZj8RMpBxtxdRlWMQdELGlRPqWZl5tRPf9fJ/XNgd7YU2olh2VjW/2gfo+va+tfFyeFjvq5tvTMtNkHTcqKR5T/YL38aDImuvqm10LfhjkhzJpP2K6G/7Qz/MFdWlNGiycVs65WCOOXqVPufVResqbv/sPJNAktAUAwPhi63Y6F9EJDPBVfDmEQVpbSmcpl0j3HnvjFA3L2msqZBFphCBEaxuBKrmeqAtKa2iKoHEdDJ9Re1Jrx4j8QT2ybiTKEcJyHLIHDJojd9NcftJIuh2YHY0x6Bb++6Dtf73UpsIZgrnS9nakE9ayWlk/r8Xrn0ibW4deGgt/KZT7x/2x6RvB2ShOP7WGVQMNDVgaBhsnKr5ToiegazDrScH4zauteqNk3sSykTXx1cR5MShxFZIHlDrqsHJWesyrJTQuNJx3mpA1nnINBmWSVchFUD9VXSX7sfHXHd1lEiOGTPrlOZQvqoU5V4gAKctLd2jLXOFtZ5fCFa7OBcZaKHyJQSBUARJu/+vkVkg+ov0n6lYKPFHQ/Gakx0ns6IWc4q3pt7r5sN39Is12vWpTncKUOPL+nqmgO8T6zm6Xb8Xhcil+8mSH5ZNVnWpD4GdqwUP2FkiAZoDl3YBlwPHA2HKLD81OKdAeDXVGK+EJopfaq7XkIzhqBWRh6whrxOusdiIV1tbhid5K+ZYeB4HwUhV1v2P11U+MAOWZGNYlXX3eMjD1fm6kjSGKHa72+lLHiMM7K+dEhVNDTc51NUWwSsXcx3c84m0RLdbxv5g8h3R4D2/1BbYbT7zOCo5dXtmzSmHViTZxvZqbwz4jSj6wc/sYabvhhfy73XKz26oz/+T71R/G1frWlc4obxqaDTWIj9HG98/3+rPtnE9tjas3Yyn9UhO2PJErMN7DKinTMlksp05+GakYwb4ZAA4zQZSqrGyHsktqctSjTpMtaVdA4DwemhPyrmwcW+0NlDL9MrhvGiOS+eVu4bCo4jj9d/SV0i1kFZ5CTs/WjOU6Ml9d3JAf6pE89rv73/vApw9U3w11fy0wbP0WCX6V8c7Bmr8t7vhpBemDewoSVo6ghefic5xgecP8ysYyB1QC+Dk2JoiXTkwaEIU1d720dCIf5y0SYm9l5quKY2Yv5LeiFNbtLS98NQJ5mQs12Cp7BsJHzT1c5GLsm+hdKkAzxKA7R7hGPuIauQaNttK6XTBT1OZG5cM6ovLs52W7MA/HNbkjpwAuvzgnrg3T+Df1s3q8GIwwxlHfYvXfxUKsTx5t4cEZxsk2700PH3l3brazpnHEDDa1MLF2q1QGTvUpRt5Xbp+OMr5USgxt07r7JXR95TxwfnGIp8ocvTW1d5vunjz2oyORJzC+vrJ1drWx3XfYJGe7VlkOVPoHuYz49GYjmCXQp9EtzfUaAzKBEBTuhkU0cPYMcpaoLK3XiQtHd+dz6/GxMtpNFEOIqr0AiJGrBH+Gp+sNad0n9quQM4hqu5ohrF2G1Szx6s11MVqJRvd3QlxH8+mQ+4E54gFHyoz5iuQ77qXp49kehksFrzuZSI40Y3aR3T/Z/OnRX2egHXHoibXzcFFK19vVfCXReF6ItIzYw+U1Nx6UkwuJpcdR47EGr/xKs8UOEyZ6V/eJxtxF/qmtW9265WzSrqwNewgxToBKfVnkUrJdmiQIaNqb9r+UDgDuArRTpUUPqMzysWTQQIJbd+Xr9V8aUEpZ0371aZhhI/84RfW+dmtpjRn+yQIllTg7FK5LV0lyUk8eAITuqxaZfESPTa/QEWwg9+66Rbpmc1CBY/Oqk6pNubyv5segdfcpYgTsEpbzVndcExR7oEc4eJRw57hvSNN+AqH8ziy3hOB19jKuML6MKFSCuRVcix9x84zYfUftMusmkOvyGNUGrnKM7tw5Wmrsih6RTdtXe8+O1S6E0TMl8bL59GuZcXke7MfxnQvRvECXjo+1BQOpd75XyPL9Yfm8fLNjZzbMwk0ZgqVv3bFA+7Qu+xFgxwsJbo83PhOeNr6Mcq18n4EtGQhvrzAwQY61aBoMIv3G/FBw/SgYaPrk9ng1MffgnFfcJDNP/5se7spF7Gox82SeuOpiPaXZZFnKIF/5zLH1TMGUJHR8ySsXitq4sIuBlyykqukQhDEiN2DRUBDh2Z1M2h1BQtmcQpxhs8HJ13hVVENSgG3lOPlazd3sYmG92GvbvPbpKJip1q+WDwbQtfa8RkSKAoaY2IgQoLo/rJtMq71UR2VJ5T6Y85hL0JGFT56IQmcCseQ8ouKnL0Vwrs0bxTpbwScO+JYPcMBt3zvI6rqGpHxkDDMm9yLuWS7gRlOktJMAq1M6P2pDQkNcx6QSTmuWmHwHYEgskf9zZa6WdV2o23rX5hg78wKfLDaBkXcnI6ylSbSp+2NEzZ2NQOCt8NQGNc80A5OulHFQhCx8WkzDwEvXT419TFAuCmp18MmKi0ydLVgc7MPg6wnWJ51o6EnXvuOyp+/TJS56u6yiomDYxB3XXpSIxWyztaGhjqXYmOGcdu2bvO3UQcdXidioZ8lJawPuUAF+3VaoJIj6eF0KIrbdhZCmxWD2czpmWFKEMrycyV2MBqzr17lW7xVM/WdWWR/TkO941KAzOxL44QS9OU/M+5Py/kS9Jzg3d3/e2siuhogdsRGdGUYUno62enVUsYpt60mhAk2Y86s60H1QPA0/7U9nydqtBysJKQGT0WrdGcdUns62evVUsYrtHUmjMs2EVNi9Li7OKcOHj96u926XXb9AFnfg0lveGOVK6cWJuUZCQdM2WDBocMGB4RpkNVrvo321gNLF5WNEk22kk4oZaW+BmTxmd0QqgclRBtjJfCMoq8FXtRoFDHSKW0d5nxUtS+oABoxQc9Gg7h78va6jiDbpW7dwrVuEo2m9km21wjB1x61EvLs5trGzerpHde31jqvFWFp/cHhRrjnm2lAcCLsHxu/TsvafBu9P3vuT954F6Rpt25Gks9N3C4e2kfurO0y6v6/y9D7K0/s0T82aRk2bplVjlin5fpEdtwAql0Rk1G07gIufdqJB1j4w3t5FUPApCSdEkGznnFN/k6Ft2fVA5rZ0qVvQgDely/xvUvMgFRWKLUrcedIlqbk4VVnq4GvlqxyXhagrDku8eyTMEeKWnMjfW/94EspJUbqxpihAdFeLGbU8OzHdDcT/9Z7c0OY/vwHm6h4wc0fwj3w/2w4nCLptJ5MXXwad0U4YyFqFVitCvFv1IGnSo23W5yI4R3dYF2y6O0ze3oG6u/tRp7wPgyl57aYPfA7KJfKlgEmWlEkQl84CSFEfeHAnk5mhg6C6Fw/sGFW6Mo1pGPQWx+L8rzYlmce0abEbvNLIdGPj/JEvB4u7ow/zpzjZf36STbphaAbHf3YUksjbVSlOf1crtroPP5bOnfnydVL6zNkulKLzeEN7Cg+3k34rS9tTc670/JVgLvRawvNqKF/jfz/aZytcHkZ29OBZtQXoBGupMUboqsk59ai14cMpj3XHxVnFzFzTzuEyXuF/bnmKFvMTwYFG/UmoxS8ueocx3waoBBQ0G4KSOGHB55gKRMk8DNS5KxLExF7GTe9jU7wGN9vlFEeBD6lF+26RT6RInLpnDDmzERW31XTRHtxL2N7xoxb6onLubI49gVZ09Zq1x6C0t5mdk5WhD4LjxJ55oU7toCwbmZbLiCMR2lBcSk05iRcSma1hWDZdjl6tD94ohLBMSWwy2AbGyv/jbi7dLoGlT/ezqOm33fIA0b/aD18vTsI9I/N4HIIsxuU4uJe7c2Xj3R08xAjfKZAbbgibJqG0MjSEvWVDjki2UkNf13Vd13XUZC0DTx2bDwbsBH8fj2Hxn6DbLxEPq/QhLzcJEp4urxiMY8FRXecFSmDgL14S640Qkkhm+fzdV+xXWGM/p09EFViqjiv6KuiXzHphc4vol9T/UsKbIW5OB0bLOtsC4eR6duJtnxq8FgL0Lpb2B5aLpXyGjDHrCkDHMFTmn8sdIroYt/UVzIKjk0PhbBlisKdX5l/L1+wSG1cHztxB4XqXCgSDSR+TV7Oaxi448DHsYvT6BucMDab0e3AJM6gAeRCVHSNODMzz5zOIaOkle/XBj9NE6FinCSQ0r9ITp6mlDqKb7Ffl4A88ULI0Qp1awaBjjbwaNjId7GhM5vKZ4BQb8vzJnXnbEjajStV9ZlEnYp+8Tq5/az27/kPe/63evzvv/y7v3773POrXvx6DjGCuX2H1kcSQanT+WKPiUsJliz5KOWnC5wk9WtlvJcjJAmQ2USOgId3v/FZARaaO3jZadHXWqJNf9Chrfw8pjHoDJ81McWojt2MfyR0uO722bmS33+BDLNVDDXbIKGyZ9d3occQjO1dc/GhydaLE3ZBuyGdMvDiCkk4dx9G47sGU/sbZM7F6QYmOmLm2zvQyXV0fcr+Yped1XYdi9Ve12efh93r6EjM/DHkXkVq/DZErtsF/9zbH2d+CnbitS3X413Zg7t9DfDu1xEiWz66j5CVH/JaBKNZl2Uo79Uul1Eqx5nIXS/Fb72/3/i16//a975d58Zvt7Fc5JPT2anmarAlrp365mvUPoZ1S93AIK7p+waHQxZJIOzXbNGs2mqbR6ItJ+Zcs7Ko9BC9z2EBfFAtDOKfO6qJZfnNDFjdAdnqqv6fToPqZxig9IK2oNhX6hZTqIVGuFRt96Zr998DmmIdqnz3UlycZX/hnsVjV6Z/UYKJXpeHqK//49+ea+69+Y9DheUDnPA5RVw9nnh+gJ01XJrNjI+MmfyzWM2YXsb34d9x0eFoY4aOaWSOt+XZUtITHcMqWcE2v0v2ZqL5Xu1C8f3MBErrnQW05ul+zM7hk87HOqTQo1y+1znZ8UvvlU/fbMvKvj+Ec0Cv2YE/3W0LwoJvFgQPr9GUpjfYejnSnUJnRheU059qwNpKX1/RbakgJ9nKb9MuARm91wSk7wrb7lAWNEM6voL9MaLjsON1y2VA+P2Rh6rXMyJRspXjbjDretCxLwtqvve0ed0UAJclesqbidU5hxOL9IUu1WHeXZehNLzQMY+yfjIlGu3ArXU2LcpIDh0koQTTy/f/X69ul/mEyAr2S/PHEOfMyXbymM+Riva1xymz+fon2M7SEKpt5DOUz48NHqDB/7I0ILMB9Sk1n5MIp7OcrvIAw2epfCVC9UwyNSdl1Kx+x2IM9OMWgtAdQiKHeLax0/E0ZD2s52JOR+hEXA17aT9nSE0zFLExj3hUS5y0U5tPttXeNRUeWoaVHuht7j3knrVmLeIunqu3zqSZgzmdG+HgVKwNW9A8vCsuyFwzMOmdd5qHy2cBnCaG3AKokR0AW9RefKmI5BfHIVyw5s4Yg1DtB9xhszA270uiOCB8D+BenA20hHOpl/MVWCROFC1DAeQ10fu99qMpsQA8jfhDDoUqBCvJRW6J2pzqLnt8Mzoj/+ekeL2XRRgJhJ3qb4AXTV4aK/3Y3vY6DuN920Okd2WOPp08DfE1bQkBfPhf2f4DSORjXtwn7CaReEMU94zGEFKTW0gxHkFXd4qE5SclFXH4NMVNp557O+j7FT7iQMsPUhbdC4JFMphbansagkmu3SH+D8LNgaHeFLw6CrbEbe9Vvr8JjssSHy2DhhuD4J9OY24/T0N2HnjpwQr23izNcsz0OTSgl6HbYHxguT1X310zImOVKEYMeUTve3Caiih2i/Czr9SFu412TwspMTMhTno+cIq7hkm4/V5CUox/7c1LiVCYDfTsMn+WAjI9oYruk+Mo2Fo39BNc3n+Fuxm5sPUOUVNJY11ZkOjsYivrJcAqrKj0/E+pcq5R1JXIYouWzjPw4+8Fsa4xP40kzxBQRuX+KakC/OtjLXnhDoB98jWRcVUB0x5gjcQWCep0B31VeC+0coDBmXyeakM5adQ/eh/7DR3gxgfShsfABlCf+cKbAAh9HQze7MGeX+twMOnuJiQ+V+N33tl40X/z4OMPZbxu8iEMGUKL5peB+LtMHkAhzON15jSF9EsiaLx/i9SQyA52R4z1Zd04/SI7TsnSOQHSk2Idexi3ZU3b3iaPVM0mfFXp26lVupSzmHmPD3xtj+cLJZFNiFr+RpouhImOd70A4yRE5fwSUJds25rGVOMthYLt4Z2DSQFF0FQ9zmcrSfCGV/gGCU+jXsDv8b8QGX430pERs7CdIhk4yBwsLKgdIgbu0hcK5O8Jw1pMBa4ppsY9pAY6lQ/R5JbWsXMzFeY+nxzUeF0pNFweHkRrmg3sT+yX+zzad81iYfQIFKcv7qZ5jArC7UGZ8N9AUrzc87uCCavsUcfDghX26yBUJ7fCUD58hJ+f7Gsrlr0kDvDWVE81YkASoPUhifNjDekl9cHWdao+BmJNy4wAdUKtohv3KpWRhIiruWpp1zHYXYXjLs/gTOoqL5L8wRKt86ZHL8/uhqpz/8eFl8aLVkeWEkVAmh0IvSiFrMjlbEZL33lYnGjWSbveG/f5x/6X+I/0iVg3/Y/JMH08I895zjFmjl47uh99Gpo+wToBxddQPh1NszyEGDRSWwVzajG3tTtuqBnyMJouYE9hUF8UgvDKF+gq7LUjeLWNZ+uwVIIBWsoULBbto+RFS7N1YMgN9MbFBzQkuWhVEW+HdC6Z3sbtg3DwQa3MQiu3VnCXH1aTpb1lHY8/36jN7xdolzctdbjwZua2JJT12FSQJhM5JrMzdeKijSeVwHx8r7U9jSaED+XF6FzQ5dpthmAgOY1Rj+NkgxgNDkQ/AcHtrAQve1bcQLUwC3KUo5GyBTXRwvi+LMf1S5HDn1wTI/UnOFQiy7TVVD3755WuaEh/hRccyHVqVGR4o7Y6d1HakUEalTvswRZUYfWWbzdY36zTlQkk85VpLOQd3k9fUb+2EE4WyoHe5c7XHNnjP5wIBExdVhlh9miYTFY+a6/dlWUQU6N+HkvTbsv5mtRfaDwTwGj2I6MYz52z2o1fJ+/sGytq2u3e5crJzze4RDn+bVadJSgRec0QxcUQcHihrVCCK5rRVHGkYNTICvQWMqabLpiXatW69ON6sy/QgJ674u6+V+IlvY+ENFQoG81NSA7/6jObtmuI5gXPd+Q7Grd6WRVsIR9KCsjde2WZzkhum7VuwInzdrFTFRrqYT6DXkfQk9cuwN7jZOqAJHSj05LX8OQWzpo37SCt8WjBGYN50o0F76Gf+oFu7p73k8vE0vOuo/jjEm2O2BhwMHAP0+VdGTD8P4PH4D71h5BkJKXUGNH8CJFoGLT8zJWij5g95rjeJH47SO4yW02WexMt7zR2C46ThSWcSm2JqWjT+GG7AcgvHQadqUcDKjdTgE4Ub0tqlEPpgKTmZNw5Jd1DAs3rKAzp8+0furclUDr28+5dZUW/ybEfjBB1++nHXKXtuk+nz8sW76+dLvLtycDstCBCmkspzzcjvTQI8k2ho6fE0WKsuq4LQfxmyVjnHcKLJi3T4/vRqNd0ozdijYGNzct6ITHM6ORtfniyESPNWMBTbWRxSNGkFv8uZqfxpl42DVOGkrvP/ssJ1gbh9XdnQiSRXTq/kmpw7H7LM8XKtXwxfvoYW0APq+JvGSv0M+5lUhiAzwAq8O66O0f8qTS6MEIOUWjijJ0/ZCraxaJPhkpX49yAonqXZ8zAwX2tkIDp5IjjD2kvb1G6/QeVVv7qD5azxLHBpIWbI28rx6q+5D9nzUwkP2wOlDKsGw2/SJiOao4BPWyCXjRg2OXuPp228KdglNL17euvPYXUSGBO6FYxo42R6Ol7yNtW/MZD86somgsK1PR/IVstv3srrKUkbFnPBbpYYeNJs+p2w2fbfKnBxxi4zYK7cvr9ckBhxe+otENmKYn/Hh1YAZQEdReEZ5ZBRnwCO/G6kdDYuIw0Ewd60xZpkj209Bvh9LMJrLiT1tNsrTYy1wbxFCNgOzk8xPkzWye03VL3Jh6qQLRjTkth129p5IUhBfiDQyd131I/tLXEMJnRGwQBV2/X/L7Tv+VC3uYHo0zXq4CWw844CUJqYfDJLqkwaItbIreQF6svTa0TNvScy8r0j7VlLVqczG4USLIqC775j6VhD470dyQzM/16xBeQEy/X6tkgJQKSjL5N6J41QlPCxGHScYuYvTpJGcdVYq+bObbZdZK4v3BtLj3Vc5+/lTWrcSfyvc8LBExCmWLfJviNBX8c8ixX6VGS5VYWp0jjli1CeUgoHzA9zkDBbBM54ESqVKQecS1vWexQpK5UIsOMNSa8NYkRp25MkRpwF7OIQyAb9X8sZuPXgmsD1jbSFA+uweZsQNqGkYVPkBXLSphKJ/C2lIHdCfVKfqbkqTyl5co2vummREV3HZ+qbZBG5yG4G95Znbq56Dh1zYuOGWXhKoRyb+Fq7KYYV9bVJUk52DYc3VFLhlL6Qbkoy8G2Y0tCpCwXcwVBxu6GeicCChN24faPn9IB8cUD+hp3kvjKceZpSsmXP5PCO5piSt/bn+PL/gjVPgvub5jOgq7nNIaA3OqQMljSz8Vs0rD9t2BhzyPEOmpLsqlFtyJQZL8zLy1xJiDiVKOcrWuUdHtDEfILHwsqHsjuc8FY1AQqqj9eGqVtxRTYRMTGYUZPE4S0WfJ7DiRMfTADsQnDHlF+OA64ySBzOxLfNpOdwckf2zFgMQtG7JaygfYm/Xvw9GLu8hdlSf5mZO8coUGi87cEu+Y2LcFASUicf9TgShhXtYI3pZqFK75aBuQY4QLKNtM+1d+law/utG9LwahWnCLwRv2mZrbU9nOtnqcE70KSReJShsp72y7S/NvKWAfQRjoi1hHYvXngDd0xJtKeAJg5TRRkrhIwdD2+5YDWTXpv6DWka7njyJ3+KJ3+ql3gDYkvh5wUtLDo7+x9ieXW7fMMHUWgcF9g4dzHAQDaKZEPGOivoKFfwWcBZEKSo9f64bgDtRu+MPsXwiyfxVF1+9ouXD9TfFJT+mvASGsFIkW04E4Pk6QFt/jaUtQ+ZUuzJm9j6/E1sfV68/A43r5150Wch4uvNOOkKwHBFMfC7OBFob4hFCGp6WE7iMnUzu+OULbC1d1CLoInDP8ACxjiWgSE/N6YVpp7avokMwyJ+T72/AKOx0QfXthxqCYC8cSJmmpAjbQEAMqTtI3Sc4z8IyLiqpdSijDyR65ax/vmBXGOjz03+f8tZx+O5Pq6N68X6jbUb6+X6zbWba++XA1iv1+1SNtra53qtx+VDZn2YHxK7fIHWrz98HTqCd60G6juzQjrYVZbhi8pE3/QYc9NomQ0Ez+9ELpyaKyqpDcrLMGJxPKsFO6YEofopC46C2AU7LtgY3R7Jod8407Id+KwUE4DZ5JrV7K42vTUGtSV/5+TE6t3TkI8mEcr80pHiDMQzGQ1hxfO/y2KChIqxdMavftJ1c9UFSCMVMDhdHj4AcSbd8jJoOKd4kMTB89rjpiZbMCu3kS53nzKehcAb3L+r+II9l2iMFRVUVD+ghglHv0jaQVzLFJXt3QS763tfKo8V6UTxoNRxEVVDX5FLgavrZibQVdQMDHbs5/+WxpStii6woTFaBmXZFROE9Cc3+y0pEAdFxkpOzSBsLtPtWNJKigbwPmO1C5k25PgE3hLaORZi10reiVD1UnELZIw6fn4pYJGMoyUlnw4c04dUt+qZptvBhw33Lnd2iZTSWh3rJtWIpPFc/3Qsy4lMm45lNy2aqY8+aC7gidvQhQrxfmuaAiWKtWtGY43OmmJYnNr2XYMaVcnXosYANFzD8uGEQjAUioJFLJBRFuXNuOukSso2slYR0KLSAhz5lY7q1rroavP1eEGAcASAWbjfnBFK9IswYgGHA5BdQjJew7u4ZXaC3QTgGcaIUYyPEiSucelWSTuXUiG1LMXM8oIR+RU9W0qjNFg6fBugXD10ZeHkvyTrC4Cla5/q5MLq9memnJ8lQjCaYJPvnoYyXm2ByZjV6ZOL7d09CEUvdcIvF389YLM5OPeyxfBWUjiPqMfIGvgOBfjPGQW12cBc/YzZbxgYu92wRiOrYixVM5dG6fmqo6ZX6CK/bqqHboDFCUp73KU/YIS7DEu6Unw0H6X96WuVb2l36CMPyTLgjvFdAFCTA5kmyl1S7/mZ3xOqv651jJX+TnIfP193JOZKKEWTMhhvn1StNy/Twhd1gpgysTnFNWFl5O6/5cP/R2zcJU9ikalZB8sbL1Z4Ok5UqgiX/ZQTaOO+5+zXNcLvODwG2b+8dHsI0r9OSS/UZ0+h01p/chHZu2TvLVMaEqJxkyj10YV5yHd58pbHPIclCt5CeKNcMx5kSr+GsBUhcyT7lr/mRnyR2Sm9tpjpf7a3oR+H00IabdcdATsFp/9yGGPCLqqwyl6lpt9D97XV5mjcim80uvhG6AXM+Ewx4CBr4XXIIwZsYzkWKHrwhWZJM+ztSWXd2ErNAGPs+ZFpa5NxBrm8rN0tHrzoHNExuwMoB6SdGGldMXKFhcy+q99NjgYngNDKRu/vTPALyd3ZcCWg+pv3uW7lylwtESPVrRTHvPIJI9lH0z7FB8MQN0tddxm55q+hZSlHGn4HTIn1qYnBdytlMSEyfTXVh7rpRGakuXPD0vtF8W3QbN8GXgUrwbCybkIaMR9UGREBwaoa8M7qqGTpuHj6ekl9tZxBBouoxbJlLapftgCK1NIrtr6K9YBROQ1UBbINXOiw0wZ5r9zagqRBDFMQFyvzYFnYh8Ig5NoqlDFqSEd+WHiCEAafi3IUpXVePI8oy9fD7QDRWKpQMrIqyRqLMSAn7evHjrNRNKspUBOCq2ytGVeT8T2eOTeau8+WOvHmiLE/AOUmcgVQdwJVlvDgr8UFuw7pcXJArQozzSJo+2DmaKYphScNeSxACQsp4f1xmomLafbNNzK90dk4tdjwL9inPgZWECkUUjcBKLkATF/pFDq3q8VP1dnDEtXN6Ihxx26oXeBRLim6qo5s7nyCeEWn9uc4raEXSDlPqk/bHO1i2XXkIP/zF9RvnkQR1T4ftxeicKzDz7xlegnxpauHhn1hcP/Emh+vsw2CVHWC4V27XblqaC/xkO4YPJP6LpL6KEyLE9VbxKK813gqpcNy7oalqhJ92RanoMF1xUVtyRG0U31KceJT0bR5h8su5sVyAHil2LnWe4QPLNbS1lk5FefiiG2b3IX12+Ez+3Z7RbSvqVxtWcghZBStcIfYtE4wk9ZR0TB2axfOFw3iX6FdlE8tJFwqKr5D0HGTnZ3zvS1qvLEybAAHRSseffG3+vDgpSuyckW9TQTYbPc05tmGMPtCymY/OwC/7KqvBxPavQi/2pToMKv3ysfwamTLeW4bZrqKADs4q67jiKN2/yyucS8StnHeTg/Lm3VqVUHAVfyb0yLTUgpwCgBLocswkQtPaQ8d+y6cBWs1Annqp1igcpQLpghOOVHYg82cXYEYICfygPOL5hvAd9ShDTg5xbEaVI4yaS2ZQQ3+DYY1n1xCJa7Ue2KRIeZIgZQBem1NmIOBfPvonVqOs77IChs0HqPbdpjbrlhTT2YRFnSfOQcEsQG+w33eotwEpkbN3MOv8VvQIfmuY7vd1kG8WnVvzMxnZYubJHccY6zt3Iqw3jp0ehCj26dOpVzveIQ+JdBs7z9mi1F1WRHbG1nCZKkjzXeZWRsmAVuV63K+6fxczgXicHNOJ1byuXpDxgsiM4vGlf37hbCEojg5vBE/THcQU9c5ulMBqczQkatKAOyj1PTEHtuASZ7plKRQ86aNZPWcDTKBdjsZ8Q2H5ayc9oD/mPycHq6U+1y4P8yFbZkvfoLHvnE+hzdismty7Na2YWmYHREuaa7nfhBpxqKVsf0TI1f917qMKTieUfdlNsEnYhT7TbcgKFvREH46deSh9qjtW9KUSpPOWMqONNPcL1F4LUzN2UCO89sAnoX1H/WtjHdkqMtYzswsd1El/me4hRszg6YO0GgWxNuH38Tm2nUIAdMxaZmEKJ8L4rRiAe5WH7Hg8W8njHEcVDB2flFwshvQiuTLoN0XbKrhWHNW+CSKj/6oZf6TL52UpV5UHr/4fY3zbEnkSctnyS1fq8mlfy7IDBeKTRksjn5uKai+tWArnq4FyLGWTCS9Ajp60isRCoFJi1+ndJekdhnWAhnveiA6icBgsxQzkEVrAjZALn3tw/1UmTqKt8m1OdOY/v38fB3j4mcnBX2rrU1uGtLz+9jTF4/o6Ytlk4O5NiiyTKBCLOwKP7HhZqG1fQnBYtxks9dVZRHYDpVvtIokwERT7NPeSwnKqAWGHxPsiAL6YvVI+BBMtunYk+99NOWWtyiadeaGwCbDFz+OFqnQM9GPHlQ5/Lnt3tnrRWyXyaR/4mO/E/fv65K911gFohqGSVGLnzgM71eBIw8LF2+BLqq+mPqi8ovIVdliBIwN+MDY4zKOxfyM4zPjWIdHsZM19d1SrB7nmiLRA8+AP2XBcFaAm6B/sJ2iJA8=","base64")).toString()),mY)});var TBe=_((BY,vY)=>{(function(t){BY&&typeof BY=="object"&&typeof vY<"u"?vY.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window<"u"?window.isWindows=t():typeof global<"u"?global.isWindows=t():typeof self<"u"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var OBe=_((fer,NBe)=>{"use strict";SY.ifExists=Sdt;var Dw=Ie("util"),Vc=Ie("path"),RBe=TBe(),wdt=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,Bdt={createPwshFile:!0,createCmdFile:RBe(),fs:Ie("fs")},vdt=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function FBe(t){let e={...Bdt,...t},r=e.fs;return e.fs_={chmod:r.chmod?Dw.promisify(r.chmod):async()=>{},mkdir:Dw.promisify(r.mkdir),readFile:Dw.promisify(r.readFile),stat:Dw.promisify(r.stat),unlink:Dw.promisify(r.unlink),writeFile:Dw.promisify(r.writeFile)},e}async function SY(t,e,r){let s=FBe(r);await s.fs_.stat(t),await bdt(t,e,s)}function Sdt(t,e,r){return SY(t,e,r).catch(()=>{})}function Ddt(t,e){return e.fs_.unlink(t).catch(()=>{})}async function bdt(t,e,r){let s=await Tdt(t,r);return await Pdt(e,r),xdt(t,e,s,r)}function Pdt(t,e){return e.fs_.mkdir(Vc.dirname(t),{recursive:!0})}function xdt(t,e,r,s){let a=FBe(s),n=[{generator:Ndt,extension:""}];return a.createCmdFile&&n.push({generator:Fdt,extension:".cmd"}),a.createPwshFile&&n.push({generator:Odt,extension:".ps1"}),Promise.all(n.map(c=>Rdt(t,e+c.extension,r,c.generator,a)))}function kdt(t,e){return Ddt(t,e)}function Qdt(t,e){return Ldt(t,e)}async function Tdt(t,e){let a=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(wdt);if(!a){let n=Vc.extname(t).toLowerCase();return{program:vdt.get(n)||null,additionalArgs:""}}return{program:a[1],additionalArgs:a[2]}}async function Rdt(t,e,r,s,a){let n=a.preserveSymlinks?"--preserve-symlinks":"",c=[r.additionalArgs,n].filter(f=>f).join(" ");return a=Object.assign({},a,{prog:r.program,args:c}),await kdt(e,a),await a.fs_.writeFile(e,s(t,e,a),"utf8"),Qdt(e,a)}function Fdt(t,e,r){let a=Vc.relative(Vc.dirname(e),t).split("/").join("\\"),n=Vc.isAbsolute(a)?`"${a}"`:`"%~dp0\\${a}"`,c,f=r.prog,p=r.args||"",h=DY(r.nodePath).win32;f?(c=`"%~dp0\\${f}.exe"`,a=n):(f=n,p="",a="");let E=r.progArgs?`${r.progArgs.join(" ")} `:"",C=h?`@SET NODE_PATH=${h}\r -`:"";return c?C+=`@IF EXIST ${c} (\r - ${c} ${p} ${a} ${E}%*\r -) ELSE (\r - @SETLOCAL\r - @SET PATHEXT=%PATHEXT:;.JS;=;%\r - ${f} ${p} ${a} ${E}%*\r -)\r -`:C+=`@${f} ${p} ${a} ${E}%*\r -`,C}function Ndt(t,e,r){let s=Vc.relative(Vc.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n;s=s.split("\\").join("/");let c=Vc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,f=r.args||"",p=DY(r.nodePath).posix;a?(n=`"$basedir/${r.prog}"`,s=c):(a=c,f="",s="");let h=r.progArgs?`${r.progArgs.join(" ")} `:"",E=`#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") - -case \`uname\` in - *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; -esac - -`,C=r.nodePath?`export NODE_PATH="${p}" -`:"";return n?E+=`${C}if [ -x ${n} ]; then - exec ${n} ${f} ${s} ${h}"$@" -else - exec ${a} ${f} ${s} ${h}"$@" -fi -`:E+=`${C}${a} ${f} ${s} ${h}"$@" -exit $? -`,E}function Odt(t,e,r){let s=Vc.relative(Vc.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n=a&&`"${a}$exe"`,c;s=s.split("\\").join("/");let f=Vc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,p=r.args||"",h=DY(r.nodePath),E=h.win32,C=h.posix;n?(c=`"$basedir/${r.prog}$exe"`,s=f):(n=f,p="",s="");let S=r.progArgs?`${r.progArgs.join(" ")} `:"",P=`#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -${r.nodePath?`$env_node_path=$env:NODE_PATH -$env:NODE_PATH="${E}" -`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -}`;return r.nodePath&&(P+=` else { - $env:NODE_PATH="${C}" -}`),c?P+=` -$ret=0 -if (Test-Path ${c}) { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${c} ${p} ${s} ${S}$args - } else { - & ${c} ${p} ${s} ${S}$args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${n} ${p} ${s} ${S}$args - } else { - & ${n} ${p} ${s} ${S}$args - } - $ret=$LASTEXITCODE -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $ret -`:P+=` -# Support pipeline input -if ($MyInvocation.ExpectingInput) { - $input | & ${n} ${p} ${s} ${S}$args -} else { - & ${n} ${p} ${s} ${S}$args -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $LASTEXITCODE -`,P}function Ldt(t,e){return e.fs_.chmod(t,493)}function DY(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Vc.delimiter):Array.from(t),r={};for(let s=0;s`/mnt/${f.toLowerCase()}`):e[s];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[s]={win32:a,posix:n}}return r}NBe.exports=SY});var _Y=_((_tr,tve)=>{tve.exports=Ie("stream")});var sve=_((Htr,ive)=>{"use strict";function rve(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,s)}return r}function mmt(t){for(var e=1;e0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:"unshift",value:function(r){var s={data:r,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var s=this.head,a=""+s.data;s=s.next;)a+=r+s.data;return a}},{key:"concat",value:function(r){if(this.length===0)return pN.alloc(0);for(var s=pN.allocUnsafe(r>>>0),a=this.head,n=0;a;)vmt(a.data,s,n),n+=a.data.length,a=a.next;return s}},{key:"consume",value:function(r,s){var a;return rc.length?c.length:r;if(f===c.length?n+=c:n+=c.slice(0,r),r-=f,r===0){f===c.length?(++a,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=c.slice(f));break}++a}return this.length-=a,n}},{key:"_getBuffer",value:function(r){var s=pN.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(s),r-=a.data.length;a=a.next;){var c=a.data,f=r>c.length?c.length:r;if(c.copy(s,s.length-r,0,f),r-=f,r===0){f===c.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=c.slice(f));break}++n}return this.length-=n,s}},{key:Bmt,value:function(r,s){return HY(this,mmt({},s,{depth:0,customInspect:!1}))}}]),t}()});var GY=_((jtr,ave)=>{"use strict";function Smt(t,e){var r=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(jY,this,t)):process.nextTick(jY,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(n){!e&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(hN,r):(r._writableState.errorEmitted=!0,process.nextTick(ove,r,n)):process.nextTick(ove,r,n):e?(process.nextTick(hN,r),e(n)):process.nextTick(hN,r)}),this)}function ove(t,e){jY(t,e),hN(t)}function hN(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function Dmt(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function jY(t,e){t.emit("error",e)}function bmt(t,e){var r=t._readableState,s=t._writableState;r&&r.autoDestroy||s&&s.autoDestroy?t.destroy(e):t.emit("error",e)}ave.exports={destroy:Smt,undestroy:Dmt,errorOrDestroy:bmt}});var lg=_((Gtr,uve)=>{"use strict";var cve={};function Kc(t,e,r){r||(r=Error);function s(n,c,f){return typeof e=="string"?e:e(n,c,f)}class a extends r{constructor(c,f,p){super(s(c,f,p))}}a.prototype.name=r.name,a.prototype.code=t,cve[t]=a}function lve(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(s=>String(s)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function Pmt(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function xmt(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function kmt(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Kc("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Kc("ERR_INVALID_ARG_TYPE",function(t,e,r){let s;typeof e=="string"&&Pmt(e,"not ")?(s="must not be",e=e.replace(/^not /,"")):s="must be";let a;if(xmt(t," argument"))a=`The ${t} ${s} ${lve(e,"type")}`;else{let n=kmt(t,".")?"property":"argument";a=`The "${t}" ${n} ${s} ${lve(e,"type")}`}return a+=`. Received type ${typeof r}`,a},TypeError);Kc("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Kc("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Kc("ERR_STREAM_PREMATURE_CLOSE","Premature close");Kc("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Kc("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Kc("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Kc("ERR_STREAM_WRITE_AFTER_END","write after end");Kc("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Kc("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Kc("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");uve.exports.codes=cve});var qY=_((qtr,fve)=>{"use strict";var Qmt=lg().codes.ERR_INVALID_OPT_VALUE;function Tmt(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function Rmt(t,e,r,s){var a=Tmt(e,s,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=s?r:"highWaterMark";throw new Qmt(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}fve.exports={getHighWaterMark:Rmt}});var Ave=_((Wtr,WY)=>{typeof Object.create=="function"?WY.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:WY.exports=function(e,r){if(r){e.super_=r;var s=function(){};s.prototype=r.prototype,e.prototype=new s,e.prototype.constructor=e}}});var cg=_((Ytr,VY)=>{try{if(YY=Ie("util"),typeof YY.inherits!="function")throw"";VY.exports=YY.inherits}catch{VY.exports=Ave()}var YY});var hve=_((Vtr,pve)=>{pve.exports=Ie("util").deprecate});var zY=_((Jtr,Ive)=>{"use strict";Ive.exports=Vi;function dve(t){var e=this;this.next=null,this.entry=null,this.finish=function(){oyt(e,t)}}var Tw;Vi.WritableState=ZD;var Fmt={deprecate:hve()},mve=_Y(),dN=Ie("buffer").Buffer,Nmt=global.Uint8Array||function(){};function Omt(t){return dN.from(t)}function Lmt(t){return dN.isBuffer(t)||t instanceof Nmt}var KY=GY(),Mmt=qY(),Umt=Mmt.getHighWaterMark,ug=lg().codes,_mt=ug.ERR_INVALID_ARG_TYPE,Hmt=ug.ERR_METHOD_NOT_IMPLEMENTED,jmt=ug.ERR_MULTIPLE_CALLBACK,Gmt=ug.ERR_STREAM_CANNOT_PIPE,qmt=ug.ERR_STREAM_DESTROYED,Wmt=ug.ERR_STREAM_NULL_VALUES,Ymt=ug.ERR_STREAM_WRITE_AFTER_END,Vmt=ug.ERR_UNKNOWN_ENCODING,Rw=KY.errorOrDestroy;cg()(Vi,mve);function Jmt(){}function ZD(t,e,r){Tw=Tw||Ym(),t=t||{},typeof r!="boolean"&&(r=e instanceof Tw),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=Umt(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=t.decodeStrings===!1;this.decodeStrings=!s,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){tyt(e,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new dve(this)}ZD.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(ZD.prototype,"buffer",{get:Fmt.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var gN;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(gN=Function.prototype[Symbol.hasInstance],Object.defineProperty(Vi,Symbol.hasInstance,{value:function(e){return gN.call(this,e)?!0:this!==Vi?!1:e&&e._writableState instanceof ZD}})):gN=function(e){return e instanceof this};function Vi(t){Tw=Tw||Ym();var e=this instanceof Tw;if(!e&&!gN.call(Vi,this))return new Vi(t);this._writableState=new ZD(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),mve.call(this)}Vi.prototype.pipe=function(){Rw(this,new Gmt)};function Kmt(t,e){var r=new Ymt;Rw(t,r),process.nextTick(e,r)}function zmt(t,e,r,s){var a;return r===null?a=new Wmt:typeof r!="string"&&!e.objectMode&&(a=new _mt("chunk",["string","Buffer"],r)),a?(Rw(t,a),process.nextTick(s,a),!1):!0}Vi.prototype.write=function(t,e,r){var s=this._writableState,a=!1,n=!s.objectMode&&Lmt(t);return n&&!dN.isBuffer(t)&&(t=Omt(t)),typeof e=="function"&&(r=e,e=null),n?e="buffer":e||(e=s.defaultEncoding),typeof r!="function"&&(r=Jmt),s.ending?Kmt(this,r):(n||zmt(this,s,t,r))&&(s.pendingcb++,a=Zmt(this,s,n,t,e,r)),a};Vi.prototype.cork=function(){this._writableState.corked++};Vi.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&yve(this,t))};Vi.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new Vmt(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Vi.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function Xmt(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=dN.from(e,r)),e}Object.defineProperty(Vi.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function Zmt(t,e,r,s,a,n){if(!r){var c=Xmt(e,s,a);s!==c&&(r=!0,a="buffer",s=c)}var f=e.objectMode?1:s.length;e.length+=f;var p=e.length{"use strict";var ayt=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};wve.exports=dA;var Cve=$Y(),ZY=zY();cg()(dA,Cve);for(XY=ayt(ZY.prototype),mN=0;mN{var EN=Ie("buffer"),ah=EN.Buffer;function Bve(t,e){for(var r in t)e[r]=t[r]}ah.from&&ah.alloc&&ah.allocUnsafe&&ah.allocUnsafeSlow?vve.exports=EN:(Bve(EN,eV),eV.Buffer=Fw);function Fw(t,e,r){return ah(t,e,r)}Bve(ah,Fw);Fw.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return ah(t,e,r)};Fw.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var s=ah(t);return e!==void 0?typeof r=="string"?s.fill(e,r):s.fill(e):s.fill(0),s};Fw.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return ah(t)};Fw.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return EN.SlowBuffer(t)}});var nV=_(bve=>{"use strict";var rV=Sve().Buffer,Dve=rV.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function uyt(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function fyt(t){var e=uyt(t);if(typeof e!="string"&&(rV.isEncoding===Dve||!Dve(t)))throw new Error("Unknown encoding: "+t);return e||t}bve.StringDecoder=$D;function $D(t){this.encoding=fyt(t);var e;switch(this.encoding){case"utf16le":this.text=myt,this.end=yyt,e=4;break;case"utf8":this.fillLast=hyt,e=4;break;case"base64":this.text=Eyt,this.end=Iyt,e=3;break;default:this.write=Cyt,this.end=wyt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=rV.allocUnsafe(e)}$D.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function Ayt(t,e,r){var s=e.length-1;if(s=0?(a>0&&(t.lastNeed=a-1),a):--s=0?(a>0&&(t.lastNeed=a-2),a):--s=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function pyt(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"\uFFFD"}}function hyt(t){var e=this.lastTotal-this.lastNeed,r=pyt(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function gyt(t,e){var r=Ayt(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var s=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,s),t.toString("utf8",e,s)}function dyt(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function myt(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var s=r.charCodeAt(r.length-1);if(s>=55296&&s<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function yyt(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function Eyt(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function Iyt(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function Cyt(t){return t.toString(this.encoding)}function wyt(t){return t&&t.length?this.write(t):""}});var IN=_((Xtr,kve)=>{"use strict";var Pve=lg().codes.ERR_STREAM_PREMATURE_CLOSE;function Byt(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,s=new Array(r),a=0;a{"use strict";var CN;function fg(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var Dyt=IN(),Ag=Symbol("lastResolve"),Vm=Symbol("lastReject"),eb=Symbol("error"),wN=Symbol("ended"),Jm=Symbol("lastPromise"),iV=Symbol("handlePromise"),Km=Symbol("stream");function pg(t,e){return{value:t,done:e}}function byt(t){var e=t[Ag];if(e!==null){var r=t[Km].read();r!==null&&(t[Jm]=null,t[Ag]=null,t[Vm]=null,e(pg(r,!1)))}}function Pyt(t){process.nextTick(byt,t)}function xyt(t,e){return function(r,s){t.then(function(){if(e[wN]){r(pg(void 0,!0));return}e[iV](r,s)},s)}}var kyt=Object.getPrototypeOf(function(){}),Qyt=Object.setPrototypeOf((CN={get stream(){return this[Km]},next:function(){var e=this,r=this[eb];if(r!==null)return Promise.reject(r);if(this[wN])return Promise.resolve(pg(void 0,!0));if(this[Km].destroyed)return new Promise(function(c,f){process.nextTick(function(){e[eb]?f(e[eb]):c(pg(void 0,!0))})});var s=this[Jm],a;if(s)a=new Promise(xyt(s,this));else{var n=this[Km].read();if(n!==null)return Promise.resolve(pg(n,!1));a=new Promise(this[iV])}return this[Jm]=a,a}},fg(CN,Symbol.asyncIterator,function(){return this}),fg(CN,"return",function(){var e=this;return new Promise(function(r,s){e[Km].destroy(null,function(a){if(a){s(a);return}r(pg(void 0,!0))})})}),CN),kyt),Tyt=function(e){var r,s=Object.create(Qyt,(r={},fg(r,Km,{value:e,writable:!0}),fg(r,Ag,{value:null,writable:!0}),fg(r,Vm,{value:null,writable:!0}),fg(r,eb,{value:null,writable:!0}),fg(r,wN,{value:e._readableState.endEmitted,writable:!0}),fg(r,iV,{value:function(n,c){var f=s[Km].read();f?(s[Jm]=null,s[Ag]=null,s[Vm]=null,n(pg(f,!1))):(s[Ag]=n,s[Vm]=c)},writable:!0}),r));return s[Jm]=null,Dyt(e,function(a){if(a&&a.code!=="ERR_STREAM_PREMATURE_CLOSE"){var n=s[Vm];n!==null&&(s[Jm]=null,s[Ag]=null,s[Vm]=null,n(a)),s[eb]=a;return}var c=s[Ag];c!==null&&(s[Jm]=null,s[Ag]=null,s[Vm]=null,c(pg(void 0,!0))),s[wN]=!0}),e.on("readable",Pyt.bind(null,s)),s};Qve.exports=Tyt});var Ove=_(($tr,Nve)=>{"use strict";function Rve(t,e,r,s,a,n,c){try{var f=t[n](c),p=f.value}catch(h){r(h);return}f.done?e(p):Promise.resolve(p).then(s,a)}function Ryt(t){return function(){var e=this,r=arguments;return new Promise(function(s,a){var n=t.apply(e,r);function c(p){Rve(n,s,a,c,f,"next",p)}function f(p){Rve(n,s,a,c,f,"throw",p)}c(void 0)})}}function Fve(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,s)}return r}function Fyt(t){for(var e=1;e{"use strict";Yve.exports=Pn;var Nw;Pn.ReadableState=_ve;var trr=Ie("events").EventEmitter,Uve=function(e,r){return e.listeners(r).length},rb=_Y(),BN=Ie("buffer").Buffer,Myt=global.Uint8Array||function(){};function Uyt(t){return BN.from(t)}function _yt(t){return BN.isBuffer(t)||t instanceof Myt}var sV=Ie("util"),cn;sV&&sV.debuglog?cn=sV.debuglog("stream"):cn=function(){};var Hyt=sve(),AV=GY(),jyt=qY(),Gyt=jyt.getHighWaterMark,vN=lg().codes,qyt=vN.ERR_INVALID_ARG_TYPE,Wyt=vN.ERR_STREAM_PUSH_AFTER_EOF,Yyt=vN.ERR_METHOD_NOT_IMPLEMENTED,Vyt=vN.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Ow,oV,aV;cg()(Pn,rb);var tb=AV.errorOrDestroy,lV=["error","close","destroy","pause","resume"];function Jyt(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function _ve(t,e,r){Nw=Nw||Ym(),t=t||{},typeof r!="boolean"&&(r=e instanceof Nw),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=Gyt(this,t,"readableHighWaterMark",r),this.buffer=new Hyt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Ow||(Ow=nV().StringDecoder),this.decoder=new Ow(t.encoding),this.encoding=t.encoding)}function Pn(t){if(Nw=Nw||Ym(),!(this instanceof Pn))return new Pn(t);var e=this instanceof Nw;this._readableState=new _ve(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),rb.call(this)}Object.defineProperty(Pn.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}});Pn.prototype.destroy=AV.destroy;Pn.prototype._undestroy=AV.undestroy;Pn.prototype._destroy=function(t,e){e(t)};Pn.prototype.push=function(t,e){var r=this._readableState,s;return r.objectMode?s=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=BN.from(t,e),e=""),s=!0),Hve(this,t,e,!1,s)};Pn.prototype.unshift=function(t){return Hve(this,t,null,!0,!1)};function Hve(t,e,r,s,a){cn("readableAddChunk",e);var n=t._readableState;if(e===null)n.reading=!1,Xyt(t,n);else{var c;if(a||(c=Kyt(n,e)),c)tb(t,c);else if(n.objectMode||e&&e.length>0)if(typeof e!="string"&&!n.objectMode&&Object.getPrototypeOf(e)!==BN.prototype&&(e=Uyt(e)),s)n.endEmitted?tb(t,new Vyt):cV(t,n,e,!0);else if(n.ended)tb(t,new Wyt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?cV(t,n,e,!1):fV(t,n)):cV(t,n,e,!1)}else s||(n.reading=!1,fV(t,n))}return!n.ended&&(n.length=Lve?t=Lve:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function Mve(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=zyt(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}Pn.prototype.read=function(t){cn("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return cn("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?uV(this):SN(this),null;if(t=Mve(t,e),t===0&&e.ended)return e.length===0&&uV(this),null;var s=e.needReadable;cn("need readable",s),(e.length===0||e.length-t0?a=qve(t,e):a=null,a===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&uV(this)),a!==null&&this.emit("data",a),a};function Xyt(t,e){if(cn("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?SN(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,jve(t)))}}function SN(t){var e=t._readableState;cn("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(cn("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(jve,t))}function jve(t){var e=t._readableState;cn("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,pV(t)}function fV(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(Zyt,t,e))}function Zyt(t,e){for(;!e.reading&&!e.ended&&(e.length1&&Wve(s.pipes,t)!==-1)&&!h&&(cn("false write response, pause",s.awaitDrain),s.awaitDrain++),r.pause())}function S(N){cn("onerror",N),R(),t.removeListener("error",S),Uve(t,"error")===0&&tb(t,N)}Jyt(t,"error",S);function P(){t.removeListener("finish",I),R()}t.once("close",P);function I(){cn("onfinish"),t.removeListener("close",P),R()}t.once("finish",I);function R(){cn("unpipe"),r.unpipe(t)}return t.emit("pipe",r),s.flowing||(cn("pipe resume"),r.resume()),t};function $yt(t){return function(){var r=t._readableState;cn("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&Uve(t,"data")&&(r.flowing=!0,pV(t))}}Pn.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var s=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n0,s.flowing!==!1&&this.resume()):t==="readable"&&!s.endEmitted&&!s.readableListening&&(s.readableListening=s.needReadable=!0,s.flowing=!1,s.emittedReadable=!1,cn("on readable",s.length,s.reading),s.length?SN(this):s.reading||process.nextTick(eEt,this)),r};Pn.prototype.addListener=Pn.prototype.on;Pn.prototype.removeListener=function(t,e){var r=rb.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(Gve,this),r};Pn.prototype.removeAllListeners=function(t){var e=rb.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(Gve,this),e};function Gve(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function eEt(t){cn("readable nexttick read 0"),t.read(0)}Pn.prototype.resume=function(){var t=this._readableState;return t.flowing||(cn("resume"),t.flowing=!t.readableListening,tEt(this,t)),t.paused=!1,this};function tEt(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(rEt,t,e))}function rEt(t,e){cn("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),pV(t),e.flowing&&!e.reading&&t.read(0)}Pn.prototype.pause=function(){return cn("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(cn("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function pV(t){var e=t._readableState;for(cn("flow",e.flowing);e.flowing&&t.read()!==null;);}Pn.prototype.wrap=function(t){var e=this,r=this._readableState,s=!1;t.on("end",function(){if(cn("wrapped end"),r.decoder&&!r.ended){var c=r.decoder.end();c&&c.length&&e.push(c)}e.push(null)}),t.on("data",function(c){if(cn("wrapped data"),r.decoder&&(c=r.decoder.write(c)),!(r.objectMode&&c==null)&&!(!r.objectMode&&(!c||!c.length))){var f=e.push(c);f||(s=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]=="function"&&(this[a]=function(f){return function(){return t[f].apply(t,arguments)}}(a));for(var n=0;n=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function uV(t){var e=t._readableState;cn("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(nEt,e,t))}function nEt(t,e){if(cn("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(Pn.from=function(t,e){return aV===void 0&&(aV=Ove()),aV(Pn,t,e)});function Wve(t,e){for(var r=0,s=t.length;r{"use strict";Jve.exports=lh;var DN=lg().codes,iEt=DN.ERR_METHOD_NOT_IMPLEMENTED,sEt=DN.ERR_MULTIPLE_CALLBACK,oEt=DN.ERR_TRANSFORM_ALREADY_TRANSFORMING,aEt=DN.ERR_TRANSFORM_WITH_LENGTH_0,bN=Ym();cg()(lh,bN);function lEt(t,e){var r=this._transformState;r.transforming=!1;var s=r.writecb;if(s===null)return this.emit("error",new sEt);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),s(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length{"use strict";zve.exports=nb;var Kve=hV();cg()(nb,Kve);function nb(t){if(!(this instanceof nb))return new nb(t);Kve.call(this,t)}nb.prototype._transform=function(t,e,r){r(null,t)}});var rSe=_((srr,tSe)=>{"use strict";var gV;function uEt(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var eSe=lg().codes,fEt=eSe.ERR_MISSING_ARGS,AEt=eSe.ERR_STREAM_DESTROYED;function Zve(t){if(t)throw t}function pEt(t){return t.setHeader&&typeof t.abort=="function"}function hEt(t,e,r,s){s=uEt(s);var a=!1;t.on("close",function(){a=!0}),gV===void 0&&(gV=IN()),gV(t,{readable:e,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,pEt(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();s(c||new AEt("pipe"))}}}function $ve(t){t()}function gEt(t,e){return t.pipe(e)}function dEt(t){return!t.length||typeof t[t.length-1]!="function"?Zve:t.pop()}function mEt(){for(var t=arguments.length,e=new Array(t),r=0;r0;return hEt(c,p,h,function(E){a||(a=E),E&&n.forEach($ve),!p&&(n.forEach($ve),s(a))})});return e.reduce(gEt)}tSe.exports=mEt});var Lw=_((zc,sb)=>{var ib=Ie("stream");process.env.READABLE_STREAM==="disable"&&ib?(sb.exports=ib.Readable,Object.assign(sb.exports,ib),sb.exports.Stream=ib):(zc=sb.exports=$Y(),zc.Stream=ib||zc,zc.Readable=zc,zc.Writable=zY(),zc.Duplex=Ym(),zc.Transform=hV(),zc.PassThrough=Xve(),zc.finished=IN(),zc.pipeline=rSe())});var sSe=_((orr,iSe)=>{"use strict";var{Buffer:cf}=Ie("buffer"),nSe=Symbol.for("BufferList");function Ci(t){if(!(this instanceof Ci))return new Ci(t);Ci._init.call(this,t)}Ci._init=function(e){Object.defineProperty(this,nSe,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};Ci.prototype._new=function(e){return new Ci(e)};Ci.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let s=0;sthis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};Ci.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};Ci.prototype.copy=function(e,r,s,a){if((typeof s!="number"||s<0)&&(s=0),(typeof a!="number"||a>this.length)&&(a=this.length),s>=this.length||a<=0)return e||cf.alloc(0);let n=!!e,c=this._offset(s),f=a-s,p=f,h=n&&r||0,E=c[1];if(s===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:cf.concat(this._bufs,this.length);for(let C=0;CS)this._bufs[C].copy(e,h,E),h+=S;else{this._bufs[C].copy(e,h,E,E+p),h+=S;break}p-=S,E&&(E=0)}return e.length>h?e.slice(0,h):e};Ci.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let s=this._offset(e),a=this._offset(r),n=this._bufs.slice(s[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),s[1]!==0&&(n[0]=n[0].slice(s[1])),this._new(n)};Ci.prototype.toString=function(e,r,s){return this.slice(r,s).toString(e)};Ci.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};Ci.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let s=this._offset(e),a=s[0],n=s[1];for(;a=t.length){let p=c.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=c.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};Ci.prototype._match=function(t,e){if(this.length-t{"use strict";var dV=Lw().Duplex,yEt=cg(),ob=sSe();function ra(t){if(!(this instanceof ra))return new ra(t);if(typeof t=="function"){this._callback=t;let e=function(s){this._callback&&(this._callback(s),this._callback=null)}.bind(this);this.on("pipe",function(s){s.on("error",e)}),this.on("unpipe",function(s){s.removeListener("error",e)}),t=null}ob._init.call(this,t),dV.call(this)}yEt(ra,dV);Object.assign(ra.prototype,ob.prototype);ra.prototype._new=function(e){return new ra(e)};ra.prototype._write=function(e,r,s){this._appendBuffer(e),typeof s=="function"&&s()};ra.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};ra.prototype.end=function(e){dV.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};ra.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};ra.prototype._isBufferList=function(e){return e instanceof ra||e instanceof ob||ra.isBufferList(e)};ra.isBufferList=ob.isBufferList;PN.exports=ra;PN.exports.BufferListStream=ra;PN.exports.BufferList=ob});var EV=_(Uw=>{var EEt=Buffer.alloc,IEt="0000000000000000000",CEt="7777777777777777777",aSe=48,lSe=Buffer.from("ustar\0","binary"),wEt=Buffer.from("00","binary"),BEt=Buffer.from("ustar ","binary"),vEt=Buffer.from(" \0","binary"),SEt=parseInt("7777",8),ab=257,yV=263,DEt=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},bEt=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},PEt=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},cSe=function(t,e,r,s){for(;re?CEt.slice(0,e)+" ":IEt.slice(0,e-t.length)+t+" "};function xEt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],s=t.length-1;s>0;s--){var a=t[s];e?r.push(a):r.push(255-a)}var n=0,c=r.length;for(s=0;s=Math.pow(10,r)&&r++,e+r+t};Uw.decodeLongPath=function(t,e){return Mw(t,0,t.length,e)};Uw.encodePax=function(t){var e="";t.name&&(e+=mV(" path="+t.name+` -`)),t.linkname&&(e+=mV(" linkpath="+t.linkname+` -`));var r=t.pax;if(r)for(var s in r)e+=mV(" "+s+"="+r[s]+` -`);return Buffer.from(e)};Uw.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var a=r.indexOf("/");if(a===-1)return null;s+=s?"/"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(s)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(hg(t.mode&SEt,6),100),e.write(hg(t.uid,6),108),e.write(hg(t.gid,6),116),e.write(hg(t.size,11),124),e.write(hg(t.mtime.getTime()/1e3|0,11),136),e[156]=aSe+PEt(t.type),t.linkname&&e.write(t.linkname,157),lSe.copy(e,ab),wEt.copy(e,yV),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(hg(t.devmajor||0,6),329),e.write(hg(t.devminor||0,6),337),s&&e.write(s,345),e.write(hg(uSe(e),6),148),e)};Uw.decode=function(t,e,r){var s=t[156]===0?0:t[156]-aSe,a=Mw(t,0,100,e),n=gg(t,100,8),c=gg(t,108,8),f=gg(t,116,8),p=gg(t,124,12),h=gg(t,136,12),E=bEt(s),C=t[157]===0?null:Mw(t,157,100,e),S=Mw(t,265,32),P=Mw(t,297,32),I=gg(t,329,8),R=gg(t,337,8),N=uSe(t);if(N===8*32)return null;if(N!==gg(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(lSe.compare(t,ab,ab+6)===0)t[345]&&(a=Mw(t,345,155,e)+"/"+a);else if(!(BEt.compare(t,ab,ab+6)===0&&vEt.compare(t,yV,yV+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return s===0&&a&&a[a.length-1]==="/"&&(s=5),{name:a,mode:n,uid:c,gid:f,size:p,mtime:new Date(1e3*h),type:E,linkname:C,uname:S,gname:P,devmajor:I,devminor:R}}});var mSe=_((crr,dSe)=>{var ASe=Ie("util"),kEt=oSe(),lb=EV(),pSe=Lw().Writable,hSe=Lw().PassThrough,gSe=function(){},fSe=function(t){return t&=511,t&&512-t},QEt=function(t,e){var r=new xN(t,e);return r.end(),r},TEt=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},xN=function(t,e){this._parent=t,this.offset=e,hSe.call(this,{autoDestroy:!1})};ASe.inherits(xN,hSe);xN.prototype.destroy=function(t){this._parent.destroy(t)};var ch=function(t){if(!(this instanceof ch))return new ch(t);pSe.call(this,t),t=t||{},this._offset=0,this._buffer=kEt(),this._missing=0,this._partial=!1,this._onparse=gSe,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,s=function(){e._continue()},a=function(S){if(e._locked=!1,S)return e.destroy(S);e._stream||s()},n=function(){e._stream=null;var S=fSe(e._header.size);S?e._parse(S,c):e._parse(512,C),e._locked||s()},c=function(){e._buffer.consume(fSe(e._header.size)),e._parse(512,C),s()},f=function(){var S=e._header.size;e._paxGlobal=lb.decodePax(r.slice(0,S)),r.consume(S),n()},p=function(){var S=e._header.size;e._pax=lb.decodePax(r.slice(0,S)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(S),n()},h=function(){var S=e._header.size;this._gnuLongPath=lb.decodeLongPath(r.slice(0,S),t.filenameEncoding),r.consume(S),n()},E=function(){var S=e._header.size;this._gnuLongLinkPath=lb.decodeLongPath(r.slice(0,S),t.filenameEncoding),r.consume(S),n()},C=function(){var S=e._offset,P;try{P=e._header=lb.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(I){e.emit("error",I)}if(r.consume(512),!P){e._parse(512,C),s();return}if(P.type==="gnu-long-path"){e._parse(P.size,h),s();return}if(P.type==="gnu-long-link-path"){e._parse(P.size,E),s();return}if(P.type==="pax-global-header"){e._parse(P.size,f),s();return}if(P.type==="pax-header"){e._parse(P.size,p),s();return}if(e._gnuLongPath&&(P.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(P.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=P=TEt(P,e._pax),e._pax=null),e._locked=!0,!P.size||P.type==="directory"){e._parse(512,C),e.emit("entry",P,QEt(e,S),a);return}e._stream=new xN(e,S),e.emit("entry",P,e._stream,a),e._parse(P.size,n),s()};this._onheader=C,this._parse(512,C)};ASe.inherits(ch,pSe);ch.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};ch.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};ch.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=gSe,this._overflow?this._write(this._overflow,void 0,t):t()}};ch.prototype._write=function(t,e,r){if(!this._destroyed){var s=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.lengthn&&(c=t.slice(n),t=t.slice(0,n)),s?s.end(t):a.append(t),this._overflow=c,this._onparse()}};ch.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};dSe.exports=ch});var ESe=_((urr,ySe)=>{ySe.exports=Ie("fs").constants||Ie("constants")});var vSe=_((frr,BSe)=>{var _w=ESe(),ISe=cH(),QN=cg(),REt=Buffer.alloc,CSe=Lw().Readable,Hw=Lw().Writable,FEt=Ie("string_decoder").StringDecoder,kN=EV(),NEt=parseInt("755",8),OEt=parseInt("644",8),wSe=REt(1024),CV=function(){},IV=function(t,e){e&=511,e&&t.push(wSe.slice(0,512-e))};function LEt(t){switch(t&_w.S_IFMT){case _w.S_IFBLK:return"block-device";case _w.S_IFCHR:return"character-device";case _w.S_IFDIR:return"directory";case _w.S_IFIFO:return"fifo";case _w.S_IFLNK:return"symlink"}return"file"}var TN=function(t){Hw.call(this),this.written=0,this._to=t,this._destroyed=!1};QN(TN,Hw);TN.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};TN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var RN=function(){Hw.call(this),this.linkname="",this._decoder=new FEt("utf-8"),this._destroyed=!1};QN(RN,Hw);RN.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};RN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var ub=function(){Hw.call(this),this._destroyed=!1};QN(ub,Hw);ub.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};ub.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var mA=function(t){if(!(this instanceof mA))return new mA(t);CSe.call(this,t),this._drain=CV,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};QN(mA,CSe);mA.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=CV);var s=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=LEt(t.mode)),t.mode||(t.mode=t.type==="directory"?NEt:OEt),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var a=this.push(e);return IV(s,t.size),a?process.nextTick(r):this._drain=r,new ub}if(t.type==="symlink"&&!t.linkname){var n=new RN;return ISe(n,function(f){if(f)return s.destroy(),r(f);t.linkname=n.linkname,s._encode(t),r()}),n}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new ub;var c=new TN(this);return this._stream=c,ISe(c,function(f){if(s._stream=null,f)return s.destroy(),r(f);if(c.written!==t.size)return s.destroy(),r(new Error("size mismatch"));IV(s,t.size),s._finalizing&&s.finalize(),r()}),c}};mA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(wSe),this.push(null))};mA.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};mA.prototype._encode=function(t){if(!t.pax){var e=kN.encode(t);if(e){this.push(e);return}}this._encodePax(t)};mA.prototype._encodePax=function(t){var e=kN.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(kN.encode(r)),this.push(e),IV(this,e.length),r.size=t.size,r.type=t.type,this.push(kN.encode(r))};mA.prototype._read=function(t){var e=this._drain;this._drain=CV,e()};BSe.exports=mA});var SSe=_(wV=>{wV.extract=mSe();wV.pack=vSe()});var MSe=_(Ta=>{"use strict";var zEt=Ta&&Ta.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ta,"__esModule",{value:!0});Ta.Minipass=Ta.isWritable=Ta.isReadable=Ta.isStream=void 0;var RSe=typeof process=="object"&&process?process:{stdout:null,stderr:null},FV=Ie("node:events"),LSe=zEt(Ie("node:stream")),XEt=Ie("node:string_decoder"),ZEt=t=>!!t&&typeof t=="object"&&(t instanceof jN||t instanceof LSe.default||(0,Ta.isReadable)(t)||(0,Ta.isWritable)(t));Ta.isStream=ZEt;var $Et=t=>!!t&&typeof t=="object"&&t instanceof FV.EventEmitter&&typeof t.pipe=="function"&&t.pipe!==LSe.default.Writable.prototype.pipe;Ta.isReadable=$Et;var eIt=t=>!!t&&typeof t=="object"&&t instanceof FV.EventEmitter&&typeof t.write=="function"&&typeof t.end=="function";Ta.isWritable=eIt;var uh=Symbol("EOF"),fh=Symbol("maybeEmitEnd"),dg=Symbol("emittedEnd"),ON=Symbol("emittingEnd"),fb=Symbol("emittedError"),LN=Symbol("closed"),FSe=Symbol("read"),MN=Symbol("flush"),NSe=Symbol("flushChunk"),uf=Symbol("encoding"),Gw=Symbol("decoder"),Ks=Symbol("flowing"),Ab=Symbol("paused"),qw=Symbol("resume"),zs=Symbol("buffer"),Qa=Symbol("pipes"),Xs=Symbol("bufferLength"),PV=Symbol("bufferPush"),UN=Symbol("bufferShift"),na=Symbol("objectMode"),ts=Symbol("destroyed"),xV=Symbol("error"),kV=Symbol("emitData"),OSe=Symbol("emitEnd"),QV=Symbol("emitEnd2"),EA=Symbol("async"),TV=Symbol("abort"),_N=Symbol("aborted"),pb=Symbol("signal"),zm=Symbol("dataListeners"),rc=Symbol("discarded"),hb=t=>Promise.resolve().then(t),tIt=t=>t(),rIt=t=>t==="end"||t==="finish"||t==="prefinish",nIt=t=>t instanceof ArrayBuffer||!!t&&typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,iIt=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),HN=class{src;dest;opts;ondrain;constructor(e,r,s){this.src=e,this.dest=r,this.opts=s,this.ondrain=()=>e[qw](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},RV=class extends HN{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,r,s){super(e,r,s),this.proxyErrors=a=>r.emit("error",a),e.on("error",this.proxyErrors)}},sIt=t=>!!t.objectMode,oIt=t=>!t.objectMode&&!!t.encoding&&t.encoding!=="buffer",jN=class extends FV.EventEmitter{[Ks]=!1;[Ab]=!1;[Qa]=[];[zs]=[];[na];[uf];[EA];[Gw];[uh]=!1;[dg]=!1;[ON]=!1;[LN]=!1;[fb]=null;[Xs]=0;[ts]=!1;[pb];[_N]=!1;[zm]=0;[rc]=!1;writable=!0;readable=!0;constructor(...e){let r=e[0]||{};if(super(),r.objectMode&&typeof r.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");sIt(r)?(this[na]=!0,this[uf]=null):oIt(r)?(this[uf]=r.encoding,this[na]=!1):(this[na]=!1,this[uf]=null),this[EA]=!!r.async,this[Gw]=this[uf]?new XEt.StringDecoder(this[uf]):null,r&&r.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[zs]}),r&&r.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[Qa]});let{signal:s}=r;s&&(this[pb]=s,s.aborted?this[TV]():s.addEventListener("abort",()=>this[TV]()))}get bufferLength(){return this[Xs]}get encoding(){return this[uf]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[na]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[EA]}set async(e){this[EA]=this[EA]||!!e}[TV](){this[_N]=!0,this.emit("abort",this[pb]?.reason),this.destroy(this[pb]?.reason)}get aborted(){return this[_N]}set aborted(e){}write(e,r,s){if(this[_N])return!1;if(this[uh])throw new Error("write after end");if(this[ts])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let a=this[EA]?hb:tIt;if(!this[na]&&!Buffer.isBuffer(e)){if(iIt(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(nIt(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[na]?(this[Ks]&&this[Xs]!==0&&this[MN](!0),this[Ks]?this.emit("data",e):this[PV](e),this[Xs]!==0&&this.emit("readable"),s&&a(s),this[Ks]):e.length?(typeof e=="string"&&!(r===this[uf]&&!this[Gw]?.lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[uf]&&(e=this[Gw].write(e)),this[Ks]&&this[Xs]!==0&&this[MN](!0),this[Ks]?this.emit("data",e):this[PV](e),this[Xs]!==0&&this.emit("readable"),s&&a(s),this[Ks]):(this[Xs]!==0&&this.emit("readable"),s&&a(s),this[Ks])}read(e){if(this[ts])return null;if(this[rc]=!1,this[Xs]===0||e===0||e&&e>this[Xs])return this[fh](),null;this[na]&&(e=null),this[zs].length>1&&!this[na]&&(this[zs]=[this[uf]?this[zs].join(""):Buffer.concat(this[zs],this[Xs])]);let r=this[FSe](e||null,this[zs][0]);return this[fh](),r}[FSe](e,r){if(this[na])this[UN]();else{let s=r;e===s.length||e===null?this[UN]():typeof s=="string"?(this[zs][0]=s.slice(e),r=s.slice(0,e),this[Xs]-=e):(this[zs][0]=s.subarray(e),r=s.subarray(0,e),this[Xs]-=e)}return this.emit("data",r),!this[zs].length&&!this[uh]&&this.emit("drain"),r}end(e,r,s){return typeof e=="function"&&(s=e,e=void 0),typeof r=="function"&&(s=r,r="utf8"),e!==void 0&&this.write(e,r),s&&this.once("end",s),this[uh]=!0,this.writable=!1,(this[Ks]||!this[Ab])&&this[fh](),this}[qw](){this[ts]||(!this[zm]&&!this[Qa].length&&(this[rc]=!0),this[Ab]=!1,this[Ks]=!0,this.emit("resume"),this[zs].length?this[MN]():this[uh]?this[fh]():this.emit("drain"))}resume(){return this[qw]()}pause(){this[Ks]=!1,this[Ab]=!0,this[rc]=!1}get destroyed(){return this[ts]}get flowing(){return this[Ks]}get paused(){return this[Ab]}[PV](e){this[na]?this[Xs]+=1:this[Xs]+=e.length,this[zs].push(e)}[UN](){return this[na]?this[Xs]-=1:this[Xs]-=this[zs][0].length,this[zs].shift()}[MN](e=!1){do;while(this[NSe](this[UN]())&&this[zs].length);!e&&!this[zs].length&&!this[uh]&&this.emit("drain")}[NSe](e){return this.emit("data",e),this[Ks]}pipe(e,r){if(this[ts])return e;this[rc]=!1;let s=this[dg];return r=r||{},e===RSe.stdout||e===RSe.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&e.end():(this[Qa].push(r.proxyErrors?new RV(this,e,r):new HN(this,e,r)),this[EA]?hb(()=>this[qw]()):this[qw]()),e}unpipe(e){let r=this[Qa].find(s=>s.dest===e);r&&(this[Qa].length===1?(this[Ks]&&this[zm]===0&&(this[Ks]=!1),this[Qa]=[]):this[Qa].splice(this[Qa].indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let s=super.on(e,r);if(e==="data")this[rc]=!1,this[zm]++,!this[Qa].length&&!this[Ks]&&this[qw]();else if(e==="readable"&&this[Xs]!==0)super.emit("readable");else if(rIt(e)&&this[dg])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[fb]){let a=r;this[EA]?hb(()=>a.call(this,this[fb])):a.call(this,this[fb])}return s}removeListener(e,r){return this.off(e,r)}off(e,r){let s=super.off(e,r);return e==="data"&&(this[zm]=this.listeners("data").length,this[zm]===0&&!this[rc]&&!this[Qa].length&&(this[Ks]=!1)),s}removeAllListeners(e){let r=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[zm]=0,!this[rc]&&!this[Qa].length&&(this[Ks]=!1)),r}get emittedEnd(){return this[dg]}[fh](){!this[ON]&&!this[dg]&&!this[ts]&&this[zs].length===0&&this[uh]&&(this[ON]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[LN]&&this.emit("close"),this[ON]=!1)}emit(e,...r){let s=r[0];if(e!=="error"&&e!=="close"&&e!==ts&&this[ts])return!1;if(e==="data")return!this[na]&&!s?!1:this[EA]?(hb(()=>this[kV](s)),!0):this[kV](s);if(e==="end")return this[OSe]();if(e==="close"){if(this[LN]=!0,!this[dg]&&!this[ts])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[fb]=s,super.emit(xV,s);let n=!this[pb]||this.listeners("error").length?super.emit("error",s):!1;return this[fh](),n}else if(e==="resume"){let n=super.emit("resume");return this[fh](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,...r);return this[fh](),a}[kV](e){for(let s of this[Qa])s.dest.write(e)===!1&&this.pause();let r=this[rc]?!1:super.emit("data",e);return this[fh](),r}[OSe](){return this[dg]?!1:(this[dg]=!0,this.readable=!1,this[EA]?(hb(()=>this[QV]()),!0):this[QV]())}[QV](){if(this[Gw]){let r=this[Gw].end();if(r){for(let s of this[Qa])s.dest.write(r);this[rc]||super.emit("data",r)}}for(let r of this[Qa])r.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[na]||(e.dataLength=0);let r=this.promise();return this.on("data",s=>{e.push(s),this[na]||(e.dataLength+=s.length)}),await r,e}async concat(){if(this[na])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[uf]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,r)=>{this.on(ts,()=>r(new Error("stream destroyed"))),this.on("error",s=>r(s)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[rc]=!1;let e=!1,r=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return r();let a=this.read();if(a!==null)return Promise.resolve({done:!1,value:a});if(this[uh])return r();let n,c,f=C=>{this.off("data",p),this.off("end",h),this.off(ts,E),r(),c(C)},p=C=>{this.off("error",f),this.off("end",h),this.off(ts,E),this.pause(),n({value:C,done:!!this[uh]})},h=()=>{this.off("error",f),this.off("data",p),this.off(ts,E),r(),n({done:!0,value:void 0})},E=()=>f(new Error("stream destroyed"));return new Promise((C,S)=>{c=S,n=C,this.once(ts,E),this.once("error",f),this.once("end",h),this.once("data",p)})},throw:r,return:r,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[rc]=!1;let e=!1,r=()=>(this.pause(),this.off(xV,r),this.off(ts,r),this.off("end",r),e=!0,{done:!0,value:void 0}),s=()=>{if(e)return r();let a=this.read();return a===null?r():{done:!1,value:a}};return this.once("end",r),this.once(xV,r),this.once(ts,r),{next:s,throw:r,return:r,[Symbol.iterator](){return this}}}destroy(e){if(this[ts])return e?this.emit("error",e):this.emit(ts),this;this[ts]=!0,this[rc]=!0,this[zs].length=0,this[Xs]=0;let r=this;return typeof r.close=="function"&&!this[LN]&&r.close(),e?this.emit("error",e):this.emit(ts),this}static get isStream(){return Ta.isStream}};Ta.Minipass=jN});var HSe=_((Trr,IA)=>{"use strict";var db=Ie("crypto"),{Minipass:aIt}=MSe(),OV=["sha512","sha384","sha256"],MV=["sha512"],lIt=/^[a-z0-9+/]+(?:=?=?)$/i,cIt=/^([a-z0-9]+)-([^?]+)([?\S*]*)$/,uIt=/^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)?$/,fIt=/^[\x21-\x7E]+$/,mb=t=>t?.length?`?${t.join("?")}`:"",LV=class extends aIt{#t;#r;#i;constructor(e){super(),this.size=0,this.opts=e,this.#e(),e?.algorithms?this.algorithms=[...e.algorithms]:this.algorithms=[...MV],this.algorithm!==null&&!this.algorithms.includes(this.algorithm)&&this.algorithms.push(this.algorithm),this.hashes=this.algorithms.map(db.createHash)}#e(){this.sri=this.opts?.integrity?nc(this.opts?.integrity,this.opts):null,this.expectedSize=this.opts?.size,this.sri?this.sri.isHash?(this.goodSri=!0,this.algorithm=this.sri.algorithm):(this.goodSri=!this.sri.isEmpty(),this.algorithm=this.sri.pickAlgorithm(this.opts)):this.algorithm=null,this.digests=this.goodSri?this.sri[this.algorithm]:null,this.optString=mb(this.opts?.options)}on(e,r){return e==="size"&&this.#r?r(this.#r):e==="integrity"&&this.#t?r(this.#t):e==="verified"&&this.#i?r(this.#i):super.on(e,r)}emit(e,r){return e==="end"&&this.#n(),super.emit(e,r)}write(e){return this.size+=e.length,this.hashes.forEach(r=>r.update(e)),super.write(e)}#n(){this.goodSri||this.#e();let e=nc(this.hashes.map((s,a)=>`${this.algorithms[a]}-${s.digest("base64")}${this.optString}`).join(" "),this.opts),r=this.goodSri&&e.match(this.sri,this.opts);if(typeof this.expectedSize=="number"&&this.size!==this.expectedSize){let s=new Error(`stream size mismatch when checking ${this.sri}. - Wanted: ${this.expectedSize} - Found: ${this.size}`);s.code="EBADSIZE",s.found=this.size,s.expected=this.expectedSize,s.sri=this.sri,this.emit("error",s)}else if(this.sri&&!r){let s=new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${e}. (${this.size} bytes)`);s.code="EINTEGRITY",s.found=e,s.expected=this.digests,s.algorithm=this.algorithm,s.sri=this.sri,this.emit("error",s)}else this.#r=this.size,this.emit("size",this.size),this.#t=e,this.emit("integrity",e),r&&(this.#i=r,this.emit("verified",r))}},Ah=class{get isHash(){return!0}constructor(e,r){let s=r?.strict;this.source=e.trim(),this.digest="",this.algorithm="",this.options=[];let a=this.source.match(s?uIt:cIt);if(!a||s&&!OV.includes(a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];n&&(this.options=n.slice(1).split("?"))}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}match(e,r){let s=nc(e,r);if(!s)return!1;if(s.isIntegrity){let a=s.pickAlgorithm(r,[this.algorithm]);if(!a)return!1;let n=s[a].find(c=>c.digest===this.digest);return n||!1}return s.digest===this.digest?s:!1}toString(e){return e?.strict&&!(OV.includes(this.algorithm)&&this.digest.match(lIt)&&this.options.every(r=>r.match(fIt)))?"":`${this.algorithm}-${this.digest}${mb(this.options)}`}};function USe(t,e,r,s){let a=t!=="",n=!1,c="",f=s.length-1;for(let h=0;hs[a].find(c=>n.digest===c.digest)))throw new Error("hashes do not match, cannot update integrity")}else this[a]=s[a]}match(e,r){let s=nc(e,r);if(!s)return!1;let a=s.pickAlgorithm(r,Object.keys(this));return!!a&&this[a]&&s[a]&&this[a].find(n=>s[a].find(c=>n.digest===c.digest))||!1}pickAlgorithm(e,r){let s=e?.pickAlgorithm||EIt,a=Object.keys(this).filter(n=>r?.length?r.includes(n):!0);return a.length?a.reduce((n,c)=>s(n,c)||n):null}};IA.exports.parse=nc;function nc(t,e){if(!t)return null;if(typeof t=="string")return NV(t,e);if(t.algorithm&&t.digest){let r=new Xm;return r[t.algorithm]=[t],NV(gb(r,e),e)}else return NV(gb(t,e),e)}function NV(t,e){if(e?.single)return new Ah(t,e);let r=t.trim().split(/\s+/).reduce((s,a)=>{let n=new Ah(a,e);if(n.algorithm&&n.digest){let c=n.algorithm;s[c]||(s[c]=[]),s[c].push(n)}return s},new Xm);return r.isEmpty()?null:r}IA.exports.stringify=gb;function gb(t,e){return t.algorithm&&t.digest?Ah.prototype.toString.call(t,e):typeof t=="string"?gb(nc(t,e),e):Xm.prototype.toString.call(t,e)}IA.exports.fromHex=AIt;function AIt(t,e,r){let s=mb(r?.options);return nc(`${e}-${Buffer.from(t,"hex").toString("base64")}${s}`,r)}IA.exports.fromData=pIt;function pIt(t,e){let r=e?.algorithms||[...MV],s=mb(e?.options);return r.reduce((a,n)=>{let c=db.createHash(n).update(t).digest("base64"),f=new Ah(`${n}-${c}${s}`,e);if(f.algorithm&&f.digest){let p=f.algorithm;a[p]||(a[p]=[]),a[p].push(f)}return a},new Xm)}IA.exports.fromStream=hIt;function hIt(t,e){let r=UV(e);return new Promise((s,a)=>{t.pipe(r),t.on("error",a),r.on("error",a);let n;r.on("integrity",c=>{n=c}),r.on("end",()=>s(n)),r.resume()})}IA.exports.checkData=gIt;function gIt(t,e,r){if(e=nc(e,r),!e||!Object.keys(e).length){if(r?.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let s=e.pickAlgorithm(r),a=db.createHash(s).update(t).digest("base64"),n=nc({algorithm:s,digest:a}),c=n.match(e,r);if(r=r||{},c||!r.error)return c;if(typeof r.size=="number"&&t.length!==r.size){let f=new Error(`data size mismatch when checking ${e}. - Wanted: ${r.size} - Found: ${t.length}`);throw f.code="EBADSIZE",f.found=t.length,f.expected=r.size,f.sri=e,f}else{let f=new Error(`Integrity checksum failed when using ${s}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw f.code="EINTEGRITY",f.found=n,f.expected=e,f.algorithm=s,f.sri=e,f}}IA.exports.checkStream=dIt;function dIt(t,e,r){if(r=r||Object.create(null),r.integrity=e,e=nc(e,r),!e||!Object.keys(e).length)return Promise.reject(Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"}));let s=UV(r);return new Promise((a,n)=>{t.pipe(s),t.on("error",n),s.on("error",n);let c;s.on("verified",f=>{c=f}),s.on("end",()=>a(c)),s.resume()})}IA.exports.integrityStream=UV;function UV(t=Object.create(null)){return new LV(t)}IA.exports.create=mIt;function mIt(t){let e=t?.algorithms||[...MV],r=mb(t?.options),s=e.map(db.createHash);return{update:function(a,n){return s.forEach(c=>c.update(a,n)),this},digest:function(){return e.reduce((n,c)=>{let f=s.shift().digest("base64"),p=new Ah(`${c}-${f}${r}`,t);if(p.algorithm&&p.digest){let h=p.algorithm;n[h]||(n[h]=[]),n[h].push(p)}return n},new Xm)}}}var yIt=db.getHashes(),_Se=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>yIt.includes(t));function EIt(t,e){return _Se.indexOf(t.toLowerCase())>=_Se.indexOf(e.toLowerCase())?t:e}});var _V=_(mg=>{"use strict";Object.defineProperty(mg,"__esModule",{value:!0});mg.Signature=mg.Envelope=void 0;mg.Envelope={fromJSON(t){return{payload:GN(t.payload)?Buffer.from(jSe(t.payload)):Buffer.alloc(0),payloadType:GN(t.payloadType)?globalThis.String(t.payloadType):"",signatures:globalThis.Array.isArray(t?.signatures)?t.signatures.map(e=>mg.Signature.fromJSON(e)):[]}},toJSON(t){let e={};return t.payload.length!==0&&(e.payload=GSe(t.payload)),t.payloadType!==""&&(e.payloadType=t.payloadType),t.signatures?.length&&(e.signatures=t.signatures.map(r=>mg.Signature.toJSON(r))),e}};mg.Signature={fromJSON(t){return{sig:GN(t.sig)?Buffer.from(jSe(t.sig)):Buffer.alloc(0),keyid:GN(t.keyid)?globalThis.String(t.keyid):""}},toJSON(t){let e={};return t.sig.length!==0&&(e.sig=GSe(t.sig)),t.keyid!==""&&(e.keyid=t.keyid),e}};function jSe(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function GSe(t){return globalThis.Buffer.from(t).toString("base64")}function GN(t){return t!=null}});var WSe=_(qN=>{"use strict";Object.defineProperty(qN,"__esModule",{value:!0});qN.Timestamp=void 0;qN.Timestamp={fromJSON(t){return{seconds:qSe(t.seconds)?globalThis.String(t.seconds):"0",nanos:qSe(t.nanos)?globalThis.Number(t.nanos):0}},toJSON(t){let e={};return t.seconds!=="0"&&(e.seconds=t.seconds),t.nanos!==0&&(e.nanos=Math.round(t.nanos)),e}};function qSe(t){return t!=null}});var Ww=_(Ur=>{"use strict";Object.defineProperty(Ur,"__esModule",{value:!0});Ur.TimeRange=Ur.X509CertificateChain=Ur.SubjectAlternativeName=Ur.X509Certificate=Ur.DistinguishedName=Ur.ObjectIdentifierValuePair=Ur.ObjectIdentifier=Ur.PublicKeyIdentifier=Ur.PublicKey=Ur.RFC3161SignedTimestamp=Ur.LogId=Ur.MessageSignature=Ur.HashOutput=Ur.SubjectAlternativeNameType=Ur.PublicKeyDetails=Ur.HashAlgorithm=void 0;Ur.hashAlgorithmFromJSON=VSe;Ur.hashAlgorithmToJSON=JSe;Ur.publicKeyDetailsFromJSON=KSe;Ur.publicKeyDetailsToJSON=zSe;Ur.subjectAlternativeNameTypeFromJSON=XSe;Ur.subjectAlternativeNameTypeToJSON=ZSe;var IIt=WSe(),yl;(function(t){t[t.HASH_ALGORITHM_UNSPECIFIED=0]="HASH_ALGORITHM_UNSPECIFIED",t[t.SHA2_256=1]="SHA2_256",t[t.SHA2_384=2]="SHA2_384",t[t.SHA2_512=3]="SHA2_512",t[t.SHA3_256=4]="SHA3_256",t[t.SHA3_384=5]="SHA3_384"})(yl||(Ur.HashAlgorithm=yl={}));function VSe(t){switch(t){case 0:case"HASH_ALGORITHM_UNSPECIFIED":return yl.HASH_ALGORITHM_UNSPECIFIED;case 1:case"SHA2_256":return yl.SHA2_256;case 2:case"SHA2_384":return yl.SHA2_384;case 3:case"SHA2_512":return yl.SHA2_512;case 4:case"SHA3_256":return yl.SHA3_256;case 5:case"SHA3_384":return yl.SHA3_384;default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum HashAlgorithm")}}function JSe(t){switch(t){case yl.HASH_ALGORITHM_UNSPECIFIED:return"HASH_ALGORITHM_UNSPECIFIED";case yl.SHA2_256:return"SHA2_256";case yl.SHA2_384:return"SHA2_384";case yl.SHA2_512:return"SHA2_512";case yl.SHA3_256:return"SHA3_256";case yl.SHA3_384:return"SHA3_384";default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum HashAlgorithm")}}var sn;(function(t){t[t.PUBLIC_KEY_DETAILS_UNSPECIFIED=0]="PUBLIC_KEY_DETAILS_UNSPECIFIED",t[t.PKCS1_RSA_PKCS1V5=1]="PKCS1_RSA_PKCS1V5",t[t.PKCS1_RSA_PSS=2]="PKCS1_RSA_PSS",t[t.PKIX_RSA_PKCS1V5=3]="PKIX_RSA_PKCS1V5",t[t.PKIX_RSA_PSS=4]="PKIX_RSA_PSS",t[t.PKIX_RSA_PKCS1V15_2048_SHA256=9]="PKIX_RSA_PKCS1V15_2048_SHA256",t[t.PKIX_RSA_PKCS1V15_3072_SHA256=10]="PKIX_RSA_PKCS1V15_3072_SHA256",t[t.PKIX_RSA_PKCS1V15_4096_SHA256=11]="PKIX_RSA_PKCS1V15_4096_SHA256",t[t.PKIX_RSA_PSS_2048_SHA256=16]="PKIX_RSA_PSS_2048_SHA256",t[t.PKIX_RSA_PSS_3072_SHA256=17]="PKIX_RSA_PSS_3072_SHA256",t[t.PKIX_RSA_PSS_4096_SHA256=18]="PKIX_RSA_PSS_4096_SHA256",t[t.PKIX_ECDSA_P256_HMAC_SHA_256=6]="PKIX_ECDSA_P256_HMAC_SHA_256",t[t.PKIX_ECDSA_P256_SHA_256=5]="PKIX_ECDSA_P256_SHA_256",t[t.PKIX_ECDSA_P384_SHA_384=12]="PKIX_ECDSA_P384_SHA_384",t[t.PKIX_ECDSA_P521_SHA_512=13]="PKIX_ECDSA_P521_SHA_512",t[t.PKIX_ED25519=7]="PKIX_ED25519",t[t.PKIX_ED25519_PH=8]="PKIX_ED25519_PH",t[t.LMS_SHA256=14]="LMS_SHA256",t[t.LMOTS_SHA256=15]="LMOTS_SHA256"})(sn||(Ur.PublicKeyDetails=sn={}));function KSe(t){switch(t){case 0:case"PUBLIC_KEY_DETAILS_UNSPECIFIED":return sn.PUBLIC_KEY_DETAILS_UNSPECIFIED;case 1:case"PKCS1_RSA_PKCS1V5":return sn.PKCS1_RSA_PKCS1V5;case 2:case"PKCS1_RSA_PSS":return sn.PKCS1_RSA_PSS;case 3:case"PKIX_RSA_PKCS1V5":return sn.PKIX_RSA_PKCS1V5;case 4:case"PKIX_RSA_PSS":return sn.PKIX_RSA_PSS;case 9:case"PKIX_RSA_PKCS1V15_2048_SHA256":return sn.PKIX_RSA_PKCS1V15_2048_SHA256;case 10:case"PKIX_RSA_PKCS1V15_3072_SHA256":return sn.PKIX_RSA_PKCS1V15_3072_SHA256;case 11:case"PKIX_RSA_PKCS1V15_4096_SHA256":return sn.PKIX_RSA_PKCS1V15_4096_SHA256;case 16:case"PKIX_RSA_PSS_2048_SHA256":return sn.PKIX_RSA_PSS_2048_SHA256;case 17:case"PKIX_RSA_PSS_3072_SHA256":return sn.PKIX_RSA_PSS_3072_SHA256;case 18:case"PKIX_RSA_PSS_4096_SHA256":return sn.PKIX_RSA_PSS_4096_SHA256;case 6:case"PKIX_ECDSA_P256_HMAC_SHA_256":return sn.PKIX_ECDSA_P256_HMAC_SHA_256;case 5:case"PKIX_ECDSA_P256_SHA_256":return sn.PKIX_ECDSA_P256_SHA_256;case 12:case"PKIX_ECDSA_P384_SHA_384":return sn.PKIX_ECDSA_P384_SHA_384;case 13:case"PKIX_ECDSA_P521_SHA_512":return sn.PKIX_ECDSA_P521_SHA_512;case 7:case"PKIX_ED25519":return sn.PKIX_ED25519;case 8:case"PKIX_ED25519_PH":return sn.PKIX_ED25519_PH;case 14:case"LMS_SHA256":return sn.LMS_SHA256;case 15:case"LMOTS_SHA256":return sn.LMOTS_SHA256;default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum PublicKeyDetails")}}function zSe(t){switch(t){case sn.PUBLIC_KEY_DETAILS_UNSPECIFIED:return"PUBLIC_KEY_DETAILS_UNSPECIFIED";case sn.PKCS1_RSA_PKCS1V5:return"PKCS1_RSA_PKCS1V5";case sn.PKCS1_RSA_PSS:return"PKCS1_RSA_PSS";case sn.PKIX_RSA_PKCS1V5:return"PKIX_RSA_PKCS1V5";case sn.PKIX_RSA_PSS:return"PKIX_RSA_PSS";case sn.PKIX_RSA_PKCS1V15_2048_SHA256:return"PKIX_RSA_PKCS1V15_2048_SHA256";case sn.PKIX_RSA_PKCS1V15_3072_SHA256:return"PKIX_RSA_PKCS1V15_3072_SHA256";case sn.PKIX_RSA_PKCS1V15_4096_SHA256:return"PKIX_RSA_PKCS1V15_4096_SHA256";case sn.PKIX_RSA_PSS_2048_SHA256:return"PKIX_RSA_PSS_2048_SHA256";case sn.PKIX_RSA_PSS_3072_SHA256:return"PKIX_RSA_PSS_3072_SHA256";case sn.PKIX_RSA_PSS_4096_SHA256:return"PKIX_RSA_PSS_4096_SHA256";case sn.PKIX_ECDSA_P256_HMAC_SHA_256:return"PKIX_ECDSA_P256_HMAC_SHA_256";case sn.PKIX_ECDSA_P256_SHA_256:return"PKIX_ECDSA_P256_SHA_256";case sn.PKIX_ECDSA_P384_SHA_384:return"PKIX_ECDSA_P384_SHA_384";case sn.PKIX_ECDSA_P521_SHA_512:return"PKIX_ECDSA_P521_SHA_512";case sn.PKIX_ED25519:return"PKIX_ED25519";case sn.PKIX_ED25519_PH:return"PKIX_ED25519_PH";case sn.LMS_SHA256:return"LMS_SHA256";case sn.LMOTS_SHA256:return"LMOTS_SHA256";default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum PublicKeyDetails")}}var CA;(function(t){t[t.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED=0]="SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED",t[t.EMAIL=1]="EMAIL",t[t.URI=2]="URI",t[t.OTHER_NAME=3]="OTHER_NAME"})(CA||(Ur.SubjectAlternativeNameType=CA={}));function XSe(t){switch(t){case 0:case"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED":return CA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED;case 1:case"EMAIL":return CA.EMAIL;case 2:case"URI":return CA.URI;case 3:case"OTHER_NAME":return CA.OTHER_NAME;default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum SubjectAlternativeNameType")}}function ZSe(t){switch(t){case CA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED:return"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED";case CA.EMAIL:return"EMAIL";case CA.URI:return"URI";case CA.OTHER_NAME:return"OTHER_NAME";default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum SubjectAlternativeNameType")}}Ur.HashOutput={fromJSON(t){return{algorithm:ds(t.algorithm)?VSe(t.algorithm):0,digest:ds(t.digest)?Buffer.from(Zm(t.digest)):Buffer.alloc(0)}},toJSON(t){let e={};return t.algorithm!==0&&(e.algorithm=JSe(t.algorithm)),t.digest.length!==0&&(e.digest=$m(t.digest)),e}};Ur.MessageSignature={fromJSON(t){return{messageDigest:ds(t.messageDigest)?Ur.HashOutput.fromJSON(t.messageDigest):void 0,signature:ds(t.signature)?Buffer.from(Zm(t.signature)):Buffer.alloc(0)}},toJSON(t){let e={};return t.messageDigest!==void 0&&(e.messageDigest=Ur.HashOutput.toJSON(t.messageDigest)),t.signature.length!==0&&(e.signature=$m(t.signature)),e}};Ur.LogId={fromJSON(t){return{keyId:ds(t.keyId)?Buffer.from(Zm(t.keyId)):Buffer.alloc(0)}},toJSON(t){let e={};return t.keyId.length!==0&&(e.keyId=$m(t.keyId)),e}};Ur.RFC3161SignedTimestamp={fromJSON(t){return{signedTimestamp:ds(t.signedTimestamp)?Buffer.from(Zm(t.signedTimestamp)):Buffer.alloc(0)}},toJSON(t){let e={};return t.signedTimestamp.length!==0&&(e.signedTimestamp=$m(t.signedTimestamp)),e}};Ur.PublicKey={fromJSON(t){return{rawBytes:ds(t.rawBytes)?Buffer.from(Zm(t.rawBytes)):void 0,keyDetails:ds(t.keyDetails)?KSe(t.keyDetails):0,validFor:ds(t.validFor)?Ur.TimeRange.fromJSON(t.validFor):void 0}},toJSON(t){let e={};return t.rawBytes!==void 0&&(e.rawBytes=$m(t.rawBytes)),t.keyDetails!==0&&(e.keyDetails=zSe(t.keyDetails)),t.validFor!==void 0&&(e.validFor=Ur.TimeRange.toJSON(t.validFor)),e}};Ur.PublicKeyIdentifier={fromJSON(t){return{hint:ds(t.hint)?globalThis.String(t.hint):""}},toJSON(t){let e={};return t.hint!==""&&(e.hint=t.hint),e}};Ur.ObjectIdentifier={fromJSON(t){return{id:globalThis.Array.isArray(t?.id)?t.id.map(e=>globalThis.Number(e)):[]}},toJSON(t){let e={};return t.id?.length&&(e.id=t.id.map(r=>Math.round(r))),e}};Ur.ObjectIdentifierValuePair={fromJSON(t){return{oid:ds(t.oid)?Ur.ObjectIdentifier.fromJSON(t.oid):void 0,value:ds(t.value)?Buffer.from(Zm(t.value)):Buffer.alloc(0)}},toJSON(t){let e={};return t.oid!==void 0&&(e.oid=Ur.ObjectIdentifier.toJSON(t.oid)),t.value.length!==0&&(e.value=$m(t.value)),e}};Ur.DistinguishedName={fromJSON(t){return{organization:ds(t.organization)?globalThis.String(t.organization):"",commonName:ds(t.commonName)?globalThis.String(t.commonName):""}},toJSON(t){let e={};return t.organization!==""&&(e.organization=t.organization),t.commonName!==""&&(e.commonName=t.commonName),e}};Ur.X509Certificate={fromJSON(t){return{rawBytes:ds(t.rawBytes)?Buffer.from(Zm(t.rawBytes)):Buffer.alloc(0)}},toJSON(t){let e={};return t.rawBytes.length!==0&&(e.rawBytes=$m(t.rawBytes)),e}};Ur.SubjectAlternativeName={fromJSON(t){return{type:ds(t.type)?XSe(t.type):0,identity:ds(t.regexp)?{$case:"regexp",regexp:globalThis.String(t.regexp)}:ds(t.value)?{$case:"value",value:globalThis.String(t.value)}:void 0}},toJSON(t){let e={};return t.type!==0&&(e.type=ZSe(t.type)),t.identity?.$case==="regexp"?e.regexp=t.identity.regexp:t.identity?.$case==="value"&&(e.value=t.identity.value),e}};Ur.X509CertificateChain={fromJSON(t){return{certificates:globalThis.Array.isArray(t?.certificates)?t.certificates.map(e=>Ur.X509Certificate.fromJSON(e)):[]}},toJSON(t){let e={};return t.certificates?.length&&(e.certificates=t.certificates.map(r=>Ur.X509Certificate.toJSON(r))),e}};Ur.TimeRange={fromJSON(t){return{start:ds(t.start)?YSe(t.start):void 0,end:ds(t.end)?YSe(t.end):void 0}},toJSON(t){let e={};return t.start!==void 0&&(e.start=t.start.toISOString()),t.end!==void 0&&(e.end=t.end.toISOString()),e}};function Zm(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function $m(t){return globalThis.Buffer.from(t).toString("base64")}function CIt(t){let e=(globalThis.Number(t.seconds)||0)*1e3;return e+=(t.nanos||0)/1e6,new globalThis.Date(e)}function YSe(t){return t instanceof globalThis.Date?t:typeof t=="string"?new globalThis.Date(t):CIt(IIt.Timestamp.fromJSON(t))}function ds(t){return t!=null}});var HV=_(ms=>{"use strict";Object.defineProperty(ms,"__esModule",{value:!0});ms.TransparencyLogEntry=ms.InclusionPromise=ms.InclusionProof=ms.Checkpoint=ms.KindVersion=void 0;var $Se=Ww();ms.KindVersion={fromJSON(t){return{kind:Ra(t.kind)?globalThis.String(t.kind):"",version:Ra(t.version)?globalThis.String(t.version):""}},toJSON(t){let e={};return t.kind!==""&&(e.kind=t.kind),t.version!==""&&(e.version=t.version),e}};ms.Checkpoint={fromJSON(t){return{envelope:Ra(t.envelope)?globalThis.String(t.envelope):""}},toJSON(t){let e={};return t.envelope!==""&&(e.envelope=t.envelope),e}};ms.InclusionProof={fromJSON(t){return{logIndex:Ra(t.logIndex)?globalThis.String(t.logIndex):"0",rootHash:Ra(t.rootHash)?Buffer.from(WN(t.rootHash)):Buffer.alloc(0),treeSize:Ra(t.treeSize)?globalThis.String(t.treeSize):"0",hashes:globalThis.Array.isArray(t?.hashes)?t.hashes.map(e=>Buffer.from(WN(e))):[],checkpoint:Ra(t.checkpoint)?ms.Checkpoint.fromJSON(t.checkpoint):void 0}},toJSON(t){let e={};return t.logIndex!=="0"&&(e.logIndex=t.logIndex),t.rootHash.length!==0&&(e.rootHash=YN(t.rootHash)),t.treeSize!=="0"&&(e.treeSize=t.treeSize),t.hashes?.length&&(e.hashes=t.hashes.map(r=>YN(r))),t.checkpoint!==void 0&&(e.checkpoint=ms.Checkpoint.toJSON(t.checkpoint)),e}};ms.InclusionPromise={fromJSON(t){return{signedEntryTimestamp:Ra(t.signedEntryTimestamp)?Buffer.from(WN(t.signedEntryTimestamp)):Buffer.alloc(0)}},toJSON(t){let e={};return t.signedEntryTimestamp.length!==0&&(e.signedEntryTimestamp=YN(t.signedEntryTimestamp)),e}};ms.TransparencyLogEntry={fromJSON(t){return{logIndex:Ra(t.logIndex)?globalThis.String(t.logIndex):"0",logId:Ra(t.logId)?$Se.LogId.fromJSON(t.logId):void 0,kindVersion:Ra(t.kindVersion)?ms.KindVersion.fromJSON(t.kindVersion):void 0,integratedTime:Ra(t.integratedTime)?globalThis.String(t.integratedTime):"0",inclusionPromise:Ra(t.inclusionPromise)?ms.InclusionPromise.fromJSON(t.inclusionPromise):void 0,inclusionProof:Ra(t.inclusionProof)?ms.InclusionProof.fromJSON(t.inclusionProof):void 0,canonicalizedBody:Ra(t.canonicalizedBody)?Buffer.from(WN(t.canonicalizedBody)):Buffer.alloc(0)}},toJSON(t){let e={};return t.logIndex!=="0"&&(e.logIndex=t.logIndex),t.logId!==void 0&&(e.logId=$Se.LogId.toJSON(t.logId)),t.kindVersion!==void 0&&(e.kindVersion=ms.KindVersion.toJSON(t.kindVersion)),t.integratedTime!=="0"&&(e.integratedTime=t.integratedTime),t.inclusionPromise!==void 0&&(e.inclusionPromise=ms.InclusionPromise.toJSON(t.inclusionPromise)),t.inclusionProof!==void 0&&(e.inclusionProof=ms.InclusionProof.toJSON(t.inclusionProof)),t.canonicalizedBody.length!==0&&(e.canonicalizedBody=YN(t.canonicalizedBody)),e}};function WN(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function YN(t){return globalThis.Buffer.from(t).toString("base64")}function Ra(t){return t!=null}});var jV=_(Xc=>{"use strict";Object.defineProperty(Xc,"__esModule",{value:!0});Xc.Bundle=Xc.VerificationMaterial=Xc.TimestampVerificationData=void 0;var eDe=_V(),wA=Ww(),tDe=HV();Xc.TimestampVerificationData={fromJSON(t){return{rfc3161Timestamps:globalThis.Array.isArray(t?.rfc3161Timestamps)?t.rfc3161Timestamps.map(e=>wA.RFC3161SignedTimestamp.fromJSON(e)):[]}},toJSON(t){let e={};return t.rfc3161Timestamps?.length&&(e.rfc3161Timestamps=t.rfc3161Timestamps.map(r=>wA.RFC3161SignedTimestamp.toJSON(r))),e}};Xc.VerificationMaterial={fromJSON(t){return{content:yg(t.publicKey)?{$case:"publicKey",publicKey:wA.PublicKeyIdentifier.fromJSON(t.publicKey)}:yg(t.x509CertificateChain)?{$case:"x509CertificateChain",x509CertificateChain:wA.X509CertificateChain.fromJSON(t.x509CertificateChain)}:yg(t.certificate)?{$case:"certificate",certificate:wA.X509Certificate.fromJSON(t.certificate)}:void 0,tlogEntries:globalThis.Array.isArray(t?.tlogEntries)?t.tlogEntries.map(e=>tDe.TransparencyLogEntry.fromJSON(e)):[],timestampVerificationData:yg(t.timestampVerificationData)?Xc.TimestampVerificationData.fromJSON(t.timestampVerificationData):void 0}},toJSON(t){let e={};return t.content?.$case==="publicKey"?e.publicKey=wA.PublicKeyIdentifier.toJSON(t.content.publicKey):t.content?.$case==="x509CertificateChain"?e.x509CertificateChain=wA.X509CertificateChain.toJSON(t.content.x509CertificateChain):t.content?.$case==="certificate"&&(e.certificate=wA.X509Certificate.toJSON(t.content.certificate)),t.tlogEntries?.length&&(e.tlogEntries=t.tlogEntries.map(r=>tDe.TransparencyLogEntry.toJSON(r))),t.timestampVerificationData!==void 0&&(e.timestampVerificationData=Xc.TimestampVerificationData.toJSON(t.timestampVerificationData)),e}};Xc.Bundle={fromJSON(t){return{mediaType:yg(t.mediaType)?globalThis.String(t.mediaType):"",verificationMaterial:yg(t.verificationMaterial)?Xc.VerificationMaterial.fromJSON(t.verificationMaterial):void 0,content:yg(t.messageSignature)?{$case:"messageSignature",messageSignature:wA.MessageSignature.fromJSON(t.messageSignature)}:yg(t.dsseEnvelope)?{$case:"dsseEnvelope",dsseEnvelope:eDe.Envelope.fromJSON(t.dsseEnvelope)}:void 0}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.verificationMaterial!==void 0&&(e.verificationMaterial=Xc.VerificationMaterial.toJSON(t.verificationMaterial)),t.content?.$case==="messageSignature"?e.messageSignature=wA.MessageSignature.toJSON(t.content.messageSignature):t.content?.$case==="dsseEnvelope"&&(e.dsseEnvelope=eDe.Envelope.toJSON(t.content.dsseEnvelope)),e}};function yg(t){return t!=null}});var GV=_(Ri=>{"use strict";Object.defineProperty(Ri,"__esModule",{value:!0});Ri.ClientTrustConfig=Ri.SigningConfig=Ri.TrustedRoot=Ri.CertificateAuthority=Ri.TransparencyLogInstance=void 0;var El=Ww();Ri.TransparencyLogInstance={fromJSON(t){return{baseUrl:ia(t.baseUrl)?globalThis.String(t.baseUrl):"",hashAlgorithm:ia(t.hashAlgorithm)?(0,El.hashAlgorithmFromJSON)(t.hashAlgorithm):0,publicKey:ia(t.publicKey)?El.PublicKey.fromJSON(t.publicKey):void 0,logId:ia(t.logId)?El.LogId.fromJSON(t.logId):void 0,checkpointKeyId:ia(t.checkpointKeyId)?El.LogId.fromJSON(t.checkpointKeyId):void 0}},toJSON(t){let e={};return t.baseUrl!==""&&(e.baseUrl=t.baseUrl),t.hashAlgorithm!==0&&(e.hashAlgorithm=(0,El.hashAlgorithmToJSON)(t.hashAlgorithm)),t.publicKey!==void 0&&(e.publicKey=El.PublicKey.toJSON(t.publicKey)),t.logId!==void 0&&(e.logId=El.LogId.toJSON(t.logId)),t.checkpointKeyId!==void 0&&(e.checkpointKeyId=El.LogId.toJSON(t.checkpointKeyId)),e}};Ri.CertificateAuthority={fromJSON(t){return{subject:ia(t.subject)?El.DistinguishedName.fromJSON(t.subject):void 0,uri:ia(t.uri)?globalThis.String(t.uri):"",certChain:ia(t.certChain)?El.X509CertificateChain.fromJSON(t.certChain):void 0,validFor:ia(t.validFor)?El.TimeRange.fromJSON(t.validFor):void 0}},toJSON(t){let e={};return t.subject!==void 0&&(e.subject=El.DistinguishedName.toJSON(t.subject)),t.uri!==""&&(e.uri=t.uri),t.certChain!==void 0&&(e.certChain=El.X509CertificateChain.toJSON(t.certChain)),t.validFor!==void 0&&(e.validFor=El.TimeRange.toJSON(t.validFor)),e}};Ri.TrustedRoot={fromJSON(t){return{mediaType:ia(t.mediaType)?globalThis.String(t.mediaType):"",tlogs:globalThis.Array.isArray(t?.tlogs)?t.tlogs.map(e=>Ri.TransparencyLogInstance.fromJSON(e)):[],certificateAuthorities:globalThis.Array.isArray(t?.certificateAuthorities)?t.certificateAuthorities.map(e=>Ri.CertificateAuthority.fromJSON(e)):[],ctlogs:globalThis.Array.isArray(t?.ctlogs)?t.ctlogs.map(e=>Ri.TransparencyLogInstance.fromJSON(e)):[],timestampAuthorities:globalThis.Array.isArray(t?.timestampAuthorities)?t.timestampAuthorities.map(e=>Ri.CertificateAuthority.fromJSON(e)):[]}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.tlogs?.length&&(e.tlogs=t.tlogs.map(r=>Ri.TransparencyLogInstance.toJSON(r))),t.certificateAuthorities?.length&&(e.certificateAuthorities=t.certificateAuthorities.map(r=>Ri.CertificateAuthority.toJSON(r))),t.ctlogs?.length&&(e.ctlogs=t.ctlogs.map(r=>Ri.TransparencyLogInstance.toJSON(r))),t.timestampAuthorities?.length&&(e.timestampAuthorities=t.timestampAuthorities.map(r=>Ri.CertificateAuthority.toJSON(r))),e}};Ri.SigningConfig={fromJSON(t){return{mediaType:ia(t.mediaType)?globalThis.String(t.mediaType):"",caUrl:ia(t.caUrl)?globalThis.String(t.caUrl):"",oidcUrl:ia(t.oidcUrl)?globalThis.String(t.oidcUrl):"",tlogUrls:globalThis.Array.isArray(t?.tlogUrls)?t.tlogUrls.map(e=>globalThis.String(e)):[],tsaUrls:globalThis.Array.isArray(t?.tsaUrls)?t.tsaUrls.map(e=>globalThis.String(e)):[]}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.caUrl!==""&&(e.caUrl=t.caUrl),t.oidcUrl!==""&&(e.oidcUrl=t.oidcUrl),t.tlogUrls?.length&&(e.tlogUrls=t.tlogUrls),t.tsaUrls?.length&&(e.tsaUrls=t.tsaUrls),e}};Ri.ClientTrustConfig={fromJSON(t){return{mediaType:ia(t.mediaType)?globalThis.String(t.mediaType):"",trustedRoot:ia(t.trustedRoot)?Ri.TrustedRoot.fromJSON(t.trustedRoot):void 0,signingConfig:ia(t.signingConfig)?Ri.SigningConfig.fromJSON(t.signingConfig):void 0}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.trustedRoot!==void 0&&(e.trustedRoot=Ri.TrustedRoot.toJSON(t.trustedRoot)),t.signingConfig!==void 0&&(e.signingConfig=Ri.SigningConfig.toJSON(t.signingConfig)),e}};function ia(t){return t!=null}});var iDe=_(Vr=>{"use strict";Object.defineProperty(Vr,"__esModule",{value:!0});Vr.Input=Vr.Artifact=Vr.ArtifactVerificationOptions_ObserverTimestampOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions=Vr.ArtifactVerificationOptions_CtlogOptions=Vr.ArtifactVerificationOptions_TlogOptions=Vr.ArtifactVerificationOptions=Vr.PublicKeyIdentities=Vr.CertificateIdentities=Vr.CertificateIdentity=void 0;var rDe=jV(),Eg=Ww(),nDe=GV();Vr.CertificateIdentity={fromJSON(t){return{issuer:gi(t.issuer)?globalThis.String(t.issuer):"",san:gi(t.san)?Eg.SubjectAlternativeName.fromJSON(t.san):void 0,oids:globalThis.Array.isArray(t?.oids)?t.oids.map(e=>Eg.ObjectIdentifierValuePair.fromJSON(e)):[]}},toJSON(t){let e={};return t.issuer!==""&&(e.issuer=t.issuer),t.san!==void 0&&(e.san=Eg.SubjectAlternativeName.toJSON(t.san)),t.oids?.length&&(e.oids=t.oids.map(r=>Eg.ObjectIdentifierValuePair.toJSON(r))),e}};Vr.CertificateIdentities={fromJSON(t){return{identities:globalThis.Array.isArray(t?.identities)?t.identities.map(e=>Vr.CertificateIdentity.fromJSON(e)):[]}},toJSON(t){let e={};return t.identities?.length&&(e.identities=t.identities.map(r=>Vr.CertificateIdentity.toJSON(r))),e}};Vr.PublicKeyIdentities={fromJSON(t){return{publicKeys:globalThis.Array.isArray(t?.publicKeys)?t.publicKeys.map(e=>Eg.PublicKey.fromJSON(e)):[]}},toJSON(t){let e={};return t.publicKeys?.length&&(e.publicKeys=t.publicKeys.map(r=>Eg.PublicKey.toJSON(r))),e}};Vr.ArtifactVerificationOptions={fromJSON(t){return{signers:gi(t.certificateIdentities)?{$case:"certificateIdentities",certificateIdentities:Vr.CertificateIdentities.fromJSON(t.certificateIdentities)}:gi(t.publicKeys)?{$case:"publicKeys",publicKeys:Vr.PublicKeyIdentities.fromJSON(t.publicKeys)}:void 0,tlogOptions:gi(t.tlogOptions)?Vr.ArtifactVerificationOptions_TlogOptions.fromJSON(t.tlogOptions):void 0,ctlogOptions:gi(t.ctlogOptions)?Vr.ArtifactVerificationOptions_CtlogOptions.fromJSON(t.ctlogOptions):void 0,tsaOptions:gi(t.tsaOptions)?Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.fromJSON(t.tsaOptions):void 0,integratedTsOptions:gi(t.integratedTsOptions)?Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.fromJSON(t.integratedTsOptions):void 0,observerOptions:gi(t.observerOptions)?Vr.ArtifactVerificationOptions_ObserverTimestampOptions.fromJSON(t.observerOptions):void 0}},toJSON(t){let e={};return t.signers?.$case==="certificateIdentities"?e.certificateIdentities=Vr.CertificateIdentities.toJSON(t.signers.certificateIdentities):t.signers?.$case==="publicKeys"&&(e.publicKeys=Vr.PublicKeyIdentities.toJSON(t.signers.publicKeys)),t.tlogOptions!==void 0&&(e.tlogOptions=Vr.ArtifactVerificationOptions_TlogOptions.toJSON(t.tlogOptions)),t.ctlogOptions!==void 0&&(e.ctlogOptions=Vr.ArtifactVerificationOptions_CtlogOptions.toJSON(t.ctlogOptions)),t.tsaOptions!==void 0&&(e.tsaOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.toJSON(t.tsaOptions)),t.integratedTsOptions!==void 0&&(e.integratedTsOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.toJSON(t.integratedTsOptions)),t.observerOptions!==void 0&&(e.observerOptions=Vr.ArtifactVerificationOptions_ObserverTimestampOptions.toJSON(t.observerOptions)),e}};Vr.ArtifactVerificationOptions_TlogOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,performOnlineVerification:gi(t.performOnlineVerification)?globalThis.Boolean(t.performOnlineVerification):!1,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.performOnlineVerification!==!1&&(e.performOnlineVerification=t.performOnlineVerification),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_CtlogOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_TimestampAuthorityOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_ObserverTimestampOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.Artifact={fromJSON(t){return{data:gi(t.artifactUri)?{$case:"artifactUri",artifactUri:globalThis.String(t.artifactUri)}:gi(t.artifact)?{$case:"artifact",artifact:Buffer.from(wIt(t.artifact))}:gi(t.artifactDigest)?{$case:"artifactDigest",artifactDigest:Eg.HashOutput.fromJSON(t.artifactDigest)}:void 0}},toJSON(t){let e={};return t.data?.$case==="artifactUri"?e.artifactUri=t.data.artifactUri:t.data?.$case==="artifact"?e.artifact=BIt(t.data.artifact):t.data?.$case==="artifactDigest"&&(e.artifactDigest=Eg.HashOutput.toJSON(t.data.artifactDigest)),e}};Vr.Input={fromJSON(t){return{artifactTrustRoot:gi(t.artifactTrustRoot)?nDe.TrustedRoot.fromJSON(t.artifactTrustRoot):void 0,artifactVerificationOptions:gi(t.artifactVerificationOptions)?Vr.ArtifactVerificationOptions.fromJSON(t.artifactVerificationOptions):void 0,bundle:gi(t.bundle)?rDe.Bundle.fromJSON(t.bundle):void 0,artifact:gi(t.artifact)?Vr.Artifact.fromJSON(t.artifact):void 0}},toJSON(t){let e={};return t.artifactTrustRoot!==void 0&&(e.artifactTrustRoot=nDe.TrustedRoot.toJSON(t.artifactTrustRoot)),t.artifactVerificationOptions!==void 0&&(e.artifactVerificationOptions=Vr.ArtifactVerificationOptions.toJSON(t.artifactVerificationOptions)),t.bundle!==void 0&&(e.bundle=rDe.Bundle.toJSON(t.bundle)),t.artifact!==void 0&&(e.artifact=Vr.Artifact.toJSON(t.artifact)),e}};function wIt(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function BIt(t){return globalThis.Buffer.from(t).toString("base64")}function gi(t){return t!=null}});var yb=_(Zc=>{"use strict";var vIt=Zc&&Zc.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Yw=Zc&&Zc.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&vIt(e,t,r)};Object.defineProperty(Zc,"__esModule",{value:!0});Yw(_V(),Zc);Yw(jV(),Zc);Yw(Ww(),Zc);Yw(HV(),Zc);Yw(GV(),Zc);Yw(iDe(),Zc)});var VN=_(Il=>{"use strict";Object.defineProperty(Il,"__esModule",{value:!0});Il.BUNDLE_V03_MEDIA_TYPE=Il.BUNDLE_V03_LEGACY_MEDIA_TYPE=Il.BUNDLE_V02_MEDIA_TYPE=Il.BUNDLE_V01_MEDIA_TYPE=void 0;Il.isBundleWithCertificateChain=SIt;Il.isBundleWithPublicKey=DIt;Il.isBundleWithMessageSignature=bIt;Il.isBundleWithDsseEnvelope=PIt;Il.BUNDLE_V01_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.1";Il.BUNDLE_V02_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.2";Il.BUNDLE_V03_LEGACY_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.3";Il.BUNDLE_V03_MEDIA_TYPE="application/vnd.dev.sigstore.bundle.v0.3+json";function SIt(t){return t.verificationMaterial.content.$case==="x509CertificateChain"}function DIt(t){return t.verificationMaterial.content.$case==="publicKey"}function bIt(t){return t.content.$case==="messageSignature"}function PIt(t){return t.content.$case==="dsseEnvelope"}});var oDe=_(KN=>{"use strict";Object.defineProperty(KN,"__esModule",{value:!0});KN.toMessageSignatureBundle=kIt;KN.toDSSEBundle=QIt;var xIt=yb(),JN=VN();function kIt(t){return{mediaType:t.certificateChain?JN.BUNDLE_V02_MEDIA_TYPE:JN.BUNDLE_V03_MEDIA_TYPE,content:{$case:"messageSignature",messageSignature:{messageDigest:{algorithm:xIt.HashAlgorithm.SHA2_256,digest:t.digest},signature:t.signature}},verificationMaterial:sDe(t)}}function QIt(t){return{mediaType:t.certificateChain?JN.BUNDLE_V02_MEDIA_TYPE:JN.BUNDLE_V03_MEDIA_TYPE,content:{$case:"dsseEnvelope",dsseEnvelope:TIt(t)},verificationMaterial:sDe(t)}}function TIt(t){return{payloadType:t.artifactType,payload:t.artifact,signatures:[RIt(t)]}}function RIt(t){return{keyid:t.keyHint||"",sig:t.signature}}function sDe(t){return{content:FIt(t),tlogEntries:[],timestampVerificationData:{rfc3161Timestamps:[]}}}function FIt(t){return t.certificate?t.certificateChain?{$case:"x509CertificateChain",x509CertificateChain:{certificates:[{rawBytes:t.certificate}]}}:{$case:"certificate",certificate:{rawBytes:t.certificate}}:{$case:"publicKey",publicKey:{hint:t.keyHint||""}}}});var WV=_(zN=>{"use strict";Object.defineProperty(zN,"__esModule",{value:!0});zN.ValidationError=void 0;var qV=class extends Error{constructor(e,r){super(e),this.fields=r}};zN.ValidationError=qV});var YV=_(ey=>{"use strict";Object.defineProperty(ey,"__esModule",{value:!0});ey.assertBundle=NIt;ey.assertBundleV01=aDe;ey.isBundleV01=OIt;ey.assertBundleV02=LIt;ey.assertBundleLatest=MIt;var XN=WV();function NIt(t){let e=ZN(t);if(e.length>0)throw new XN.ValidationError("invalid bundle",e)}function aDe(t){let e=[];if(e.push(...ZN(t)),e.push(...UIt(t)),e.length>0)throw new XN.ValidationError("invalid v0.1 bundle",e)}function OIt(t){try{return aDe(t),!0}catch{return!1}}function LIt(t){let e=[];if(e.push(...ZN(t)),e.push(...lDe(t)),e.length>0)throw new XN.ValidationError("invalid v0.2 bundle",e)}function MIt(t){let e=[];if(e.push(...ZN(t)),e.push(...lDe(t)),e.push(..._It(t)),e.length>0)throw new XN.ValidationError("invalid bundle",e)}function ZN(t){let e=[];if((t.mediaType===void 0||!t.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\+json;version=\d\.\d/)&&!t.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\.v\d\.\d\+json/))&&e.push("mediaType"),t.content===void 0)e.push("content");else switch(t.content.$case){case"messageSignature":t.content.messageSignature.messageDigest===void 0?e.push("content.messageSignature.messageDigest"):t.content.messageSignature.messageDigest.digest.length===0&&e.push("content.messageSignature.messageDigest.digest"),t.content.messageSignature.signature.length===0&&e.push("content.messageSignature.signature");break;case"dsseEnvelope":t.content.dsseEnvelope.payload.length===0&&e.push("content.dsseEnvelope.payload"),t.content.dsseEnvelope.signatures.length!==1?e.push("content.dsseEnvelope.signatures"):t.content.dsseEnvelope.signatures[0].sig.length===0&&e.push("content.dsseEnvelope.signatures[0].sig");break}if(t.verificationMaterial===void 0)e.push("verificationMaterial");else{if(t.verificationMaterial.content===void 0)e.push("verificationMaterial.content");else switch(t.verificationMaterial.content.$case){case"x509CertificateChain":t.verificationMaterial.content.x509CertificateChain.certificates.length===0&&e.push("verificationMaterial.content.x509CertificateChain.certificates"),t.verificationMaterial.content.x509CertificateChain.certificates.forEach((r,s)=>{r.rawBytes.length===0&&e.push(`verificationMaterial.content.x509CertificateChain.certificates[${s}].rawBytes`)});break;case"certificate":t.verificationMaterial.content.certificate.rawBytes.length===0&&e.push("verificationMaterial.content.certificate.rawBytes");break}t.verificationMaterial.tlogEntries===void 0?e.push("verificationMaterial.tlogEntries"):t.verificationMaterial.tlogEntries.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.logId===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].logId`),r.kindVersion===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].kindVersion`)})}return e}function UIt(t){let e=[];return t.verificationMaterial&&t.verificationMaterial.tlogEntries?.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionPromise===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].inclusionPromise`)}),e}function lDe(t){let e=[];return t.verificationMaterial&&t.verificationMaterial.tlogEntries?.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionProof===void 0?e.push(`verificationMaterial.tlogEntries[${s}].inclusionProof`):r.inclusionProof.checkpoint===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].inclusionProof.checkpoint`)}),e}function _It(t){let e=[];return t.verificationMaterial?.content?.$case==="x509CertificateChain"&&e.push("verificationMaterial.content.$case"),e}});var uDe=_(BA=>{"use strict";Object.defineProperty(BA,"__esModule",{value:!0});BA.envelopeToJSON=BA.envelopeFromJSON=BA.bundleToJSON=BA.bundleFromJSON=void 0;var $N=yb(),cDe=VN(),VV=YV(),HIt=t=>{let e=$N.Bundle.fromJSON(t);switch(e.mediaType){case cDe.BUNDLE_V01_MEDIA_TYPE:(0,VV.assertBundleV01)(e);break;case cDe.BUNDLE_V02_MEDIA_TYPE:(0,VV.assertBundleV02)(e);break;default:(0,VV.assertBundleLatest)(e);break}return e};BA.bundleFromJSON=HIt;var jIt=t=>$N.Bundle.toJSON(t);BA.bundleToJSON=jIt;var GIt=t=>$N.Envelope.fromJSON(t);BA.envelopeFromJSON=GIt;var qIt=t=>$N.Envelope.toJSON(t);BA.envelopeToJSON=qIt});var Ib=_(Xr=>{"use strict";Object.defineProperty(Xr,"__esModule",{value:!0});Xr.isBundleV01=Xr.assertBundleV02=Xr.assertBundleV01=Xr.assertBundleLatest=Xr.assertBundle=Xr.envelopeToJSON=Xr.envelopeFromJSON=Xr.bundleToJSON=Xr.bundleFromJSON=Xr.ValidationError=Xr.isBundleWithPublicKey=Xr.isBundleWithMessageSignature=Xr.isBundleWithDsseEnvelope=Xr.isBundleWithCertificateChain=Xr.BUNDLE_V03_MEDIA_TYPE=Xr.BUNDLE_V03_LEGACY_MEDIA_TYPE=Xr.BUNDLE_V02_MEDIA_TYPE=Xr.BUNDLE_V01_MEDIA_TYPE=Xr.toMessageSignatureBundle=Xr.toDSSEBundle=void 0;var fDe=oDe();Object.defineProperty(Xr,"toDSSEBundle",{enumerable:!0,get:function(){return fDe.toDSSEBundle}});Object.defineProperty(Xr,"toMessageSignatureBundle",{enumerable:!0,get:function(){return fDe.toMessageSignatureBundle}});var Ig=VN();Object.defineProperty(Xr,"BUNDLE_V01_MEDIA_TYPE",{enumerable:!0,get:function(){return Ig.BUNDLE_V01_MEDIA_TYPE}});Object.defineProperty(Xr,"BUNDLE_V02_MEDIA_TYPE",{enumerable:!0,get:function(){return Ig.BUNDLE_V02_MEDIA_TYPE}});Object.defineProperty(Xr,"BUNDLE_V03_LEGACY_MEDIA_TYPE",{enumerable:!0,get:function(){return Ig.BUNDLE_V03_LEGACY_MEDIA_TYPE}});Object.defineProperty(Xr,"BUNDLE_V03_MEDIA_TYPE",{enumerable:!0,get:function(){return Ig.BUNDLE_V03_MEDIA_TYPE}});Object.defineProperty(Xr,"isBundleWithCertificateChain",{enumerable:!0,get:function(){return Ig.isBundleWithCertificateChain}});Object.defineProperty(Xr,"isBundleWithDsseEnvelope",{enumerable:!0,get:function(){return Ig.isBundleWithDsseEnvelope}});Object.defineProperty(Xr,"isBundleWithMessageSignature",{enumerable:!0,get:function(){return Ig.isBundleWithMessageSignature}});Object.defineProperty(Xr,"isBundleWithPublicKey",{enumerable:!0,get:function(){return Ig.isBundleWithPublicKey}});var WIt=WV();Object.defineProperty(Xr,"ValidationError",{enumerable:!0,get:function(){return WIt.ValidationError}});var eO=uDe();Object.defineProperty(Xr,"bundleFromJSON",{enumerable:!0,get:function(){return eO.bundleFromJSON}});Object.defineProperty(Xr,"bundleToJSON",{enumerable:!0,get:function(){return eO.bundleToJSON}});Object.defineProperty(Xr,"envelopeFromJSON",{enumerable:!0,get:function(){return eO.envelopeFromJSON}});Object.defineProperty(Xr,"envelopeToJSON",{enumerable:!0,get:function(){return eO.envelopeToJSON}});var Eb=YV();Object.defineProperty(Xr,"assertBundle",{enumerable:!0,get:function(){return Eb.assertBundle}});Object.defineProperty(Xr,"assertBundleLatest",{enumerable:!0,get:function(){return Eb.assertBundleLatest}});Object.defineProperty(Xr,"assertBundleV01",{enumerable:!0,get:function(){return Eb.assertBundleV01}});Object.defineProperty(Xr,"assertBundleV02",{enumerable:!0,get:function(){return Eb.assertBundleV02}});Object.defineProperty(Xr,"isBundleV01",{enumerable:!0,get:function(){return Eb.isBundleV01}})});var Cb=_(rO=>{"use strict";Object.defineProperty(rO,"__esModule",{value:!0});rO.ByteStream=void 0;var JV=class extends Error{},tO=class t{constructor(e){this.start=0,e?(this.buf=e,this.view=Buffer.from(e)):(this.buf=new ArrayBuffer(0),this.view=Buffer.from(this.buf))}get buffer(){return this.view.subarray(0,this.start)}get length(){return this.view.byteLength}get position(){return this.start}seek(e){this.start=e}slice(e,r){let s=e+r;if(s>this.length)throw new JV("request past end of buffer");return this.view.subarray(e,s)}appendChar(e){this.ensureCapacity(1),this.view[this.start]=e,this.start+=1}appendUint16(e){this.ensureCapacity(2);let r=new Uint16Array([e]),s=new Uint8Array(r.buffer);this.view[this.start]=s[1],this.view[this.start+1]=s[0],this.start+=2}appendUint24(e){this.ensureCapacity(3);let r=new Uint32Array([e]),s=new Uint8Array(r.buffer);this.view[this.start]=s[2],this.view[this.start+1]=s[1],this.view[this.start+2]=s[0],this.start+=3}appendView(e){this.ensureCapacity(e.length),this.view.set(e,this.start),this.start+=e.length}getBlock(e){if(e<=0)return Buffer.alloc(0);if(this.start+e>this.view.length)throw new Error("request past end of buffer");let r=this.view.subarray(this.start,this.start+e);return this.start+=e,r}getUint8(){return this.getBlock(1)[0]}getUint16(){let e=this.getBlock(2);return e[0]<<8|e[1]}ensureCapacity(e){if(this.start+e>this.view.byteLength){let r=t.BLOCK_SIZE+(e>t.BLOCK_SIZE?e:0);this.realloc(this.view.byteLength+r)}}realloc(e){let r=new ArrayBuffer(e),s=Buffer.from(r);s.set(this.view),this.buf=r,this.view=s}};rO.ByteStream=tO;tO.BLOCK_SIZE=1024});var nO=_(Vw=>{"use strict";Object.defineProperty(Vw,"__esModule",{value:!0});Vw.ASN1TypeError=Vw.ASN1ParseError=void 0;var KV=class extends Error{};Vw.ASN1ParseError=KV;var zV=class extends Error{};Vw.ASN1TypeError=zV});var pDe=_(iO=>{"use strict";Object.defineProperty(iO,"__esModule",{value:!0});iO.decodeLength=YIt;iO.encodeLength=VIt;var ADe=nO();function YIt(t){let e=t.getUint8();if(!(e&128))return e;let r=e&127;if(r>6)throw new ADe.ASN1ParseError("length exceeds 6 byte limit");let s=0;for(let a=0;a0n;)r.unshift(Number(e&255n)),e=e>>8n;return Buffer.from([128|r.length,...r])}});var gDe=_(Cg=>{"use strict";Object.defineProperty(Cg,"__esModule",{value:!0});Cg.parseInteger=zIt;Cg.parseStringASCII=hDe;Cg.parseTime=XIt;Cg.parseOID=ZIt;Cg.parseBoolean=$It;Cg.parseBitString=eCt;var JIt=/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/,KIt=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/;function zIt(t){let e=0,r=t.length,s=t[e],a=s>127,n=a?255:0;for(;s==n&&++e=50?1900:2e3,s[1]=a.toString()}return new Date(`${s[1]}-${s[2]}-${s[3]}T${s[4]}:${s[5]}:${s[6]}Z`)}function ZIt(t){let e=0,r=t.length,s=t[e++],a=Math.floor(s/40),n=s%40,c=`${a}.${n}`,f=0;for(;e=f;--p)a.push(c>>p&1)}return a}});var mDe=_(sO=>{"use strict";Object.defineProperty(sO,"__esModule",{value:!0});sO.ASN1Tag=void 0;var dDe=nO(),ty={BOOLEAN:1,INTEGER:2,BIT_STRING:3,OCTET_STRING:4,OBJECT_IDENTIFIER:6,SEQUENCE:16,SET:17,PRINTABLE_STRING:19,UTC_TIME:23,GENERALIZED_TIME:24},XV={UNIVERSAL:0,APPLICATION:1,CONTEXT_SPECIFIC:2,PRIVATE:3},ZV=class{constructor(e){if(this.number=e&31,this.constructed=(e&32)===32,this.class=e>>6,this.number===31)throw new dDe.ASN1ParseError("long form tags not supported");if(this.class===XV.UNIVERSAL&&this.number===0)throw new dDe.ASN1ParseError("unsupported tag 0x00")}isUniversal(){return this.class===XV.UNIVERSAL}isContextSpecific(e){let r=this.class===XV.CONTEXT_SPECIFIC;return e!==void 0?r&&this.number===e:r}isBoolean(){return this.isUniversal()&&this.number===ty.BOOLEAN}isInteger(){return this.isUniversal()&&this.number===ty.INTEGER}isBitString(){return this.isUniversal()&&this.number===ty.BIT_STRING}isOctetString(){return this.isUniversal()&&this.number===ty.OCTET_STRING}isOID(){return this.isUniversal()&&this.number===ty.OBJECT_IDENTIFIER}isUTCTime(){return this.isUniversal()&&this.number===ty.UTC_TIME}isGeneralizedTime(){return this.isUniversal()&&this.number===ty.GENERALIZED_TIME}toDER(){return this.number|(this.constructed?32:0)|this.class<<6}};sO.ASN1Tag=ZV});var CDe=_(aO=>{"use strict";Object.defineProperty(aO,"__esModule",{value:!0});aO.ASN1Obj=void 0;var $V=Cb(),ry=nO(),EDe=pDe(),Jw=gDe(),tCt=mDe(),oO=class{constructor(e,r,s){this.tag=e,this.value=r,this.subs=s}static parseBuffer(e){return IDe(new $V.ByteStream(e))}toDER(){let e=new $V.ByteStream;if(this.subs.length>0)for(let a of this.subs)e.appendView(a.toDER());else e.appendView(this.value);let r=e.buffer,s=new $V.ByteStream;return s.appendChar(this.tag.toDER()),s.appendView((0,EDe.encodeLength)(r.length)),s.appendView(r),s.buffer}toBoolean(){if(!this.tag.isBoolean())throw new ry.ASN1TypeError("not a boolean");return(0,Jw.parseBoolean)(this.value)}toInteger(){if(!this.tag.isInteger())throw new ry.ASN1TypeError("not an integer");return(0,Jw.parseInteger)(this.value)}toOID(){if(!this.tag.isOID())throw new ry.ASN1TypeError("not an OID");return(0,Jw.parseOID)(this.value)}toDate(){switch(!0){case this.tag.isUTCTime():return(0,Jw.parseTime)(this.value,!0);case this.tag.isGeneralizedTime():return(0,Jw.parseTime)(this.value,!1);default:throw new ry.ASN1TypeError("not a date")}}toBitString(){if(!this.tag.isBitString())throw new ry.ASN1TypeError("not a bit string");return(0,Jw.parseBitString)(this.value)}};aO.ASN1Obj=oO;function IDe(t){let e=new tCt.ASN1Tag(t.getUint8()),r=(0,EDe.decodeLength)(t),s=t.slice(t.position,r),a=t.position,n=[];if(e.constructed)n=yDe(t,r);else if(e.isOctetString())try{n=yDe(t,r)}catch{}return n.length===0&&t.seek(a+r),new oO(e,s,n)}function yDe(t,e){let r=t.position+e;if(r>t.length)throw new ry.ASN1ParseError("invalid length");let s=[];for(;t.position{"use strict";Object.defineProperty(lO,"__esModule",{value:!0});lO.ASN1Obj=void 0;var rCt=CDe();Object.defineProperty(lO,"ASN1Obj",{enumerable:!0,get:function(){return rCt.ASN1Obj}})});var Kw=_(wg=>{"use strict";var nCt=wg&&wg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(wg,"__esModule",{value:!0});wg.createPublicKey=iCt;wg.digest=sCt;wg.verify=oCt;wg.bufferEqual=aCt;var wb=nCt(Ie("crypto"));function iCt(t,e="spki"){return typeof t=="string"?wb.default.createPublicKey(t):wb.default.createPublicKey({key:t,format:"der",type:e})}function sCt(t,...e){let r=wb.default.createHash(t);for(let s of e)r.update(s);return r.digest()}function oCt(t,e,r,s){try{return wb.default.verify(s,t,e,r)}catch{return!1}}function aCt(t,e){try{return wb.default.timingSafeEqual(t,e)}catch{return!1}}});var wDe=_(e7=>{"use strict";Object.defineProperty(e7,"__esModule",{value:!0});e7.preAuthEncoding=cCt;var lCt="DSSEv1";function cCt(t,e){let r=[lCt,t.length,t,e.length,""].join(" ");return Buffer.concat([Buffer.from(r,"ascii"),e])}});var SDe=_(uO=>{"use strict";Object.defineProperty(uO,"__esModule",{value:!0});uO.base64Encode=uCt;uO.base64Decode=fCt;var BDe="base64",vDe="utf-8";function uCt(t){return Buffer.from(t,vDe).toString(BDe)}function fCt(t){return Buffer.from(t,BDe).toString(vDe)}});var DDe=_(r7=>{"use strict";Object.defineProperty(r7,"__esModule",{value:!0});r7.canonicalize=t7;function t7(t){let e="";if(t===null||typeof t!="object"||t.toJSON!=null)e+=JSON.stringify(t);else if(Array.isArray(t)){e+="[";let r=!0;t.forEach(s=>{r||(e+=","),r=!1,e+=t7(s)}),e+="]"}else{e+="{";let r=!0;Object.keys(t).sort().forEach(s=>{r||(e+=","),r=!1,e+=JSON.stringify(s),e+=":",e+=t7(t[s])}),e+="}"}return e}});var n7=_(fO=>{"use strict";Object.defineProperty(fO,"__esModule",{value:!0});fO.toDER=hCt;fO.fromDER=gCt;var ACt=/-----BEGIN (.*)-----/,pCt=/-----END (.*)-----/;function hCt(t){let e="";return t.split(` -`).forEach(r=>{r.match(ACt)||r.match(pCt)||(e+=r)}),Buffer.from(e,"base64")}function gCt(t,e="CERTIFICATE"){let s=t.toString("base64").match(/.{1,64}/g)||"";return[`-----BEGIN ${e}-----`,...s,`-----END ${e}-----`].join(` -`).concat(` -`)}});var AO=_(zw=>{"use strict";Object.defineProperty(zw,"__esModule",{value:!0});zw.SHA2_HASH_ALGOS=zw.ECDSA_SIGNATURE_ALGOS=void 0;zw.ECDSA_SIGNATURE_ALGOS={"1.2.840.10045.4.3.1":"sha224","1.2.840.10045.4.3.2":"sha256","1.2.840.10045.4.3.3":"sha384","1.2.840.10045.4.3.4":"sha512"};zw.SHA2_HASH_ALGOS={"2.16.840.1.101.3.4.2.1":"sha256","2.16.840.1.101.3.4.2.2":"sha384","2.16.840.1.101.3.4.2.3":"sha512"}});var s7=_(pO=>{"use strict";Object.defineProperty(pO,"__esModule",{value:!0});pO.RFC3161TimestampVerificationError=void 0;var i7=class extends Error{};pO.RFC3161TimestampVerificationError=i7});var PDe=_(vA=>{"use strict";var dCt=vA&&vA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),mCt=vA&&vA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),yCt=vA&&vA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&dCt(e,t,r);return mCt(e,t),e};Object.defineProperty(vA,"__esModule",{value:!0});vA.TSTInfo=void 0;var bDe=yCt(Kw()),ECt=AO(),ICt=s7(),o7=class{constructor(e){this.root=e}get version(){return this.root.subs[0].toInteger()}get genTime(){return this.root.subs[4].toDate()}get messageImprintHashAlgorithm(){let e=this.messageImprintObj.subs[0].subs[0].toOID();return ECt.SHA2_HASH_ALGOS[e]}get messageImprintHashedMessage(){return this.messageImprintObj.subs[1].value}get raw(){return this.root.toDER()}verify(e){let r=bDe.digest(this.messageImprintHashAlgorithm,e);if(!bDe.bufferEqual(r,this.messageImprintHashedMessage))throw new ICt.RFC3161TimestampVerificationError("message imprint does not match artifact")}get messageImprintObj(){return this.root.subs[2]}};vA.TSTInfo=o7});var kDe=_(SA=>{"use strict";var CCt=SA&&SA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),wCt=SA&&SA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),BCt=SA&&SA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&CCt(e,t,r);return wCt(e,t),e};Object.defineProperty(SA,"__esModule",{value:!0});SA.RFC3161Timestamp=void 0;var vCt=cO(),a7=BCt(Kw()),xDe=AO(),Bb=s7(),SCt=PDe(),DCt="1.2.840.113549.1.7.2",bCt="1.2.840.113549.1.9.16.1.4",PCt="1.2.840.113549.1.9.4",l7=class t{constructor(e){this.root=e}static parse(e){let r=vCt.ASN1Obj.parseBuffer(e);return new t(r)}get status(){return this.pkiStatusInfoObj.subs[0].toInteger()}get contentType(){return this.contentTypeObj.toOID()}get eContentType(){return this.eContentTypeObj.toOID()}get signingTime(){return this.tstInfo.genTime}get signerIssuer(){return this.signerSidObj.subs[0].value}get signerSerialNumber(){return this.signerSidObj.subs[1].value}get signerDigestAlgorithm(){let e=this.signerDigestAlgorithmObj.subs[0].toOID();return xDe.SHA2_HASH_ALGOS[e]}get signatureAlgorithm(){let e=this.signatureAlgorithmObj.subs[0].toOID();return xDe.ECDSA_SIGNATURE_ALGOS[e]}get signatureValue(){return this.signatureValueObj.value}get tstInfo(){return new SCt.TSTInfo(this.eContentObj.subs[0].subs[0])}verify(e,r){if(!this.timeStampTokenObj)throw new Bb.RFC3161TimestampVerificationError("timeStampToken is missing");if(this.contentType!==DCt)throw new Bb.RFC3161TimestampVerificationError(`incorrect content type: ${this.contentType}`);if(this.eContentType!==bCt)throw new Bb.RFC3161TimestampVerificationError(`incorrect encapsulated content type: ${this.eContentType}`);this.tstInfo.verify(e),this.verifyMessageDigest(),this.verifySignature(r)}verifyMessageDigest(){let e=a7.digest(this.signerDigestAlgorithm,this.tstInfo.raw),r=this.messageDigestAttributeObj.subs[1].subs[0].value;if(!a7.bufferEqual(e,r))throw new Bb.RFC3161TimestampVerificationError("signed data does not match tstInfo")}verifySignature(e){let r=this.signedAttrsObj.toDER();if(r[0]=49,!a7.verify(r,e,this.signatureValue,this.signatureAlgorithm))throw new Bb.RFC3161TimestampVerificationError("signature verification failed")}get pkiStatusInfoObj(){return this.root.subs[0]}get timeStampTokenObj(){return this.root.subs[1]}get contentTypeObj(){return this.timeStampTokenObj.subs[0]}get signedDataObj(){return this.timeStampTokenObj.subs.find(r=>r.tag.isContextSpecific(0)).subs[0]}get encapContentInfoObj(){return this.signedDataObj.subs[2]}get signerInfosObj(){let e=this.signedDataObj;return e.subs[e.subs.length-1]}get signerInfoObj(){return this.signerInfosObj.subs[0]}get eContentTypeObj(){return this.encapContentInfoObj.subs[0]}get eContentObj(){return this.encapContentInfoObj.subs[1]}get signedAttrsObj(){return this.signerInfoObj.subs.find(r=>r.tag.isContextSpecific(0))}get messageDigestAttributeObj(){return this.signedAttrsObj.subs.find(r=>r.subs[0].tag.isOID()&&r.subs[0].toOID()===PCt)}get signerSidObj(){return this.signerInfoObj.subs[1]}get signerDigestAlgorithmObj(){return this.signerInfoObj.subs[2]}get signatureAlgorithmObj(){return this.signerInfoObj.subs[4]}get signatureValueObj(){return this.signerInfoObj.subs[5]}};SA.RFC3161Timestamp=l7});var QDe=_(hO=>{"use strict";Object.defineProperty(hO,"__esModule",{value:!0});hO.RFC3161Timestamp=void 0;var xCt=kDe();Object.defineProperty(hO,"RFC3161Timestamp",{enumerable:!0,get:function(){return xCt.RFC3161Timestamp}})});var RDe=_(DA=>{"use strict";var kCt=DA&&DA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),QCt=DA&&DA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),TCt=DA&&DA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&kCt(e,t,r);return QCt(e,t),e};Object.defineProperty(DA,"__esModule",{value:!0});DA.SignedCertificateTimestamp=void 0;var RCt=TCt(Kw()),TDe=Cb(),c7=class t{constructor(e){this.version=e.version,this.logID=e.logID,this.timestamp=e.timestamp,this.extensions=e.extensions,this.hashAlgorithm=e.hashAlgorithm,this.signatureAlgorithm=e.signatureAlgorithm,this.signature=e.signature}get datetime(){return new Date(Number(this.timestamp.readBigInt64BE()))}get algorithm(){switch(this.hashAlgorithm){case 0:return"none";case 1:return"md5";case 2:return"sha1";case 3:return"sha224";case 4:return"sha256";case 5:return"sha384";case 6:return"sha512";default:return"unknown"}}verify(e,r){let s=new TDe.ByteStream;return s.appendChar(this.version),s.appendChar(0),s.appendView(this.timestamp),s.appendUint16(1),s.appendView(e),s.appendUint16(this.extensions.byteLength),this.extensions.byteLength>0&&s.appendView(this.extensions),RCt.verify(s.buffer,r,this.signature,this.algorithm)}static parse(e){let r=new TDe.ByteStream(e),s=r.getUint8(),a=r.getBlock(32),n=r.getBlock(8),c=r.getUint16(),f=r.getBlock(c),p=r.getUint8(),h=r.getUint8(),E=r.getUint16(),C=r.getBlock(E);if(r.position!==e.length)throw new Error("SCT buffer length mismatch");return new t({version:s,logID:a,timestamp:n,extensions:f,hashAlgorithm:p,signatureAlgorithm:h,signature:C})}};DA.SignedCertificateTimestamp=c7});var d7=_(sa=>{"use strict";Object.defineProperty(sa,"__esModule",{value:!0});sa.X509SCTExtension=sa.X509SubjectKeyIDExtension=sa.X509AuthorityKeyIDExtension=sa.X509SubjectAlternativeNameExtension=sa.X509KeyUsageExtension=sa.X509BasicConstraintsExtension=sa.X509Extension=void 0;var FCt=Cb(),NCt=RDe(),ph=class{constructor(e){this.root=e}get oid(){return this.root.subs[0].toOID()}get critical(){return this.root.subs.length===3?this.root.subs[1].toBoolean():!1}get value(){return this.extnValueObj.value}get valueObj(){return this.extnValueObj}get extnValueObj(){return this.root.subs[this.root.subs.length-1]}};sa.X509Extension=ph;var u7=class extends ph{get isCA(){return this.sequence.subs[0]?.toBoolean()??!1}get pathLenConstraint(){return this.sequence.subs.length>1?this.sequence.subs[1].toInteger():void 0}get sequence(){return this.extnValueObj.subs[0]}};sa.X509BasicConstraintsExtension=u7;var f7=class extends ph{get digitalSignature(){return this.bitString[0]===1}get keyCertSign(){return this.bitString[5]===1}get crlSign(){return this.bitString[6]===1}get bitString(){return this.extnValueObj.subs[0].toBitString()}};sa.X509KeyUsageExtension=f7;var A7=class extends ph{get rfc822Name(){return this.findGeneralName(1)?.value.toString("ascii")}get uri(){return this.findGeneralName(6)?.value.toString("ascii")}otherName(e){let r=this.findGeneralName(0);return r===void 0||r.subs[0].toOID()!==e?void 0:r.subs[1].subs[0].value.toString("ascii")}findGeneralName(e){return this.generalNames.find(r=>r.tag.isContextSpecific(e))}get generalNames(){return this.extnValueObj.subs[0].subs}};sa.X509SubjectAlternativeNameExtension=A7;var p7=class extends ph{get keyIdentifier(){return this.findSequenceMember(0)?.value}findSequenceMember(e){return this.sequence.subs.find(r=>r.tag.isContextSpecific(e))}get sequence(){return this.extnValueObj.subs[0]}};sa.X509AuthorityKeyIDExtension=p7;var h7=class extends ph{get keyIdentifier(){return this.extnValueObj.subs[0].value}};sa.X509SubjectKeyIDExtension=h7;var g7=class extends ph{constructor(e){super(e)}get signedCertificateTimestamps(){let e=this.extnValueObj.subs[0].value,r=new FCt.ByteStream(e),s=r.getUint16()+2,a=[];for(;r.position{"use strict";var OCt=ic&&ic.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),LCt=ic&&ic.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),NDe=ic&&ic.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&OCt(e,t,r);return LCt(e,t),e};Object.defineProperty(ic,"__esModule",{value:!0});ic.X509Certificate=ic.EXTENSION_OID_SCT=void 0;var MCt=cO(),FDe=NDe(Kw()),UCt=AO(),_Ct=NDe(n7()),ny=d7(),HCt="2.5.29.14",jCt="2.5.29.15",GCt="2.5.29.17",qCt="2.5.29.19",WCt="2.5.29.35";ic.EXTENSION_OID_SCT="1.3.6.1.4.1.11129.2.4.2";var m7=class t{constructor(e){this.root=e}static parse(e){let r=typeof e=="string"?_Ct.toDER(e):e,s=MCt.ASN1Obj.parseBuffer(r);return new t(s)}get tbsCertificate(){return this.tbsCertificateObj}get version(){return`v${(this.versionObj.subs[0].toInteger()+BigInt(1)).toString()}`}get serialNumber(){return this.serialNumberObj.value}get notBefore(){return this.validityObj.subs[0].toDate()}get notAfter(){return this.validityObj.subs[1].toDate()}get issuer(){return this.issuerObj.value}get subject(){return this.subjectObj.value}get publicKey(){return this.subjectPublicKeyInfoObj.toDER()}get signatureAlgorithm(){let e=this.signatureAlgorithmObj.subs[0].toOID();return UCt.ECDSA_SIGNATURE_ALGOS[e]}get signatureValue(){return this.signatureValueObj.value.subarray(1)}get subjectAltName(){let e=this.extSubjectAltName;return e?.uri||e?.rfc822Name}get extensions(){return this.extensionsObj?.subs[0]?.subs||[]}get extKeyUsage(){let e=this.findExtension(jCt);return e?new ny.X509KeyUsageExtension(e):void 0}get extBasicConstraints(){let e=this.findExtension(qCt);return e?new ny.X509BasicConstraintsExtension(e):void 0}get extSubjectAltName(){let e=this.findExtension(GCt);return e?new ny.X509SubjectAlternativeNameExtension(e):void 0}get extAuthorityKeyID(){let e=this.findExtension(WCt);return e?new ny.X509AuthorityKeyIDExtension(e):void 0}get extSubjectKeyID(){let e=this.findExtension(HCt);return e?new ny.X509SubjectKeyIDExtension(e):void 0}get extSCT(){let e=this.findExtension(ic.EXTENSION_OID_SCT);return e?new ny.X509SCTExtension(e):void 0}get isCA(){let e=this.extBasicConstraints?.isCA||!1;return this.extKeyUsage?e&&this.extKeyUsage.keyCertSign:e}extension(e){let r=this.findExtension(e);return r?new ny.X509Extension(r):void 0}verify(e){let r=e?.publicKey||this.publicKey,s=FDe.createPublicKey(r);return FDe.verify(this.tbsCertificate.toDER(),s,this.signatureValue,this.signatureAlgorithm)}validForDate(e){return this.notBefore<=e&&e<=this.notAfter}equals(e){return this.root.toDER().equals(e.root.toDER())}clone(){let e=this.root.toDER(),r=Buffer.alloc(e.length);return e.copy(r),t.parse(r)}findExtension(e){return this.extensions.find(r=>r.subs[0].toOID()===e)}get tbsCertificateObj(){return this.root.subs[0]}get signatureAlgorithmObj(){return this.root.subs[1]}get signatureValueObj(){return this.root.subs[2]}get versionObj(){return this.tbsCertificateObj.subs[0]}get serialNumberObj(){return this.tbsCertificateObj.subs[1]}get issuerObj(){return this.tbsCertificateObj.subs[3]}get validityObj(){return this.tbsCertificateObj.subs[4]}get subjectObj(){return this.tbsCertificateObj.subs[5]}get subjectPublicKeyInfoObj(){return this.tbsCertificateObj.subs[6]}get extensionsObj(){return this.tbsCertificateObj.subs.find(e=>e.tag.isContextSpecific(3))}};ic.X509Certificate=m7});var MDe=_(Bg=>{"use strict";Object.defineProperty(Bg,"__esModule",{value:!0});Bg.X509SCTExtension=Bg.X509Certificate=Bg.EXTENSION_OID_SCT=void 0;var LDe=ODe();Object.defineProperty(Bg,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return LDe.EXTENSION_OID_SCT}});Object.defineProperty(Bg,"X509Certificate",{enumerable:!0,get:function(){return LDe.X509Certificate}});var YCt=d7();Object.defineProperty(Bg,"X509SCTExtension",{enumerable:!0,get:function(){return YCt.X509SCTExtension}})});var Cl=_(Jn=>{"use strict";var VCt=Jn&&Jn.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),JCt=Jn&&Jn.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),vb=Jn&&Jn.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&VCt(e,t,r);return JCt(e,t),e};Object.defineProperty(Jn,"__esModule",{value:!0});Jn.X509SCTExtension=Jn.X509Certificate=Jn.EXTENSION_OID_SCT=Jn.ByteStream=Jn.RFC3161Timestamp=Jn.pem=Jn.json=Jn.encoding=Jn.dsse=Jn.crypto=Jn.ASN1Obj=void 0;var KCt=cO();Object.defineProperty(Jn,"ASN1Obj",{enumerable:!0,get:function(){return KCt.ASN1Obj}});Jn.crypto=vb(Kw());Jn.dsse=vb(wDe());Jn.encoding=vb(SDe());Jn.json=vb(DDe());Jn.pem=vb(n7());var zCt=QDe();Object.defineProperty(Jn,"RFC3161Timestamp",{enumerable:!0,get:function(){return zCt.RFC3161Timestamp}});var XCt=Cb();Object.defineProperty(Jn,"ByteStream",{enumerable:!0,get:function(){return XCt.ByteStream}});var y7=MDe();Object.defineProperty(Jn,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return y7.EXTENSION_OID_SCT}});Object.defineProperty(Jn,"X509Certificate",{enumerable:!0,get:function(){return y7.X509Certificate}});Object.defineProperty(Jn,"X509SCTExtension",{enumerable:!0,get:function(){return y7.X509SCTExtension}})});var UDe=_(E7=>{"use strict";Object.defineProperty(E7,"__esModule",{value:!0});E7.extractJWTSubject=$Ct;var ZCt=Cl();function $Ct(t){let e=t.split(".",3),r=JSON.parse(ZCt.encoding.base64Decode(e[1]));switch(r.iss){case"https://accounts.google.com":case"https://oauth2.sigstore.dev/auth":return r.email;default:return r.sub}}});var _De=_((dnr,ewt)=>{ewt.exports={name:"@sigstore/sign",version:"3.1.0",description:"Sigstore signing library",main:"dist/index.js",types:"dist/index.d.ts",scripts:{clean:"shx rm -rf dist *.tsbuildinfo",build:"tsc --build",test:"jest"},files:["dist"],author:"bdehamer@github.com",license:"Apache-2.0",repository:{type:"git",url:"git+https://github.com/sigstore/sigstore-js.git"},bugs:{url:"https://github.com/sigstore/sigstore-js/issues"},homepage:"https://github.com/sigstore/sigstore-js/tree/main/packages/sign#readme",publishConfig:{provenance:!0},devDependencies:{"@sigstore/jest":"^0.0.0","@sigstore/mock":"^0.10.0","@sigstore/rekor-types":"^3.0.0","@types/make-fetch-happen":"^10.0.4","@types/promise-retry":"^1.1.6"},dependencies:{"@sigstore/bundle":"^3.1.0","@sigstore/core":"^2.0.0","@sigstore/protobuf-specs":"^0.4.0","make-fetch-happen":"^14.0.2","proc-log":"^5.0.0","promise-retry":"^2.0.1"},engines:{node:"^18.17.0 || >=20.5.0"}}});var jDe=_(Xw=>{"use strict";var twt=Xw&&Xw.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Xw,"__esModule",{value:!0});Xw.getUserAgent=void 0;var HDe=twt(Ie("os")),rwt=()=>{let t=_De().version,e=process.version,r=HDe.default.platform(),s=HDe.default.arch();return`sigstore-js/${t} (Node ${e}) (${r}/${s})`};Xw.getUserAgent=rwt});var vg=_(Ji=>{"use strict";var nwt=Ji&&Ji.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),iwt=Ji&&Ji.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),GDe=Ji&&Ji.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a{"use strict";Object.defineProperty(gO,"__esModule",{value:!0});gO.BaseBundleBuilder=void 0;var I7=class{constructor(e){this.signer=e.signer,this.witnesses=e.witnesses}async create(e){let r=await this.prepare(e).then(f=>this.signer.sign(f)),s=await this.package(e,r),a=await Promise.all(this.witnesses.map(f=>f.testify(s.content,swt(r.key)))),n=[],c=[];return a.forEach(({tlogEntries:f,rfc3161Timestamps:p})=>{n.push(...f??[]),c.push(...p??[])}),s.verificationMaterial.tlogEntries=n,s.verificationMaterial.timestampVerificationData={rfc3161Timestamps:c},s}async prepare(e){return e.data}};gO.BaseBundleBuilder=I7;function swt(t){switch(t.$case){case"publicKey":return t.publicKey;case"x509Certificate":return t.certificate}}});var B7=_(bA=>{"use strict";var owt=bA&&bA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),awt=bA&&bA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),lwt=bA&&bA.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a{"use strict";Object.defineProperty(dO,"__esModule",{value:!0});dO.DSSEBundleBuilder=void 0;var fwt=vg(),Awt=C7(),pwt=B7(),v7=class extends Awt.BaseBundleBuilder{constructor(e){super(e),this.certificateChain=e.certificateChain??!1}async prepare(e){let r=WDe(e);return fwt.dsse.preAuthEncoding(r.type,r.data)}async package(e,r){return(0,pwt.toDSSEBundle)(WDe(e),r,this.certificateChain)}};dO.DSSEBundleBuilder=v7;function WDe(t){return{...t,type:t.type??""}}});var VDe=_(mO=>{"use strict";Object.defineProperty(mO,"__esModule",{value:!0});mO.MessageSignatureBundleBuilder=void 0;var hwt=C7(),gwt=B7(),S7=class extends hwt.BaseBundleBuilder{constructor(e){super(e)}async package(e,r){return(0,gwt.toMessageSignatureBundle)(e,r)}};mO.MessageSignatureBundleBuilder=S7});var JDe=_(Zw=>{"use strict";Object.defineProperty(Zw,"__esModule",{value:!0});Zw.MessageSignatureBundleBuilder=Zw.DSSEBundleBuilder=void 0;var dwt=YDe();Object.defineProperty(Zw,"DSSEBundleBuilder",{enumerable:!0,get:function(){return dwt.DSSEBundleBuilder}});var mwt=VDe();Object.defineProperty(Zw,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return mwt.MessageSignatureBundleBuilder}})});var EO=_(yO=>{"use strict";Object.defineProperty(yO,"__esModule",{value:!0});yO.HTTPError=void 0;var D7=class extends Error{constructor({status:e,message:r,location:s}){super(`(${e}) ${r}`),this.statusCode=e,this.location=s}};yO.HTTPError=D7});var $w=_(Db=>{"use strict";Object.defineProperty(Db,"__esModule",{value:!0});Db.InternalError=void 0;Db.internalError=Ewt;var ywt=EO(),IO=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.name=this.constructor.name,this.cause=s,this.code=e}};Db.InternalError=IO;function Ewt(t,e,r){throw t instanceof ywt.HTTPError&&(r+=` - ${t.message}`),new IO({code:e,message:r,cause:t})}});var CO=_((Dnr,KDe)=>{KDe.exports=fetch});var zDe=_(e1=>{"use strict";var Iwt=e1&&e1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e1,"__esModule",{value:!0});e1.CIContextProvider=void 0;var Cwt=Iwt(CO()),wwt=[Bwt,vwt],b7=class{constructor(e="sigstore"){this.audience=e}async getToken(){return Promise.any(wwt.map(e=>e(this.audience))).catch(()=>Promise.reject("CI: no tokens available"))}};e1.CIContextProvider=b7;async function Bwt(t){if(!process.env.ACTIONS_ID_TOKEN_REQUEST_URL||!process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN)return Promise.reject("no token available");let e=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);return e.searchParams.append("audience",t),(await(0,Cwt.default)(e.href,{retry:2,headers:{Accept:"application/json",Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).json().then(s=>s.value)}async function vwt(){return process.env.SIGSTORE_ID_TOKEN?process.env.SIGSTORE_ID_TOKEN:Promise.reject("no token available")}});var XDe=_(wO=>{"use strict";Object.defineProperty(wO,"__esModule",{value:!0});wO.CIContextProvider=void 0;var Swt=zDe();Object.defineProperty(wO,"CIContextProvider",{enumerable:!0,get:function(){return Swt.CIContextProvider}})});var $De=_((xnr,ZDe)=>{var Dwt=Symbol("proc-log.meta");ZDe.exports={META:Dwt,output:{LEVELS:["standard","error","buffer","flush"],KEYS:{standard:"standard",error:"error",buffer:"buffer",flush:"flush"},standard:function(...t){return process.emit("output","standard",...t)},error:function(...t){return process.emit("output","error",...t)},buffer:function(...t){return process.emit("output","buffer",...t)},flush:function(...t){return process.emit("output","flush",...t)}},log:{LEVELS:["notice","error","warn","info","verbose","http","silly","timing","pause","resume"],KEYS:{notice:"notice",error:"error",warn:"warn",info:"info",verbose:"verbose",http:"http",silly:"silly",timing:"timing",pause:"pause",resume:"resume"},error:function(...t){return process.emit("log","error",...t)},notice:function(...t){return process.emit("log","notice",...t)},warn:function(...t){return process.emit("log","warn",...t)},info:function(...t){return process.emit("log","info",...t)},verbose:function(...t){return process.emit("log","verbose",...t)},http:function(...t){return process.emit("log","http",...t)},silly:function(...t){return process.emit("log","silly",...t)},timing:function(...t){return process.emit("log","timing",...t)},pause:function(){return process.emit("log","pause")},resume:function(){return process.emit("log","resume")}},time:{LEVELS:["start","end"],KEYS:{start:"start",end:"end"},start:function(t,e){process.emit("time","start",t);function r(){return process.emit("time","end",t)}if(typeof e=="function"){let s=e();return s&&s.finally?s.finally(r):(r(),s)}return r},end:function(t){return process.emit("time","end",t)}},input:{LEVELS:["start","end","read"],KEYS:{start:"start",end:"end",read:"read"},start:function(t){process.emit("input","start");function e(){return process.emit("input","end")}if(typeof t=="function"){let r=t();return r&&r.finally?r.finally(e):(e(),r)}return e},end:function(){return process.emit("input","end")},read:function(...t){let e,r,s=new Promise((a,n)=>{e=a,r=n});return process.emit("input","read",e,r,...t),s}}}});var rbe=_((knr,tbe)=>{"use strict";function ebe(t,e){for(let r in e)Object.defineProperty(t,r,{value:e[r],enumerable:!0,configurable:!0});return t}function bwt(t,e,r){if(!t||typeof t=="string")throw new TypeError("Please pass an Error to err-code");r||(r={}),typeof e=="object"&&(r=e,e=void 0),e!=null&&(r.code=e);try{return ebe(t,r)}catch{r.message=t.message,r.stack=t.stack;let a=function(){};return a.prototype=Object.create(Object.getPrototypeOf(t)),ebe(new a,r)}}tbe.exports=bwt});var ibe=_((Qnr,nbe)=>{function $c(t,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(t)),this._timeouts=t,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}nbe.exports=$c;$c.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};$c.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};$c.prototype.retry=function(t){if(this._timeout&&clearTimeout(this._timeout),!t)return!1;var e=new Date().getTime();if(t&&e-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(t);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var s=this,a=setTimeout(function(){s._attempts++,s._operationTimeoutCb&&(s._timeout=setTimeout(function(){s._operationTimeoutCb(s._attempts)},s._operationTimeout),s._options.unref&&s._timeout.unref()),s._fn(s._attempts)},r);return this._options.unref&&a.unref(),!0};$c.prototype.attempt=function(t,e){this._fn=t,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};$c.prototype.try=function(t){console.log("Using RetryOperation.try() is deprecated"),this.attempt(t)};$c.prototype.start=function(t){console.log("Using RetryOperation.start() is deprecated"),this.attempt(t)};$c.prototype.start=$c.prototype.try;$c.prototype.errors=function(){return this._errors};$c.prototype.attempts=function(){return this._attempts};$c.prototype.mainError=function(){if(this._errors.length===0)return null;for(var t={},e=null,r=0,s=0;s=r&&(e=a,r=c)}return e}});var sbe=_(iy=>{var Pwt=ibe();iy.operation=function(t){var e=iy.timeouts(t);return new Pwt(e,{forever:t&&t.forever,unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};iy.timeouts=function(t){if(t instanceof Array)return[].concat(t);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var r in t)e[r]=t[r];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var s=[],a=0;a{obe.exports=sbe()});var ube=_((Fnr,cbe)=>{"use strict";var xwt=rbe(),kwt=abe(),Qwt=Object.prototype.hasOwnProperty;function lbe(t){return t&&t.code==="EPROMISERETRY"&&Qwt.call(t,"retried")}function Twt(t,e){var r,s;return typeof t=="object"&&typeof e=="function"&&(r=e,e=t,t=r),s=kwt.operation(e),new Promise(function(a,n){s.attempt(function(c){Promise.resolve().then(function(){return t(function(f){throw lbe(f)&&(f=f.retried),xwt(new Error("Retrying"),"EPROMISERETRY",{retried:f})},c)}).then(a,function(f){lbe(f)&&(f=f.retried,s.retry(f||new Error))||n(f)})})})}cbe.exports=Twt});var BO=_(bb=>{"use strict";var Abe=bb&&bb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bb,"__esModule",{value:!0});bb.fetchWithRetry=qwt;var Rwt=Ie("http2"),Fwt=Abe(CO()),fbe=$De(),Nwt=Abe(ube()),Owt=vg(),Lwt=EO(),{HTTP2_HEADER_LOCATION:Mwt,HTTP2_HEADER_CONTENT_TYPE:Uwt,HTTP2_HEADER_USER_AGENT:_wt,HTTP_STATUS_INTERNAL_SERVER_ERROR:Hwt,HTTP_STATUS_TOO_MANY_REQUESTS:jwt,HTTP_STATUS_REQUEST_TIMEOUT:Gwt}=Rwt.constants;async function qwt(t,e){return(0,Nwt.default)(async(r,s)=>{let a=e.method||"POST",n={[_wt]:Owt.ua.getUserAgent(),...e.headers},c=await(0,Fwt.default)(t,{method:a,headers:n,body:e.body,timeout:e.timeout,retry:!1}).catch(f=>(fbe.log.http("fetch",`${a} ${t} attempt ${s} failed with ${f}`),r(f)));if(c.ok)return c;{let f=await Wwt(c);if(fbe.log.http("fetch",`${a} ${t} attempt ${s} failed with ${c.status}`),Ywt(c.status))return r(f);throw f}},Vwt(e.retry))}var Wwt=async t=>{let e=t.statusText,r=t.headers.get(Mwt)||void 0;if(t.headers.get(Uwt)?.includes("application/json"))try{e=(await t.json()).message||e}catch{}return new Lwt.HTTPError({status:t.status,message:e,location:r})},Ywt=t=>[Gwt,jwt].includes(t)||t>=Hwt,Vwt=t=>typeof t=="boolean"?{retries:t?1:0}:typeof t=="number"?{retries:t}:{retries:0,...t}});var pbe=_(vO=>{"use strict";Object.defineProperty(vO,"__esModule",{value:!0});vO.Fulcio=void 0;var Jwt=BO(),P7=class{constructor(e){this.options=e}async createSigningCertificate(e){let{baseURL:r,retry:s,timeout:a}=this.options,n=`${r}/api/v2/signingCert`;return(await(0,Jwt.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(e),timeout:a,retry:s})).json()}};vO.Fulcio=P7});var hbe=_(SO=>{"use strict";Object.defineProperty(SO,"__esModule",{value:!0});SO.CAClient=void 0;var Kwt=$w(),zwt=pbe(),x7=class{constructor(e){this.fulcio=new zwt.Fulcio({baseURL:e.fulcioBaseURL,retry:e.retry,timeout:e.timeout})}async createSigningCertificate(e,r,s){let a=Xwt(e,r,s);try{let n=await this.fulcio.createSigningCertificate(a);return(n.signedCertificateEmbeddedSct?n.signedCertificateEmbeddedSct:n.signedCertificateDetachedSct).chain.certificates}catch(n){(0,Kwt.internalError)(n,"CA_CREATE_SIGNING_CERTIFICATE_ERROR","error creating signing certificate")}}};SO.CAClient=x7;function Xwt(t,e,r){return{credentials:{oidcIdentityToken:t},publicKeyRequest:{publicKey:{algorithm:"ECDSA",content:e},proofOfPossession:r.toString("base64")}}}});var dbe=_(t1=>{"use strict";var Zwt=t1&&t1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t1,"__esModule",{value:!0});t1.EphemeralSigner=void 0;var gbe=Zwt(Ie("crypto")),$wt="ec",e1t="P-256",k7=class{constructor(){this.keypair=gbe.default.generateKeyPairSync($wt,{namedCurve:e1t})}async sign(e){let r=gbe.default.sign(null,e,this.keypair.privateKey),s=this.keypair.publicKey.export({format:"pem",type:"spki"}).toString("ascii");return{signature:r,key:{$case:"publicKey",publicKey:s}}}};t1.EphemeralSigner=k7});var mbe=_(sy=>{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.FulcioSigner=sy.DEFAULT_FULCIO_URL=void 0;var Q7=$w(),t1t=vg(),r1t=hbe(),n1t=dbe();sy.DEFAULT_FULCIO_URL="https://fulcio.sigstore.dev";var T7=class{constructor(e){this.ca=new r1t.CAClient({...e,fulcioBaseURL:e.fulcioBaseURL||sy.DEFAULT_FULCIO_URL}),this.identityProvider=e.identityProvider,this.keyHolder=e.keyHolder||new n1t.EphemeralSigner}async sign(e){let r=await this.getIdentityToken(),s;try{s=t1t.oidc.extractJWTSubject(r)}catch(f){throw new Q7.InternalError({code:"IDENTITY_TOKEN_PARSE_ERROR",message:`invalid identity token: ${r}`,cause:f})}let a=await this.keyHolder.sign(Buffer.from(s));if(a.key.$case!=="publicKey")throw new Q7.InternalError({code:"CA_CREATE_SIGNING_CERTIFICATE_ERROR",message:"unexpected format for signing key"});let n=await this.ca.createSigningCertificate(r,a.key.publicKey,a.signature);return{signature:(await this.keyHolder.sign(e)).signature,key:{$case:"x509Certificate",certificate:n[0]}}}async getIdentityToken(){try{return await this.identityProvider.getToken()}catch(e){throw new Q7.InternalError({code:"IDENTITY_TOKEN_READ_ERROR",message:"error retrieving identity token",cause:e})}}};sy.FulcioSigner=T7});var Ebe=_(r1=>{"use strict";Object.defineProperty(r1,"__esModule",{value:!0});r1.FulcioSigner=r1.DEFAULT_FULCIO_URL=void 0;var ybe=mbe();Object.defineProperty(r1,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return ybe.DEFAULT_FULCIO_URL}});Object.defineProperty(r1,"FulcioSigner",{enumerable:!0,get:function(){return ybe.FulcioSigner}})});var wbe=_(DO=>{"use strict";Object.defineProperty(DO,"__esModule",{value:!0});DO.Rekor=void 0;var Ibe=BO(),R7=class{constructor(e){this.options=e}async createEntry(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries`,f=await(await(0,Ibe.fetchWithRetry)(n,{headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(e),timeout:s,retry:a})).json();return Cbe(f)}async getEntry(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries/${e}`,f=await(await(0,Ibe.fetchWithRetry)(n,{method:"GET",headers:{Accept:"application/json"},timeout:s,retry:a})).json();return Cbe(f)}};DO.Rekor=R7;function Cbe(t){let e=Object.entries(t);if(e.length!=1)throw new Error("Received multiple entries in Rekor response");let[r,s]=e[0];return{...s,uuid:r}}});var vbe=_(bO=>{"use strict";Object.defineProperty(bO,"__esModule",{value:!0});bO.TLogClient=void 0;var Bbe=$w(),i1t=EO(),s1t=wbe(),F7=class{constructor(e){this.fetchOnConflict=e.fetchOnConflict??!1,this.rekor=new s1t.Rekor({baseURL:e.rekorBaseURL,retry:e.retry,timeout:e.timeout})}async createEntry(e){let r;try{r=await this.rekor.createEntry(e)}catch(s){if(o1t(s)&&this.fetchOnConflict){let a=s.location.split("/").pop()||"";try{r=await this.rekor.getEntry(a)}catch(n){(0,Bbe.internalError)(n,"TLOG_FETCH_ENTRY_ERROR","error fetching tlog entry")}}else(0,Bbe.internalError)(s,"TLOG_CREATE_ENTRY_ERROR","error creating tlog entry")}return r}};bO.TLogClient=F7;function o1t(t){return t instanceof i1t.HTTPError&&t.statusCode===409&&t.location!==void 0}});var Sbe=_(N7=>{"use strict";Object.defineProperty(N7,"__esModule",{value:!0});N7.toProposedEntry=l1t;var a1t=Ib(),Sg=vg(),Pb="sha256";function l1t(t,e,r="dsse"){switch(t.$case){case"dsseEnvelope":return r==="intoto"?f1t(t.dsseEnvelope,e):u1t(t.dsseEnvelope,e);case"messageSignature":return c1t(t.messageSignature,e)}}function c1t(t,e){let r=t.messageDigest.digest.toString("hex"),s=t.signature.toString("base64"),a=Sg.encoding.base64Encode(e);return{apiVersion:"0.0.1",kind:"hashedrekord",spec:{data:{hash:{algorithm:Pb,value:r}},signature:{content:s,publicKey:{content:a}}}}}function u1t(t,e){let r=JSON.stringify((0,a1t.envelopeToJSON)(t)),s=Sg.encoding.base64Encode(e);return{apiVersion:"0.0.1",kind:"dsse",spec:{proposedContent:{envelope:r,verifiers:[s]}}}}function f1t(t,e){let r=Sg.crypto.digest(Pb,t.payload).toString("hex"),s=A1t(t,e),a=Sg.encoding.base64Encode(t.payload.toString("base64")),n=Sg.encoding.base64Encode(t.signatures[0].sig.toString("base64")),c=t.signatures[0].keyid,f=Sg.encoding.base64Encode(e),p={payloadType:t.payloadType,payload:a,signatures:[{sig:n,publicKey:f}]};return c.length>0&&(p.signatures[0].keyid=c),{apiVersion:"0.0.2",kind:"intoto",spec:{content:{envelope:p,hash:{algorithm:Pb,value:s},payloadHash:{algorithm:Pb,value:r}}}}}function A1t(t,e){let r={payloadType:t.payloadType,payload:t.payload.toString("base64"),signatures:[{sig:t.signatures[0].sig.toString("base64"),publicKey:e}]};return t.signatures[0].keyid.length>0&&(r.signatures[0].keyid=t.signatures[0].keyid),Sg.crypto.digest(Pb,Sg.json.canonicalize(r)).toString("hex")}});var Dbe=_(oy=>{"use strict";Object.defineProperty(oy,"__esModule",{value:!0});oy.RekorWitness=oy.DEFAULT_REKOR_URL=void 0;var p1t=vg(),h1t=vbe(),g1t=Sbe();oy.DEFAULT_REKOR_URL="https://rekor.sigstore.dev";var O7=class{constructor(e){this.entryType=e.entryType,this.tlog=new h1t.TLogClient({...e,rekorBaseURL:e.rekorBaseURL||oy.DEFAULT_REKOR_URL})}async testify(e,r){let s=(0,g1t.toProposedEntry)(e,r,this.entryType),a=await this.tlog.createEntry(s);return d1t(a)}};oy.RekorWitness=O7;function d1t(t){let e=Buffer.from(t.logID,"hex"),r=p1t.encoding.base64Decode(t.body),s=JSON.parse(r),a=t?.verification?.signedEntryTimestamp?m1t(t.verification.signedEntryTimestamp):void 0,n=t?.verification?.inclusionProof?y1t(t.verification.inclusionProof):void 0;return{tlogEntries:[{logIndex:t.logIndex.toString(),logId:{keyId:e},integratedTime:t.integratedTime.toString(),kindVersion:{kind:s.kind,version:s.apiVersion},inclusionPromise:a,inclusionProof:n,canonicalizedBody:Buffer.from(t.body,"base64")}]}}function m1t(t){return{signedEntryTimestamp:Buffer.from(t,"base64")}}function y1t(t){return{logIndex:t.logIndex.toString(),treeSize:t.treeSize.toString(),rootHash:Buffer.from(t.rootHash,"hex"),hashes:t.hashes.map(e=>Buffer.from(e,"hex")),checkpoint:{envelope:t.checkpoint}}}});var bbe=_(PO=>{"use strict";Object.defineProperty(PO,"__esModule",{value:!0});PO.TimestampAuthority=void 0;var E1t=BO(),L7=class{constructor(e){this.options=e}async createTimestamp(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/timestamp`;return(await(0,E1t.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(e),timeout:s,retry:a})).buffer()}};PO.TimestampAuthority=L7});var xbe=_(xO=>{"use strict";Object.defineProperty(xO,"__esModule",{value:!0});xO.TSAClient=void 0;var I1t=$w(),C1t=bbe(),w1t=vg(),Pbe="sha256",M7=class{constructor(e){this.tsa=new C1t.TimestampAuthority({baseURL:e.tsaBaseURL,retry:e.retry,timeout:e.timeout})}async createTimestamp(e){let r={artifactHash:w1t.crypto.digest(Pbe,e).toString("base64"),hashAlgorithm:Pbe};try{return await this.tsa.createTimestamp(r)}catch(s){(0,I1t.internalError)(s,"TSA_CREATE_TIMESTAMP_ERROR","error creating timestamp")}}};xO.TSAClient=M7});var kbe=_(kO=>{"use strict";Object.defineProperty(kO,"__esModule",{value:!0});kO.TSAWitness=void 0;var B1t=xbe(),U7=class{constructor(e){this.tsa=new B1t.TSAClient({tsaBaseURL:e.tsaBaseURL,retry:e.retry,timeout:e.timeout})}async testify(e){let r=v1t(e);return{rfc3161Timestamps:[{signedTimestamp:await this.tsa.createTimestamp(r)}]}}};kO.TSAWitness=U7;function v1t(t){switch(t.$case){case"dsseEnvelope":return t.dsseEnvelope.signatures[0].sig;case"messageSignature":return t.messageSignature.signature}}});var Tbe=_(Dg=>{"use strict";Object.defineProperty(Dg,"__esModule",{value:!0});Dg.TSAWitness=Dg.RekorWitness=Dg.DEFAULT_REKOR_URL=void 0;var Qbe=Dbe();Object.defineProperty(Dg,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return Qbe.DEFAULT_REKOR_URL}});Object.defineProperty(Dg,"RekorWitness",{enumerable:!0,get:function(){return Qbe.RekorWitness}});var S1t=kbe();Object.defineProperty(Dg,"TSAWitness",{enumerable:!0,get:function(){return S1t.TSAWitness}})});var H7=_(ys=>{"use strict";Object.defineProperty(ys,"__esModule",{value:!0});ys.TSAWitness=ys.RekorWitness=ys.DEFAULT_REKOR_URL=ys.FulcioSigner=ys.DEFAULT_FULCIO_URL=ys.CIContextProvider=ys.InternalError=ys.MessageSignatureBundleBuilder=ys.DSSEBundleBuilder=void 0;var Rbe=JDe();Object.defineProperty(ys,"DSSEBundleBuilder",{enumerable:!0,get:function(){return Rbe.DSSEBundleBuilder}});Object.defineProperty(ys,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return Rbe.MessageSignatureBundleBuilder}});var D1t=$w();Object.defineProperty(ys,"InternalError",{enumerable:!0,get:function(){return D1t.InternalError}});var b1t=XDe();Object.defineProperty(ys,"CIContextProvider",{enumerable:!0,get:function(){return b1t.CIContextProvider}});var Fbe=Ebe();Object.defineProperty(ys,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return Fbe.DEFAULT_FULCIO_URL}});Object.defineProperty(ys,"FulcioSigner",{enumerable:!0,get:function(){return Fbe.FulcioSigner}});var _7=Tbe();Object.defineProperty(ys,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return _7.DEFAULT_REKOR_URL}});Object.defineProperty(ys,"RekorWitness",{enumerable:!0,get:function(){return _7.RekorWitness}});Object.defineProperty(ys,"TSAWitness",{enumerable:!0,get:function(){return _7.TSAWitness}})});var Obe=_(xb=>{"use strict";var Nbe=xb&&xb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xb,"__esModule",{value:!0});xb.appDataPath=x1t;var P1t=Nbe(Ie("os")),n1=Nbe(Ie("path"));function x1t(t){let e=P1t.default.homedir();switch(process.platform){case"darwin":{let r=n1.default.join(e,"Library","Application Support");return n1.default.join(r,t)}case"win32":{let r=process.env.LOCALAPPDATA||n1.default.join(e,"AppData","Local");return n1.default.join(r,t,"Data")}default:{let r=process.env.XDG_DATA_HOME||n1.default.join(e,".local","share");return n1.default.join(r,t)}}}});var PA=_(wl=>{"use strict";Object.defineProperty(wl,"__esModule",{value:!0});wl.UnsupportedAlgorithmError=wl.CryptoError=wl.LengthOrHashMismatchError=wl.UnsignedMetadataError=wl.RepositoryError=wl.ValueError=void 0;var j7=class extends Error{};wl.ValueError=j7;var kb=class extends Error{};wl.RepositoryError=kb;var G7=class extends kb{};wl.UnsignedMetadataError=G7;var q7=class extends kb{};wl.LengthOrHashMismatchError=q7;var QO=class extends Error{};wl.CryptoError=QO;var W7=class extends QO{};wl.UnsupportedAlgorithmError=W7});var Mbe=_(bg=>{"use strict";Object.defineProperty(bg,"__esModule",{value:!0});bg.isDefined=k1t;bg.isObject=Lbe;bg.isStringArray=Q1t;bg.isObjectArray=T1t;bg.isStringRecord=R1t;bg.isObjectRecord=F1t;function k1t(t){return t!==void 0}function Lbe(t){return typeof t=="object"&&t!==null}function Q1t(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function T1t(t){return Array.isArray(t)&&t.every(Lbe)}function R1t(t){return typeof t=="object"&&t!==null&&Object.keys(t).every(e=>typeof e=="string")&&Object.values(t).every(e=>typeof e=="string")}function F1t(t){return typeof t=="object"&&t!==null&&Object.keys(t).every(e=>typeof e=="string")&&Object.values(t).every(e=>typeof e=="object"&&e!==null)}});var V7=_(($nr,Hbe)=>{var Ube=",",N1t=":",O1t="[",L1t="]",M1t="{",U1t="}";function Y7(t){let e=[];if(typeof t=="string")e.push(_be(t));else if(typeof t=="boolean")e.push(JSON.stringify(t));else if(Number.isInteger(t))e.push(JSON.stringify(t));else if(t===null)e.push(JSON.stringify(t));else if(Array.isArray(t)){e.push(O1t);let r=!0;t.forEach(s=>{r||e.push(Ube),r=!1,e.push(Y7(s))}),e.push(L1t)}else if(typeof t=="object"){e.push(M1t);let r=!0;Object.keys(t).sort().forEach(s=>{r||e.push(Ube),r=!1,e.push(_be(s)),e.push(N1t),e.push(Y7(t[s]))}),e.push(U1t)}else throw new TypeError("cannot encode "+t.toString());return e.join("")}function _be(t){return'"'+t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'}Hbe.exports={canonicalize:Y7}});var jbe=_(i1=>{"use strict";var _1t=i1&&i1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(i1,"__esModule",{value:!0});i1.verifySignature=void 0;var H1t=V7(),j1t=_1t(Ie("crypto")),G1t=(t,e,r)=>{let s=Buffer.from((0,H1t.canonicalize)(t));return j1t.default.verify(void 0,s,e,Buffer.from(r,"hex"))};i1.verifySignature=G1t});var ff=_(eu=>{"use strict";var q1t=eu&&eu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),W1t=eu&&eu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Gbe=eu&&eu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&q1t(e,t,r);return W1t(e,t),e};Object.defineProperty(eu,"__esModule",{value:!0});eu.crypto=eu.guard=void 0;eu.guard=Gbe(Mbe());eu.crypto=Gbe(jbe())});var ay=_(hh=>{"use strict";var Y1t=hh&&hh.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hh,"__esModule",{value:!0});hh.Signed=hh.MetadataKind=void 0;hh.isMetadataKind=J1t;var V1t=Y1t(Ie("util")),Qb=PA(),J7=ff(),qbe=["1","0","31"],K7;(function(t){t.Root="root",t.Timestamp="timestamp",t.Snapshot="snapshot",t.Targets="targets"})(K7||(hh.MetadataKind=K7={}));function J1t(t){return typeof t=="string"&&Object.values(K7).includes(t)}var z7=class t{constructor(e){this.specVersion=e.specVersion||qbe.join(".");let r=this.specVersion.split(".");if(!(r.length===2||r.length===3)||!r.every(s=>K1t(s)))throw new Qb.ValueError("Failed to parse specVersion");if(r[0]!=qbe[0])throw new Qb.ValueError("Unsupported specVersion");this.expires=e.expires,this.version=e.version,this.unrecognizedFields=e.unrecognizedFields||{}}equals(e){return e instanceof t?this.specVersion===e.specVersion&&this.expires===e.expires&&this.version===e.version&&V1t.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}isExpired(e){return e||(e=new Date),e>=new Date(this.expires)}static commonFieldsFromJSON(e){let{spec_version:r,expires:s,version:a,...n}=e;if(J7.guard.isDefined(r)){if(typeof r!="string")throw new TypeError("spec_version must be a string")}else throw new Qb.ValueError("spec_version is not defined");if(J7.guard.isDefined(s)){if(typeof s!="string")throw new TypeError("expires must be a string")}else throw new Qb.ValueError("expires is not defined");if(J7.guard.isDefined(a)){if(typeof a!="number")throw new TypeError("version must be a number")}else throw new Qb.ValueError("version is not defined");return{specVersion:r,expires:s,version:a,unrecognizedFields:n}}};hh.Signed=z7;function K1t(t){return!isNaN(Number(t))}});var Tb=_(xg=>{"use strict";var Wbe=xg&&xg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xg,"__esModule",{value:!0});xg.TargetFile=xg.MetaFile=void 0;var Ybe=Wbe(Ie("crypto")),RO=Wbe(Ie("util")),Pg=PA(),TO=ff(),X7=class t{constructor(e){if(e.version<=0)throw new Pg.ValueError("Metafile version must be at least 1");e.length!==void 0&&Vbe(e.length),this.version=e.version,this.length=e.length,this.hashes=e.hashes,this.unrecognizedFields=e.unrecognizedFields||{}}equals(e){return e instanceof t?this.version===e.version&&this.length===e.length&&RO.default.isDeepStrictEqual(this.hashes,e.hashes)&&RO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}verify(e){if(this.length!==void 0&&e.length!==this.length)throw new Pg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${e.length}`);this.hashes&&Object.entries(this.hashes).forEach(([r,s])=>{let a;try{a=Ybe.default.createHash(r)}catch{throw new Pg.LengthOrHashMismatchError(`Hash algorithm ${r} not supported`)}let n=a.update(e).digest("hex");if(n!==s)throw new Pg.LengthOrHashMismatchError(`Expected hash ${s} but got ${n}`)})}toJSON(){let e={version:this.version,...this.unrecognizedFields};return this.length!==void 0&&(e.length=this.length),this.hashes&&(e.hashes=this.hashes),e}static fromJSON(e){let{version:r,length:s,hashes:a,...n}=e;if(typeof r!="number")throw new TypeError("version must be a number");if(TO.guard.isDefined(s)&&typeof s!="number")throw new TypeError("length must be a number");if(TO.guard.isDefined(a)&&!TO.guard.isStringRecord(a))throw new TypeError("hashes must be string keys and values");return new t({version:r,length:s,hashes:a,unrecognizedFields:n})}};xg.MetaFile=X7;var Z7=class t{constructor(e){Vbe(e.length),this.length=e.length,this.path=e.path,this.hashes=e.hashes,this.unrecognizedFields=e.unrecognizedFields||{}}get custom(){let e=this.unrecognizedFields.custom;return!e||Array.isArray(e)||typeof e!="object"?{}:e}equals(e){return e instanceof t?this.length===e.length&&this.path===e.path&&RO.default.isDeepStrictEqual(this.hashes,e.hashes)&&RO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}async verify(e){let r=0,s=Object.keys(this.hashes).reduce((a,n)=>{try{a[n]=Ybe.default.createHash(n)}catch{throw new Pg.LengthOrHashMismatchError(`Hash algorithm ${n} not supported`)}return a},{});for await(let a of e)r+=a.length,Object.values(s).forEach(n=>{n.update(a)});if(r!==this.length)throw new Pg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${r}`);Object.entries(s).forEach(([a,n])=>{let c=this.hashes[a],f=n.digest("hex");if(f!==c)throw new Pg.LengthOrHashMismatchError(`Expected hash ${c} but got ${f}`)})}toJSON(){return{length:this.length,hashes:this.hashes,...this.unrecognizedFields}}static fromJSON(e,r){let{length:s,hashes:a,...n}=r;if(typeof s!="number")throw new TypeError("length must be a number");if(!TO.guard.isStringRecord(a))throw new TypeError("hashes must have string keys and values");return new t({length:s,path:e,hashes:a,unrecognizedFields:n})}};xg.TargetFile=Z7;function Vbe(t){if(t<0)throw new Pg.ValueError("Length must be at least 0")}});var Jbe=_($7=>{"use strict";Object.defineProperty($7,"__esModule",{value:!0});$7.encodeOIDString=X1t;var z1t=6;function X1t(t){let e=t.split("."),r=parseInt(e[0],10)*40+parseInt(e[1],10),s=[];e.slice(2).forEach(n=>{let c=Z1t(parseInt(n,10));s.push(...c)});let a=Buffer.from([r,...s]);return Buffer.from([z1t,a.length,...a])}function Z1t(t){let e=[],r=0;for(;t>0;)e.unshift(t&127|r),t>>=7,r=128;return e}});var Zbe=_(Fb=>{"use strict";var $1t=Fb&&Fb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Fb,"__esModule",{value:!0});Fb.getPublicKey=n2t;var s1=$1t(Ie("crypto")),Rb=PA(),eJ=Jbe(),FO=48,Kbe=3,zbe=0,e2t="1.3.101.112",t2t="1.2.840.10045.2.1",r2t="1.2.840.10045.3.1.7",tJ="-----BEGIN PUBLIC KEY-----";function n2t(t){switch(t.keyType){case"rsa":return i2t(t);case"ed25519":return s2t(t);case"ecdsa":case"ecdsa-sha2-nistp256":case"ecdsa-sha2-nistp384":return o2t(t);default:throw new Rb.UnsupportedAlgorithmError(`Unsupported key type: ${t.keyType}`)}}function i2t(t){if(!t.keyVal.startsWith(tJ))throw new Rb.CryptoError("Invalid key format");let e=s1.default.createPublicKey(t.keyVal);switch(t.scheme){case"rsassa-pss-sha256":return{key:e,padding:s1.default.constants.RSA_PKCS1_PSS_PADDING};default:throw new Rb.UnsupportedAlgorithmError(`Unsupported RSA scheme: ${t.scheme}`)}}function s2t(t){let e;if(t.keyVal.startsWith(tJ))e=s1.default.createPublicKey(t.keyVal);else{if(!Xbe(t.keyVal))throw new Rb.CryptoError("Invalid key format");e=s1.default.createPublicKey({key:a2t.hexToDER(t.keyVal),format:"der",type:"spki"})}return{key:e}}function o2t(t){let e;if(t.keyVal.startsWith(tJ))e=s1.default.createPublicKey(t.keyVal);else{if(!Xbe(t.keyVal))throw new Rb.CryptoError("Invalid key format");e=s1.default.createPublicKey({key:l2t.hexToDER(t.keyVal),format:"der",type:"spki"})}return{key:e}}var a2t={hexToDER:t=>{let e=Buffer.from(t,"hex"),r=(0,eJ.encodeOIDString)(e2t),s=Buffer.concat([Buffer.concat([Buffer.from([FO]),Buffer.from([r.length]),r]),Buffer.concat([Buffer.from([Kbe]),Buffer.from([e.length+1]),Buffer.from([zbe]),e])]);return Buffer.concat([Buffer.from([FO]),Buffer.from([s.length]),s])}},l2t={hexToDER:t=>{let e=Buffer.from(t,"hex"),r=Buffer.concat([Buffer.from([Kbe]),Buffer.from([e.length+1]),Buffer.from([zbe]),e]),s=Buffer.concat([(0,eJ.encodeOIDString)(t2t),(0,eJ.encodeOIDString)(r2t)]),a=Buffer.concat([Buffer.from([FO]),Buffer.from([s.length]),s]);return Buffer.concat([Buffer.from([FO]),Buffer.from([a.length+r.length]),a,r])}},Xbe=t=>/^[0-9a-fA-F]+$/.test(t)});var NO=_(o1=>{"use strict";var c2t=o1&&o1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(o1,"__esModule",{value:!0});o1.Key=void 0;var $be=c2t(Ie("util")),Nb=PA(),ePe=ff(),u2t=Zbe(),rJ=class t{constructor(e){let{keyID:r,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c}=e;this.keyID=r,this.keyType=s,this.scheme=a,this.keyVal=n,this.unrecognizedFields=c||{}}verifySignature(e){let r=e.signatures[this.keyID];if(!r)throw new Nb.UnsignedMetadataError("no signature for key found in metadata");if(!this.keyVal.public)throw new Nb.UnsignedMetadataError("no public key found");let s=(0,u2t.getPublicKey)({keyType:this.keyType,scheme:this.scheme,keyVal:this.keyVal.public}),a=e.signed.toJSON();try{if(!ePe.crypto.verifySignature(a,s,r.sig))throw new Nb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}catch(n){throw n instanceof Nb.UnsignedMetadataError?n:new Nb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}}equals(e){return e instanceof t?this.keyID===e.keyID&&this.keyType===e.keyType&&this.scheme===e.scheme&&$be.default.isDeepStrictEqual(this.keyVal,e.keyVal)&&$be.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{keytype:this.keyType,scheme:this.scheme,keyval:this.keyVal,...this.unrecognizedFields}}static fromJSON(e,r){let{keytype:s,scheme:a,keyval:n,...c}=r;if(typeof s!="string")throw new TypeError("keytype must be a string");if(typeof a!="string")throw new TypeError("scheme must be a string");if(!ePe.guard.isStringRecord(n))throw new TypeError("keyval must be a string record");return new t({keyID:e,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c})}};o1.Key=rJ});var sPe=_((air,iPe)=>{"use strict";iPe.exports=rPe;function rPe(t,e,r){t instanceof RegExp&&(t=tPe(t,r)),e instanceof RegExp&&(e=tPe(e,r));var s=nPe(t,e,r);return s&&{start:s[0],end:s[1],pre:r.slice(0,s[0]),body:r.slice(s[0]+t.length,s[1]),post:r.slice(s[1]+e.length)}}function tPe(t,e){var r=e.match(t);return r?r[0]:null}rPe.range=nPe;function nPe(t,e,r){var s,a,n,c,f,p=r.indexOf(t),h=r.indexOf(e,p+1),E=p;if(p>=0&&h>0){for(s=[],n=r.length;E>=0&&!f;)E==p?(s.push(E),p=r.indexOf(t,E+1)):s.length==1?f=[s.pop(),h]:(a=s.pop(),a=0?p:h;s.length&&(f=[n,c])}return f}});var pPe=_((lir,APe)=>{var oPe=sPe();APe.exports=p2t;var aPe="\0SLASH"+Math.random()+"\0",lPe="\0OPEN"+Math.random()+"\0",iJ="\0CLOSE"+Math.random()+"\0",cPe="\0COMMA"+Math.random()+"\0",uPe="\0PERIOD"+Math.random()+"\0";function nJ(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function f2t(t){return t.split("\\\\").join(aPe).split("\\{").join(lPe).split("\\}").join(iJ).split("\\,").join(cPe).split("\\.").join(uPe)}function A2t(t){return t.split(aPe).join("\\").split(lPe).join("{").split(iJ).join("}").split(cPe).join(",").split(uPe).join(".")}function fPe(t){if(!t)return[""];var e=[],r=oPe("{","}",t);if(!r)return t.split(",");var s=r.pre,a=r.body,n=r.post,c=s.split(",");c[c.length-1]+="{"+a+"}";var f=fPe(n);return n.length&&(c[c.length-1]+=f.shift(),c.push.apply(c,f)),e.push.apply(e,c),e}function p2t(t){return t?(t.substr(0,2)==="{}"&&(t="\\{\\}"+t.substr(2)),Ob(f2t(t),!0).map(A2t)):[]}function h2t(t){return"{"+t+"}"}function g2t(t){return/^-?0\d/.test(t)}function d2t(t,e){return t<=e}function m2t(t,e){return t>=e}function Ob(t,e){var r=[],s=oPe("{","}",t);if(!s)return[t];var a=s.pre,n=s.post.length?Ob(s.post,!1):[""];if(/\$$/.test(s.pre))for(var c=0;c=0;if(!E&&!C)return s.post.match(/,.*\}/)?(t=s.pre+"{"+s.body+iJ+s.post,Ob(t)):[t];var S;if(E)S=s.body.split(/\.\./);else if(S=fPe(s.body),S.length===1&&(S=Ob(S[0],!1).map(h2t),S.length===1))return n.map(function(Ce){return s.pre+S[0]+Ce});var P;if(E){var I=nJ(S[0]),R=nJ(S[1]),N=Math.max(S[0].length,S[1].length),U=S.length==3?Math.abs(nJ(S[2])):1,W=d2t,ee=R0){var pe=new Array(me+1).join("0");ue<0?le="-"+pe+le.slice(1):le=pe+le}}P.push(le)}}else{P=[];for(var Be=0;Be{"use strict";Object.defineProperty(OO,"__esModule",{value:!0});OO.assertValidPattern=void 0;var y2t=1024*64,E2t=t=>{if(typeof t!="string")throw new TypeError("invalid pattern");if(t.length>y2t)throw new TypeError("pattern is too long")};OO.assertValidPattern=E2t});var dPe=_(LO=>{"use strict";Object.defineProperty(LO,"__esModule",{value:!0});LO.parseClass=void 0;var I2t={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Lb=t=>t.replace(/[[\]\\-]/g,"\\$&"),C2t=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),gPe=t=>t.join(""),w2t=(t,e)=>{let r=e;if(t.charAt(r)!=="[")throw new Error("not in a brace expression");let s=[],a=[],n=r+1,c=!1,f=!1,p=!1,h=!1,E=r,C="";e:for(;nC?s.push(Lb(C)+"-"+Lb(R)):R===C&&s.push(Lb(R)),C="",n++;continue}if(t.startsWith("-]",n+1)){s.push(Lb(R+"-")),n+=2;continue}if(t.startsWith("-",n+1)){C=R,n+=2;continue}s.push(Lb(R)),n++}if(E{"use strict";Object.defineProperty(MO,"__esModule",{value:!0});MO.unescape=void 0;var B2t=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");MO.unescape=B2t});var aJ=_(jO=>{"use strict";Object.defineProperty(jO,"__esModule",{value:!0});jO.AST=void 0;var v2t=dPe(),_O=UO(),S2t=new Set(["!","?","+","*","@"]),mPe=t=>S2t.has(t),D2t="(?!(?:^|/)\\.\\.?(?:$|/))",HO="(?!\\.)",b2t=new Set(["[","."]),P2t=new Set(["..","."]),x2t=new Set("().*{}+?[]^$\\!"),k2t=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),oJ="[^/]",yPe=oJ+"*?",EPe=oJ+"+?",sJ=class t{type;#t;#r;#i=!1;#e=[];#n;#o;#l;#a=!1;#s;#c;#f=!1;constructor(e,r,s={}){this.type=e,e&&(this.#r=!0),this.#n=r,this.#t=this.#n?this.#n.#t:this,this.#s=this.#t===this?s:this.#t.#s,this.#l=this.#t===this?[]:this.#t.#l,e==="!"&&!this.#t.#a&&this.#l.push(this),this.#o=this.#n?this.#n.#e.length:0}get hasMagic(){if(this.#r!==void 0)return this.#r;for(let e of this.#e)if(typeof e!="string"&&(e.type||e.hasMagic))return this.#r=!0;return this.#r}toString(){return this.#c!==void 0?this.#c:this.type?this.#c=this.type+"("+this.#e.map(e=>String(e)).join("|")+")":this.#c=this.#e.map(e=>String(e)).join("")}#p(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;this.toString(),this.#a=!0;let e;for(;e=this.#l.pop();){if(e.type!=="!")continue;let r=e,s=r.#n;for(;s;){for(let a=r.#o+1;!s.type&&atypeof r=="string"?r:r.toJSON()):[this.type,...this.#e.map(r=>r.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&this.#n?.type==="!")&&e.push({}),e}isStart(){if(this.#t===this)return!0;if(!this.#n?.isStart())return!1;if(this.#o===0)return!0;let e=this.#n;for(let r=0;r{let[I,R,N,U]=typeof P=="string"?t.#h(P,this.#r,p):P.toRegExpSource(e);return this.#r=this.#r||N,this.#i=this.#i||U,I}).join(""),E="";if(this.isStart()&&typeof this.#e[0]=="string"&&!(this.#e.length===1&&P2t.has(this.#e[0]))){let I=b2t,R=r&&I.has(h.charAt(0))||h.startsWith("\\.")&&I.has(h.charAt(2))||h.startsWith("\\.\\.")&&I.has(h.charAt(4)),N=!r&&!e&&I.has(h.charAt(0));E=R?D2t:N?HO:""}let C="";return this.isEnd()&&this.#t.#a&&this.#n?.type==="!"&&(C="(?:$|\\/)"),[E+h+C,(0,_O.unescape)(h),this.#r=!!this.#r,this.#i]}let s=this.type==="*"||this.type==="+",a=this.type==="!"?"(?:(?!(?:":"(?:",n=this.#A(r);if(this.isStart()&&this.isEnd()&&!n&&this.type!=="!"){let p=this.toString();return this.#e=[p],this.type=null,this.#r=void 0,[p,(0,_O.unescape)(this.toString()),!1,!1]}let c=!s||e||r||!HO?"":this.#A(!0);c===n&&(c=""),c&&(n=`(?:${n})(?:${c})*?`);let f="";if(this.type==="!"&&this.#f)f=(this.isStart()&&!r?HO:"")+EPe;else{let p=this.type==="!"?"))"+(this.isStart()&&!r&&!e?HO:"")+yPe+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&c?")":this.type==="*"&&c?")?":`)${this.type}`;f=a+n+p}return[f,(0,_O.unescape)(n),this.#r=!!this.#r,this.#i]}#A(e){return this.#e.map(r=>{if(typeof r=="string")throw new Error("string type in extglob ast??");let[s,a,n,c]=r.toRegExpSource(e);return this.#i=this.#i||c,s}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join("|")}static#h(e,r,s=!1){let a=!1,n="",c=!1;for(let f=0;f{"use strict";Object.defineProperty(GO,"__esModule",{value:!0});GO.escape=void 0;var Q2t=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&");GO.escape=Q2t});var DPe=_(pr=>{"use strict";var T2t=pr&&pr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pr,"__esModule",{value:!0});pr.unescape=pr.escape=pr.AST=pr.Minimatch=pr.match=pr.makeRe=pr.braceExpand=pr.defaults=pr.filter=pr.GLOBSTAR=pr.sep=pr.minimatch=void 0;var R2t=T2t(pPe()),qO=hPe(),wPe=aJ(),F2t=lJ(),N2t=UO(),O2t=(t,e,r={})=>((0,qO.assertValidPattern)(e),!r.nocomment&&e.charAt(0)==="#"?!1:new ly(e,r).match(t));pr.minimatch=O2t;var L2t=/^\*+([^+@!?\*\[\(]*)$/,M2t=t=>e=>!e.startsWith(".")&&e.endsWith(t),U2t=t=>e=>e.endsWith(t),_2t=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),H2t=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),j2t=/^\*+\.\*+$/,G2t=t=>!t.startsWith(".")&&t.includes("."),q2t=t=>t!=="."&&t!==".."&&t.includes("."),W2t=/^\.\*+$/,Y2t=t=>t!=="."&&t!==".."&&t.startsWith("."),V2t=/^\*+$/,J2t=t=>t.length!==0&&!t.startsWith("."),K2t=t=>t.length!==0&&t!=="."&&t!=="..",z2t=/^\?+([^+@!?\*\[\(]*)?$/,X2t=([t,e=""])=>{let r=BPe([t]);return e?(e=e.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(e)):r},Z2t=([t,e=""])=>{let r=vPe([t]);return e?(e=e.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(e)):r},$2t=([t,e=""])=>{let r=vPe([t]);return e?s=>r(s)&&s.endsWith(e):r},eBt=([t,e=""])=>{let r=BPe([t]);return e?s=>r(s)&&s.endsWith(e):r},BPe=([t])=>{let e=t.length;return r=>r.length===e&&!r.startsWith(".")},vPe=([t])=>{let e=t.length;return r=>r.length===e&&r!=="."&&r!==".."},SPe=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",IPe={win32:{sep:"\\"},posix:{sep:"/"}};pr.sep=SPe==="win32"?IPe.win32.sep:IPe.posix.sep;pr.minimatch.sep=pr.sep;pr.GLOBSTAR=Symbol("globstar **");pr.minimatch.GLOBSTAR=pr.GLOBSTAR;var tBt="[^/]",rBt=tBt+"*?",nBt="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",iBt="(?:(?!(?:\\/|^)\\.).)*?",sBt=(t,e={})=>r=>(0,pr.minimatch)(r,t,e);pr.filter=sBt;pr.minimatch.filter=pr.filter;var tu=(t,e={})=>Object.assign({},t,e),oBt=t=>{if(!t||typeof t!="object"||!Object.keys(t).length)return pr.minimatch;let e=pr.minimatch;return Object.assign((s,a,n={})=>e(s,a,tu(t,n)),{Minimatch:class extends e.Minimatch{constructor(a,n={}){super(a,tu(t,n))}static defaults(a){return e.defaults(tu(t,a)).Minimatch}},AST:class extends e.AST{constructor(a,n,c={}){super(a,n,tu(t,c))}static fromGlob(a,n={}){return e.AST.fromGlob(a,tu(t,n))}},unescape:(s,a={})=>e.unescape(s,tu(t,a)),escape:(s,a={})=>e.escape(s,tu(t,a)),filter:(s,a={})=>e.filter(s,tu(t,a)),defaults:s=>e.defaults(tu(t,s)),makeRe:(s,a={})=>e.makeRe(s,tu(t,a)),braceExpand:(s,a={})=>e.braceExpand(s,tu(t,a)),match:(s,a,n={})=>e.match(s,a,tu(t,n)),sep:e.sep,GLOBSTAR:pr.GLOBSTAR})};pr.defaults=oBt;pr.minimatch.defaults=pr.defaults;var aBt=(t,e={})=>((0,qO.assertValidPattern)(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:(0,R2t.default)(t));pr.braceExpand=aBt;pr.minimatch.braceExpand=pr.braceExpand;var lBt=(t,e={})=>new ly(t,e).makeRe();pr.makeRe=lBt;pr.minimatch.makeRe=pr.makeRe;var cBt=(t,e,r={})=>{let s=new ly(e,r);return t=t.filter(a=>s.match(a)),s.options.nonull&&!t.length&&t.push(e),t};pr.match=cBt;pr.minimatch.match=pr.match;var CPe=/[?*]|[+@!]\(.*?\)|\[|\]/,uBt=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),ly=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(e,r={}){(0,qO.assertValidPattern)(e),r=r||{},this.options=r,this.pattern=e,this.platform=r.platform||SPe,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let r of e)if(typeof r!="string")return!0;return!1}debug(...e){}make(){let e=this.pattern,r=this.options;if(!r.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...n)=>console.error(...n)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(n=>this.slashSplit(n));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let a=this.globParts.map((n,c,f)=>{if(this.isWindows&&this.windowsNoMagicRoot){let p=n[0]===""&&n[1]===""&&(n[2]==="?"||!CPe.test(n[2]))&&!CPe.test(n[3]),h=/^[a-z]:/i.test(n[0]);if(p)return[...n.slice(0,4),...n.slice(4).map(E=>this.parse(E))];if(h)return[n[0],...n.slice(1).map(E=>this.parse(E))]}return n.map(p=>this.parse(p))});if(this.debug(this.pattern,a),this.set=a.filter(n=>n.indexOf(!1)===-1),this.isWindows)for(let n=0;n=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):r>=1?e=this.levelOneOptimize(e):e=this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(r=>{let s=-1;for(;(s=r.indexOf("**",s+1))!==-1;){let a=s;for(;r[a+1]==="**";)a++;a!==s&&r.splice(s,a-s)}return r})}levelOneOptimize(e){return e.map(r=>(r=r.reduce((s,a)=>{let n=s[s.length-1];return a==="**"&&n==="**"?s:a===".."&&n&&n!==".."&&n!=="."&&n!=="**"?(s.pop(),s):(s.push(a),s)},[]),r.length===0?[""]:r))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let a=1;aa&&s.splice(a+1,c-a);let f=s[a+1],p=s[a+2],h=s[a+3];if(f!==".."||!p||p==="."||p===".."||!h||h==="."||h==="..")continue;r=!0,s.splice(a,1);let E=s.slice(0);E[a]="**",e.push(E),a--}if(!this.preserveMultipleSlashes){for(let c=1;cr.length)}partsMatch(e,r,s=!1){let a=0,n=0,c=[],f="";for(;aee?r=r.slice(ie):ee>ie&&(e=e.slice(ee)))}}let{optimizationLevel:n=1}=this.options;n>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:r}),this.debug("matchOne",e.length,r.length);for(var c=0,f=0,p=e.length,h=r.length;c>> no match, partial?`,e,S,r,P),S===p))}let R;if(typeof E=="string"?(R=C===E,this.debug("string match",E,C,R)):(R=E.test(C),this.debug("pattern match",E,C,R)),!R)return!1}if(c===p&&f===h)return!0;if(c===p)return s;if(f===h)return c===p-1&&e[c]==="";throw new Error("wtf?")}braceExpand(){return(0,pr.braceExpand)(this.pattern,this.options)}parse(e){(0,qO.assertValidPattern)(e);let r=this.options;if(e==="**")return pr.GLOBSTAR;if(e==="")return"";let s,a=null;(s=e.match(V2t))?a=r.dot?K2t:J2t:(s=e.match(L2t))?a=(r.nocase?r.dot?H2t:_2t:r.dot?U2t:M2t)(s[1]):(s=e.match(z2t))?a=(r.nocase?r.dot?Z2t:X2t:r.dot?$2t:eBt)(s):(s=e.match(j2t))?a=r.dot?q2t:G2t:(s=e.match(W2t))&&(a=Y2t);let n=wPe.AST.fromGlob(e,this.options).toMMPattern();return a&&typeof n=="object"&&Reflect.defineProperty(n,"test",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let r=this.options,s=r.noglobstar?rBt:r.dot?nBt:iBt,a=new Set(r.nocase?["i"]:[]),n=e.map(p=>{let h=p.map(E=>{if(E instanceof RegExp)for(let C of E.flags.split(""))a.add(C);return typeof E=="string"?uBt(E):E===pr.GLOBSTAR?pr.GLOBSTAR:E._src});return h.forEach((E,C)=>{let S=h[C+1],P=h[C-1];E!==pr.GLOBSTAR||P===pr.GLOBSTAR||(P===void 0?S!==void 0&&S!==pr.GLOBSTAR?h[C+1]="(?:\\/|"+s+"\\/)?"+S:h[C]=s:S===void 0?h[C-1]=P+"(?:\\/|"+s+")?":S!==pr.GLOBSTAR&&(h[C-1]=P+"(?:\\/|\\/"+s+"\\/)"+S,h[C+1]=pr.GLOBSTAR))}),h.filter(E=>E!==pr.GLOBSTAR).join("/")}).join("|"),[c,f]=e.length>1?["(?:",")"]:["",""];n="^"+c+n+f+"$",this.negate&&(n="^(?!"+n+").+$");try{this.regexp=new RegExp(n,[...a].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,r=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&r)return!0;let s=this.options;this.isWindows&&(e=e.split("\\").join("/"));let a=this.slashSplit(e);this.debug(this.pattern,"split",a);let n=this.set;this.debug(this.pattern,"set",n);let c=a[a.length-1];if(!c)for(let f=a.length-2;!c&&f>=0;f--)c=a[f];for(let f=0;f{"use strict";var bPe=ru&&ru.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ru,"__esModule",{value:!0});ru.SuccinctRoles=ru.DelegatedRole=ru.Role=ru.TOP_LEVEL_ROLE_NAMES=void 0;var PPe=bPe(Ie("crypto")),hBt=DPe(),WO=bPe(Ie("util")),YO=PA(),cy=ff();ru.TOP_LEVEL_ROLE_NAMES=["root","targets","snapshot","timestamp"];var Mb=class t{constructor(e){let{keyIDs:r,threshold:s,unrecognizedFields:a}=e;if(gBt(r))throw new YO.ValueError("duplicate key IDs found");if(s<1)throw new YO.ValueError("threshold must be at least 1");this.keyIDs=r,this.threshold=s,this.unrecognizedFields=a||{}}equals(e){return e instanceof t?this.threshold===e.threshold&&WO.default.isDeepStrictEqual(this.keyIDs,e.keyIDs)&&WO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{keyids:this.keyIDs,threshold:this.threshold,...this.unrecognizedFields}}static fromJSON(e){let{keyids:r,threshold:s,...a}=e;if(!cy.guard.isStringArray(r))throw new TypeError("keyids must be an array");if(typeof s!="number")throw new TypeError("threshold must be a number");return new t({keyIDs:r,threshold:s,unrecognizedFields:a})}};ru.Role=Mb;function gBt(t){return new Set(t).size!==t.length}var cJ=class t extends Mb{constructor(e){super(e);let{name:r,terminating:s,paths:a,pathHashPrefixes:n}=e;if(this.name=r,this.terminating=s,e.paths&&e.pathHashPrefixes)throw new YO.ValueError("paths and pathHashPrefixes are mutually exclusive");this.paths=a,this.pathHashPrefixes=n}equals(e){return e instanceof t?super.equals(e)&&this.name===e.name&&this.terminating===e.terminating&&WO.default.isDeepStrictEqual(this.paths,e.paths)&&WO.default.isDeepStrictEqual(this.pathHashPrefixes,e.pathHashPrefixes):!1}isDelegatedPath(e){if(this.paths)return this.paths.some(r=>mBt(e,r));if(this.pathHashPrefixes){let s=PPe.default.createHash("sha256").update(e).digest("hex");return this.pathHashPrefixes.some(a=>s.startsWith(a))}return!1}toJSON(){let e={...super.toJSON(),name:this.name,terminating:this.terminating};return this.paths&&(e.paths=this.paths),this.pathHashPrefixes&&(e.path_hash_prefixes=this.pathHashPrefixes),e}static fromJSON(e){let{keyids:r,threshold:s,name:a,terminating:n,paths:c,path_hash_prefixes:f,...p}=e;if(!cy.guard.isStringArray(r))throw new TypeError("keyids must be an array of strings");if(typeof s!="number")throw new TypeError("threshold must be a number");if(typeof a!="string")throw new TypeError("name must be a string");if(typeof n!="boolean")throw new TypeError("terminating must be a boolean");if(cy.guard.isDefined(c)&&!cy.guard.isStringArray(c))throw new TypeError("paths must be an array of strings");if(cy.guard.isDefined(f)&&!cy.guard.isStringArray(f))throw new TypeError("path_hash_prefixes must be an array of strings");return new t({keyIDs:r,threshold:s,name:a,terminating:n,paths:c,pathHashPrefixes:f,unrecognizedFields:p})}};ru.DelegatedRole=cJ;var dBt=(t,e)=>t.map((r,s)=>[r,e[s]]);function mBt(t,e){let r=t.split("/"),s=e.split("/");return s.length!=r.length?!1:dBt(r,s).every(([a,n])=>(0,hBt.minimatch)(a,n))}var uJ=class t extends Mb{constructor(e){super(e);let{bitLength:r,namePrefix:s}=e;if(r<=0||r>32)throw new YO.ValueError("bitLength must be between 1 and 32");this.bitLength=r,this.namePrefix=s,this.numberOfBins=Math.pow(2,r),this.suffixLen=(this.numberOfBins-1).toString(16).length}equals(e){return e instanceof t?super.equals(e)&&this.bitLength===e.bitLength&&this.namePrefix===e.namePrefix:!1}getRoleForTarget(e){let a=PPe.default.createHash("sha256").update(e).digest().subarray(0,4),n=32-this.bitLength,f=(a.readUInt32BE()>>>n).toString(16).padStart(this.suffixLen,"0");return`${this.namePrefix}-${f}`}*getRoles(){for(let e=0;e{"use strict";var yBt=a1&&a1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(a1,"__esModule",{value:!0});a1.Root=void 0;var xPe=yBt(Ie("util")),AJ=ay(),kPe=PA(),EBt=NO(),VO=fJ(),JO=ff(),pJ=class t extends AJ.Signed{constructor(e){if(super(e),this.type=AJ.MetadataKind.Root,this.keys=e.keys||{},this.consistentSnapshot=e.consistentSnapshot??!0,!e.roles)this.roles=VO.TOP_LEVEL_ROLE_NAMES.reduce((r,s)=>({...r,[s]:new VO.Role({keyIDs:[],threshold:1})}),{});else{let r=new Set(Object.keys(e.roles));if(!VO.TOP_LEVEL_ROLE_NAMES.every(s=>r.has(s)))throw new kPe.ValueError("missing top-level role");this.roles=e.roles}}addKey(e,r){if(!this.roles[r])throw new kPe.ValueError(`role ${r} does not exist`);this.roles[r].keyIDs.includes(e.keyID)||this.roles[r].keyIDs.push(e.keyID),this.keys[e.keyID]=e}equals(e){return e instanceof t?super.equals(e)&&this.consistentSnapshot===e.consistentSnapshot&&xPe.default.isDeepStrictEqual(this.keys,e.keys)&&xPe.default.isDeepStrictEqual(this.roles,e.roles):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,keys:IBt(this.keys),roles:CBt(this.roles),consistent_snapshot:this.consistentSnapshot,...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=AJ.Signed.commonFieldsFromJSON(e),{keys:a,roles:n,consistent_snapshot:c,...f}=r;if(typeof c!="boolean")throw new TypeError("consistent_snapshot must be a boolean");return new t({...s,keys:wBt(a),roles:BBt(n),consistentSnapshot:c,unrecognizedFields:f})}};a1.Root=pJ;function IBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function CBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function wBt(t){let e;if(JO.guard.isDefined(t)){if(!JO.guard.isObjectRecord(t))throw new TypeError("keys must be an object");e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:EBt.Key.fromJSON(s,a)}),{})}return e}function BBt(t){let e;if(JO.guard.isDefined(t)){if(!JO.guard.isObjectRecord(t))throw new TypeError("roles must be an object");e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:VO.Role.fromJSON(a)}),{})}return e}});var dJ=_(KO=>{"use strict";Object.defineProperty(KO,"__esModule",{value:!0});KO.Signature=void 0;var gJ=class t{constructor(e){let{keyID:r,sig:s}=e;this.keyID=r,this.sig=s}toJSON(){return{keyid:this.keyID,sig:this.sig}}static fromJSON(e){let{keyid:r,sig:s}=e;if(typeof r!="string")throw new TypeError("keyid must be a string");if(typeof s!="string")throw new TypeError("sig must be a string");return new t({keyID:r,sig:s})}};KO.Signature=gJ});var EJ=_(l1=>{"use strict";var vBt=l1&&l1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(l1,"__esModule",{value:!0});l1.Snapshot=void 0;var SBt=vBt(Ie("util")),mJ=ay(),TPe=Tb(),QPe=ff(),yJ=class t extends mJ.Signed{constructor(e){super(e),this.type=mJ.MetadataKind.Snapshot,this.meta=e.meta||{"targets.json":new TPe.MetaFile({version:1})}}equals(e){return e instanceof t?super.equals(e)&&SBt.default.isDeepStrictEqual(this.meta,e.meta):!1}toJSON(){return{_type:this.type,meta:DBt(this.meta),spec_version:this.specVersion,version:this.version,expires:this.expires,...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=mJ.Signed.commonFieldsFromJSON(e),{meta:a,...n}=r;return new t({...s,meta:bBt(a),unrecognizedFields:n})}};l1.Snapshot=yJ;function DBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function bBt(t){let e;if(QPe.guard.isDefined(t))if(QPe.guard.isObjectRecord(t))e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:TPe.MetaFile.fromJSON(a)}),{});else throw new TypeError("meta field is malformed");return e}});var RPe=_(c1=>{"use strict";var PBt=c1&&c1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(c1,"__esModule",{value:!0});c1.Delegations=void 0;var zO=PBt(Ie("util")),xBt=PA(),kBt=NO(),IJ=fJ(),XO=ff(),CJ=class t{constructor(e){if(this.keys=e.keys,this.unrecognizedFields=e.unrecognizedFields||{},e.roles&&Object.keys(e.roles).some(r=>IJ.TOP_LEVEL_ROLE_NAMES.includes(r)))throw new xBt.ValueError("Delegated role name conflicts with top-level role name");this.succinctRoles=e.succinctRoles,this.roles=e.roles}equals(e){return e instanceof t?zO.default.isDeepStrictEqual(this.keys,e.keys)&&zO.default.isDeepStrictEqual(this.roles,e.roles)&&zO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields)&&zO.default.isDeepStrictEqual(this.succinctRoles,e.succinctRoles):!1}*rolesForTarget(e){if(this.roles)for(let r of Object.values(this.roles))r.isDelegatedPath(e)&&(yield{role:r.name,terminating:r.terminating});else this.succinctRoles&&(yield{role:this.succinctRoles.getRoleForTarget(e),terminating:!0})}toJSON(){let e={keys:QBt(this.keys),...this.unrecognizedFields};return this.roles?e.roles=TBt(this.roles):this.succinctRoles&&(e.succinct_roles=this.succinctRoles.toJSON()),e}static fromJSON(e){let{keys:r,roles:s,succinct_roles:a,...n}=e,c;return XO.guard.isObject(a)&&(c=IJ.SuccinctRoles.fromJSON(a)),new t({keys:RBt(r),roles:FBt(s),unrecognizedFields:n,succinctRoles:c})}};c1.Delegations=CJ;function QBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function TBt(t){return Object.values(t).map(e=>e.toJSON())}function RBt(t){if(!XO.guard.isObjectRecord(t))throw new TypeError("keys is malformed");return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:kBt.Key.fromJSON(r,s)}),{})}function FBt(t){let e;if(XO.guard.isDefined(t)){if(!XO.guard.isObjectArray(t))throw new TypeError("roles is malformed");e=t.reduce((r,s)=>{let a=IJ.DelegatedRole.fromJSON(s);return{...r,[a.name]:a}},{})}return e}});var vJ=_(u1=>{"use strict";var NBt=u1&&u1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(u1,"__esModule",{value:!0});u1.Targets=void 0;var FPe=NBt(Ie("util")),wJ=ay(),OBt=RPe(),LBt=Tb(),ZO=ff(),BJ=class t extends wJ.Signed{constructor(e){super(e),this.type=wJ.MetadataKind.Targets,this.targets=e.targets||{},this.delegations=e.delegations}addTarget(e){this.targets[e.path]=e}equals(e){return e instanceof t?super.equals(e)&&FPe.default.isDeepStrictEqual(this.targets,e.targets)&&FPe.default.isDeepStrictEqual(this.delegations,e.delegations):!1}toJSON(){let e={_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,targets:MBt(this.targets),...this.unrecognizedFields};return this.delegations&&(e.delegations=this.delegations.toJSON()),e}static fromJSON(e){let{unrecognizedFields:r,...s}=wJ.Signed.commonFieldsFromJSON(e),{targets:a,delegations:n,...c}=r;return new t({...s,targets:UBt(a),delegations:_Bt(n),unrecognizedFields:c})}};u1.Targets=BJ;function MBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function UBt(t){let e;if(ZO.guard.isDefined(t))if(ZO.guard.isObjectRecord(t))e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:LBt.TargetFile.fromJSON(s,a)}),{});else throw new TypeError("targets must be an object");return e}function _Bt(t){let e;if(ZO.guard.isDefined(t))if(ZO.guard.isObject(t))e=OBt.Delegations.fromJSON(t);else throw new TypeError("delegations must be an object");return e}});var PJ=_($O=>{"use strict";Object.defineProperty($O,"__esModule",{value:!0});$O.Timestamp=void 0;var SJ=ay(),NPe=Tb(),DJ=ff(),bJ=class t extends SJ.Signed{constructor(e){super(e),this.type=SJ.MetadataKind.Timestamp,this.snapshotMeta=e.snapshotMeta||new NPe.MetaFile({version:1})}equals(e){return e instanceof t?super.equals(e)&&this.snapshotMeta.equals(e.snapshotMeta):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,meta:{"snapshot.json":this.snapshotMeta.toJSON()},...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=SJ.Signed.commonFieldsFromJSON(e),{meta:a,...n}=r;return new t({...s,snapshotMeta:HBt(a),unrecognizedFields:n})}};$O.Timestamp=bJ;function HBt(t){let e;if(DJ.guard.isDefined(t)){let r=t["snapshot.json"];if(!DJ.guard.isDefined(r)||!DJ.guard.isObject(r))throw new TypeError("missing snapshot.json in meta");e=NPe.MetaFile.fromJSON(r)}return e}});var LPe=_(A1=>{"use strict";var jBt=A1&&A1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(A1,"__esModule",{value:!0});A1.Metadata=void 0;var GBt=V7(),OPe=jBt(Ie("util")),f1=ay(),Ub=PA(),qBt=hJ(),WBt=dJ(),YBt=EJ(),VBt=vJ(),JBt=PJ(),xJ=ff(),kJ=class t{constructor(e,r,s){this.signed=e,this.signatures=r||{},this.unrecognizedFields=s||{}}sign(e,r=!0){let s=Buffer.from((0,GBt.canonicalize)(this.signed.toJSON())),a=e(s);r||(this.signatures={}),this.signatures[a.keyID]=a}verifyDelegate(e,r){let s,a={};switch(this.signed.type){case f1.MetadataKind.Root:a=this.signed.keys,s=this.signed.roles[e];break;case f1.MetadataKind.Targets:if(!this.signed.delegations)throw new Ub.ValueError(`No delegations found for ${e}`);a=this.signed.delegations.keys,this.signed.delegations.roles?s=this.signed.delegations.roles[e]:this.signed.delegations.succinctRoles&&this.signed.delegations.succinctRoles.isDelegatedRole(e)&&(s=this.signed.delegations.succinctRoles);break;default:throw new TypeError("invalid metadata type")}if(!s)throw new Ub.ValueError(`no delegation found for ${e}`);let n=new Set;if(s.keyIDs.forEach(c=>{let f=a[c];if(f)try{f.verifySignature(r),n.add(f.keyID)}catch{}}),n.sizer.toJSON()),signed:this.signed.toJSON(),...this.unrecognizedFields}}static fromJSON(e,r){let{signed:s,signatures:a,...n}=r;if(!xJ.guard.isDefined(s)||!xJ.guard.isObject(s))throw new TypeError("signed is not defined");if(e!==s._type)throw new Ub.ValueError(`expected '${e}', got ${s._type}`);if(!xJ.guard.isObjectArray(a))throw new TypeError("signatures is not an array");let c;switch(e){case f1.MetadataKind.Root:c=qBt.Root.fromJSON(s);break;case f1.MetadataKind.Timestamp:c=JBt.Timestamp.fromJSON(s);break;case f1.MetadataKind.Snapshot:c=YBt.Snapshot.fromJSON(s);break;case f1.MetadataKind.Targets:c=VBt.Targets.fromJSON(s);break;default:throw new TypeError("invalid metadata type")}let f={};return a.forEach(p=>{let h=WBt.Signature.fromJSON(p);if(f[h.keyID])throw new Ub.ValueError(`multiple signatures found for keyid: ${h.keyID}`);f[h.keyID]=h}),new t(c,f,n)}};A1.Metadata=kJ});var eL=_(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.Timestamp=Fi.Targets=Fi.Snapshot=Fi.Signature=Fi.Root=Fi.Metadata=Fi.Key=Fi.TargetFile=Fi.MetaFile=Fi.ValueError=Fi.MetadataKind=void 0;var KBt=ay();Object.defineProperty(Fi,"MetadataKind",{enumerable:!0,get:function(){return KBt.MetadataKind}});var zBt=PA();Object.defineProperty(Fi,"ValueError",{enumerable:!0,get:function(){return zBt.ValueError}});var MPe=Tb();Object.defineProperty(Fi,"MetaFile",{enumerable:!0,get:function(){return MPe.MetaFile}});Object.defineProperty(Fi,"TargetFile",{enumerable:!0,get:function(){return MPe.TargetFile}});var XBt=NO();Object.defineProperty(Fi,"Key",{enumerable:!0,get:function(){return XBt.Key}});var ZBt=LPe();Object.defineProperty(Fi,"Metadata",{enumerable:!0,get:function(){return ZBt.Metadata}});var $Bt=hJ();Object.defineProperty(Fi,"Root",{enumerable:!0,get:function(){return $Bt.Root}});var evt=dJ();Object.defineProperty(Fi,"Signature",{enumerable:!0,get:function(){return evt.Signature}});var tvt=EJ();Object.defineProperty(Fi,"Snapshot",{enumerable:!0,get:function(){return tvt.Snapshot}});var rvt=vJ();Object.defineProperty(Fi,"Targets",{enumerable:!0,get:function(){return rvt.Targets}});var nvt=PJ();Object.defineProperty(Fi,"Timestamp",{enumerable:!0,get:function(){return nvt.Timestamp}})});var _Pe=_((Dir,UPe)=>{var p1=1e3,h1=p1*60,g1=h1*60,uy=g1*24,ivt=uy*7,svt=uy*365.25;UPe.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return ovt(t);if(r==="number"&&isFinite(t))return e.long?lvt(t):avt(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function ovt(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),s=(e[2]||"ms").toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return r*svt;case"weeks":case"week":case"w":return r*ivt;case"days":case"day":case"d":return r*uy;case"hours":case"hour":case"hrs":case"hr":case"h":return r*g1;case"minutes":case"minute":case"mins":case"min":case"m":return r*h1;case"seconds":case"second":case"secs":case"sec":case"s":return r*p1;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function avt(t){var e=Math.abs(t);return e>=uy?Math.round(t/uy)+"d":e>=g1?Math.round(t/g1)+"h":e>=h1?Math.round(t/h1)+"m":e>=p1?Math.round(t/p1)+"s":t+"ms"}function lvt(t){var e=Math.abs(t);return e>=uy?tL(t,e,uy,"day"):e>=g1?tL(t,e,g1,"hour"):e>=h1?tL(t,e,h1,"minute"):e>=p1?tL(t,e,p1,"second"):t+" ms"}function tL(t,e,r,s){var a=e>=r*1.5;return Math.round(t/r)+" "+s+(a?"s":"")}});var QJ=_((bir,HPe)=>{function cvt(t){r.debug=r,r.default=r,r.coerce=p,r.disable=c,r.enable=a,r.enabled=f,r.humanize=_Pe(),r.destroy=h,Object.keys(t).forEach(E=>{r[E]=t[E]}),r.names=[],r.skips=[],r.formatters={};function e(E){let C=0;for(let S=0;S{if(le==="%%")return"%";ie++;let pe=r.formatters[me];if(typeof pe=="function"){let Be=N[ie];le=pe.call(U,Be),N.splice(ie,1),ie--}return le}),r.formatArgs.call(U,N),(U.log||r.log).apply(U,N)}return R.namespace=E,R.useColors=r.useColors(),R.color=r.selectColor(E),R.extend=s,R.destroy=r.destroy,Object.defineProperty(R,"enabled",{enumerable:!0,configurable:!1,get:()=>S!==null?S:(P!==r.namespaces&&(P=r.namespaces,I=r.enabled(E)),I),set:N=>{S=N}}),typeof r.init=="function"&&r.init(R),R}function s(E,C){let S=r(this.namespace+(typeof C>"u"?":":C)+E);return S.log=this.log,S}function a(E){r.save(E),r.namespaces=E,r.names=[],r.skips=[];let C=(typeof E=="string"?E:"").trim().replace(" ",",").split(",").filter(Boolean);for(let S of C)S[0]==="-"?r.skips.push(S.slice(1)):r.names.push(S)}function n(E,C){let S=0,P=0,I=-1,R=0;for(;S"-"+C)].join(",");return r.enable(""),E}function f(E){for(let C of r.skips)if(n(E,C))return!1;for(let C of r.names)if(n(E,C))return!0;return!1}function p(E){return E instanceof Error?E.stack||E.message:E}function h(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}HPe.exports=cvt});var jPe=_((sc,rL)=>{sc.formatArgs=fvt;sc.save=Avt;sc.load=pvt;sc.useColors=uvt;sc.storage=hvt();sc.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();sc.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function uvt(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function fvt(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+rL.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,s=0;t[0].replace(/%[a-zA-Z%]/g,a=>{a!=="%%"&&(r++,a==="%c"&&(s=r))}),t.splice(s,0,e)}sc.log=console.debug||console.log||(()=>{});function Avt(t){try{t?sc.storage.setItem("debug",t):sc.storage.removeItem("debug")}catch{}}function pvt(){let t;try{t=sc.storage.getItem("debug")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}function hvt(){try{return localStorage}catch{}}rL.exports=QJ()(sc);var{formatters:gvt}=rL.exports;gvt.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var qPe=_((Zs,iL)=>{var dvt=Ie("tty"),nL=Ie("util");Zs.init=Bvt;Zs.log=Ivt;Zs.formatArgs=yvt;Zs.save=Cvt;Zs.load=wvt;Zs.useColors=mvt;Zs.destroy=nL.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");Zs.colors=[6,2,3,4,5,1];try{let t=Ie("supports-color");t&&(t.stderr||t).level>=2&&(Zs.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}Zs.inspectOpts=Object.keys(process.env).filter(t=>/^debug_/i.test(t)).reduce((t,e)=>{let r=e.substring(6).toLowerCase().replace(/_([a-z])/g,(a,n)=>n.toUpperCase()),s=process.env[e];return/^(yes|on|true|enabled)$/i.test(s)?s=!0:/^(no|off|false|disabled)$/i.test(s)?s=!1:s==="null"?s=null:s=Number(s),t[r]=s,t},{});function mvt(){return"colors"in Zs.inspectOpts?!!Zs.inspectOpts.colors:dvt.isatty(process.stderr.fd)}function yvt(t){let{namespace:e,useColors:r}=this;if(r){let s=this.color,a="\x1B[3"+(s<8?s:"8;5;"+s),n=` ${a};1m${e} \x1B[0m`;t[0]=n+t[0].split(` -`).join(` -`+n),t.push(a+"m+"+iL.exports.humanize(this.diff)+"\x1B[0m")}else t[0]=Evt()+e+" "+t[0]}function Evt(){return Zs.inspectOpts.hideDate?"":new Date().toISOString()+" "}function Ivt(...t){return process.stderr.write(nL.formatWithOptions(Zs.inspectOpts,...t)+` -`)}function Cvt(t){t?process.env.DEBUG=t:delete process.env.DEBUG}function wvt(){return process.env.DEBUG}function Bvt(t){t.inspectOpts={};let e=Object.keys(Zs.inspectOpts);for(let r=0;re.trim()).join(" ")};GPe.O=function(t){return this.inspectOpts.colors=this.useColors,nL.inspect(t,this.inspectOpts)}});var RJ=_((Pir,TJ)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?TJ.exports=jPe():TJ.exports=qPe()});var oL=_(Ki=>{"use strict";Object.defineProperty(Ki,"__esModule",{value:!0});Ki.DownloadHTTPError=Ki.DownloadLengthMismatchError=Ki.DownloadError=Ki.ExpiredMetadataError=Ki.EqualVersionError=Ki.BadVersionError=Ki.RepositoryError=Ki.PersistError=Ki.RuntimeError=Ki.ValueError=void 0;var FJ=class extends Error{};Ki.ValueError=FJ;var NJ=class extends Error{};Ki.RuntimeError=NJ;var OJ=class extends Error{};Ki.PersistError=OJ;var _b=class extends Error{};Ki.RepositoryError=_b;var sL=class extends _b{};Ki.BadVersionError=sL;var LJ=class extends sL{};Ki.EqualVersionError=LJ;var MJ=class extends _b{};Ki.ExpiredMetadataError=MJ;var Hb=class extends Error{};Ki.DownloadError=Hb;var UJ=class extends Hb{};Ki.DownloadLengthMismatchError=UJ;var _J=class extends Hb{constructor(e,r){super(e),this.statusCode=r}};Ki.DownloadHTTPError=_J});var YPe=_(d1=>{"use strict";var jJ=d1&&d1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(d1,"__esModule",{value:!0});d1.withTempFile=void 0;var HJ=jJ(Ie("fs/promises")),vvt=jJ(Ie("os")),WPe=jJ(Ie("path")),Svt=async t=>Dvt(async e=>t(WPe.default.join(e,"tempfile")));d1.withTempFile=Svt;var Dvt=async t=>{let e=await HJ.default.realpath(vvt.default.tmpdir()),r=await HJ.default.mkdtemp(e+WPe.default.sep);try{return await t(r)}finally{await HJ.default.rm(r,{force:!0,recursive:!0,maxRetries:3})}}});var qJ=_(kg=>{"use strict";var lL=kg&&kg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kg,"__esModule",{value:!0});kg.DefaultFetcher=kg.BaseFetcher=void 0;var bvt=lL(RJ()),VPe=lL(Ie("fs")),Pvt=lL(CO()),xvt=lL(Ie("util")),JPe=oL(),kvt=YPe(),Qvt=(0,bvt.default)("tuf:fetch"),aL=class{async downloadFile(e,r,s){return(0,kvt.withTempFile)(async a=>{let n=await this.fetch(e),c=0,f=VPe.default.createWriteStream(a);try{for await(let p of n){let h=Buffer.from(p);if(c+=h.length,c>r)throw new JPe.DownloadLengthMismatchError("Max length reached");await Tvt(f,h)}}finally{await xvt.default.promisify(f.close).bind(f)()}return s(a)})}async downloadBytes(e,r){return this.downloadFile(e,r,async s=>{let a=VPe.default.createReadStream(s),n=[];for await(let c of a)n.push(c);return Buffer.concat(n)})}};kg.BaseFetcher=aL;var GJ=class extends aL{constructor(e={}){super(),this.timeout=e.timeout,this.retry=e.retry}async fetch(e){Qvt("GET %s",e);let r=await(0,Pvt.default)(e,{timeout:this.timeout,retry:this.retry});if(!r.ok||!r?.body)throw new JPe.DownloadHTTPError("Failed to download",r.status);return r.body}};kg.DefaultFetcher=GJ;var Tvt=async(t,e)=>new Promise((r,s)=>{t.write(e,a=>{a&&s(a),r(!0)})})});var KPe=_(cL=>{"use strict";Object.defineProperty(cL,"__esModule",{value:!0});cL.defaultConfig=void 0;cL.defaultConfig={maxRootRotations:256,maxDelegations:32,rootMaxLength:512e3,timestampMaxLength:16384,snapshotMaxLength:2e6,targetsMaxLength:5e6,prefixTargetsWithHash:!0,fetchTimeout:1e5,fetchRetries:void 0,fetchRetry:2}});var zPe=_(uL=>{"use strict";Object.defineProperty(uL,"__esModule",{value:!0});uL.TrustedMetadataStore=void 0;var Es=eL(),Hi=oL(),WJ=class{constructor(e){this.trustedSet={},this.referenceTime=new Date,this.loadTrustedRoot(e)}get root(){if(!this.trustedSet.root)throw new ReferenceError("No trusted root metadata");return this.trustedSet.root}get timestamp(){return this.trustedSet.timestamp}get snapshot(){return this.trustedSet.snapshot}get targets(){return this.trustedSet.targets}getRole(e){return this.trustedSet[e]}updateRoot(e){let r=JSON.parse(e.toString("utf8")),s=Es.Metadata.fromJSON(Es.MetadataKind.Root,r);if(s.signed.type!=Es.MetadataKind.Root)throw new Hi.RepositoryError(`Expected 'root', got ${s.signed.type}`);if(this.root.verifyDelegate(Es.MetadataKind.Root,s),s.signed.version!=this.root.signed.version+1)throw new Hi.BadVersionError(`Expected version ${this.root.signed.version+1}, got ${s.signed.version}`);return s.verifyDelegate(Es.MetadataKind.Root,s),this.trustedSet.root=s,s}updateTimestamp(e){if(this.snapshot)throw new Hi.RuntimeError("Cannot update timestamp after snapshot");if(this.root.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError("Final root.json is expired");let r=JSON.parse(e.toString("utf8")),s=Es.Metadata.fromJSON(Es.MetadataKind.Timestamp,r);if(s.signed.type!=Es.MetadataKind.Timestamp)throw new Hi.RepositoryError(`Expected 'timestamp', got ${s.signed.type}`);if(this.root.verifyDelegate(Es.MetadataKind.Timestamp,s),this.timestamp){if(s.signed.version{let p=n.signed.meta[c];if(!p)throw new Hi.RepositoryError(`Missing file ${c} in new snapshot`);if(p.version{"use strict";Object.defineProperty(YJ,"__esModule",{value:!0});YJ.join=Fvt;var Rvt=Ie("url");function Fvt(t,e){return new Rvt.URL(Nvt(t)+Ovt(e)).toString()}function Nvt(t){return t.endsWith("/")?t:t+"/"}function Ovt(t){return t.startsWith("/")?t.slice(1):t}});var ZPe=_(nu=>{"use strict";var Lvt=nu&&nu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Mvt=nu&&nu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),KJ=nu&&nu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&Lvt(e,t,r);return Mvt(e,t),e},Uvt=nu&&nu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nu,"__esModule",{value:!0});nu.Updater=void 0;var xA=eL(),_vt=Uvt(RJ()),m1=KJ(Ie("fs")),fL=KJ(Ie("path")),Hvt=KPe(),fy=oL(),jvt=qJ(),Gvt=zPe(),jb=KJ(XPe()),VJ=(0,_vt.default)("tuf:cache"),JJ=class{constructor(e){let{metadataDir:r,metadataBaseUrl:s,targetDir:a,targetBaseUrl:n,fetcher:c,config:f}=e;this.dir=r,this.metadataBaseUrl=s,this.targetDir=a,this.targetBaseUrl=n,this.forceCache=e.forceCache??!1;let p=this.loadLocalMetadata(xA.MetadataKind.Root);this.trustedSet=new Gvt.TrustedMetadataStore(p),this.config={...Hvt.defaultConfig,...f},this.fetcher=c||new jvt.DefaultFetcher({timeout:this.config.fetchTimeout,retry:this.config.fetchRetries??this.config.fetchRetry})}async refresh(){if(this.forceCache)try{await this.loadTimestamp({checkRemote:!1})}catch{await this.loadRoot(),await this.loadTimestamp()}else await this.loadRoot(),await this.loadTimestamp();await this.loadSnapshot(),await this.loadTargets(xA.MetadataKind.Targets,xA.MetadataKind.Root)}async getTargetInfo(e){return this.trustedSet.targets||await this.refresh(),this.preorderDepthFirstWalk(e)}async downloadTarget(e,r,s){let a=r||this.generateTargetPath(e);if(!s){if(!this.targetBaseUrl)throw new fy.ValueError("Target base URL not set");s=this.targetBaseUrl}let n=e.path;if(this.trustedSet.root.signed.consistentSnapshot&&this.config.prefixTargetsWithHash){let p=Object.values(e.hashes),{dir:h,base:E}=fL.parse(n),C=`${p[0]}.${E}`;n=h?`${h}/${C}`:C}let f=jb.join(s,n);return await this.fetcher.downloadFile(f,e.length,async p=>{await e.verify(m1.createReadStream(p)),VJ("WRITE %s",a),m1.copyFileSync(p,a)}),a}async findCachedTarget(e,r){r||(r=this.generateTargetPath(e));try{if(m1.existsSync(r))return await e.verify(m1.createReadStream(r)),r}catch{return}}loadLocalMetadata(e){let r=fL.join(this.dir,`${e}.json`);return VJ("READ %s",r),m1.readFileSync(r)}async loadRoot(){let r=this.trustedSet.root.signed.version+1,s=r+this.config.maxRootRotations;for(let a=r;a0;){let{roleName:a,parentRoleName:n}=r.pop();if(s.has(a))continue;let c=(await this.loadTargets(a,n))?.signed;if(!c)continue;let f=c.targets?.[e];if(f)return f;if(s.add(a),c.delegations){let p=[],h=c.delegations.rolesForTarget(e);for(let{role:E,terminating:C}of h)if(p.push({roleName:E,parentRoleName:a}),C){r.splice(0);break}p.reverse(),r.push(...p)}}}generateTargetPath(e){if(!this.targetDir)throw new fy.ValueError("Target directory not set");let r=encodeURIComponent(e.path);return fL.join(this.targetDir,r)}persistMetadata(e,r){let s=encodeURIComponent(e);try{let a=fL.join(this.dir,`${s}.json`);VJ("WRITE %s",a),m1.writeFileSync(a,r.toString("utf8"))}catch(a){throw new fy.PersistError(`Failed to persist metadata ${s} error: ${a}`)}}};nu.Updater=JJ});var $Pe=_(Qg=>{"use strict";Object.defineProperty(Qg,"__esModule",{value:!0});Qg.Updater=Qg.BaseFetcher=Qg.TargetFile=void 0;var qvt=eL();Object.defineProperty(Qg,"TargetFile",{enumerable:!0,get:function(){return qvt.TargetFile}});var Wvt=qJ();Object.defineProperty(Qg,"BaseFetcher",{enumerable:!0,get:function(){return Wvt.BaseFetcher}});var Yvt=ZPe();Object.defineProperty(Qg,"Updater",{enumerable:!0,get:function(){return Yvt.Updater}})});var XJ=_(AL=>{"use strict";Object.defineProperty(AL,"__esModule",{value:!0});AL.TUFError=void 0;var zJ=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.code=e,this.cause=s,this.name=this.constructor.name}};AL.TUFError=zJ});var exe=_(Gb=>{"use strict";var Vvt=Gb&&Gb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Gb,"__esModule",{value:!0});Gb.readTarget=Kvt;var Jvt=Vvt(Ie("fs")),pL=XJ();async function Kvt(t,e){let r=await zvt(t,e);return new Promise((s,a)=>{Jvt.default.readFile(r,"utf-8",(n,c)=>{n?a(new pL.TUFError({code:"TUF_READ_TARGET_ERROR",message:`error reading target ${r}`,cause:n})):s(c)})})}async function zvt(t,e){let r;try{r=await t.getTargetInfo(e)}catch(a){throw new pL.TUFError({code:"TUF_REFRESH_METADATA_ERROR",message:"error refreshing TUF metadata",cause:a})}if(!r)throw new pL.TUFError({code:"TUF_FIND_TARGET_ERROR",message:`target ${e} not found`});let s=await t.findCachedTarget(r);if(!s)try{s=await t.downloadTarget(r)}catch(a){throw new pL.TUFError({code:"TUF_DOWNLOAD_TARGET_ERROR",message:`error downloading target ${s}`,cause:a})}return s}});var txe=_((Uir,Xvt)=>{Xvt.exports={"https://tuf-repo-cdn.sigstore.dev":{"root.json":"ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICJzaWciOiAiMzA0NjAyMjEwMDhhYjFmNmYxN2Q0ZjllNmQ3ZGNmMWM4ODkxMmI2YjUzY2MxMDM4ODY0NGFlMWYwOWJjMzdhMDgyY2QwNjAwM2UwMjIxMDBlMTQ1ZWY0YzdiNzgyZDRlODEwN2I1MzQzN2U2NjlkMDQ3Njg5MmNlOTk5OTAzYWUzM2QxNDQ0ODM2Njk5NmU3IgogIH0sCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGM3NjhiMmY4NmRhOTk1NjkwMTljMTYwYTA4MWRhNTRhZTM2YzM0YzBhMzEyMGQzY2I2OWI1M2I3ZDExMzc1OGUwMjIwNGY2NzE1MThmNjE3YjIwZDQ2NTM3ZmFlNmMzYjYzYmFlODkxM2Y0ZjE5NjIxNTYxMDVjYzRmMDE5YWMzNWM2YSIKICB9LAogIHsKICAgImtleWlkIjogIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAic2lnIjogIjMwNDUwMjIxMDBiNDQzNGU2OTk1ZDM2OGQyM2U3NDc1OWFjZDBjYjkwMTNjODNhNWQzNTExZjBmOTk3ZWM1NGM0NTZhZTQzNTBhMDIyMDE1YjBlMjY1ZDE4MmQyYjYxZGM3NGUxNTVkOThiM2MzZmJlNTY0YmEwNTI4NmFhMTRjOGRmMDJjOWI3NTY1MTYiCiAgfSwKICB7CiAgICJrZXlpZCI6ICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgInNpZyI6ICIzMDQ1MDIyMTAwODJjNTg0MTFkOTg5ZWI5Zjg2MTQxMDg1N2Q0MjM4MTU5MGVjOTQyNGRiZGFhNTFlNzhlZDEzNTE1NDMxOTA0ZTAyMjAxMTgxODVkYTZhNmMyOTQ3MTMxYzE3Nzk3ZTJiYjc2MjBjZTI2ZTVmMzAxZDFjZWFjNWYyYTdlNThmOWRjZjJlIgogIH0sCiAgewogICAia2V5aWQiOiAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGM3ODUxMzg1NGNhZTljMzJlYWE2Yjg4ZTE4OTEyZjQ4MDA2YzI3NTdhMjU4ZjkxNzMxMmNhYmE3NTk0OGViOWUwMjIxMDBkOWUxYjRjZTBhZGZlOWZkMmUyMTQ4ZDdmYTI3YTJmNDBiYTExMjJiZDY5ZGE3NjEyZDhkMTc3NmIwMTNjOTFkIgogIH0sCiAgewogICAia2V5aWQiOiAiZmRmYTgzYTA3YjVhODM1ODliODdkZWQ0MWY3N2YzOWQyMzJhZDkxZjdjY2U1Mjg2OGRhY2QwNmJhMDg5ODQ5ZiIsCiAgICJzaWciOiAiMzA0NTAyMjA1NjQ4M2EyZDVkOWVhOWNlYzZlMTFlYWRmYjMzYzQ4NGI2MTQyOThmYWNhMTVhY2YxYzQzMWIxMWVkN2Y3MzRjMDIyMTAwZDBjMWQ3MjZhZjkyYTg3ZTRlNjY0NTljYTVhZGYzOGEwNWI0NGUxZjk0MzE4NDIzZjk1NGJhZThiY2E1YmIyZSIKICB9LAogIHsKICAgImtleWlkIjogImUyZjU5YWNiOTQ4ODUxOTQwN2UxOGNiZmM5MzI5NTEwYmUwM2MwNGFjYTk5MjlkMmYwMzAxMzQzZmVjODU1MjMiLAogICAic2lnIjogIjMwNDYwMjIxMDBkMDA0ZGU4ODAyNGMzMmRjNTY1M2E5ZjQ4NDNjZmM1MjE1NDI3MDQ4YWQ5NjAwZDJjZjljOTY5ZTZlZGZmM2QyMDIyMTAwZDllYmI3OThmNWZjNjZhZjEwODk5ZGVjZTAxNGE4NjI4Y2NmM2M1NDAyY2Q0YTQyNzAyMDc0NzJmOGY2ZTcxMiIKICB9LAogIHsKICAgImtleWlkIjogIjNjMzQ0YWEwNjhmZDRjYzRlODdkYzUwYjYxMmMwMjQzMWZiYzc3MWU5NTAwMzk5MzY4M2EyYjBiZjI2MGNmMGUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiN2IwOTk5NmM0NWNhMmQ0YjA1NjAzZTU2YmFlZmEyOTcxOGEwYjcxMTQ3Y2Y4YzZlNjYzNDliYWE2MTQ3N2RmMDIyMTAwYzRkYTgwYzcxN2I0ZmE3YmJhMGZkNWM3MmRhOGEwNDk5MzU4YjAxMzU4YjIzMDlmNDFkMTQ1NmVhMWU3ZTFkOSIKICB9LAogIHsKICAgImtleWlkIjogImVjODE2Njk3MzRlMDE3OTk2YzViODVmM2QwMmMzZGUxZGQ0NjM3YTE1MjAxOWZlMWFmMTI1ZDJmOTM2OGI5NWUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiZTk3ODJjMzA3NDRlNDExYTgyZmE4NWI1MTM4ZDYwMWNlMTQ4YmMxOTI1OGFlYzY0ZTdlYzI0NDc4ZjM4ODEyMDIyMTAwY2FlZjYzZGNhZjFhNGI5YTUwMGQzYmQwZTNmMTY0ZWMxOGYxYjYzZDdhOTQ2MGQ5YWNhYjEwNjZkYjBmMDE2ZCIKICB9LAogIHsKICAgImtleWlkIjogIjFlMWQ2NWNlOThiMTBhZGRhZDQ3NjRmZWJmN2RkYTJkMDQzNmIzZDNhMzg5MzU3OWMwZGRkYWVhMjBlNTQ4NDkiLAogICAic2lnIjogIjMwNDUwMjIwNzQ2ZWMzZjg1MzRjZTU1NTMxZDBkMDFmZjY0OTY0ZWY0NDBkMWU3ZDJjNGMxNDI0MDliOGU5NzY5ZjFhZGE2ZjAyMjEwMGUzYjkyOWZjZDkzZWExOGZlYWEwODI1ODg3YTcyMTA0ODk4NzlhNjY3ODBjMDdhODNmNGJkNDZlMmYwOWFiM2IiCiAgfQogXSwKICJzaWduZWQiOiB7CiAgIl90eXBlIjogInJvb3QiLAogICJjb25zaXN0ZW50X3NuYXBzaG90IjogdHJ1ZSwKICAiZXhwaXJlcyI6ICIyMDI1LTAyLTE5VDA4OjA0OjMyWiIsCiAgImtleXMiOiB7CiAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFekJ6Vk9tSENQb2pNVkxTSTM2NFdpaVY4TlByRFxuNklnUnhWbGlza3ovdit5M0pFUjVtY1ZHY09ObGlEY1dNQzVKMmxmSG1qUE5QaGI0SDd4bThMemZTQT09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBzYW50aWFnb3RvcnJlcyIKICAgfSwKICAgIjYxNjQzODM4MTI1YjQ0MGI0MGRiNjk0MmY1Y2I1YTMxYzBkYzA0MzY4MzE2ZWIyYWFhNThiOTU5MDRhNTgyMjIiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpbmlrU3NBUW1Za05lSDVlWXEvQ25JekxhYWNPXG54bFNhYXdRRE93cUt5L3RDcXhxNXh4UFNKYzIxSzRXSWhzOUd5T2tLZnp1ZVkzR0lMemNNSlo0Y1d3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGJvYmNhbGxhd2F5IgogICB9LAogICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXk4WEtzbWhCWURJOEpjMEd3ekJ4ZUtheDBjbTVcblNUS0VVNjVIUEZ1blVuNDFzVDhwaTBGak00SWtIei9ZVW13bUxVTzBXdDdseGhqNkJrTElLNHFZQXc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAZGxvcmVuYyIKICAgfSwKICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXUmlHcjUraiszSjVTc0grWnRyNW5FMkgyd083XG5CVituTzNzOTNnTGNhMThxVE96SFkxb1d5QUdEeWtNU3NHVFVCU3Q5RCtBbjBLZktzRDJtZlNNNDJRPT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2ktb25saW5lLXVyaSI6ICJnY3BrbXM6Ly9wcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wIgogICB9LAogICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTBnaHJoOTJMdzFZcjNpZEdWNVdxQ3RNREI4Q3hcbitEOGhkQzR3MlpMTklwbFZSb1ZHTHNrWWEzZ2hlTXlPamlKOGtQaTE1YVEyLy83UCtvajdVdkpQR3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAam9zaHVhZ2wiCiAgIH0sCiAgICJlNzFhNTRkNTQzODM1YmE4NmFkYWQ5NDYwMzc5Yzc2NDFmYjg3MjZkMTY0ZWE3NjY4MDFhMWM1MjJhYmE3ZWEyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRVhzejNTWlhGYjhqTVY0Mmo2cEpseWpialI4S1xuTjNCd29jZXhxNkxNSWI1cXNXS09RdkxOMTZOVWVmTGM0SHN3T291bVJzVlZhYWpTcFFTNmZvYmtSdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBtbm02NzgiCiAgIH0KICB9LAogICJyb2xlcyI6IHsKICAgInJvb3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI2ZjI2MDA4OWQ1OTIzZGFmMjAxNjZjYTY1N2M1NDNhZjYxODM0NmFiOTcxODg0YTk5OTYyYjAxOTg4YmJlMGMzIiwKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMwogICB9LAogICAic25hcHNob3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI3MjQ3ZjBkYmFkODViMTQ3ZTE4NjNiYWRlNzYxMjQzY2M3ODVkY2I3YWE0MTBlNzEwNWRkM2QyYjYxYTM2ZDJjIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiAzNjUwLAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogMzY1CiAgIH0sCiAgICJ0YXJnZXRzIjogewogICAgImtleWlkcyI6IFsKICAgICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInRpbWVzdGFtcCI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDEsCiAgICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDcsCiAgICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0CiAgIH0KICB9LAogICJzcGVjX3ZlcnNpb24iOiAiMS4wIiwKICAidmVyc2lvbiI6IDEwLAogICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMTgyLAogICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDMxCiB9Cn0=",targets:{"trusted_root.json":"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjcuMDAwWiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAid05JOWF0UUdseitWV2ZPNkxSeWdINFFVZlkvOFc0UkZ3aVQ1aTVXUmdCMD0iCiAgICAgIH0KICAgIH0KICBdLAogICJjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQitEQ0NBWDZnQXdJQkFnSVROVmtEWm9DaW9mUERzeTdkZm02Z2VMYnVoekFLQmdncWhrak9QUVFEQXpBcU1SVXdFd1lEVlFRS0V3eHphV2R6ZEc5eVpTNWtaWFl4RVRBUEJnTlZCQU1UQ0hOcFozTjBiM0psTUI0WERUSXhNRE13TnpBek1qQXlPVm9YRFRNeE1ESXlNekF6TWpBeU9Wb3dLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkxTeUE3SWk1aytwTk84WkVXWTB5bGVtV0Rvd09rTmEza0wrR1pFNVo1R1dlaEw5L0E5YlJOQTNSYnJzWjVpMEpjYXN0YVJMN1NwNWZwL2pENWR4cWMvVWRUVm5sdlMxNmFuKzJZZnN3ZS9RdUxvbFJVQ3JjT0UyKzJpQTUrdHpkNk5tTUdRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFFd0hRWURWUjBPQkJZRUZNakZIUUJCbWlRcE1sRWs2dzJ1U3UxS0J0UHNNQjhHQTFVZEl3UVlNQmFBRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01IOGxpV0pmTXVpNnZYWEJoakRnWTRNd3NsbU4vVEp4VmUvODNXckZvbXdtTmYwNTZ5MVg0OEY5YzRtM2Ezb3pYQUl4QUtqUmF5NS9hai9qc0tLR0lrbVFhdGpJOHV1cEhyLytDeEZ2YUpXbXBZcU5rTERHUlUrOW9yemg1aEkyUnJjdWFRPT0iCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMDdUMDM6MjA6MjkuMDAwWiIsCiAgICAgICAgImVuZCI6ICIyMDIyLTEyLTMxVDIzOjU5OjU5Ljk5OVoiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDR2pDQ0FhR2dBd0lCQWdJVUFMblZpVmZuVTBickphc21Sa0hybi9VbmZhUXdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1qQTBNVE15TURBMk1UVmFGdzB6TVRFd01EVXhNelUyTlRoYU1EY3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFZU1Cd0dBMVVFQXhNVmMybG5jM1J2Y21VdGFXNTBaWEp0WldScFlYUmxNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRThSVlMveXNIK05PdnVEWnlQSVp0aWxnVUY5TmxhcllwQWQ5SFAxdkJCSDFVNUNWNzdMU1M3czBaaUg0bkU3SHY3cHRTNkx2dlIvU1RrNzk4TFZnTXpMbEo0SGVJZkYzdEhTYWV4TGNZcFNBU3Ixa1MwTi9SZ0JKei85aldDaVhubzNzd2VUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3TXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMzlQcHoxWWtFWmI1cU5qcEtGV2l4aTRZWkQ4d0h3WURWUjBqQkJnd0ZvQVVXTUFlWDVGRnBXYXBlc3lRb1pNaTBDckZ4Zm93Q2dZSUtvWkl6ajBFQXdNRFp3QXdaQUl3UENzUUs0RFlpWllEUElhRGk1SEZLbmZ4WHg2QVNTVm1FUmZzeW5ZQmlYMlg2U0pSblpVODQvOURaZG5GdnZ4bUFqQk90NlFwQmxjNEovMER4dmtUQ3FwY2x2emlMNkJDQ1BuamRsSUIzUHUzQnhzUG15Z1VZN0lpMnpiZENkbGlpb3c9IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXdLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQWVGdzB5TVRFd01EY3hNelUyTlRsYUZ3MHpNVEV3TURVeE16VTJOVGhhTUNveEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDdYZUZUNHJiM1BRR3dTNElhanRMazMvT2xucGdhbmdhQmNsWXBzWUJyNWkrNHluQjA3Y2ViM0xQME9JT1pkeGV4WDY5YzVpVnV5SlJRK0h6MDV5aStVRjN1QldBbEhwaVM1c2gwK0gyR0hFN1NYcmsxRUM1bTFUcjE5TDlnZzkyall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFmQmdOVkhTTUVHREFXZ0JSWXdCNWZrVVdsWnFsNnpKQ2hreUxRS3NYRitqQUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUFqMW5IZVhacCsxM05XQk5hK0VEc0RQOEcxV1dnMXRDTVdQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjlUTk1lYTdJeC9zdEo1VGZjTExlQUJMRTRCTkpPc1E0dm5CSEoiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjItMDQtMTNUMjA6MDY6MTUuMDAwWiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDAuMDAwWiIsCiAgICAgICAgICAiZW5kIjogIjIwMjItMTAtMzFUMjM6NTk6NTkuOTk5WiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAiQ0dDUzhDaFMvMmhGMGRGcko0U2NSV2NZckJZOXd6alNiZWE4SWdZMmIzST0iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vY3RmZS5zaWdzdG9yZS5kZXYvMjAyMiIsCiAgICAgICJoYXNoQWxnb3JpdGhtIjogIlNIQTJfMjU2IiwKICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAicmF3Qnl0ZXMiOiAiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaVBTbEZpMENtRlRmRWpDVXFGOUh1Q0VjWVhOS0FhWWFsSUptQlo4eXllelBqVHFoeHJLQnBNbmFvY1Z0TEpCSTFlTTN1WG5RelFHQUpkSjRnczlGeXc9PSIsCiAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICJzdGFydCI6ICIyMDIyLTEwLTIwVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgfQogICAgICB9LAogICAgICAibG9nSWQiOiB7CiAgICAgICAgImtleUlkIjogIjNUMHdhc2JIRVRKakdSNGNtV2MzQXFKS1hyamVQSzMvaDRweWdDOHA3bzQ9IgogICAgICB9CiAgICB9CiAgXSwKICAidGltZXN0YW1wQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAiR2l0SHViLCBJbmMuIiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJJbnRlcm5hbCBTZXJ2aWNlcyBSb290IgogICAgICB9LAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCM0RDQ0FXS2dBd0lCQWdJVWNoa05zSDM2WGEwNGIxTHFJYytxcjlEVmVjTXdDZ1lJS29aSXpqMEVBd013TWpFVk1CTUdBMVVFQ2hNTVIybDBTSFZpTENCSmJtTXVNUmt3RndZRFZRUURFeEJVVTBFZ2FXNTBaWEp0WldScFlYUmxNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVEkwTURReE16QXdNREF3TUZvd01qRVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVJrd0Z3WURWUVFERXhCVVUwRWdWR2x0WlhOMFlXMXdhVzVuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVUQ1Wk5iU3FZTWQ2cjhxcE9PRVg5aWJHblpUOUdzdVhPaHIvZjhVOUZKdWdCR0V4S1lwNDBPVUxTMGVyalpXN3hWOXhWNTJObkpmNU9lRHE0ZTVaS3FOV01GUXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUlNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVhVzFSdWRPZ1Z0MGxlcVkwV0tZYnVQcjQ3d0F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl3YlVIOUh2RDRlakNaSk9XUW5xQWxrcVVSbGx2dTlNOCtWcUxiaVJLK3pTZlpDWndzaWxqUm44TVFRUlNrWEVFNUFqRUFnK1Z4cXRvamZWZnU4RGh6emhDeDlHS0VUYkpIYjE5aVY3Mm1NS1ViREFGbXpaNmJROGI1NFpiOHRpZHk1YVdlIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUNFRENDQVpXZ0F3SUJBZ0lVWDhaTzVRWFA3dk40ZE1RNWU5c1UzbnViOE9nd0NnWUlLb1pJemowRUF3TXdPREVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1SOHdIUVlEVlFRREV4WkpiblJsY201aGJDQlRaWEoyYVdObGN5QlNiMjkwTUI0WERUSXpNRFF4TkRBd01EQXdNRm9YRFRJNE1EUXhNakF3TURBd01Gb3dNakVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1Sa3dGd1lEVlFRREV4QlVVMEVnYVc1MFpYSnRaV1JwWVhSbE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdk1MWS9kVFZidklKWUFOQXVzekV3Sm5RRTFsbGZ0eW55TUtJTWhoNDhIbXFiVnI1eWd5YnpzTFJMVktiQldPZFoyMWFlSnorZ1ppeXRaZXRxY3lGOVdsRVI1TkVNZjZKVjdaTm9qUXB4SHE0UkhHb0dTY2VRdi9xdlRpWnhFREtvMll3WkRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVWFXMVJ1ZE9nVnQwbGVxWTBXS1lidVByNDd3QXdId1lEVlIwakJCZ3dGb0FVOU5ZWWxvYm5BRzRjMC9xanh5SC9scS93eitRd0NnWUlLb1pJemowRUF3TURhUUF3WmdJeEFLMUIxODV5Z0NySVlGbElzM0dqc3dqbndTTUc2TFk4d29MVmRha0tEWnhWYThmOGNxTXMxRGhjeEowKzA5dzk1UUl4QU8rdEJ6Wms3dmpVSjlpSmdENFI2WldUeFFXS3FObTc0ak85OW8rbzlzdjRGSS9TWlRaVEZ5TW4wSUpFSGRObXlBPT0iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQjlEQ0NBWHFnQXdJQkFnSVVhL0pBa2RVaks0SlV3c3F0YWlSSkdXaHFMU293Q2dZSUtvWkl6ajBFQXdNd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVE16TURReE1UQXdNREF3TUZvd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRWY5akZBWHh6NGt4NjhBSFJNT2tGQmhmbERjTVR2emFYejR4L0ZDY1hqSi8xcUVLb24vcVBJR25hVVJza0R0eU5iTkRPcGVKVERERnF0NDhpTVBybnpweDZJWndxZW1mVUpONHhCRVpmemErcFl0L2l5b2QrOXRacjIwUlJXU3YvbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFqQWRCZ05WSFE0RUZnUVU5TllZbG9ibkFHNGMwL3FqeHlIL2xxL3d6K1F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QUxaTFo4QmdSWHpLeExNTU45VklsTytlNGhyQm5OQmdGN3R6N0hucm93djJOZXRaRXJJQUNLRnltQmx2V0R2dE1BSXdaTytraTZzc1ExYnNabzk4TzhtRUFmMk5aN2lpQ2dERFUwVndqZWNvNnp5ZWgwekJUczkvN2dWNkFITlE1M3hEIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIzLTA0LTE0VDAwOjAwOjAwLjAwMFoiCiAgICAgIH0KICAgIH0KICBdCn0K","registry.npmjs.org%2Fkeys.json":"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICJlbmQiOiAiMjAyNS0wMS0yOVQwMDowMDowMC4wMDBaIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJrZXlJZCI6ICJTSEEyNTY6amwzYndzd3U4MFBqam9rQ2doMG8ydzVjMlU0TGhRQUU1N2dqOWN6MWt6QSIsCiAgICAgICAgICAgICJrZXlVc2FnZSI6ICJucG06YXR0ZXN0YXRpb25zIiwKICAgICAgICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUxT2xiM3pNQUZGeFhLSGlJa1FPNWNKM1lobDVpNlVQcCtJaHV0ZUJKYnVIY0E1VW9nS28wRVd0bFd3VzZLU2FLb1RORVlMN0psQ1FpVm5raEJrdFVnZz09IiwKICAgICAgICAgICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUNEU0FfUDI1Nl9TSEFfMjU2IiwKICAgICAgICAgICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICAgICAgICAgICAic3RhcnQiOiAiMjAyMi0xMi0wMVQwMDowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgICAgICAiZW5kIjogIjIwMjUtMDEtMjlUMDA6MDA6MDAuMDAwWiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OkRoUTh3UjVBUEJ2RkhMRi8rVGMrQVl2UE9kVHBjSURxT2h4c0JIUndDN1UiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpEaFE4d1I1QVBCdkZITEYvK1RjK0FZdlBPZFRwY0lEcU9oeHNCSFJ3QzdVIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K"}}}});var nxe=_(y1=>{"use strict";var rxe=y1&&y1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(y1,"__esModule",{value:!0});y1.TUFClient=void 0;var Tg=rxe(Ie("fs")),qb=rxe(Ie("path")),Zvt=$Pe(),$vt=hL(),eSt=exe(),$J="targets",ZJ=class{constructor(e){let r=new URL(e.mirrorURL),s=encodeURIComponent(r.host+r.pathname.replace(/\/$/,"")),a=qb.default.join(e.cachePath,s);tSt(a),rSt({cachePath:a,mirrorURL:e.mirrorURL,tufRootPath:e.rootPath,forceInit:e.forceInit}),this.updater=nSt({mirrorURL:e.mirrorURL,cachePath:a,forceCache:e.forceCache,retry:e.retry,timeout:e.timeout})}async refresh(){return this.updater.refresh()}getTarget(e){return(0,eSt.readTarget)(this.updater,e)}};y1.TUFClient=ZJ;function tSt(t){let e=qb.default.join(t,$J);Tg.default.existsSync(t)||Tg.default.mkdirSync(t,{recursive:!0}),Tg.default.existsSync(e)||Tg.default.mkdirSync(e)}function rSt({cachePath:t,mirrorURL:e,tufRootPath:r,forceInit:s}){let a=qb.default.join(t,"root.json");if(!Tg.default.existsSync(a)||s)if(r)Tg.default.copyFileSync(r,a);else{let c=txe()[e];if(!c)throw new $vt.TUFError({code:"TUF_INIT_CACHE_ERROR",message:`No root.json found for mirror: ${e}`});Tg.default.writeFileSync(a,Buffer.from(c["root.json"],"base64")),Object.entries(c.targets).forEach(([f,p])=>{Tg.default.writeFileSync(qb.default.join(t,$J,f),Buffer.from(p,"base64"))})}}function nSt(t){let e={fetchTimeout:t.timeout,fetchRetry:t.retry};return new Zvt.Updater({metadataBaseUrl:t.mirrorURL,targetBaseUrl:`${t.mirrorURL}/targets`,metadataDir:t.cachePath,targetDir:qb.default.join(t.cachePath,$J),forceCache:t.forceCache,config:e})}});var hL=_(gh=>{"use strict";Object.defineProperty(gh,"__esModule",{value:!0});gh.TUFError=gh.DEFAULT_MIRROR_URL=void 0;gh.getTrustedRoot=fSt;gh.initTUF=ASt;var iSt=yb(),sSt=Obe(),oSt=nxe();gh.DEFAULT_MIRROR_URL="https://tuf-repo-cdn.sigstore.dev";var aSt="sigstore-js",lSt={retries:2},cSt=5e3,uSt="trusted_root.json";async function fSt(t={}){let r=await ixe(t).getTarget(uSt);return iSt.TrustedRoot.fromJSON(JSON.parse(r))}async function ASt(t={}){let e=ixe(t);return e.refresh().then(()=>e)}function ixe(t){return new oSt.TUFClient({cachePath:t.cachePath||(0,sSt.appDataPath)(aSt),rootPath:t.rootPath,mirrorURL:t.mirrorURL||gh.DEFAULT_MIRROR_URL,retry:t.retry??lSt,timeout:t.timeout??cSt,forceCache:t.forceCache??!1,forceInit:t.forceInit??t.force??!1})}var pSt=XJ();Object.defineProperty(gh,"TUFError",{enumerable:!0,get:function(){return pSt.TUFError}})});var sxe=_(gL=>{"use strict";Object.defineProperty(gL,"__esModule",{value:!0});gL.DSSESignatureContent=void 0;var Wb=Cl(),eK=class{constructor(e){this.env=e}compareDigest(e){return Wb.crypto.bufferEqual(e,Wb.crypto.digest("sha256",this.env.payload))}compareSignature(e){return Wb.crypto.bufferEqual(e,this.signature)}verifySignature(e){return Wb.crypto.verify(this.preAuthEncoding,e,this.signature)}get signature(){return this.env.signatures.length>0?this.env.signatures[0].sig:Buffer.from("")}get preAuthEncoding(){return Wb.dsse.preAuthEncoding(this.env.payloadType,this.env.payload)}};gL.DSSESignatureContent=eK});var oxe=_(dL=>{"use strict";Object.defineProperty(dL,"__esModule",{value:!0});dL.MessageSignatureContent=void 0;var tK=Cl(),rK=class{constructor(e,r){this.signature=e.signature,this.messageDigest=e.messageDigest.digest,this.artifact=r}compareSignature(e){return tK.crypto.bufferEqual(e,this.signature)}compareDigest(e){return tK.crypto.bufferEqual(e,this.messageDigest)}verifySignature(e){return tK.crypto.verify(this.artifact,e,this.signature)}};dL.MessageSignatureContent=rK});var lxe=_(mL=>{"use strict";Object.defineProperty(mL,"__esModule",{value:!0});mL.toSignedEntity=dSt;mL.signatureContent=axe;var nK=Cl(),hSt=sxe(),gSt=oxe();function dSt(t,e){let{tlogEntries:r,timestampVerificationData:s}=t.verificationMaterial,a=[];for(let n of r)a.push({$case:"transparency-log",tlogEntry:n});for(let n of s?.rfc3161Timestamps??[])a.push({$case:"timestamp-authority",timestamp:nK.RFC3161Timestamp.parse(n.signedTimestamp)});return{signature:axe(t,e),key:mSt(t),tlogEntries:r,timestamps:a}}function axe(t,e){switch(t.content.$case){case"dsseEnvelope":return new hSt.DSSESignatureContent(t.content.dsseEnvelope);case"messageSignature":return new gSt.MessageSignatureContent(t.content.messageSignature,e)}}function mSt(t){switch(t.verificationMaterial.content.$case){case"publicKey":return{$case:"public-key",hint:t.verificationMaterial.content.publicKey.hint};case"x509CertificateChain":return{$case:"certificate",certificate:nK.X509Certificate.parse(t.verificationMaterial.content.x509CertificateChain.certificates[0].rawBytes)};case"certificate":return{$case:"certificate",certificate:nK.X509Certificate.parse(t.verificationMaterial.content.certificate.rawBytes)}}}});var Eo=_(E1=>{"use strict";Object.defineProperty(E1,"__esModule",{value:!0});E1.PolicyError=E1.VerificationError=void 0;var yL=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.code=e,this.cause=s,this.name=this.constructor.name}},iK=class extends yL{};E1.VerificationError=iK;var sK=class extends yL{};E1.PolicyError=sK});var cxe=_(EL=>{"use strict";Object.defineProperty(EL,"__esModule",{value:!0});EL.filterCertAuthorities=ySt;EL.filterTLogAuthorities=ESt;function ySt(t,e){return t.filter(r=>r.validFor.start<=e.start&&r.validFor.end>=e.end)}function ESt(t,e){return t.filter(r=>e.logID&&!r.logID.equals(e.logID)?!1:r.validFor.start<=e.targetDate&&e.targetDate<=r.validFor.end)}});var py=_(Ay=>{"use strict";Object.defineProperty(Ay,"__esModule",{value:!0});Ay.filterTLogAuthorities=Ay.filterCertAuthorities=void 0;Ay.toTrustMaterial=CSt;var oK=Cl(),Yb=yb(),ISt=Eo(),aK=new Date(0),lK=new Date(864e13),Axe=cxe();Object.defineProperty(Ay,"filterCertAuthorities",{enumerable:!0,get:function(){return Axe.filterCertAuthorities}});Object.defineProperty(Ay,"filterTLogAuthorities",{enumerable:!0,get:function(){return Axe.filterTLogAuthorities}});function CSt(t,e){let r=typeof e=="function"?e:wSt(e);return{certificateAuthorities:t.certificateAuthorities.map(fxe),timestampAuthorities:t.timestampAuthorities.map(fxe),tlogs:t.tlogs.map(uxe),ctlogs:t.ctlogs.map(uxe),publicKey:r}}function uxe(t){let e=t.publicKey.keyDetails,r=e===Yb.PublicKeyDetails.PKCS1_RSA_PKCS1V5||e===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V5||e===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256||e===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256||e===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256?"pkcs1":"spki";return{logID:t.logId.keyId,publicKey:oK.crypto.createPublicKey(t.publicKey.rawBytes,r),validFor:{start:t.publicKey.validFor?.start||aK,end:t.publicKey.validFor?.end||lK}}}function fxe(t){return{certChain:t.certChain.certificates.map(e=>oK.X509Certificate.parse(e.rawBytes)),validFor:{start:t.validFor?.start||aK,end:t.validFor?.end||lK}}}function wSt(t){return e=>{let r=(t||{})[e];if(!r)throw new ISt.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${e}`});return{publicKey:oK.crypto.createPublicKey(r.rawBytes),validFor:s=>(r.validFor?.start||aK)<=s&&(r.validFor?.end||lK)>=s}}}});var cK=_(Vb=>{"use strict";Object.defineProperty(Vb,"__esModule",{value:!0});Vb.CertificateChainVerifier=void 0;Vb.verifyCertificateChain=vSt;var hy=Eo(),BSt=py();function vSt(t,e){let r=(0,BSt.filterCertAuthorities)(e,{start:t.notBefore,end:t.notAfter}),s;for(let a of r)try{return new IL({trustedCerts:a.certChain,untrustedCert:t}).verify()}catch(n){s=n}throw new hy.VerificationError({code:"CERTIFICATE_ERROR",message:"Failed to verify certificate chain",cause:s})}var IL=class{constructor(e){this.untrustedCert=e.untrustedCert,this.trustedCerts=e.trustedCerts,this.localCerts=SSt([...e.trustedCerts,e.untrustedCert])}verify(){let e=this.sort();return this.checkPath(e),e}sort(){let e=this.untrustedCert,r=this.buildPaths(e);if(r=r.filter(a=>a.some(n=>this.trustedCerts.includes(n))),r.length===0)throw new hy.VerificationError({code:"CERTIFICATE_ERROR",message:"no trusted certificate path found"});let s=r.reduce((a,n)=>a.length{if(s&&a.extSubjectKeyID){a.extSubjectKeyID.keyIdentifier.equals(s)&&r.push(a);return}a.subject.equals(e.issuer)&&r.push(a)}),r=r.filter(a=>{try{return e.verify(a)}catch{return!1}}),r)}checkPath(e){if(e.length<1)throw new hy.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate chain must contain at least one certificate"});if(!e.slice(1).every(s=>s.isCA))throw new hy.VerificationError({code:"CERTIFICATE_ERROR",message:"intermediate certificate is not a CA"});for(let s=e.length-2;s>=0;s--)if(!e[s].issuer.equals(e[s+1].subject))throw new hy.VerificationError({code:"CERTIFICATE_ERROR",message:"incorrect certificate name chaining"});for(let s=0;s{"use strict";Object.defineProperty(uK,"__esModule",{value:!0});uK.verifySCTs=PSt;var CL=Cl(),DSt=Eo(),bSt=py();function PSt(t,e,r){let s,a=t.clone();for(let p=0;p{if(!(0,bSt.filterTLogAuthorities)(r,{logID:p.logID,targetDate:p.datetime}).some(C=>p.verify(n.buffer,C.publicKey)))throw new DSt.VerificationError({code:"CERTIFICATE_ERROR",message:"SCT verification failed"});return p.logID})}});var gxe=_(wL=>{"use strict";Object.defineProperty(wL,"__esModule",{value:!0});wL.verifyPublicKey=FSt;wL.verifyCertificate=NSt;var xSt=Cl(),hxe=Eo(),kSt=cK(),QSt=pxe(),TSt="1.3.6.1.4.1.57264.1.1",RSt="1.3.6.1.4.1.57264.1.8";function FSt(t,e,r){let s=r.publicKey(t);return e.forEach(a=>{if(!s.validFor(a))throw new hxe.VerificationError({code:"PUBLIC_KEY_ERROR",message:`Public key is not valid for timestamp: ${a.toISOString()}`})}),{key:s.publicKey}}function NSt(t,e,r){let s=(0,kSt.verifyCertificateChain)(t,r.certificateAuthorities);if(!e.every(n=>s.every(c=>c.validForDate(n))))throw new hxe.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate is not valid or expired at the specified date"});return{scts:(0,QSt.verifySCTs)(s[0],s[1],r.ctlogs),signer:OSt(s[0])}}function OSt(t){let e,r=t.extension(RSt);r?e=r.valueObj.subs?.[0]?.value.toString("ascii"):e=t.extension(TSt)?.value.toString("ascii");let s={extensions:{issuer:e},subjectAlternativeName:t.subjectAltName};return{key:xSt.crypto.createPublicKey(t.publicKey),identity:s}}});var mxe=_(BL=>{"use strict";Object.defineProperty(BL,"__esModule",{value:!0});BL.verifySubjectAlternativeName=LSt;BL.verifyExtensions=MSt;var dxe=Eo();function LSt(t,e){if(e===void 0||!e.match(t))throw new dxe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`certificate identity error - expected ${t}, got ${e}`})}function MSt(t,e={}){let r;for(r in t)if(e[r]!==t[r])throw new dxe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`invalid certificate extension - expected ${r}=${t[r]}, got ${r}=${e[r]}`})}});var yxe=_(gK=>{"use strict";Object.defineProperty(gK,"__esModule",{value:!0});gK.verifyCheckpoint=HSt;var AK=Cl(),I1=Eo(),USt=py(),fK=` - -`,_St=/\u2014 (\S+) (\S+)\n/g;function HSt(t,e){let r=(0,USt.filterTLogAuthorities)(e,{targetDate:new Date(Number(t.integratedTime)*1e3)}),s=t.inclusionProof,a=pK.fromString(s.checkpoint.envelope),n=hK.fromString(a.note);if(!jSt(a,r))throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid checkpoint signature"});if(!AK.crypto.bufferEqual(n.logHash,s.rootHash))throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"root hash mismatch"})}function jSt(t,e){let r=Buffer.from(t.note,"utf-8");return t.signatures.every(s=>{let a=e.find(n=>AK.crypto.bufferEqual(n.logID.subarray(0,4),s.keyHint));return a?AK.crypto.verify(r,a.publicKey,s.signature):!1})}var pK=class t{constructor(e,r){this.note=e,this.signatures=r}static fromString(e){if(!e.includes(fK))throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"missing checkpoint separator"});let r=e.indexOf(fK),s=e.slice(0,r+1),n=e.slice(r+fK.length).matchAll(_St),c=Array.from(n,f=>{let[,p,h]=f,E=Buffer.from(h,"base64");if(E.length<5)throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"malformed checkpoint signature"});return{name:p,keyHint:E.subarray(0,4),signature:E.subarray(4)}});if(c.length===0)throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"no signatures found in checkpoint"});return new t(s,c)}},hK=class t{constructor(e,r,s,a){this.origin=e,this.logSize=r,this.logHash=s,this.rest=a}static fromString(e){let r=e.trimEnd().split(` -`);if(r.length<3)throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"too few lines in checkpoint header"});let s=r[0],a=BigInt(r[1]),n=Buffer.from(r[2],"base64"),c=r.slice(3);return new t(s,a,n,c)}}});var Exe=_(EK=>{"use strict";Object.defineProperty(EK,"__esModule",{value:!0});EK.verifyMerkleInclusion=WSt;var yK=Cl(),dK=Eo(),GSt=Buffer.from([0]),qSt=Buffer.from([1]);function WSt(t){let e=t.inclusionProof,r=BigInt(e.logIndex),s=BigInt(e.treeSize);if(r<0n||r>=s)throw new dK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:`invalid index: ${r}`});let{inner:a,border:n}=YSt(r,s);if(e.hashes.length!==a+n)throw new dK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid hash count"});let c=e.hashes.slice(0,a),f=e.hashes.slice(a),p=ZSt(t.canonicalizedBody),h=JSt(VSt(p,c,r),f);if(!yK.crypto.bufferEqual(h,e.rootHash))throw new dK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"calculated root hash does not match inclusion proof"})}function YSt(t,e){let r=KSt(t,e),s=zSt(t>>BigInt(r));return{inner:r,border:s}}function VSt(t,e,r){return e.reduce((s,a,n)=>r>>BigInt(n)&BigInt(1)?mK(a,s):mK(s,a),t)}function JSt(t,e){return e.reduce((r,s)=>mK(s,r),t)}function KSt(t,e){return XSt(t^e-BigInt(1))}function zSt(t){return t.toString(2).split("1").length-1}function XSt(t){return t===0n?0:t.toString(2).length}function mK(t,e){return yK.crypto.digest("sha256",qSt,t,e)}function ZSt(t){return yK.crypto.digest("sha256",GSt,t)}});var Cxe=_(IK=>{"use strict";Object.defineProperty(IK,"__esModule",{value:!0});IK.verifyTLogSET=tDt;var Ixe=Cl(),$St=Eo(),eDt=py();function tDt(t,e){if(!(0,eDt.filterTLogAuthorities)(e,{logID:t.logId.keyId,targetDate:new Date(Number(t.integratedTime)*1e3)}).some(a=>{let n=rDt(t),c=Buffer.from(Ixe.json.canonicalize(n),"utf8"),f=t.inclusionPromise.signedEntryTimestamp;return Ixe.crypto.verify(c,a.publicKey,f)}))throw new $St.VerificationError({code:"TLOG_INCLUSION_PROMISE_ERROR",message:"inclusion promise could not be verified"})}function rDt(t){let{integratedTime:e,logIndex:r,logId:s,canonicalizedBody:a}=t;return{body:a.toString("base64"),integratedTime:Number(e),logIndex:Number(r),logID:s.keyId.toString("hex")}}});var wxe=_(BK=>{"use strict";Object.defineProperty(BK,"__esModule",{value:!0});BK.verifyRFC3161Timestamp=sDt;var CK=Cl(),wK=Eo(),nDt=cK(),iDt=py();function sDt(t,e,r){let s=t.signingTime;if(r=(0,iDt.filterCertAuthorities)(r,{start:s,end:s}),r=aDt(r,{serialNumber:t.signerSerialNumber,issuer:t.signerIssuer}),!r.some(n=>{try{return oDt(t,e,n),!0}catch{return!1}}))throw new wK.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp could not be verified"})}function oDt(t,e,r){let[s,...a]=r.certChain,n=CK.crypto.createPublicKey(s.publicKey),c=t.signingTime;try{new nDt.CertificateChainVerifier({untrustedCert:s,trustedCerts:a}).verify()}catch{throw new wK.VerificationError({code:"TIMESTAMP_ERROR",message:"invalid certificate chain"})}if(!r.certChain.every(p=>p.validForDate(c)))throw new wK.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp was signed with an expired certificate"});t.verify(e,n)}function aDt(t,e){return t.filter(r=>r.certChain.length>0&&CK.crypto.bufferEqual(r.certChain[0].serialNumber,e.serialNumber)&&CK.crypto.bufferEqual(r.certChain[0].issuer,e.issuer))}});var Bxe=_(vL=>{"use strict";Object.defineProperty(vL,"__esModule",{value:!0});vL.verifyTSATimestamp=pDt;vL.verifyTLogTimestamp=hDt;var lDt=Eo(),cDt=yxe(),uDt=Exe(),fDt=Cxe(),ADt=wxe();function pDt(t,e,r){return(0,ADt.verifyRFC3161Timestamp)(t,e,r),{type:"timestamp-authority",logID:t.signerSerialNumber,timestamp:t.signingTime}}function hDt(t,e){let r=!1;if(gDt(t)&&((0,fDt.verifyTLogSET)(t,e),r=!0),dDt(t)&&((0,uDt.verifyMerkleInclusion)(t),(0,cDt.verifyCheckpoint)(t,e),r=!0),!r)throw new lDt.VerificationError({code:"TLOG_MISSING_INCLUSION_ERROR",message:"inclusion could not be verified"});return{type:"transparency-log",logID:t.logId.keyId,timestamp:new Date(Number(t.integratedTime)*1e3)}}function gDt(t){return t.inclusionPromise!==void 0}function dDt(t){return t.inclusionProof!==void 0}});var vxe=_(vK=>{"use strict";Object.defineProperty(vK,"__esModule",{value:!0});vK.verifyDSSETLogBody=mDt;var SL=Eo();function mDt(t,e){switch(t.apiVersion){case"0.0.1":return yDt(t,e);default:throw new SL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported dsse version: ${t.apiVersion}`})}}function yDt(t,e){if(t.spec.signatures?.length!==1)throw new SL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=t.spec.signatures[0].signature;if(!e.compareSignature(Buffer.from(r,"base64")))throw new SL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=t.spec.payloadHash?.value||"";if(!e.compareDigest(Buffer.from(s,"hex")))throw new SL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}});var Sxe=_(DK=>{"use strict";Object.defineProperty(DK,"__esModule",{value:!0});DK.verifyHashedRekordTLogBody=EDt;var SK=Eo();function EDt(t,e){switch(t.apiVersion){case"0.0.1":return IDt(t,e);default:throw new SK.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported hashedrekord version: ${t.apiVersion}`})}}function IDt(t,e){let r=t.spec.signature.content||"";if(!e.compareSignature(Buffer.from(r,"base64")))throw new SK.VerificationError({code:"TLOG_BODY_ERROR",message:"signature mismatch"});let s=t.spec.data.hash?.value||"";if(!e.compareDigest(Buffer.from(s,"hex")))throw new SK.VerificationError({code:"TLOG_BODY_ERROR",message:"digest mismatch"})}});var Dxe=_(bK=>{"use strict";Object.defineProperty(bK,"__esModule",{value:!0});bK.verifyIntotoTLogBody=CDt;var DL=Eo();function CDt(t,e){switch(t.apiVersion){case"0.0.2":return wDt(t,e);default:throw new DL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported intoto version: ${t.apiVersion}`})}}function wDt(t,e){if(t.spec.content.envelope.signatures?.length!==1)throw new DL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=BDt(t.spec.content.envelope.signatures[0].sig);if(!e.compareSignature(Buffer.from(r,"base64")))throw new DL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=t.spec.content.payloadHash?.value||"";if(!e.compareDigest(Buffer.from(s,"hex")))throw new DL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}function BDt(t){return Buffer.from(t,"base64").toString("utf-8")}});var Pxe=_(PK=>{"use strict";Object.defineProperty(PK,"__esModule",{value:!0});PK.verifyTLogBody=bDt;var bxe=Eo(),vDt=vxe(),SDt=Sxe(),DDt=Dxe();function bDt(t,e){let{kind:r,version:s}=t.kindVersion,a=JSON.parse(t.canonicalizedBody.toString("utf8"));if(r!==a.kind||s!==a.apiVersion)throw new bxe.VerificationError({code:"TLOG_BODY_ERROR",message:`kind/version mismatch - expected: ${r}/${s}, received: ${a.kind}/${a.apiVersion}`});switch(a.kind){case"dsse":return(0,vDt.verifyDSSETLogBody)(a,e);case"intoto":return(0,DDt.verifyIntotoTLogBody)(a,e);case"hashedrekord":return(0,SDt.verifyHashedRekordTLogBody)(a,e);default:throw new bxe.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported kind: ${r}`})}}});var Rxe=_(bL=>{"use strict";Object.defineProperty(bL,"__esModule",{value:!0});bL.Verifier=void 0;var PDt=Ie("util"),C1=Eo(),xxe=gxe(),kxe=mxe(),Qxe=Bxe(),xDt=Pxe(),xK=class{constructor(e,r={}){this.trustMaterial=e,this.options={ctlogThreshold:r.ctlogThreshold??1,tlogThreshold:r.tlogThreshold??1,tsaThreshold:r.tsaThreshold??0}}verify(e,r){let s=this.verifyTimestamps(e),a=this.verifySigningKey(e,s);return this.verifyTLogs(e),this.verifySignature(e,a),r&&this.verifyPolicy(r,a.identity||{}),a}verifyTimestamps(e){let r=0,s=0,a=e.timestamps.map(n=>{switch(n.$case){case"timestamp-authority":return s++,(0,Qxe.verifyTSATimestamp)(n.timestamp,e.signature.signature,this.trustMaterial.timestampAuthorities);case"transparency-log":return r++,(0,Qxe.verifyTLogTimestamp)(n.tlogEntry,this.trustMaterial.tlogs)}});if(Txe(a))throw new C1.VerificationError({code:"TIMESTAMP_ERROR",message:"duplicate timestamp"});if(rn.timestamp)}verifySigningKey({key:e},r){switch(e.$case){case"public-key":return(0,xxe.verifyPublicKey)(e.hint,r,this.trustMaterial);case"certificate":{let s=(0,xxe.verifyCertificate)(e.certificate,r,this.trustMaterial);if(Txe(s.scts))throw new C1.VerificationError({code:"CERTIFICATE_ERROR",message:"duplicate SCT"});if(s.scts.length(0,xDt.verifyTLogBody)(s,e))}verifySignature(e,r){if(!e.signature.verifySignature(r.key))throw new C1.VerificationError({code:"SIGNATURE_ERROR",message:"signature verification failed"})}verifyPolicy(e,r){e.subjectAlternativeName&&(0,kxe.verifySubjectAlternativeName)(e.subjectAlternativeName,r.subjectAlternativeName),e.extensions&&(0,kxe.verifyExtensions)(e.extensions,r.extensions)}};bL.Verifier=xK;function Txe(t){for(let e=0;e{"use strict";Object.defineProperty(iu,"__esModule",{value:!0});iu.Verifier=iu.toTrustMaterial=iu.VerificationError=iu.PolicyError=iu.toSignedEntity=void 0;var kDt=lxe();Object.defineProperty(iu,"toSignedEntity",{enumerable:!0,get:function(){return kDt.toSignedEntity}});var Fxe=Eo();Object.defineProperty(iu,"PolicyError",{enumerable:!0,get:function(){return Fxe.PolicyError}});Object.defineProperty(iu,"VerificationError",{enumerable:!0,get:function(){return Fxe.VerificationError}});var QDt=py();Object.defineProperty(iu,"toTrustMaterial",{enumerable:!0,get:function(){return QDt.toTrustMaterial}});var TDt=Rxe();Object.defineProperty(iu,"Verifier",{enumerable:!0,get:function(){return TDt.Verifier}})});var Nxe=_(Fa=>{"use strict";Object.defineProperty(Fa,"__esModule",{value:!0});Fa.DEFAULT_TIMEOUT=Fa.DEFAULT_RETRY=void 0;Fa.createBundleBuilder=NDt;Fa.createKeyFinder=ODt;Fa.createVerificationPolicy=LDt;var RDt=Cl(),w1=H7(),FDt=PL();Fa.DEFAULT_RETRY={retries:2};Fa.DEFAULT_TIMEOUT=5e3;function NDt(t,e){let r={signer:MDt(e),witnesses:_Dt(e)};switch(t){case"messageSignature":return new w1.MessageSignatureBundleBuilder(r);case"dsseEnvelope":return new w1.DSSEBundleBuilder({...r,certificateChain:e.legacyCompatibility})}}function ODt(t){return e=>{let r=t(e);if(!r)throw new FDt.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${e}`});return{publicKey:RDt.crypto.createPublicKey(r),validFor:()=>!0}}}function LDt(t){let e={},r=t.certificateIdentityEmail||t.certificateIdentityURI;return r&&(e.subjectAlternativeName=r),t.certificateIssuer&&(e.extensions={issuer:t.certificateIssuer}),e}function MDt(t){return new w1.FulcioSigner({fulcioBaseURL:t.fulcioURL,identityProvider:t.identityProvider||UDt(t),retry:t.retry??Fa.DEFAULT_RETRY,timeout:t.timeout??Fa.DEFAULT_TIMEOUT})}function UDt(t){let e=t.identityToken;return e?{getToken:()=>Promise.resolve(e)}:new w1.CIContextProvider("sigstore")}function _Dt(t){let e=[];return HDt(t)&&e.push(new w1.RekorWitness({rekorBaseURL:t.rekorURL,entryType:t.legacyCompatibility?"intoto":"dsse",fetchOnConflict:!1,retry:t.retry??Fa.DEFAULT_RETRY,timeout:t.timeout??Fa.DEFAULT_TIMEOUT})),jDt(t)&&e.push(new w1.TSAWitness({tsaBaseURL:t.tsaServerURL,retry:t.retry??Fa.DEFAULT_RETRY,timeout:t.timeout??Fa.DEFAULT_TIMEOUT})),e}function HDt(t){return t.tlogUpload!==!1}function jDt(t){return t.tsaServerURL!==void 0}});var Mxe=_(su=>{"use strict";var GDt=su&&su.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),qDt=su&&su.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Oxe=su&&su.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;aa.verify(t,s))}async function Lxe(t={}){let e=await WDt.getTrustedRoot({mirrorURL:t.tufMirrorURL,rootPath:t.tufRootPath,cachePath:t.tufCachePath,forceCache:t.tufForceCache,retry:t.retry??B1.DEFAULT_RETRY,timeout:t.timeout??B1.DEFAULT_TIMEOUT}),r=t.keySelector?B1.createKeyFinder(t.keySelector):void 0,s=(0,kK.toTrustMaterial)(e,r),a={ctlogThreshold:t.ctLogThreshold,tlogThreshold:t.tlogThreshold},n=new kK.Verifier(s,a),c=B1.createVerificationPolicy(t);return{verify:(f,p)=>{let h=(0,QK.bundleFromJSON)(f),E=(0,kK.toSignedEntity)(h,p);n.verify(E,c)}}}});var _xe=_(Ni=>{"use strict";Object.defineProperty(Ni,"__esModule",{value:!0});Ni.verify=Ni.sign=Ni.createVerifier=Ni.attest=Ni.VerificationError=Ni.PolicyError=Ni.TUFError=Ni.InternalError=Ni.DEFAULT_REKOR_URL=Ni.DEFAULT_FULCIO_URL=Ni.ValidationError=void 0;var KDt=Ib();Object.defineProperty(Ni,"ValidationError",{enumerable:!0,get:function(){return KDt.ValidationError}});var TK=H7();Object.defineProperty(Ni,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return TK.DEFAULT_FULCIO_URL}});Object.defineProperty(Ni,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return TK.DEFAULT_REKOR_URL}});Object.defineProperty(Ni,"InternalError",{enumerable:!0,get:function(){return TK.InternalError}});var zDt=hL();Object.defineProperty(Ni,"TUFError",{enumerable:!0,get:function(){return zDt.TUFError}});var Uxe=PL();Object.defineProperty(Ni,"PolicyError",{enumerable:!0,get:function(){return Uxe.PolicyError}});Object.defineProperty(Ni,"VerificationError",{enumerable:!0,get:function(){return Uxe.VerificationError}});var xL=Mxe();Object.defineProperty(Ni,"attest",{enumerable:!0,get:function(){return xL.attest}});Object.defineProperty(Ni,"createVerifier",{enumerable:!0,get:function(){return xL.createVerifier}});Object.defineProperty(Ni,"sign",{enumerable:!0,get:function(){return xL.sign}});Object.defineProperty(Ni,"verify",{enumerable:!0,get:function(){return xL.verify}})});Dt();Ge();Dt();var dke=Ie("child_process"),mke=ut(Fd());Yt();var $I=new Map([]);var Gv={};Vt(Gv,{BaseCommand:()=>ft,WorkspaceRequiredError:()=>ar,getCli:()=>bde,getDynamicLibs:()=>Dde,getPluginConfiguration:()=>tC,openWorkspace:()=>eC,pluginCommands:()=>$I,runExit:()=>VR});Yt();var ft=class extends ot{constructor(){super(...arguments);this.cwd=ge.String("--cwd",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<"u")throw new nt("The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path");return super.validateAndExecute()}};Ge();Dt();Yt();var ar=class extends nt{constructor(e,r){let s=J.relative(e,r),a=J.join(e,Ut.fileName);super(`This command can only be run from within a workspace of your project (${s} isn't a workspace of ${a}).`)}};Ge();Dt();eA();wc();pv();Yt();var yat=ut(Ai());Ul();var Dde=()=>new Map([["@yarnpkg/cli",Gv],["@yarnpkg/core",jv],["@yarnpkg/fslib",_2],["@yarnpkg/libzip",fv],["@yarnpkg/parsers",J2],["@yarnpkg/shell",mv],["clipanion",oB],["semver",yat],["typanion",Ea]]);Ge();async function eC(t,e){let{project:r,workspace:s}=await Tt.find(t,e);if(!s)throw new ar(r.cwd,e);return s}Ge();Dt();eA();wc();pv();Yt();var IPt=ut(Ai());Ul();var hq={};Vt(hq,{AddCommand:()=>sC,BinCommand:()=>oC,CacheCleanCommand:()=>aC,ClipanionCommand:()=>pC,ConfigCommand:()=>fC,ConfigGetCommand:()=>lC,ConfigSetCommand:()=>cC,ConfigUnsetCommand:()=>uC,DedupeCommand:()=>AC,EntryCommand:()=>gC,ExecCommand:()=>mC,ExplainCommand:()=>IC,ExplainPeerRequirementsCommand:()=>yC,HelpCommand:()=>hC,InfoCommand:()=>CC,LinkCommand:()=>BC,NodeCommand:()=>vC,PluginCheckCommand:()=>SC,PluginImportCommand:()=>PC,PluginImportSourcesCommand:()=>xC,PluginListCommand:()=>DC,PluginRemoveCommand:()=>kC,PluginRuntimeCommand:()=>QC,RebuildCommand:()=>TC,RemoveCommand:()=>RC,RunCommand:()=>NC,RunIndexCommand:()=>FC,SetResolutionCommand:()=>OC,SetVersionCommand:()=>EC,SetVersionSourcesCommand:()=>bC,UnlinkCommand:()=>LC,UpCommand:()=>MC,VersionCommand:()=>dC,WhyCommand:()=>UC,WorkspaceCommand:()=>qC,WorkspacesListCommand:()=>GC,YarnCommand:()=>wC,dedupeUtils:()=>rF,default:()=>Tct,suggestUtils:()=>Xu});var zye=ut(Fd());Ge();Ge();Ge();Yt();var hye=ut(Vv());Ul();var Xu={};Vt(Xu,{Modifier:()=>W5,Strategy:()=>eF,Target:()=>Jv,WorkspaceModifier:()=>cye,applyModifier:()=>Mlt,extractDescriptorFromPath:()=>Y5,extractRangeModifier:()=>uye,fetchDescriptorFrom:()=>V5,findProjectDescriptors:()=>pye,getModifier:()=>Kv,getSuggestedDescriptors:()=>zv,makeWorkspaceDescriptor:()=>Aye,toWorkspaceModifier:()=>fye});Ge();Ge();Dt();var q5=ut(Ai()),Olt="workspace:",Jv=(s=>(s.REGULAR="dependencies",s.DEVELOPMENT="devDependencies",s.PEER="peerDependencies",s))(Jv||{}),W5=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="",s))(W5||{}),cye=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="*",s))(cye||{}),eF=(n=>(n.KEEP="keep",n.REUSE="reuse",n.PROJECT="project",n.LATEST="latest",n.CACHE="cache",n))(eF||{});function Kv(t,e){return t.exact?"":t.caret?"^":t.tilde?"~":e.configuration.get("defaultSemverRangePrefix")}var Llt=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function uye(t,{project:e}){let r=t.match(Llt);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function Mlt(t,e){let{protocol:r,source:s,params:a,selector:n}=G.parseRange(t.range);return q5.default.valid(n)&&(n=`${e}${t.range}`),G.makeDescriptor(t,G.makeRange({protocol:r,source:s,params:a,selector:n}))}function fye(t){switch(t){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function Aye(t,e){return G.makeDescriptor(t.anchoredDescriptor,`${Olt}${fye(e)}`)}async function pye(t,{project:e,target:r}){let s=new Map,a=n=>{let c=s.get(n.descriptorHash);return c||s.set(n.descriptorHash,c={descriptor:n,locators:[]}),c};for(let n of e.workspaces)if(r==="peerDependencies"){let c=n.manifest.peerDependencies.get(t.identHash);c!==void 0&&a(c).locators.push(n.anchoredLocator)}else{let c=n.manifest.dependencies.get(t.identHash),f=n.manifest.devDependencies.get(t.identHash);r==="devDependencies"?f!==void 0?a(f).locators.push(n.anchoredLocator):c!==void 0&&a(c).locators.push(n.anchoredLocator):c!==void 0?a(c).locators.push(n.anchoredLocator):f!==void 0&&a(f).locators.push(n.anchoredLocator)}return s}async function Y5(t,{cwd:e,workspace:r}){return await _lt(async s=>{J.isAbsolute(t)||(t=J.relative(r.cwd,J.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:a}=r,n=await V5(G.makeIdent(null,"archive"),t,{project:r.project,cache:s,workspace:r});if(!n)throw new Error("Assertion failed: The descriptor should have been found");let c=new ki,f=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:s,fetcher:p,report:c,resolver:f},E=f.bindDescriptor(n,r.anchoredLocator,h),C=G.convertDescriptorToLocator(E),S=await p.fetch(C,h),P=await Ut.find(S.prefixPath,{baseFs:S.packageFs});if(!P.name)throw new Error("Target path doesn't have a name");return G.makeDescriptor(P.name,t)})}function Ult(t){if(t.range==="unknown")return{type:"resolve",range:"latest"};if(Fr.validRange(t.range))return{type:"fixed",range:t.range};if(Mp.test(t.range))return{type:"resolve",range:t.range};let e=t.range.match(/^(?:jsr:|npm:)(.*)/);if(!e)return{type:"fixed",range:t.range};let[,r]=e,s=`${G.stringifyIdent(t)}@`;return r.startsWith(s)&&(r=r.slice(s.length)),Fr.validRange(r)?{type:"fixed",range:t.range}:Mp.test(r)?{type:"resolve",range:t.range}:{type:"fixed",range:t.range}}async function zv(t,{project:e,workspace:r,cache:s,target:a,fixed:n,modifier:c,strategies:f,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let h=!n||t.range==="unknown"?Ult(t):{type:"fixed",range:t.range};if(h.type==="fixed")return{suggestions:[{descriptor:t,name:`Use ${G.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let E=typeof r<"u"&&r!==null&&r.manifest[a].get(t.identHash)||null,C=[],S=[],P=async I=>{try{await I()}catch(R){S.push(R)}};for(let I of f){if(C.length>=p)break;switch(I){case"keep":await P(async()=>{E&&C.push({descriptor:E,name:`Keep ${G.prettyDescriptor(e.configuration,E)}`,reason:"(no changes)"})});break;case"reuse":await P(async()=>{for(let{descriptor:R,locators:N}of(await pye(t,{project:e,target:a})).values()){if(N.length===1&&N[0].locatorHash===r.anchoredLocator.locatorHash&&f.includes("keep"))continue;let U=`(originally used by ${G.prettyLocator(e.configuration,N[0])}`;U+=N.length>1?` and ${N.length-1} other${N.length>2?"s":""})`:")",C.push({descriptor:R,name:`Reuse ${G.prettyDescriptor(e.configuration,R)}`,reason:U})}});break;case"cache":await P(async()=>{for(let R of e.storedDescriptors.values())R.identHash===t.identHash&&C.push({descriptor:R,name:`Reuse ${G.prettyDescriptor(e.configuration,R)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await P(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let R=e.tryWorkspaceByIdent(t);if(R===null)return;let N=Aye(R,c);C.push({descriptor:N,name:`Attach ${G.prettyDescriptor(e.configuration,N)}`,reason:`(local workspace at ${he.pretty(e.configuration,R.relativeCwd,he.Type.PATH)})`})});break;case"latest":{let R=e.configuration.get("enableNetwork"),N=e.configuration.get("enableOfflineMode");await P(async()=>{if(a==="peerDependencies")C.push({descriptor:G.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!R&&!N)C.push({descriptor:null,name:"Resolve from latest",reason:he.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let U=await V5(t,h.range,{project:e,cache:s,workspace:r,modifier:c});U&&C.push({descriptor:U,name:`Use ${G.prettyDescriptor(e.configuration,U)}`,reason:`(resolved from ${N?"the cache":"latest"})`})}})}break}}return{suggestions:C.slice(0,p),rejections:S.slice(0,p)}}async function V5(t,e,{project:r,cache:s,workspace:a,preserveModifier:n=!0,modifier:c}){let f=r.configuration.normalizeDependency(G.makeDescriptor(t,e)),p=new ki,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),C={project:r,fetcher:h,cache:s,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},S={...C,resolver:E,fetchOptions:C},P=E.bindDescriptor(f,a.anchoredLocator,S),I=await E.getCandidates(P,{},S);if(I.length===0)return null;let R=I[0],{protocol:N,source:U,params:W,selector:ee}=G.parseRange(G.convertToManifestRange(R.reference));if(N===r.configuration.get("defaultProtocol")&&(N=null),q5.default.valid(ee)){let ie=ee;if(typeof c<"u")ee=c+ee;else if(n!==!1){let me=typeof n=="string"?n:f.range;ee=uye(me,{project:r})+ee}let ue=G.makeDescriptor(R,G.makeRange({protocol:N,source:U,params:W,selector:ee}));(await E.getCandidates(r.configuration.normalizeDependency(ue),{},S)).length!==1&&(ee=ie)}return G.makeDescriptor(R,G.makeRange({protocol:N,source:U,params:W,selector:ee}))}async function _lt(t){return await ce.mktempPromise(async e=>{let r=ze.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Kr(e,{configuration:r,check:!1,immutable:!1}))})}var sC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.fixed=ge.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=ge.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=ge.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=ge.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=ge.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=ge.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=ge.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=ge.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=ge.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=ge.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:fo($l)});this.silent=ge.Boolean("--silent",{hidden:!0});this.packages=ge.Rest()}static{this.paths=[["add"]]}static{this.usage=ot.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"],["Add a local package (gzipped tarball format) to the current workspace","$0 add local-package-name@file:../path/to/local-package-name-v0.1.2.tgz"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=f||r.get("preferReuse"),h=Kv(this,s),E=[p?"reuse":void 0,"project",this.cached?"cache":void 0,"latest"].filter(W=>typeof W<"u"),C=f?1/0:1,S=W=>{let ee=G.tryParseDescriptor(W.slice(4));return ee?ee.range==="unknown"?G.makeDescriptor(ee,`jsr:${G.stringifyIdent(ee)}@latest`):G.makeDescriptor(ee,`jsr:${ee.range}`):null},P=await Promise.all(this.packages.map(async W=>{let ee=W.match(/^\.{0,2}\//)?await Y5(W,{cwd:this.context.cwd,workspace:a}):W.startsWith("jsr:")?S(W):G.tryParseDescriptor(W),ie=W.match(/^(https?:|git@github)/);if(ie)throw new nt(`It seems you are trying to add a package using a ${he.pretty(r,`${ie[0]}...`,he.Type.RANGE)} url; we now require package names to be explicitly specified. -Try running the command again with the package name prefixed: ${he.pretty(r,"yarn add",he.Type.CODE)} ${he.pretty(r,G.makeDescriptor(G.makeIdent(null,"my-package"),`${ie[0]}...`),he.Type.DESCRIPTOR)}`);if(!ee)throw new nt(`The ${he.pretty(r,W,he.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ue=Hlt(a,ee,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ue.map(async me=>{let pe=await zv(ee,{project:s,workspace:a,cache:n,fixed:c,target:me,modifier:h,strategies:E,maxResults:C});return{request:ee,suggestedDescriptors:pe,target:me}}))})).then(W=>W.flat()),I=await lA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async W=>{for(let{request:ee,suggestedDescriptors:{suggestions:ie,rejections:ue}}of P)if(ie.filter(me=>me.descriptor!==null).length===0){let[me]=ue;if(typeof me>"u")throw new Error("Assertion failed: Expected an error to have been set");s.configuration.get("enableNetwork")?W.reportError(27,`${G.prettyDescriptor(r,ee)} can't be resolved to a satisfying range`):W.reportError(27,`${G.prettyDescriptor(r,ee)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),W.reportSeparator(),W.reportExceptionOnce(me)}});if(I.hasErrors())return I.exitCode();let R=!1,N=[],U=[];for(let{suggestedDescriptors:{suggestions:W},target:ee}of P){let ie,ue=W.filter(Be=>Be.descriptor!==null),le=ue[0].descriptor,me=ue.every(Be=>G.areDescriptorsEqual(Be.descriptor,le));ue.length===1||me?ie=le:(R=!0,{answer:ie}=await(0,hye.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:W.map(({descriptor:Be,name:Ce,reason:g})=>Be?{name:Ce,hint:g,descriptor:Be}:{name:Ce,hint:g,disabled:!0}),onCancel:()=>process.exit(130),result(Be){return this.find(Be,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let pe=a.manifest[ee].get(ie.identHash);(typeof pe>"u"||pe.descriptorHash!==ie.descriptorHash)&&(a.manifest[ee].set(ie.identHash,ie),this.optional&&(ee==="dependencies"?a.manifest.ensureDependencyMeta({...ie,range:"unknown"}).optional=!0:ee==="peerDependencies"&&(a.manifest.ensurePeerDependencyMeta({...ie,range:"unknown"}).optional=!0)),typeof pe>"u"?N.push([a,ee,ie,E]):U.push([a,ee,pe,ie]))}return await r.triggerMultipleHooks(W=>W.afterWorkspaceDependencyAddition,N),await r.triggerMultipleHooks(W=>W.afterWorkspaceDependencyReplacement,U),R&&this.context.stdout.write(` -`),await s.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};function Hlt(t,e,{dev:r,peer:s,preferDev:a,optional:n}){let c=t.manifest.dependencies.has(e.identHash),f=t.manifest.devDependencies.has(e.identHash),p=t.manifest.peerDependencies.has(e.identHash);if((r||s)&&c)throw new nt(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!s&&p)throw new nt(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&f)throw new nt(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!s&&p)throw new nt(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new nt(`Package "${G.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return s&&h.push("peerDependencies"),(r||a)&&h.push("devDependencies"),n&&h.push("dependencies"),h.length>0?h:f?["devDependencies"]:p?["peerDependencies"]:["dependencies"]}Ge();Ge();Yt();var oC=class extends ft{constructor(){super(...arguments);this.verbose=ge.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=ge.String({required:!1})}static{this.paths=[["bin"]]}static{this.usage=ot.Usage({description:"get the path to a binary script",details:` - When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. - - When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. - `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Tt.find(r,this.context.cwd);if(await s.restoreInstallState(),this.name){let f=(await In.getPackageAccessibleBinaries(a,{project:s})).get(this.name);if(!f)throw new nt(`Couldn't find a binary named "${this.name}" for package "${G.prettyLocator(r,a)}"`);let[,p]=f;return this.context.stdout.write(`${p} -`),0}return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async c=>{let f=await In.getPackageAccessibleBinaries(a,{project:s}),h=Array.from(f.keys()).reduce((E,C)=>Math.max(E,C.length),0);for(let[E,[C,S]]of f)c.reportJson({name:E,source:G.stringifyIdent(C),path:S});if(this.verbose)for(let[E,[C]]of f)c.reportInfo(null,`${E.padEnd(h," ")} ${G.prettyLocator(r,C)}`);else for(let E of f.keys())c.reportInfo(null,E)})).exitCode()}};Ge();Dt();Yt();var aC=class extends ft{constructor(){super(...arguments);this.mirror=ge.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=ge.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}static{this.paths=[["cache","clean"],["cache","clear"]]}static{this.usage=ot.Usage({description:"remove the shared cache files",details:` - This command will remove all the files from the cache. - `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(!r.get("enableCacheClean"))throw new nt("Cache cleaning is currently disabled. To enable it, set `enableCacheClean: true` in your configuration file. Note: Cache cleaning is typically not required and should be avoided when using Zero-Installs.");let s=await Kr.find(r);return(await Ot.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&s.mirrorCwd!==null,c=!this.mirror;n&&(await ce.removePromise(s.mirrorCwd),await r.triggerHook(f=>f.cleanGlobalArtifacts,r)),c&&await ce.removePromise(s.cwd)})).exitCode()}};Ge();Yt();ql();var J5=Ie("util"),lC=class extends ft{constructor(){super(...arguments);this.why=ge.Boolean("--why",!1,{description:"Print the explanation for why a setting has its value"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=ge.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=ge.String()}static{this.paths=[["config","get"]]}static{this.usage=ot.Usage({description:"read a configuration settings",details:` - This command will print a configuration setting. - - Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. - `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=this.name.replace(/[.[].*$/,""),a=this.name.replace(/^[^.[]*/,"");if(typeof r.settings.get(s)>"u")throw new nt(`Couldn't find a configuration settings named "${s}"`);let c=r.getSpecial(s,{hideSecrets:!this.unsafe,getNativePaths:!0}),f=je.convertMapsToIndexableObjects(c),p=a?va(f,a):f,h=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p=="string")return this.context.stdout.write(`${p} -`),h.exitCode();J5.inspect.styles.name="cyan",this.context.stdout.write(`${(0,J5.inspect)(p,{depth:1/0,colors:r.get("enableColors"),compact:!1})} -`)}return h.exitCode()}};Ge();Yt();ql();var K5=Ie("util"),cC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=ge.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=ge.String();this.value=ge.String()}static{this.paths=[["config","set"]]}static{this.usage=ot.Usage({description:"change a configuration settings",details:` - This command will set a configuration setting. - - When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). - - When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. - `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new nt("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new nt(`Couldn't find a configuration settings named "${a}"`);if(a==="enableStrictSettings")throw new nt("This setting only affects the file it's in, and thus cannot be set from the CLI");let f=this.json?JSON.parse(this.value):this.value;await(this.home?I=>ze.updateHomeConfiguration(I):I=>ze.updateConfiguration(s(),I))(I=>{if(n){let R=f0(I);return Jd(R,this.name,f),R}else return{...I,[a]:f}});let E=(await ze.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),C=je.convertMapsToIndexableObjects(E),S=n?va(C,n):C;return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async I=>{K5.inspect.styles.name="cyan",I.reportInfo(0,`Successfully set ${this.name} to ${(0,K5.inspect)(S,{depth:1/0,colors:r.get("enableColors"),compact:!1})}`)})).exitCode()}};Ge();Yt();ql();var uC=class extends ft{constructor(){super(...arguments);this.home=ge.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=ge.String()}static{this.paths=[["config","unset"]]}static{this.usage=ot.Usage({description:"unset a configuration setting",details:` - This command will unset a configuration setting. - `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new nt("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new nt(`Couldn't find a configuration settings named "${a}"`);let f=this.home?h=>ze.updateHomeConfiguration(h):h=>ze.updateConfiguration(s(),h);return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await f(C=>{if(!vB(C,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,C;let S=n?f0(C):{...C};return A0(S,this.name),S}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};Ge();Dt();Yt();var tF=Ie("util"),fC=class extends ft{constructor(){super(...arguments);this.noDefaults=ge.Boolean("--no-defaults",!1,{description:"Omit the default values from the display"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.verbose=ge.Boolean("-v,--verbose",{hidden:!0});this.why=ge.Boolean("--why",{hidden:!0});this.names=ge.Rest()}static{this.paths=[["config"]]}static{this.usage=ot.Usage({description:"display the current configuration",details:` - This command prints the current active configuration settings. - `,examples:[["Print the active configuration settings","$0 config"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins,{strict:!1}),s=await SI({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:"The --verbose option is deprecated, the settings' descriptions are now always displayed"},{option:this.why,message:"The --why option is deprecated, the settings' sources are now always displayed"}]);if(s!==null)return s;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async f=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)f.reportError(34,`Invalid configuration key "${p}" in ${h}`);f.reportSeparator()}if(this.json)for(let p of a){if(this.noDefaults&&!r.sources.has(p))continue;let h=r.settings.get(p);typeof h>"u"&&f.reportError(34,`No configuration key named "${p}"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),C=r.sources.get(p)??"",S=C&&C[0]!=="<"?fe.fromPortablePath(C):C;f.reportJson({key:p,effective:E,source:S,...h})}else{let p={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},h={},E={children:h};for(let C of a){if(this.noDefaults&&!r.sources.has(C))continue;let S=r.settings.get(C),P=r.sources.get(C)??"",I=r.getSpecial(C,{hideSecrets:!0,getNativePaths:!0}),R={Description:{label:"Description",value:he.tuple(he.Type.MARKDOWN,{text:S.description,format:this.cli.format(),paragraphs:!1})},Source:{label:"Source",value:he.tuple(P[0]==="<"?he.Type.CODE:he.Type.PATH,P)}};h[C]={value:he.tuple(he.Type.CODE,C),children:R};let N=(U,W)=>{for(let[ee,ie]of W)if(ie instanceof Map){let ue={};U[ee]={children:ue},N(ue,ie)}else U[ee]={label:ee,value:he.tuple(he.Type.NO_HINT,(0,tF.inspect)(ie,p))}};I instanceof Map?N(R,I):R.Value={label:"Value",value:he.tuple(he.Type.NO_HINT,(0,tF.inspect)(I,p))}}a.length!==1&&(n=void 0),xs.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<"u"){let f=a[0],p=(0,tF.inspect)(r.getSpecial(f,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get("enableColors")});this.context.stdout.write(` -`),this.context.stdout.write(`${p} -`)}return c.exitCode()}};Ge();Yt();Ul();var rF={};Vt(rF,{Strategy:()=>Xv,acceptedStrategies:()=>jlt,dedupe:()=>z5});Ge();Ge();var gye=ut(Go()),Xv=(e=>(e.HIGHEST="highest",e))(Xv||{}),jlt=new Set(Object.values(Xv)),Glt={highest:async(t,e,{resolver:r,fetcher:s,resolveOptions:a,fetchOptions:n})=>{let c=new Map;for(let[p,h]of t.storedResolutions){let E=t.storedDescriptors.get(p);if(typeof E>"u")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);je.getSetWithDefault(c,E.identHash).add(h)}let f=new Map(je.mapAndFilter(t.storedDescriptors.values(),p=>G.isVirtualDescriptor(p)?je.mapAndFilter.skip:[p.descriptorHash,je.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=f.get(p.descriptorHash);if(typeof h>"u")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=t.storedResolutions.get(p.descriptorHash);if(typeof E>"u")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let C=t.originalPackages.get(E);if(typeof C>"u")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let S=r.getResolutionDependencies(p,a),P=Object.fromEntries(await je.allSettledSafe(Object.entries(S).map(async([ee,ie])=>{let ue=f.get(ie.descriptorHash);if(typeof ue>"u")throw new Error(`Assertion failed: The descriptor (${ie.descriptorHash}) should have been registered`);let le=await ue.promise;if(!le)throw new Error("Assertion failed: Expected the dependency to have been through the dedupe process itself");return[ee,le.updatedPackage]})));if(e.length&&!gye.default.isMatch(G.stringifyIdent(p),e)||!r.shouldPersistResolution(C,a))return C;let I=c.get(p.identHash);if(typeof I>"u")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(I.size===1)return C;let R=[...I].map(ee=>{let ie=t.originalPackages.get(ee);if(typeof ie>"u")throw new Error(`Assertion failed: The package (${ee}) should have been registered`);return ie}),N=await r.getSatisfying(p,P,R,a),U=N.locators?.[0];if(typeof U>"u"||!N.sorted)return C;let W=t.originalPackages.get(U.locatorHash);if(typeof W>"u")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return W}).then(async S=>{let P=await t.preparePackage(S,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:C,updatedPackage:S,resolvedPackage:P})}).catch(S=>{h.reject(S)})}return[...f.values()].map(p=>p.promise)}};async function z5(t,{strategy:e,patterns:r,cache:s,report:a}){let{configuration:n}=t,c=new ki,f=n.makeResolver(),p=n.makeFetcher(),h={cache:s,checksums:t.storedChecksums,fetcher:p,project:t,report:c,cacheOptions:{skipIntegrityCheck:!0}},E={project:t,resolver:f,report:c,fetchOptions:h};return await a.startTimerPromise("Deduplication step",async()=>{let C=Glt[e],S=await C(t,r,{resolver:f,resolveOptions:E,fetcher:p,fetchOptions:h}),P=Ao.progressViaCounter(S.length);await a.reportProgress(P);let I=0;await Promise.all(S.map(U=>U.then(W=>{if(W===null||W.currentPackage.locatorHash===W.updatedPackage.locatorHash)return;I++;let{descriptor:ee,currentPackage:ie,updatedPackage:ue}=W;a.reportInfo(0,`${G.prettyDescriptor(n,ee)} can be deduped from ${G.prettyLocator(n,ie)} to ${G.prettyLocator(n,ue)}`),a.reportJson({descriptor:G.stringifyDescriptor(ee),currentResolution:G.stringifyLocator(ie),updatedResolution:G.stringifyLocator(ue)}),t.storedResolutions.set(ee.descriptorHash,ue.locatorHash)}).finally(()=>P.tick())));let R;switch(I){case 0:R="No packages";break;case 1:R="One package";break;default:R=`${I} packages`}let N=he.pretty(n,e,he.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${N} strategy`),I})}var AC=class extends ft{constructor(){super(...arguments);this.strategy=ge.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:fo(Xv)});this.check=ge.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:fo($l)});this.patterns=ge.Rest()}static{this.paths=[["dedupe"]]}static{this.usage=ot.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=await Kr.find(r);await s.restoreInstallState({restoreResolutions:!1});let n=0,c=await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async f=>{n=await z5(s,{strategy:this.strategy,patterns:this.patterns,cache:a,report:f})});return c.hasErrors()?c.exitCode():this.check?n?1:0:await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};Ge();Yt();var pC=class extends ft{static{this.paths=[["--clipanion=definitions"]]}async execute(){let{plugins:e}=await ze.find(this.context.cwd,this.context.plugins),r=[];for(let c of e){let{commands:f}=c[1];if(f){let h=Ca.from(f).definitions();r.push([c[0],h])}}let s=this.cli.definitions(),a=(c,f)=>c.split(" ").slice(1).join()===f.split(" ").slice(1).join(),n=dye()["@yarnpkg/builder"].bundles.standard;for(let c of r){let f=c[1];for(let p of f)s.find(h=>a(h.path,p.path)).plugin={name:c[0],isDefault:n.includes(c[0])}}this.context.stdout.write(`${JSON.stringify(s,null,2)} -`)}};var hC=class extends ft{static{this.paths=[["help"],["--help"],["-h"]]}async execute(){this.context.stdout.write(this.cli.usage(null))}};Ge();Dt();Yt();var gC=class extends ft{constructor(){super(...arguments);this.leadingArgument=ge.String();this.args=ge.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!G.tryParseIdent(this.leadingArgument)){let r=J.resolve(this.context.cwd,fe.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};Ge();var dC=class extends ft{static{this.paths=[["-v"],["--version"]]}async execute(){this.context.stdout.write(`${fn||""} -`)}};Ge();Ge();Yt();var mC=class extends ft{constructor(){super(...arguments);this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[["exec"]]}static{this.usage=ot.Usage({description:"execute a shell script",details:` - This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. - - It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Tt.find(r,this.context.cwd);return await s.restoreInstallState(),await In.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:s})}};Ge();Yt();Ul();var yC=class extends ft{constructor(){super(...arguments);this.hash=ge.String({required:!1,validator:Nx(wE(),[Z2(/^p[0-9a-f]{6}$/)])})}static{this.paths=[["explain","peer-requirements"]]}static{this.usage=ot.Usage({description:"explain a set of peer requirements",details:` - A peer requirement represents all peer requests that a subject must satisfy when providing a requested package to requesters. - - When the hash argument is specified, this command prints a detailed explanation of the peer requirement corresponding to the hash and whether it is satisfied or not. - - When used without arguments, this command lists all peer requirements and the corresponding hash that can be used to get detailed information about a given requirement. - - **Note:** A hash is a seven-letter code consisting of the letter 'p' followed by six characters that can be obtained from peer dependency warnings or from the list of all peer requirements(\`yarn explain peer-requirements\`). - `,examples:[["Explain the corresponding peer requirement for a hash","$0 explain peer-requirements p1a4ed"],["List all peer requirements","$0 explain peer-requirements"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),await s.applyLightResolution(),typeof this.hash<"u"?await Wlt(this.hash,s,{stdout:this.context.stdout}):await Ylt(s,{stdout:this.context.stdout})}};async function Wlt(t,e,r){let s=e.peerRequirementNodes.get(t);if(typeof s>"u")throw new Error(`No peerDependency requirements found for hash: "${t}"`);let a=new Set,n=p=>a.has(p.requester.locatorHash)?{value:he.tuple(he.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:p.children.size>0?[{value:he.tuple(he.Type.NO_HINT,"...")}]:[]}:(a.add(p.requester.locatorHash),{value:he.tuple(he.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:Object.fromEntries(Array.from(p.children.values(),h=>[G.stringifyLocator(h.requester),n(h)]))}),c=e.peerWarnings.find(p=>p.hash===t);return(await Ot.start({configuration:e.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async p=>{let h=he.mark(e.configuration),E=c?h.Cross:h.Check;if(p.reportInfo(0,`Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} is requested to provide ${he.pretty(e.configuration,s.ident,he.Type.IDENT)} by its descendants`),p.reportSeparator(),p.reportInfo(0,he.pretty(e.configuration,s.subject,he.Type.LOCATOR)),xs.emitTree({children:Object.fromEntries(Array.from(s.requests.values(),C=>[G.stringifyLocator(C.requester),n(C)]))},{configuration:e.configuration,stdout:r.stdout,json:!1}),p.reportSeparator(),s.provided.range==="missing:"){let C=c?"":" , but all peer requests are optional";p.reportInfo(0,`${E} Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} does not provide ${he.pretty(e.configuration,s.ident,he.Type.IDENT)}${C}.`)}else{let C=e.storedResolutions.get(s.provided.descriptorHash);if(!C)throw new Error("Assertion failed: Expected the descriptor to be registered");let S=e.storedPackages.get(C);if(!S)throw new Error("Assertion failed: Expected the package to be registered");p.reportInfo(0,`${E} Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} provides ${he.pretty(e.configuration,s.ident,he.Type.IDENT)} with version ${G.prettyReference(e.configuration,S.version??"0.0.0")}, ${c?"which does not satisfy all requests.":"which satisfies all requests"}`),c?.type===3&&(c.range?p.reportInfo(0,` The combined requested range is ${he.pretty(e.configuration,c.range,he.Type.RANGE)}`):p.reportInfo(0," Unfortunately, the requested ranges have no overlap"))}})).exitCode()}async function Ylt(t,e){return(await Ot.start({configuration:t.configuration,stdout:e.stdout,includeFooter:!1,includePrefix:!1},async s=>{let a=he.mark(t.configuration),n=je.sortMap(t.peerRequirementNodes,[([,c])=>G.stringifyLocator(c.subject),([,c])=>G.stringifyIdent(c.ident)]);for(let[,c]of n.values()){if(!c.root)continue;let f=t.peerWarnings.find(E=>E.hash===c.hash),p=[...G.allPeerRequests(c)],h;if(p.length>2?h=` and ${p.length-1} other dependencies`:p.length===2?h=" and 1 other dependency":h="",c.provided.range!=="missing:"){let E=t.storedResolutions.get(c.provided.descriptorHash);if(!E)throw new Error("Assertion failed: Expected the resolution to have been registered");let C=t.storedPackages.get(E);if(!C)throw new Error("Assertion failed: Expected the provided package to have been registered");let S=`${he.pretty(t.configuration,c.hash,he.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${G.prettyLocator(t.configuration,c.subject)} provides ${G.prettyLocator(t.configuration,C)} to ${G.prettyLocator(t.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,S):s.reportInfo(0,S)}else{let E=`${he.pretty(t.configuration,c.hash,he.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${G.prettyLocator(t.configuration,c.subject)} doesn't provide ${G.prettyIdent(t.configuration,c.ident)} to ${G.prettyLocator(t.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,E):s.reportInfo(0,E)}}})).exitCode()}Ge();Yt();Ul();Ge();Ge();Dt();Yt();var mye=ut(Ai()),EC=class extends ft{constructor(){super(...arguments);this.useYarnPath=ge.Boolean("--yarn-path",{description:"Set the yarnPath setting even if the version can be accessed by Corepack"});this.onlyIfNeeded=ge.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=ge.String()}static{this.paths=[["set","version"]]}static{this.usage=ot.Usage({description:"lock the Yarn version used by the project",details:"\n This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\n\n By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\n\n A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get("yarnPath")){let f=r.sources.get("yarnPath");if(!f)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let p=r.projectCwd??r.startingCwd;if(J.contains(p,f))return 0}let s=()=>{if(typeof fn>"u")throw new nt("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},a,n=(f,p)=>({version:p,url:f.replace(/\{\}/g,p)});if(this.version==="self")a={url:s(),version:fn??"self"};else if(this.version==="latest"||this.version==="berry"||this.version==="stable")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Zv(r,"stable"));else if(this.version==="canary")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Zv(r,"canary"));else if(this.version==="classic")a={url:"https://classic.yarnpkg.com/latest.js",version:"classic"};else if(this.version.match(/^https?:/))a={url:this.version,version:"remote"};else if(this.version.match(/^\.{0,2}[\\/]/)||fe.isAbsolute(this.version))a={url:`file://${J.resolve(fe.toPortablePath(this.version))}`,version:"file"};else if(Fr.satisfiesWithPrereleases(this.version,">=2.0.0"))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",this.version);else if(Fr.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))a=n("https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js",this.version);else if(Fr.validRange(this.version))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Vlt(r,this.version));else throw new nt(`Invalid version descriptor "${this.version}"`);return(await Ot.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async f=>{let p=async()=>{let h="file://";return a.url.startsWith(h)?(f.reportInfo(0,`Retrieving ${he.pretty(r,a.url,he.Type.PATH)}`),await ce.readFilePromise(a.url.slice(h.length))):(f.reportInfo(0,`Downloading ${he.pretty(r,a.url,he.Type.URL)}`),await nn.get(a.url,{configuration:r}))};await X5(r,a.version,p,{report:f,useYarnPath:this.useYarnPath})})).exitCode()}};async function Vlt(t,e){let s=(await nn.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(a=>Fr.satisfiesWithPrereleases(a,e));if(s.length===0)throw new nt(`No matching release found for range ${he.pretty(t,e,he.Type.RANGE)}.`);return s[0]}async function Zv(t,e){let r=await nn.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new nt(`Tag ${he.pretty(t,e,he.Type.RANGE)} not found`);return r.latest[e]}async function X5(t,e,r,{report:s,useYarnPath:a}){let n,c=async()=>(typeof n>"u"&&(n=await r()),n);if(e===null){let ee=await c();await ce.mktempPromise(async ie=>{let ue=J.join(ie,"yarn.cjs");await ce.writeFilePromise(ue,ee);let{stdout:le}=await qr.execvp(process.execPath,[fe.fromPortablePath(ue),"--version"],{cwd:ie,env:{...t.env,YARN_IGNORE_PATH:"1"}});if(e=le.trim(),!mye.default.valid(e))throw new Error(`Invalid semver version. ${he.pretty(t,"yarn --version",he.Type.CODE)} returned: -${e}`)})}let f=t.projectCwd??t.startingCwd,p=J.resolve(f,".yarn/releases"),h=J.resolve(p,`yarn-${e}.cjs`),E=J.relative(t.startingCwd,h),C=je.isTaggedYarnVersion(e),S=t.get("yarnPath"),P=!C,I=P||!!S||!!a;if(a===!1){if(P)throw new jt(0,"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack");I=!1}else!I&&!process.env.COREPACK_ROOT&&(s.reportWarning(0,`You don't seem to have ${he.applyHyperlink(t,"Corepack","https://nodejs.org/api/corepack.html")} enabled; we'll have to rely on ${he.applyHyperlink(t,"yarnPath","https://yarnpkg.com/configuration/yarnrc#yarnPath")} instead`),I=!0);if(I){let ee=await c();s.reportInfo(0,`Saving the new release in ${he.pretty(t,E,"magenta")}`),await ce.removePromise(J.dirname(h)),await ce.mkdirPromise(J.dirname(h),{recursive:!0}),await ce.writeFilePromise(h,ee,{mode:493}),await ze.updateConfiguration(f,{yarnPath:J.relative(f,h)})}else await ce.removePromise(J.dirname(h)),await ze.updateConfiguration(f,{yarnPath:ze.deleteProperty});let R=await Ut.tryFind(f)||new Ut;R.packageManager=`yarn@${C?e:await Zv(t,"stable")}`;let N={};R.exportTo(N);let U=J.join(f,Ut.fileName),W=`${JSON.stringify(N,null,R.indent)} -`;return await ce.changeFilePromise(U,W,{automaticNewlines:!0}),{bundleVersion:e}}function yye(t){return Br[jx(t)]}var Jlt=/## (?YN[0-9]{4}) - `(?[A-Z_]+)`\n\n(?
(?:.(?!##))+)/gs;async function Klt(t){let r=`https://repo.yarnpkg.com/${je.isTaggedYarnVersion(fn)?fn:await Zv(t,"canary")}/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx`,s=await nn.get(r,{configuration:t});return new Map(Array.from(s.toString().matchAll(Jlt),({groups:a})=>{if(!a)throw new Error("Assertion failed: Expected the match to have been successful");let n=yye(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected "${a.name}" to be named "${n}"`);return[a.code,a.details]}))}var IC=class extends ft{constructor(){super(...arguments);this.code=ge.String({required:!1,validator:$2(wE(),[Z2(/^YN[0-9]{4}$/)])});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["explain"]]}static{this.usage=ot.Usage({description:"explain an error code",details:` - When the code argument is specified, this command prints its name and its details. - - When used without arguments, this command lists all error codes and their names. - `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let s=yye(this.code),a=he.pretty(r,s,he.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),f=(await Klt(r)).get(this.code),p=typeof f<"u"?he.jsonOrPretty(this.json,r,he.tuple(he.Type.MARKDOWN,{text:f,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. - -You can help us by editing this page on GitHub \u{1F642}: -${he.jsonOrPretty(this.json,r,he.tuple(he.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx"))} -`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:s,details:p})} -`):this.context.stdout.write(`${n} - -${p} -`)}else{let s={children:je.mapAndFilter(Object.entries(Br),([a,n])=>Number.isNaN(Number(a))?je.mapAndFilter.skip:{label:Yf(Number(a)),value:he.tuple(he.Type.CODE,n)})};xs.emitTree(s,{configuration:r,stdout:this.context.stdout,json:this.json})}}};Ge();Dt();Yt();var Eye=ut(Go()),CC=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=ge.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=ge.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=ge.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=ge.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=ge.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=ge.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=ge.Rest()}static{this.paths=[["info"]]}static{this.usage=ot.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a&&!this.all)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=new Set(this.extra);this.cache&&c.add("cache"),this.dependents&&c.add("dependents"),this.manifest&&c.add("manifest");let f=(ie,{recursive:ue})=>{let le=ie.anchoredLocator.locatorHash,me=new Map,pe=[le];for(;pe.length>0;){let Be=pe.shift();if(me.has(Be))continue;let Ce=s.storedPackages.get(Be);if(typeof Ce>"u")throw new Error("Assertion failed: Expected the package to be registered");if(me.set(Be,Ce),G.isVirtualLocator(Ce)&&pe.push(G.devirtualizeLocator(Ce).locatorHash),!(!ue&&Be!==le))for(let g of Ce.dependencies.values()){let we=s.storedResolutions.get(g.descriptorHash);if(typeof we>"u")throw new Error("Assertion failed: Expected the resolution to be registered");pe.push(we)}}return me.values()},p=({recursive:ie})=>{let ue=new Map;for(let le of s.workspaces)for(let me of f(le,{recursive:ie}))ue.set(me.locatorHash,me);return ue.values()},h=({all:ie,recursive:ue})=>ie&&ue?s.storedPackages.values():ie?p({recursive:ue}):f(a,{recursive:ue}),E=({all:ie,recursive:ue})=>{let le=h({all:ie,recursive:ue}),me=this.patterns.map(Ce=>{let g=G.parseLocator(Ce),we=Eye.default.makeRe(G.stringifyIdent(g)),ye=G.isVirtualLocator(g),Ae=ye?G.devirtualizeLocator(g):g;return se=>{let Z=G.stringifyIdent(se);if(!we.test(Z))return!1;if(g.reference==="unknown")return!0;let De=G.isVirtualLocator(se),Re=De?G.devirtualizeLocator(se):se;return!(ye&&De&&g.reference!==se.reference||Ae.reference!==Re.reference)}}),pe=je.sortMap([...le],Ce=>G.stringifyLocator(Ce));return{selection:pe.filter(Ce=>me.length===0||me.some(g=>g(Ce))),sortedLookup:pe}},{selection:C,sortedLookup:S}=E({all:this.all,recursive:this.recursive});if(C.length===0)throw new nt("No package matched your request");let P=new Map;if(this.dependents)for(let ie of S)for(let ue of ie.dependencies.values()){let le=s.storedResolutions.get(ue.descriptorHash);if(typeof le>"u")throw new Error("Assertion failed: Expected the resolution to be registered");je.getArrayWithDefault(P,le).push(ie)}let I=new Map;for(let ie of S){if(!G.isVirtualLocator(ie))continue;let ue=G.devirtualizeLocator(ie);je.getArrayWithDefault(I,ue.locatorHash).push(ie)}let R={},N={children:R},U=r.makeFetcher(),W={project:s,fetcher:U,cache:n,checksums:s.storedChecksums,report:new ki,cacheOptions:{skipIntegrityCheck:!0}},ee=[async(ie,ue,le)=>{if(!ue.has("manifest"))return;let me=await U.fetch(ie,W),pe;try{pe=await Ut.find(me.prefixPath,{baseFs:me.packageFs})}finally{me.releaseFs?.()}le("Manifest",{License:he.tuple(he.Type.NO_HINT,pe.license),Homepage:he.tuple(he.Type.URL,pe.raw.homepage??null)})},async(ie,ue,le)=>{if(!ue.has("cache"))return;let me=s.storedChecksums.get(ie.locatorHash)??null,pe=n.getLocatorPath(ie,me),Be;if(pe!==null)try{Be=await ce.statPromise(pe)}catch{}let Ce=typeof Be<"u"?[Be.size,he.Type.SIZE]:void 0;le("Cache",{Checksum:he.tuple(he.Type.NO_HINT,me),Path:he.tuple(he.Type.PATH,pe),Size:Ce})}];for(let ie of C){let ue=G.isVirtualLocator(ie);if(!this.virtuals&&ue)continue;let le={},me={value:[ie,he.Type.LOCATOR],children:le};if(R[G.stringifyLocator(ie)]=me,this.nameOnly){delete me.children;continue}let pe=I.get(ie.locatorHash);typeof pe<"u"&&(le.Instances={label:"Instances",value:he.tuple(he.Type.NUMBER,pe.length)}),le.Version={label:"Version",value:he.tuple(he.Type.NO_HINT,ie.version)};let Be=(g,we)=>{let ye={};if(le[g]=ye,Array.isArray(we))ye.children=we.map(Ae=>({value:Ae}));else{let Ae={};ye.children=Ae;for(let[se,Z]of Object.entries(we))typeof Z>"u"||(Ae[se]={label:se,value:Z})}};if(!ue){for(let g of ee)await g(ie,c,Be);await r.triggerHook(g=>g.fetchPackageInfo,ie,c,Be)}ie.bin.size>0&&!ue&&Be("Exported Binaries",[...ie.bin.keys()].map(g=>he.tuple(he.Type.PATH,g)));let Ce=P.get(ie.locatorHash);typeof Ce<"u"&&Ce.length>0&&Be("Dependents",Ce.map(g=>he.tuple(he.Type.LOCATOR,g))),ie.dependencies.size>0&&!ue&&Be("Dependencies",[...ie.dependencies.values()].map(g=>{let we=s.storedResolutions.get(g.descriptorHash),ye=typeof we<"u"?s.storedPackages.get(we)??null:null;return he.tuple(he.Type.RESOLUTION,{descriptor:g,locator:ye})})),ie.peerDependencies.size>0&&ue&&Be("Peer dependencies",[...ie.peerDependencies.values()].map(g=>{let we=ie.dependencies.get(g.identHash),ye=typeof we<"u"?s.storedResolutions.get(we.descriptorHash)??null:null,Ae=ye!==null?s.storedPackages.get(ye)??null:null;return he.tuple(he.Type.RESOLUTION,{descriptor:g,locator:Ae})}))}xs.emitTree(N,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};Ge();Dt();wc();var nF=ut(Fd());Yt();var Z5=ut(Ai());Ul();var zlt=[{selector:t=>t===-1,name:"nodeLinker",value:"node-modules"},{selector:t=>t!==-1&&t<8,name:"enableGlobalCache",value:!1},{selector:t=>t!==-1&&t<8,name:"compressionLevel",value:"mixed"}],wC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=ge.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=ge.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.refreshLockfile=ge.Boolean("--refresh-lockfile",{description:"Refresh the package metadata stored in the lockfile"});this.checkCache=ge.Boolean("--check-cache",{description:"Always refetch the packages and ensure that their checksums are consistent"});this.checkResolutions=ge.Boolean("--check-resolutions",{description:"Validates that the package resolutions are coherent"});this.inlineBuilds=ge.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:fo($l)});this.cacheFolder=ge.String("--cache-folder",{hidden:!0});this.frozenLockfile=ge.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=ge.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=ge.Boolean("--non-interactive",{hidden:!0});this.preferOffline=ge.Boolean("--prefer-offline",{hidden:!0});this.production=ge.Boolean("--production",{hidden:!0});this.registry=ge.String("--registry",{hidden:!0});this.silent=ge.Boolean("--silent",{hidden:!0});this.networkTimeout=ge.String("--network-timeout",{hidden:!0})}static{this.paths=[["install"],ot.Default]}static{this.usage=ot.Usage({description:"install the project dependencies",details:"\n This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\n\n - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\n\n - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\n\n - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the `.pnp.cjs` file you might know).\n\n - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\n\n Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your `.pnp.cjs` file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\n\n If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\n\n If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\n\n If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\n\n If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\n\n If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&r.useWithSource("",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let s=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await SI({configuration:r,stdout:this.context.stdout},[{option:this.ignoreEngines,message:"The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",error:!nF.default.VERCEL},{option:this.registry,message:"The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file"},{option:this.preferOffline,message:"The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",error:!nF.default.VERCEL},{option:this.production,message:"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",error:!0},{option:this.nonInteractive,message:"The --non-interactive option is deprecated",error:!s},{option:this.frozenLockfile,message:"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:"The cache-folder option has been deprecated; use rc settings instead",error:!nF.default.NETLIFY}]);if(a!==null)return a;let n=this.mode==="update-lockfile";if(n&&(this.immutable||this.immutableCache))throw new nt(`${he.pretty(r,"--immutable",he.Type.CODE)} and ${he.pretty(r,"--immutable-cache",he.Type.CODE)} cannot be used with ${he.pretty(r,"--mode=update-lockfile",he.Type.CODE)}`);let c=(this.immutable??r.get("enableImmutableInstalls"))&&!n,f=this.immutableCache&&!n;if(r.projectCwd!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U=!1;await $lt(r,c)&&(N.reportInfo(48,"Automatically removed core plugins that are now builtins \u{1F44D}"),U=!0),await Zlt(r,c)&&(N.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),U=!0),U&&N.reportSeparator()});if(R.hasErrors())return R.exitCode()}if(r.projectCwd!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{if(ze.telemetry?.isNew)ze.telemetry.commitTips(),N.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),N.reportInfo(65,`Run ${he.pretty(r,"yarn config set --home enableTelemetry 0",he.Type.CODE)} to disable`),N.reportSeparator();else if(ze.telemetry?.shouldShowTips){let U=await nn.get("https://repo.yarnpkg.com/tags",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let W=null;if(fn!==null){let ie=Z5.default.prerelease(fn)?"canary":"stable",ue=U.latest[ie];Z5.default.gt(ue,fn)&&(W=[ie,ue])}if(W)ze.telemetry.commitTips(),N.reportInfo(88,`${he.applyStyle(r,`A new ${W[0]} version of Yarn is available:`,he.Style.BOLD)} ${G.prettyReference(r,W[1])}!`),N.reportInfo(88,`Upgrade now by running ${he.pretty(r,`yarn set version ${W[1]}`,he.Type.CODE)}`),N.reportSeparator();else{let ee=ze.telemetry.selectTip(U.tips);ee&&(N.reportInfo(89,he.pretty(r,ee.message,he.Type.MARKDOWN_INLINE)),ee.url&&N.reportInfo(89,`Learn more at ${ee.url}`),N.reportSeparator())}}}});if(R.hasErrors())return R.exitCode()}let{project:p,workspace:h}=await Tt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U={};for(let W of zlt)W.selector(E)&&typeof r.sources.get(W.name)>"u"&&(r.use("",{[W.name]:W.value},p.cwd,{overwrite:!0}),U[W.name]=W.value);Object.keys(U).length>0&&(await ze.updateConfiguration(p.cwd,U),N.reportInfo(87,"Migrated your project to the latest Yarn version \u{1F680}"),N.reportSeparator())});if(R.hasErrors())return R.exitCode()}let C=await Kr.find(r,{immutable:f,check:this.checkCache});if(!h)throw new ar(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let S=r.get("enableHardenedMode");S&&typeof r.sources.get("enableHardenedMode")>"u"&&await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{R.reportWarning(0,"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled."),R.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${he.applyHyperlink(r,"documentation","https://yarnpkg.com/features/security#hardened-mode")} for more details.`),R.reportSeparator()}),(this.refreshLockfile??S)&&(p.lockfileNeedsRefresh=!0);let P=this.checkResolutions??S;return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async R=>{await p.install({cache:C,report:R,immutable:c,checkResolutions:P,mode:this.mode})})).exitCode()}},Xlt="<<<<<<<";async function Zlt(t,e){if(!t.projectCwd)return!1;let r=J.join(t.projectCwd,Er.lockfile);if(!await ce.existsPromise(r)||!(await ce.readFilePromise(r,"utf8")).includes(Xlt))return!1;if(e)throw new jt(47,"Cannot autofix a lockfile when running an immutable install");let a=await qr.execvp("git",["rev-parse","MERGE_HEAD","HEAD"],{cwd:t.projectCwd});if(a.code!==0&&(a=await qr.execvp("git",["rev-parse","REBASE_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0&&(a=await qr.execvp("git",["rev-parse","CHERRY_PICK_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0)throw new jt(83,"Git returned an error when trying to find the commits pertaining to the conflict");let n=await Promise.all(a.stdout.trim().split(/\n/).map(async f=>{let p=await qr.execvp("git",["show",`${f}:./${Er.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new jt(83,`Git returned an error when trying to access the lockfile content in ${f}`);try{return ls(p.stdout)}catch{throw new jt(46,"A variant of the conflicting lockfile failed to parse")}}));n=n.filter(f=>!!f.__metadata);for(let f of n){if(f.__metadata.version<7)for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=G.parseDescriptor(p,!0),E=t.normalizeDependency(h),C=G.stringifyDescriptor(E);C!==p&&(f[C]=f[p],delete f[p])}for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=f[p].checksum;typeof h>"u"||h.includes("/")||(f[p].checksum=`${f.__metadata.cacheKey}/${h}`)}}let c=Object.assign({},...n);c.__metadata.version=`${Math.min(...n.map(f=>parseInt(f.__metadata.version??0)))}`,c.__metadata.cacheKey="merged";for(let[f,p]of Object.entries(c))typeof p=="string"&&delete c[f];return await ce.changeFilePromise(r,nl(c),{automaticNewlines:!0}),!0}async function $lt(t,e){if(!t.projectCwd)return!1;let r=[],s=J.join(t.projectCwd,".yarn/plugins/@yarnpkg");return await ze.updateConfiguration(t.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let c=n.filter(f=>{if(!f.path)return!0;let p=J.resolve(t.projectCwd,f.path),h=ov.has(f.spec)&&J.contains(s,p);return h&&r.push(p),!h});return c.length===0?ze.deleteProperty:c.length===n.length?n:c}},{immutable:e})?(await Promise.all(r.map(async n=>{await ce.removePromise(n)})),!0):!1}Ge();Dt();Yt();var BC=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target projects to the current one"});this.private=ge.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target projects to the current one"});this.relative=ge.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destinations=ge.Rest()}static{this.paths=[["link"]]}static{this.usage=ot.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register one or more remote workspaces for use in the current project","$0 link ~/ts-loader ~/jest"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=s.topLevelWorkspace,f=[];for(let p of this.destinations){let h=J.resolve(this.context.cwd,fe.toPortablePath(p)),E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Tt.find(E,h);if(s.cwd===C.cwd)throw new nt(`Invalid destination '${p}'; Can't link the project to itself`);if(!S)throw new ar(C.cwd,h);if(this.all){let P=!1;for(let I of C.workspaces)I.manifest.name&&(!I.manifest.private||this.private)&&(f.push(I),P=!0);if(!P)throw new nt(`No workspace found to be linked in the target project: ${p}`)}else{if(!S.manifest.name)throw new nt(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(S.manifest.private&&!this.private)throw new nt(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);f.push(S)}}for(let p of f){let h=G.stringifyIdent(p.anchoredLocator),E=this.relative?J.relative(s.cwd,p.cwd):p.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Yt();var vC=class extends ft{constructor(){super(...arguments);this.args=ge.Proxy()}static{this.paths=[["node"]]}static{this.usage=ot.Usage({description:"run node with the hook already setup",details:` - This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - - The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. - `,examples:[["Run a Node script","$0 node ./my-script.js"]]})}async execute(){return this.cli.run(["exec","node",...this.args])}};Ge();Yt();var SC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","check"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"find all third-party plugins that differ from their own spec",details:` - Check only the plugins from https. - - If this command detects any plugin differences in the CI environment, it will throw an error. - `,examples:[["find all third-party plugins that differ from their own spec","$0 plugin check"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await ze.findRcFiles(this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let c of s)if(c.data?.plugins)for(let f of c.data.plugins){if(!f.checksum||!f.spec.match(/^https?:/))continue;let p=await nn.get(f.spec,{configuration:r}),h=Nn.makeHash(p);if(f.checksum===h)continue;let E=he.pretty(r,f.path,he.Type.PATH),C=he.pretty(r,f.spec,he.Type.URL),S=`${E} is different from the file provided by ${C}`;n.reportJson({...f,newChecksum:h}),n.reportError(0,S)}})).exitCode()}};Ge();Ge();Dt();Yt();var vye=Ie("os");Ge();Dt();Yt();var Iye=Ie("os");Ge();wc();Yt();var ect="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Sm(t,e){let r=await nn.get(ect,{configuration:t}),s=ls(r.toString());return Object.fromEntries(Object.entries(s).filter(([a,n])=>!e||Fr.satisfiesWithPrereleases(e,n.range??"<4.0.0-rc.1")))}var DC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","list"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await Sm(r,fn);for(let[c,{experimental:f,...p}]of Object.entries(n)){let h=c;f&&(h+=" [experimental]"),a.reportJson({name:c,experimental:f,...p}),a.reportInfo(null,h)}})).exitCode()}};var tct=/^[0-9]+$/,rct=process.platform==="win32";function Cye(t){return tct.test(t)?`pull/${t}/head`:t}var nct=({repository:t,branch:e},r)=>[["git","init",fe.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin","--depth=1",Cye(e)],["git","reset","--hard","FETCH_HEAD"]],ict=({branch:t})=>[["git","fetch","origin","--depth=1",Cye(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx","-e","packages/yarnpkg-cli/bundles"]],sct=({plugins:t,noMinify:e},r,s)=>[["yarn","build:cli",...new Array().concat(...t.map(a=>["--plugin",J.resolve(s,a)])),...e?["--no-minify"]:[],"|"],[rct?"move":"mv","packages/yarnpkg-cli/bundles/yarn.js",fe.fromPortablePath(r),"|"]],bC=class extends ft{constructor(){super(...arguments);this.installPath=ge.String("--path",{description:"The path where the repository should be cloned to"});this.repository=ge.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=ge.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=ge.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.dryRun=ge.Boolean("-n,--dry-run",!1,{description:"If set, the bundle will be built but not added to the project"});this.noMinify=ge.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=ge.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=ge.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}static{this.paths=[["set","version","from","sources"]]}static{this.usage=ot.Usage({description:"build Yarn from master",details:` - This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. - - By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. - `,examples:[["Build Yarn from master","$0 set version from sources"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=typeof this.installPath<"u"?J.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):J.resolve(fe.toPortablePath((0,Iye.tmpdir)()),"yarnpkg-sources",Nn.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{await $5(this,{configuration:r,report:c,target:a}),c.reportSeparator(),c.reportInfo(0,"Building a fresh bundle"),c.reportSeparator();let f=await qr.execvp("git",["rev-parse","--short","HEAD"],{cwd:a,strict:!0}),p=J.join(a,`packages/yarnpkg-cli/bundles/yarn-${f.stdout.trim()}.js`);ce.existsSync(p)||(await $v(sct(this,p,a),{configuration:r,context:this.context,target:a}),c.reportSeparator());let h=await ce.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await X5(r,null,async()=>h,{report:c});this.skipPlugins||await oct(this,E,{project:s,report:c,target:a})}})).exitCode()}};async function $v(t,{configuration:e,context:r,target:s}){for(let[a,...n]of t){let c=n[n.length-1]==="|";if(c&&n.pop(),c)await qr.pipevp(a,n,{cwd:s,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${he.pretty(e,` $ ${[a,...n].join(" ")}`,"grey")} -`);try{await qr.execvp(a,n,{cwd:s,strict:!0})}catch(f){throw r.stdout.write(f.stdout||f.stack),f}}}}async function $5(t,{configuration:e,report:r,target:s}){let a=!1;if(!t.force&&ce.existsSync(J.join(s,".git"))){r.reportInfo(0,"Fetching the latest commits"),r.reportSeparator();try{await $v(ict(t),{configuration:e,context:t.context,target:s}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}a||(r.reportInfo(0,"Cloning the remote repository"),r.reportSeparator(),await ce.removePromise(s),await ce.mkdirPromise(s,{recursive:!0}),await $v(nct(t,s),{configuration:e,context:t.context,target:s}))}async function oct(t,e,{project:r,report:s,target:a}){let n=await Sm(r.configuration,e),c=new Set(Object.keys(n));for(let f of r.configuration.plugins.keys())c.has(f)&&await eq(f,t,{project:r,report:s,target:a})}Ge();Ge();Dt();Yt();var wye=ut(Ai()),Bye=Ie("vm");var PC=class extends ft{constructor(){super(...arguments);this.name=ge.String();this.checksum=ge.Boolean("--checksum",!0,{description:"Whether to care if this plugin is modified"})}static{this.paths=[["plugin","import"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"download a plugin",details:` - This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. - - Three types of plugin references are accepted: - - - If the plugin is stored within the Yarn repository, it can be referenced by name. - - Third-party plugins can be referenced directly through their public urls. - - Local plugins can be referenced by their path on the disk. - - If the \`--no-checksum\` option is set, Yarn will no longer care if the plugin is modified. - - Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). - `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Tt.find(r,this.context.cwd),c,f;if(this.name.match(/^\.{0,2}[\\/]/)||fe.isAbsolute(this.name)){let p=J.resolve(this.context.cwd,fe.toPortablePath(this.name));a.reportInfo(0,`Reading ${he.pretty(r,p,he.Type.PATH)}`),c=J.relative(n.cwd,p),f=await ce.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new jt(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}c=this.name,p=this.name}else{let h=G.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(h.reference!=="unknown"&&!wye.default.valid(h.reference))throw new jt(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let E=G.stringifyIdent(h),C=await Sm(r,fn);if(!Object.hasOwn(C,E)){let S=`Couldn't find a plugin named ${G.prettyIdent(r,h)} on the remote registry. -`;throw r.plugins.has(E)?S+=`A plugin named ${G.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:S+=`Note that only the plugins referenced on our website (${he.pretty(r,"https://github.com/yarnpkg/berry/blob/master/plugins.yml",he.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${he.pretty(r,"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js",he.Type.URL)}).`,new jt(51,S)}c=E,p=C[E].url,h.reference!=="unknown"?p=p.replace(/\/master\//,`/${E}/${h.reference}/`):fn!==null&&(p=p.replace(/\/master\//,`/@yarnpkg/cli/${fn}/`))}a.reportInfo(0,`Downloading ${he.pretty(r,p,"green")}`),f=await nn.get(p,{configuration:r})}await tq(c,f,{checksum:this.checksum,project:n,report:a})})).exitCode()}};async function tq(t,e,{checksum:r=!0,project:s,report:a}){let{configuration:n}=s,c={},f={exports:c};(0,Bye.runInNewContext)(e.toString(),{module:f,exports:c});let h=`.yarn/plugins/${f.exports.name}.cjs`,E=J.resolve(s.cwd,h);a.reportInfo(0,`Saving the new plugin in ${he.pretty(n,h,"magenta")}`),await ce.mkdirPromise(J.dirname(E),{recursive:!0}),await ce.writeFilePromise(E,e);let C={path:h,spec:t};r&&(C.checksum=Nn.makeHash(e)),await ze.addPlugin(s.cwd,[C])}var act=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],xC=class extends ft{constructor(){super(...arguments);this.installPath=ge.String("--path",{description:"The path where the repository should be cloned to"});this.repository=ge.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=ge.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=ge.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=ge.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=ge.String()}static{this.paths=[["plugin","import","from","sources"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` - This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. - - The plugins can be referenced by their short name if sourced from the official Yarn repository. - `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.installPath<"u"?J.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):J.resolve(fe.toPortablePath((0,vye.tmpdir)()),"yarnpkg-sources",Nn.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:c}=await Tt.find(r,this.context.cwd),f=G.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),p=G.stringifyIdent(f),h=await Sm(r,fn);if(!Object.hasOwn(h,p))throw new jt(51,`Couldn't find a plugin named "${p}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=p;await $5(this,{configuration:r,report:n,target:s}),await eq(E,this,{project:c,report:n,target:s})})).exitCode()}};async function eq(t,{context:e,noMinify:r},{project:s,report:a,target:n}){let c=t.replace(/@yarnpkg\//,""),{configuration:f}=s;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${c}`),a.reportSeparator(),await $v(act({pluginName:c,noMinify:r},n),{configuration:f,context:e,target:n}),a.reportSeparator();let p=J.resolve(n,`packages/${c}/bundles/${t}.js`),h=await ce.readFilePromise(p);await tq(t,h,{project:s,report:a})}Ge();Dt();Yt();var kC=class extends ft{constructor(){super(...arguments);this.name=ge.String()}static{this.paths=[["plugin","remove"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` - This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. - - **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. - `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c=this.name,f=G.parseIdent(c);if(!r.plugins.has(c))throw new nt(`${G.prettyIdent(r,f)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${c}.cjs`,h=J.resolve(s.cwd,p);ce.existsSync(h)&&(n.reportInfo(0,`Removing ${he.pretty(r,p,he.Type.PATH)}...`),await ce.removePromise(h)),n.reportInfo(0,"Updating the configuration..."),await ze.updateConfiguration(s.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let C=E.filter(S=>S.path!==p);return C.length===0?ze.deleteProperty:C.length===E.length?E:C}})})).exitCode()}};Ge();Yt();var QC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","runtime"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` - This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. - `,examples:[["List the currently active plugins","$0 plugin runtime"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let c=this.context.plugins.plugins.has(n),f=n;c&&(f+=" [builtin]"),a.reportJson({name:n,builtin:c}),a.reportInfo(null,`${f}`)}})).exitCode()}};Ge();Ge();Yt();var TC=class extends ft{constructor(){super(...arguments);this.idents=ge.Rest()}static{this.paths=[["rebuild"]]}static{this.usage=ot.Usage({description:"rebuild the project's native packages",details:` - This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. - - Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). - - By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. - `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=new Set;for(let f of this.idents)c.add(G.parseIdent(f).identHash);if(await s.restoreInstallState({restoreResolutions:!1}),await s.resolveEverything({cache:n,report:new ki}),c.size>0)for(let f of s.storedPackages.values())c.has(f.identHash)&&(s.storedBuildState.delete(f.locatorHash),s.skippedBuilds.delete(f.locatorHash));else s.storedBuildState.clear(),s.skippedBuilds.clear();return await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ge();Ge();Ge();Yt();var rq=ut(Go());Ul();var RC=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:fo($l)});this.patterns=ge.Rest()}static{this.paths=[["remove"]]}static{this.usage=ot.Usage({description:"remove dependencies from the project",details:` - This command will remove the packages matching the specified patterns from the current workspace. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - - This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. - `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.all?s.workspaces:[a],f=["dependencies","devDependencies","peerDependencies"],p=[],h=!1,E=[];for(let I of this.patterns){let R=!1,N=G.parseIdent(I);for(let U of c){let W=[...U.manifest.peerDependenciesMeta.keys()];for(let ee of(0,rq.default)(W,I))U.manifest.peerDependenciesMeta.delete(ee),h=!0,R=!0;for(let ee of f){let ie=U.manifest.getForScope(ee),ue=[...ie.values()].map(le=>G.stringifyIdent(le));for(let le of(0,rq.default)(ue,G.stringifyIdent(N))){let{identHash:me}=G.parseIdent(le),pe=ie.get(me);if(typeof pe>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");U.manifest[ee].delete(me),E.push([U,ee,pe]),h=!0,R=!0}}}R||p.push(I)}let C=p.length>1?"Patterns":"Pattern",S=p.length>1?"don't":"doesn't",P=this.all?"any":"this";if(p.length>0)throw new nt(`${C} ${he.prettyList(r,p,he.Type.CODE)} ${S} match any packages referenced by ${P} workspace`);return h?(await r.triggerMultipleHooks(I=>I.afterWorkspaceDependencyRemoval,E),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};Ge();Ge();Yt();var Sye=Ie("util"),FC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["run"]]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async c=>{let f=a.manifest.scripts,p=je.sortMap(f.keys(),C=>C),h={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},E=p.reduce((C,S)=>Math.max(C,S.length),0);for(let[C,S]of f.entries())c.reportInfo(null,`${C.padEnd(E," ")} ${(0,Sye.inspect)(S,h)}`),c.reportJson({name:C,script:S})})).exitCode()}};Ge();Ge();Yt();var NC=class extends ft{constructor(){super(...arguments);this.inspect=ge.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=ge.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=ge.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=ge.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.require=ge.String("--require",{description:"Forwarded to the underlying Node process when executing a binary"});this.silent=ge.Boolean("--silent",{hidden:!0});this.scriptName=ge.String();this.args=ge.Proxy()}static{this.paths=[["run"]]}static{this.usage=ot.Usage({description:"run a script defined in the package.json",details:` - This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: - - - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. - - - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. - - - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. - - Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). - `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a,locator:n}=await Tt.find(r,this.context.cwd);await s.restoreInstallState();let c=this.topLevel?s.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await In.hasPackageScript(c,this.scriptName,{project:s}))return await In.executePackageScript(c,this.scriptName,this.args,{project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let f=await In.getPackageAccessibleBinaries(c,{project:s});if(f.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect=="string"?h.push(`--inspect=${this.inspect}`):h.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push("--inspect-brk")),this.require&&h.push(`--require=${this.require}`),await In.executePackageAccessibleBinary(c,this.scriptName,this.args,{cwd:this.context.cwd,project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:f})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(":")){let E=(await Promise.all(s.workspaces.map(async C=>C.manifest.scripts.has(this.scriptName)?C:null))).filter(C=>C!==null);if(E.length===1)return await In.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new nt(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${G.prettyLocator(r,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new nt(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${G.prettyLocator(r,n)}).`);{if(this.scriptName==="global")throw new nt("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let h=[this.scriptName].concat(this.args);for(let[E,C]of $I)for(let S of C)if(h.length>=S.length&&JSON.stringify(h.slice(0,S.length))===JSON.stringify(S))throw new nt(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${E} plugin. You can install it with "yarn plugin import ${E}".`);throw new nt(`Couldn't find a script named "${this.scriptName}".`)}}};Ge();Ge();Yt();var OC=class extends ft{constructor(){super(...arguments);this.descriptor=ge.String();this.resolution=ge.String()}static{this.paths=[["set","resolution"]]}static{this.usage=ot.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 npm:1.5.0"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(await s.restoreInstallState({restoreResolutions:!1}),!a)throw new ar(s.cwd,this.context.cwd);let c=G.parseDescriptor(this.descriptor,!0),f=G.makeDescriptor(c,this.resolution);return s.storedDescriptors.set(c.descriptorHash,c),s.storedDescriptors.set(f.descriptorHash,f),s.resolutionAliases.set(c.descriptorHash,f.descriptorHash),await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Ge();Dt();Yt();var Dye=ut(Go()),LC=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=ge.Rest()}static{this.paths=[["unlink"]]}static{this.usage=ot.Usage({description:"disconnect the local project from another one",details:` - This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. - `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=s.topLevelWorkspace,f=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of c.manifest.resolutions)h.startsWith("portal:")&&f.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=J.resolve(this.context.cwd,fe.toPortablePath(p));if(je.isPathLike(p)){let E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Tt.find(E,h);if(!S)throw new ar(C.cwd,h);if(this.all){for(let P of C.workspaces)P.manifest.name&&f.add(G.stringifyIdent(P.anchoredLocator));if(f.size===0)throw new nt("No workspace found to be unlinked in the target project")}else{if(!S.manifest.name)throw new nt("The target workspace doesn't have a name and thus cannot be unlinked");f.add(G.stringifyIdent(S.anchoredLocator))}}else{let E=[...c.manifest.resolutions.map(({pattern:C})=>C.descriptor.fullName)];for(let C of(0,Dye.default)(E,p))f.add(C)}}return c.manifest.resolutions=c.manifest.resolutions.filter(({pattern:p})=>!f.has(p.descriptor.fullName)),await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ge();Ge();Ge();Yt();var bye=ut(Vv()),nq=ut(Go());Ul();var MC=class extends ft{constructor(){super(...arguments);this.interactive=ge.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.fixed=ge.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=ge.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=ge.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=ge.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:fo($l)});this.patterns=ge.Rest()}static{this.paths=[["up"]]}static{this.usage=ot.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]})}static{this.schema=[tB("recursive",qf.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})]}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=[...s.storedDescriptors.values()],f=c.map(E=>G.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(G.parseDescriptor(E).range!=="unknown")throw new nt("Ranges aren't allowed when using --recursive");for(let C of(0,nq.default)(f,E)){let S=G.parseIdent(C);p.add(S.identHash)}}let h=c.filter(E=>p.has(E.identHash));for(let E of h)s.storedDescriptors.delete(E.descriptorHash),s.storedResolutions.delete(E.descriptorHash);return await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=Kv(this,s),h=f?["keep","reuse","project","latest"]:["project","latest"],E=[],C=[];for(let N of this.patterns){let U=!1,W=G.parseDescriptor(N),ee=G.stringifyIdent(W);for(let ie of s.workspaces)for(let ue of["dependencies","devDependencies"]){let me=[...ie.manifest.getForScope(ue).values()].map(Be=>G.stringifyIdent(Be)),pe=ee==="*"?me:(0,nq.default)(me,ee);for(let Be of pe){let Ce=G.parseIdent(Be),g=ie.manifest[ue].get(Ce.identHash);if(typeof g>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let we=G.makeDescriptor(Ce,W.range);E.push(Promise.resolve().then(async()=>[ie,ue,g,await zv(we,{project:s,workspace:ie,cache:n,target:ue,fixed:c,modifier:p,strategies:h})])),U=!0}}U||C.push(N)}if(C.length>1)throw new nt(`Patterns ${he.prettyList(r,C,he.Type.CODE)} don't match any packages referenced by any workspace`);if(C.length>0)throw new nt(`Pattern ${he.prettyList(r,C,he.Type.CODE)} doesn't match any packages referenced by any workspace`);let S=await Promise.all(E),P=await lA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async N=>{for(let[,,U,{suggestions:W,rejections:ee}]of S){let ie=W.filter(ue=>ue.descriptor!==null);if(ie.length===0){let[ue]=ee;if(typeof ue>"u")throw new Error("Assertion failed: Expected an error to have been set");let le=this.cli.error(ue);s.configuration.get("enableNetwork")?N.reportError(27,`${G.prettyDescriptor(r,U)} can't be resolved to a satisfying range - -${le}`):N.reportError(27,`${G.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled) - -${le}`)}else ie.length>1&&!f&&N.reportError(27,`${G.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(P.hasErrors())return P.exitCode();let I=!1,R=[];for(let[N,U,,{suggestions:W}]of S){let ee,ie=W.filter(pe=>pe.descriptor!==null),ue=ie[0].descriptor,le=ie.every(pe=>G.areDescriptorsEqual(pe.descriptor,ue));ie.length===1||le?ee=ue:(I=!0,{answer:ee}=await(0,bye.prompt)({type:"select",name:"answer",message:`Which range do you want to use in ${G.prettyWorkspace(r,N)} \u276F ${U}?`,choices:W.map(({descriptor:pe,name:Be,reason:Ce})=>pe?{name:Be,hint:Ce,descriptor:pe}:{name:Be,hint:Ce,disabled:!0}),onCancel:()=>process.exit(130),result(pe){return this.find(pe,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=N.manifest[U].get(ee.identHash);if(typeof me>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(me.descriptorHash!==ee.descriptorHash)N.manifest[U].set(ee.identHash,ee),R.push([N,U,me,ee]);else{let pe=r.makeResolver(),Be={project:s,resolver:pe},Ce=r.normalizeDependency(me),g=pe.bindDescriptor(Ce,N.anchoredLocator,Be);s.forgetResolution(g)}}return await r.triggerMultipleHooks(N=>N.afterWorkspaceDependencyReplacement,R),I&&this.context.stdout.write(` -`),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};Ge();Ge();Ge();Yt();var UC=class extends ft{constructor(){super(...arguments);this.recursive=ge.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=ge.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=ge.String()}static{this.paths=[["why"]]}static{this.usage=ot.Usage({description:"display the reason why a package is needed",details:` - This command prints the exact reasons why a package appears in the dependency tree. - - If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. - `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=G.parseIdent(this.package).identHash,c=this.recursive?cct(s,n,{configuration:r,peers:this.peers}):lct(s,n,{configuration:r,peers:this.peers});xs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};function lct(t,e,{configuration:r,peers:s}){let a=je.sortMap(t.storedPackages.values(),f=>G.stringifyLocator(f)),n={},c={children:n};for(let f of a){let p={};for(let E of f.dependencies.values()){if(!s&&f.peerDependencies.has(E.identHash))continue;let C=t.storedResolutions.get(E.descriptorHash);if(!C)throw new Error("Assertion failed: The resolution should have been registered");let S=t.storedPackages.get(C);if(!S)throw new Error("Assertion failed: The package should have been registered");if(S.identHash!==e)continue;{let I=G.stringifyLocator(f);n[I]={value:[f,he.Type.LOCATOR],children:p}}let P=G.stringifyLocator(S);p[P]={value:[{descriptor:E,locator:S},he.Type.DEPENDENT]}}}return c}function cct(t,e,{configuration:r,peers:s}){let a=je.sortMap(t.workspaces,S=>G.stringifyLocator(S.anchoredLocator)),n=new Set,c=new Set,f=S=>{if(n.has(S.locatorHash))return c.has(S.locatorHash);if(n.add(S.locatorHash),S.identHash===e)return c.add(S.locatorHash),!0;let P=!1;S.identHash===e&&(P=!0);for(let I of S.dependencies.values()){if(!s&&S.peerDependencies.has(I.identHash))continue;let R=t.storedResolutions.get(I.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let N=t.storedPackages.get(R);if(!N)throw new Error("Assertion failed: The package should have been registered");f(N)&&(P=!0)}return P&&c.add(S.locatorHash),P};for(let S of a)f(S.anchoredPackage);let p=new Set,h={},E={children:h},C=(S,P,I)=>{if(!c.has(S.locatorHash))return;let R=I!==null?he.tuple(he.Type.DEPENDENT,{locator:S,descriptor:I}):he.tuple(he.Type.LOCATOR,S),N={},U={value:R,children:N},W=G.stringifyLocator(S);if(P[W]=U,!(I!==null&&t.tryWorkspaceByLocator(S))&&!p.has(S.locatorHash)){p.add(S.locatorHash);for(let ee of S.dependencies.values()){if(!s&&S.peerDependencies.has(ee.identHash))continue;let ie=t.storedResolutions.get(ee.descriptorHash);if(!ie)throw new Error("Assertion failed: The resolution should have been registered");let ue=t.storedPackages.get(ie);if(!ue)throw new Error("Assertion failed: The package should have been registered");C(ue,N,ee)}}};for(let S of a)C(S.anchoredPackage,h,null);return E}Ge();var pq={};Vt(pq,{GitFetcher:()=>tS,GitResolver:()=>rS,default:()=>kct,gitUtils:()=>ka});Ge();Dt();var ka={};Vt(ka,{TreeishProtocols:()=>eS,clone:()=>Aq,fetchBase:()=>Jye,fetchChangedFiles:()=>Kye,fetchChangedWorkspaces:()=>Pct,fetchRoot:()=>Vye,isGitUrl:()=>jC,lsRemote:()=>Yye,normalizeLocator:()=>bct,normalizeRepoUrl:()=>_C,resolveUrl:()=>fq,splitRepoUrl:()=>W0,validateRepoUrl:()=>uq});Ge();Dt();Yt();ql();var qye=ut(Hye()),HC=ut(Ie("querystring")),lq=ut(Ai());function aq(t,e,r){let s=t.indexOf(r);return t.lastIndexOf(e,s>-1?s:1/0)}function jye(t){try{return new URL(t)}catch{return}}function Sct(t){let e=aq(t,"@","#"),r=aq(t,":","#");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),aq(t,":","#")===-1&&t.indexOf("//")===-1&&(t=`ssh://${t}`),t}function Gye(t){return jye(t)||jye(Sct(t))}function _C(t,{git:e=!1}={}){if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/|git:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){let r=Gye(t);r&&(t=r.href),t=t.replace(/^git\+([^:]+):/,"$1:")}return t}function Wye(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var Dct=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],eS=(a=>(a.Commit="commit",a.Head="head",a.Tag="tag",a.Semver="semver",a))(eS||{});function jC(t){return t?Dct.some(e=>!!t.match(e)):!1}function W0(t){t=_C(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:"head",request:"HEAD"},extra:{}};let r=t.slice(0,e),s=t.slice(e+1);if(s.match(/^[a-z]+=/)){let a=HC.default.parse(s);for(let[p,h]of Object.entries(a))if(typeof h!="string")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(eS).find(p=>Object.hasOwn(a,p)),[c,f]=typeof n<"u"?[n,a[n]]:["head","HEAD"];for(let p of Object.values(eS))delete a[p];return{repo:r,treeish:{protocol:c,request:f},extra:a}}else{let a=s.indexOf(":"),[n,c]=a===-1?[null,s]:[s.slice(0,a),s.slice(a+1)];return{repo:r,treeish:{protocol:n,request:c},extra:{}}}}function bct(t){return G.makeLocator(t,_C(t.reference))}function uq(t,{configuration:e}){let r=_C(t,{git:!0});if(!nn.getNetworkSettings(`https://${(0,qye.default)(r).resource}`,{configuration:e}).enableNetwork)throw new jt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function Yye(t,e){let r=uq(t,{configuration:e}),s=await cq("listing refs",["ls-remote",r],{cwd:e.startingCwd,env:Wye()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\t([^\n]+)/gm,c;for(;(c=n.exec(s.stdout))!==null;)a.set(c[2],c[1]);return a}async function fq(t,e){let{repo:r,treeish:{protocol:s,request:a},extra:n}=W0(t),c=await Yye(r,e),f=(h,E)=>{switch(h){case"commit":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return HC.default.stringify({...n,commit:E})}case"head":{let C=c.get(E==="HEAD"?E:`refs/heads/${E}`);if(typeof C>"u")throw new Error(`Unknown head ("${E}")`);return HC.default.stringify({...n,commit:C})}case"tag":{let C=c.get(`refs/tags/${E}`);if(typeof C>"u")throw new Error(`Unknown tag ("${E}")`);return HC.default.stringify({...n,commit:C})}case"semver":{let C=Fr.validRange(E);if(!C)throw new Error(`Invalid range ("${E}")`);let S=new Map([...c.entries()].filter(([I])=>I.startsWith("refs/tags/")).map(([I,R])=>[lq.default.parse(I.slice(10)),R]).filter(I=>I[0]!==null)),P=lq.default.maxSatisfying([...S.keys()],C);if(P===null)throw new Error(`No matching range ("${E}")`);return HC.default.stringify({...n,commit:S.get(P)})}case null:{let C;if((C=p("commit",E))!==null||(C=p("tag",E))!==null||(C=p("head",E))!==null)return C;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${h}")`)}},p=(h,E)=>{try{return f(h,E)}catch{return null}};return _C(`${r}#${f(s,a)}`)}async function Aq(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:s,request:a}}=W0(t);if(s!=="commit")throw new Error("Invalid treeish protocol when cloning");let n=uq(r,{configuration:e}),c=await ce.mktempPromise(),f={cwd:c,env:Wye()};return await cq("cloning the repository",["clone","-c","core.autocrlf=false",n,fe.fromPortablePath(c)],f,{configuration:e,normalizedRepoUrl:n}),await cq("switching branch",["checkout",`${a}`],f,{configuration:e,normalizedRepoUrl:n}),c})}async function Vye(t){let e,r=t;do{if(e=r,await ce.existsPromise(J.join(e,".git")))return e;r=J.dirname(e)}while(r!==e);return null}async function Jye(t,{baseRefs:e}){if(e.length===0)throw new nt("Can't run this command with zero base refs specified.");let r=[];for(let f of e){let{code:p}=await qr.execvp("git",["merge-base",f,"HEAD"],{cwd:t});p===0&&r.push(f)}if(r.length===0)throw new nt(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:s}=await qr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),a=s.trim(),{stdout:n}=await qr.execvp("git",["show","--quiet","--pretty=format:%s",a],{cwd:t,strict:!0}),c=n.trim();return{hash:a,title:c}}async function Kye(t,{base:e,project:r}){let s=je.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:a}=await qr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),n=a.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>J.resolve(t,fe.toPortablePath(h))),{stdout:c}=await qr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),f=c.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>J.resolve(t,fe.toPortablePath(h))),p=[...new Set([...n,...f].sort())];return s?p.filter(h=>!J.relative(r.cwd,h).match(s)):p}async function Pct({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new nt("This command can only be run from within a Yarn project");let r=[J.resolve(e.cwd,Er.lockfile),J.resolve(e.cwd,e.configuration.get("cacheFolder")),J.resolve(e.cwd,e.configuration.get("installStatePath")),J.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(c=>c.populateYarnPaths,e,c=>{c!=null&&r.push(c)});let s=await Vye(e.configuration.projectCwd);if(s==null)throw new nt("This command can only be run on Git repositories");let a=await Jye(s,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),n=await Kye(s,{base:a.hash,project:e});return new Set(je.mapAndFilter(n,c=>{let f=e.tryWorkspaceByFilePath(c);return f===null?je.mapAndFilter.skip:r.some(p=>c.startsWith(p))?je.mapAndFilter.skip:f}))}async function cq(t,e,r,{configuration:s,normalizedRepoUrl:a}){try{return await qr.execvp("git",e,{...r,strict:!0})}catch(n){if(!(n instanceof qr.ExecError))throw n;let c=n.reportExtra,f=n.stderr.toString();throw new jt(1,`Failed ${t}`,p=>{p.reportError(1,` ${he.prettyField(s,{label:"Repository URL",value:he.tuple(he.Type.URL,a)})}`);for(let h of f.matchAll(/^(.+?): (.*)$/gm)){let[,E,C]=h;E=E.toLowerCase();let S=E==="error"?"Error":`${bB(E)} Error`;p.reportError(1,` ${he.prettyField(s,{label:S,value:he.tuple(he.Type.NO_HINT,C)})}`)}c?.(p)})}}var tS=class{supports(e,r){return jC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,a=new Map(r.checksums);a.set(e.locatorHash,s);let n={...r,checksums:a},c=await this.downloadHosted(e,n);if(c!==null)return c;let[f,p,h]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(e,n),...r.cacheOptions});return{packageFs:f,releaseFs:p,prefixPath:G.getIdentVendorPath(e),checksum:h}}async downloadHosted(e,r){return r.project.configuration.reduceHook(s=>s.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let s=W0(e.reference),a=await Aq(e.reference,r.project.configuration),n=J.resolve(a,s.extra.cwd??vt.dot),c=J.join(n,"package.tgz");await In.prepareExternalProject(n,c,{configuration:r.project.configuration,report:r.report,workspace:s.extra.workspace,locator:e});let f=await ce.readFilePromise(c);return await je.releaseAfterUseAsync(async()=>await ps.convertToZip(f,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1}))}};Ge();Ge();var rS=class{supportsDescriptor(e,r){return jC(e.range)}supportsLocator(e,r){return jC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=await fq(e.range,s.project.configuration);return[G.makeLocator(e,a)]}async getSatisfying(e,r,s,a){let n=W0(e.range);return{locators:s.filter(f=>{if(f.identHash!==e.identHash)return!1;let p=W0(f.reference);return!(n.repo!==p.repo||n.treeish.protocol==="commit"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var xct={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:"STRING",isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:"STRING",default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:"NUMBER",default:2}},fetchers:[tS],resolvers:[rS]};var kct=xct;Yt();var GC=class extends ft{constructor(){super(...arguments);this.since=ge.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.noPrivate=ge.Boolean("--no-private",{description:"Exclude workspaces that have the private field set to true"});this.verbose=ge.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["workspaces","list"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let c=this.since?await ka.fetchChangedWorkspaces({ref:this.since,project:s}):s.workspaces,f=new Set(c);if(this.recursive)for(let p of[...c].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)f.add(h);for(let p of f){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let C=new Set,S=new Set;for(let P of Ut.hardDependencies)for(let[I,R]of h.getForScope(P)){let N=s.tryWorkspaceByDescriptor(R);N===null?s.workspacesByIdent.has(I)&&S.add(R):C.add(N)}E={workspaceDependencies:Array.from(C).map(P=>P.relativeCwd),mismatchedWorkspaceDependencies:Array.from(S).map(P=>G.stringifyDescriptor(P))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?G.stringifyIdent(h.name):null,...E})}})).exitCode()}};Ge();Ge();Yt();var qC=class extends ft{constructor(){super(...arguments);this.workspaceName=ge.String();this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[["workspace"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` - This command will run a given sub-command on a single workspace. - `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=s.workspaces,c=new Map(n.map(p=>[G.stringifyIdent(p.anchoredLocator),p])),f=c.get(this.workspaceName);if(f===void 0){let p=Array.from(c.keys()).sort();throw new nt(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: - - ${p.join(` - - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:f.cwd})}};var Qct={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:zye.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"},preferReuse:{description:"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.",type:"BOOLEAN",default:!1}},commands:[aC,lC,cC,uC,OC,bC,EC,GC,pC,hC,gC,dC,sC,oC,fC,AC,mC,yC,IC,CC,wC,BC,LC,vC,SC,xC,PC,kC,DC,QC,TC,RC,FC,NC,MC,UC,qC]},Tct=Qct;var yq={};Vt(yq,{default:()=>Oct});Ge();Ge();var gq="catalog:";var dq=t=>t.startsWith(gq),Rct=t=>t.range.slice(gq.length)||null,Xye=t=>t===null?"default catalog":`catalog "${t}"`,Fct=t=>t.scope?`@${t.scope}/${t.name}`:t.name,mq=(t,e,r,s)=>{let a=Rct(e),n;if(a===null)n=t.configuration.get("catalog");else try{let E=t.configuration.get("catalogs");E&&(n=E.get(a))}catch{n=void 0}if(!n||n.size===0)throw new jt(82,`${G.prettyDescriptor(t.configuration,e)}: ${Xye(a)} not found or empty`);let c=Fct(e),f=n.get(c);if(!f)throw new jt(82,`${G.prettyDescriptor(t.configuration,e)}: entry not found in ${Xye(a)}`);let p=t.configuration.normalizeDependency(G.makeDescriptor(e,f));return r.supportsDescriptor(p,s)?r.bindDescriptor(p,t.topLevelWorkspace.anchoredLocator,s):p};var Nct={configuration:{catalog:{description:"The default catalog of packages",type:"MAP",valueDefinition:{description:"The catalog of packages",type:"STRING"}},catalogs:{description:"Named catalogs of packages",type:"MAP",valueDefinition:{description:"A named catalog",type:"MAP",valueDefinition:{description:"Package version in the catalog",type:"STRING"}}}},hooks:{beforeWorkspacePacking:(t,e)=>{let r=t.project,s=r.configuration.makeResolver(),a={project:r,resolver:s,report:new ki};for(let n of Ut.allDependencies){let c=e[n];if(c)for(let[f,p]of Object.entries(c)){if(typeof p!="string"||!dq(p))continue;let h=G.parseIdent(f),E=G.makeDescriptor(h,p),C=mq(r,E,s,a),{protocol:S,source:P,params:I,selector:R}=G.parseRange(G.convertToManifestRange(C.range));S===t.project.configuration.get("defaultProtocol")&&(S=null),c[f]=G.makeRange({protocol:S,source:P,params:I,selector:R})}}},reduceDependency:async(t,e,r,s,{resolver:a,resolveOptions:n})=>dq(t.range)?mq(e,t,a,n):t}},Oct=Nct;var Bq={};Vt(Bq,{default:()=>Mct});Ge();var Qt={optional:!0},Eq=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{"supports-color":Qt}}],["got@<11",{dependencies:{"@types/responselike":"^1.0.0","@types/keyv":"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{"@types/keyv":"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{"vscode-jsonrpc":"^5.0.1","vscode-languageserver-protocol":"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{"postcss-html":Qt,"postcss-jsx":Qt,"postcss-less":Qt,"postcss-markdown":Qt,"postcss-scss":Qt}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{"tiny-warning":"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Qt}}],["snowpack@>=3.3.0",{dependencies:{"node-gyp":"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Qt}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Qt,"vue-template-compiler":Qt}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Qt,"utf-8-validate":Qt}}],["react-portal@<4.2.2",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{"babel-polyfill":"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{"cross-spawn":"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{"prop-types":"^15.7.2"}}],["@rebass/forms@*",{dependencies:{"@styled-system/should-forward-prop":"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt,"vuetify-loader":Qt}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Qt}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Qt}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:Qt}}],["consolidate@<=0.16.0",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Qt,tinyliquid:Qt,"liquid-node":Qt,jade:Qt,"then-jade":Qt,dust:Qt,"dustjs-helpers":Qt,"dustjs-linkedin":Qt,swig:Qt,"swig-templates":Qt,"razor-tmpl":Qt,atpl:Qt,liquor:Qt,twig:Qt,ejs:Qt,eco:Qt,jazz:Qt,jqtpl:Qt,hamljs:Qt,hamlet:Qt,whiskers:Qt,"haml-coffee":Qt,"hogan.js":Qt,templayed:Qt,handlebars:Qt,underscore:Qt,lodash:Qt,pug:Qt,"then-pug":Qt,qejs:Qt,walrus:Qt,mustache:Qt,just:Qt,ect:Qt,mote:Qt,toffee:Qt,dot:Qt,"bracket-template":Qt,ractive:Qt,nunjucks:Qt,htmling:Qt,"babel-core":Qt,plates:Qt,"react-dom":Qt,react:Qt,"arc-templates":Qt,vash:Qt,slm:Qt,marko:Qt,teacup:Qt,"coffee-script":Qt,squirrelly:Qt,twing:Qt}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt,vue:Qt}}],["scss-parser@<=1.0.5",{dependencies:{lodash:"^4.17.21"}}],["query-ast@<1.0.5",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Qt}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Qt}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Qt,"webpack-command":Qt}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Qt}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Qt}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Qt,jimp:Qt}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Qt,"eslint-import-resolver-typescript":Qt,"eslint-import-resolver-webpack":Qt,"@typescript-eslint/parser":Qt}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Qt}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Qt}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x <10.0.2",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.7"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Qt}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:Qt}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}],["@cypress/snapshot@*",{dependencies:{debug:"^3.2.7"}}],["auto-relay@<=0.14.0",{peerDependencies:{"reflect-metadata":"^0.1.13"}}],["vue-template-babel-compiler@<1.2.0",{peerDependencies:{"vue-template-compiler":"^2.6.0"}}],["@parcel/transformer-image@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["@parcel/transformer-js@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["parcel@*",{peerDependenciesMeta:{"@parcel/core":Qt}}],["react-scripts@*",{peerDependencies:{eslint:"*"}}],["focus-trap-react@^8.0.0",{dependencies:{tabbable:"^5.3.2"}}],["react-rnd@<10.3.7",{peerDependencies:{react:">=16.3.0","react-dom":">=16.3.0"}}],["connect-mongo@<5.0.0",{peerDependencies:{"express-session":"^1.17.1"}}],["vue-i18n@<9",{peerDependencies:{vue:"^2"}}],["vue-router@<4",{peerDependencies:{vue:"^2"}}],["unified@<10",{dependencies:{"@types/unist":"^2.0.0"}}],["react-github-btn@<=1.3.0",{peerDependencies:{react:">=16.3.0"}}],["react-dev-utils@*",{peerDependencies:{typescript:">=2.7",webpack:">=4"},peerDependenciesMeta:{typescript:Qt}}],["@asyncapi/react-component@<=1.0.0-next.39",{peerDependencies:{react:">=16.8.0","react-dom":">=16.8.0"}}],["xo@*",{peerDependencies:{webpack:">=1.11.0"},peerDependenciesMeta:{webpack:Qt}}],["babel-plugin-remove-graphql-queries@<=4.20.0-next.0",{dependencies:{"@babel/types":"^7.15.4"}}],["gatsby-plugin-page-creator@<=4.20.0-next.1",{dependencies:{"fs-extra":"^10.1.0"}}],["gatsby-plugin-utils@<=3.14.0-next.1",{dependencies:{fastq:"^1.13.0"},peerDependencies:{graphql:"^15.0.0"}}],["gatsby-plugin-mdx@<3.1.0-next.1",{dependencies:{mkdirp:"^1.0.4"}}],["gatsby-plugin-mdx@^2",{peerDependencies:{gatsby:"^3.0.0-next"}}],["fdir@<=5.2.0",{peerDependencies:{picomatch:"2.x"},peerDependenciesMeta:{picomatch:Qt}}],["babel-plugin-transform-typescript-metadata@<=0.3.2",{peerDependencies:{"@babel/core":"^7","@babel/traverse":"^7"},peerDependenciesMeta:{"@babel/traverse":Qt}}],["graphql-compose@>=9.0.10",{peerDependencies:{graphql:"^14.2.0 || ^15.0.0 || ^16.0.0"}}],["vite-plugin-vuetify@<=1.0.2",{peerDependencies:{vue:"^3.0.0"}}],["webpack-plugin-vuetify@<=2.0.1",{peerDependencies:{vue:"^3.2.6"}}],["eslint-import-resolver-vite@<2.0.1",{dependencies:{debug:"^4.3.4",resolve:"^1.22.8"}}],["notistack@^3.0.0",{dependencies:{csstype:"^3.0.10"}}],["@fastify/type-provider-typebox@^5.0.0",{peerDependencies:{fastify:"^5.0.0"}}],["@fastify/type-provider-typebox@^4.0.0",{peerDependencies:{fastify:"^4.0.0"}}]];var Iq;function Zye(){return typeof Iq>"u"&&(Iq=Ie("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),Iq}var Cq;function $ye(){return typeof Cq>"u"&&(Cq=Ie("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),Cq}var wq;function eEe(){return typeof wq>"u"&&(wq=Ie("zlib").brotliDecompressSync(Buffer.from("m9XmPqMRsZ7bFo1U5CxexdgYepcdMsrcAbbqv7/rCXGM7SZhmJ2jPScITf1tA+qxuDFE8KC9mQaCs84ftss/pB0UrlDfSS52Q7rXyYIcHbrGG2egYMqC8FFfnNfZVLU+4ZieJEVLu1qxY0MYkbD8opX7TYstjKzqxwBObq8HUIQwogljOgs72xyCrxj0q79cf/hN2Ys/0fU6gkRgxFedikACuQLS4lvO/N5NpZ85m+BdO3c5VplDLMcfEDt6umRCbfM16uxnqUKPvPFg/qtuzzId3SjAxZFoZRqK3pdtWt/C+VU6+zuX09NsoBs3MwobpU1yyoXZnzA1EmiMRS5GfJeLxV51/jSXrfgTWr1af9hwKvqCfSVHiQuk+uO/N16Cror2c1QlthM7WkS/86azhK3b47PG6f5TAJVtrK7g+zlR2boyKBV+QkdOXcfBDrI8yCciS3LktLb+d3gopE3R1QYFN1QWdQtrso2qK3+OTVYpTdPAfICTe9//3y/1+6mixIob4kfOI1WT3DxyD2ZuR06a6RPOPlftc/bZeqWqUtoqSetJlgP0AOBsOOeWqkpKJDtgP25CmIz+ZAo8+zwb3wI5ZD/0a7Qb7Q8Ag8HkWzhVQqzLFksA/nKSsR6hEu4tymzAQcZUDV4D2f17NbNSreHMVG0D1Knfa5n//prG6IzFVH7GSdEZn+1eEohVH5hmz6wxnj0biDxnMlq0fHQ2v7ogu8tEBnHaJICmVgLINf+jr4b/AVtDfPSZWelMen+u+pT60nu+9LrK0z0L/oyvC+kDtsi13AdC/i6pd29uB/1alOsA0Kc6N0wICwzbHkBQGJ94pBZ5TyKj7lzzUQ5CYn3Xp/cLhrJ2GpBakWmkymfeKcX2Vy2QEDcIxnju2369rf+l+H7E96GzyVs0gyDzUD0ipfKdmd7LN80sxjSiau/0PX2e7EMt4hNqThHEad9B1L44EDU1ZyFL+QJ0n1v7McxqupfO9zYGEBGJ0XxHdZmWuNKcV+0WJmzGd4y1qu3RfbunEBAQgZyBUWwjoXAwxk2XVRjBAy1jWcGsnb/Tu2oRKUbqGxHjFxUihoreyXW2M2ZnxkQYPfCorcVYq7rnrfuUV1ZYBNakboTPj+b+PLaIyFVsA5nmcP8ZS23WpTvTnSog5wfhixjwbRCqUZs5CmhOL9EgGmgj/26ysZ0jCMvtwDK2F7UktN2QnwoB1S1oLmpPmOrFf/CT8ITb/UkMLLqMjdVY/y/EH/MtrH9VkMaxM7mf8v/TkuD1ov5CqEgw9xvc/+8UXQ/+Idb2isH35w98+skf/i3b72L4ElozP8Dyc9wbdJcY70N/9F9PVz4uSI/nhcrSt21q/fpyf6UbWyso4Ds08/rSPGAcAJs8sBMCYualxyZxlLqfQnp9jYxdy/TQVs6vYmnTgEERAfmtB2No5xf8eqN4yCWgmnR91NQZQ4CmYCqijiU983mMTgUPedf8L8/XiCu9jbsDMIARuL0a0MZlq7lU2nxB8T+N/F7EFutvEuWhxf3XFlS0KcKMiAbpPy3gv/6r+NIQcVkdlqicBgiYOnzr6FjwJVz+QQxpM+uMAIW4F13oWQzNh95KZlI9LOFocgrLUo8g+i+ZNTor6ypk+7O/PlsJ9WsFhRgnLuNv5P2Isk25gqT6i2tMopOL1+RQcnRBuKZ06E8Ri4/BOrY/bQ4GAZPE+LXKsS5jTYjEl5jHNgnm+kjV9trqJ4C9pcDVxTWux8uovsXQUEYh9BP+NR07OqmcjOsakIEI/xofJioScCLW09tzJAVwZwgbQtVnkX3x8H1sI2y8Hs4AiQYfXRNklTmb9mn9RgbJl2yf19aSzCGZqFq79dXW791Na6an1ydMUb/LNp5HdEZkkmTAdP7EPMC563MSh6zxa+Bz5hMDuNq43JYIRJRIWCuNWvM1xTjf8XaHnVPKElBLyFDMJyWiSAElJ0FJVA++8CIBc8ItAWrxhecW+tOoGq4yReF6Dcz615ifhRWLpIOaf8WTs3zUcjEBS1JEXbIByQhm6+oAoTb3QPkok35qz9L2c/mp5WEuCJgerL5QCxMXUWHBJ80t+LevvZ65pBkFa72ITFw4oGQ05TynQJyDjU1AqBylBAdTE9uIflWo0b+xSUCJ9Ty3GlCggfasdT0PX/ue3w16GUfU+QVQddTm9XiY2Bckz2tKt2il7oUIGBRa7Ft5qJfrRIK3mVs9QsDo9higyTz0N9jmILeRhROdecjV44DDZzYnJNryISvfdIq2x4c2/8e2UXrlRm303TE6kxkQ/0kylxgtsQimZ/nb6jUaggIXXN+F2vyIqMGIuJXQR8yzdFIHknqeWFDgsdvcftmkZyWojcZc+ZFY4rua8nU3XuMNchfTDpBbrjMXsJGonJ+vKX0sZbNcoakrr9c9i+bj6uf6f4yNDdaiXLRhJrlh5zmfbkOGQkosfTqWYgpEKdYx2Kxfb+ZDz4Ufteybj63LzVc7oklSvXHh5Nab4+b8DeoXZihVLRZRCBJuj0J6zk3PtbkjaEH3sD3j6hHhwmufk+pBoGYd9qCJEFL21AmLzzHHktN9jW7GSpe1p91X10Bm5/Dhxo3BNex+EtiAFD3dTK0NcvT58F0IFIQIhgLP6s1MX8wofvtnPX1PQ/bLAwNP+ulKiokjXruRYKzTErNjFrvX5n6QD7oiRbOs3OQUswDgOxzcd+WwGZH1ONZJLEKk2T4VGPrrdkN9ncxP/oQ8UFvRbI7zGVrpNjlniCHT6nYmp7SlDcZ1XmS7tm9CXTMumh89LnaNuF3/wPVa/NLSE195Ntstwz1V2ZLc/sULMGaL4gdF3src9sR1Fh33/xiS3qOrJQlLpy2luR0/y+0q0RnVBBBe4yi4ueiNOdNAq/pR8JehYiEiu7YVJJcGBNBHlCOREQviO39dwxTxdulwW+UOO+OrXOskQ/csaLPIKxUOUHktlUtch/SkuaV5QD2G4vweAaCoSxMZ8k9jagIRR/irArsMUBBkvwQBZj1NYclQ1WtdeoYsd38CObL/DJksETohDEy6ZCixViSEPvNKiV1SSCwIiVk0dPGwTZxeNwPoA0BDhYNc4tIkej3DcTHVTS8W1vYFlURRUS4k2naQ5xI0fseTRBHJQ3WJ6Tn45afc9k9VffnLeTH+Kdd9X9Rnont4E39i8pr21YM+umrbIBTB8Ex2jNapeDYMPaeXACP6jpZnFy8NEyG2AF+Ega5vkvKIWjidXnkItArCkmeU63Fx+eg8KiP95JfLbUQus2hJTKPeGTz9b9A0TJtnTVcdJW15L/+3ZIOQ3jeoFsEuB9IGzxFY52ntO1vJvNdPQMJhXkvTNcRYz7Qz6l09rNUNGbfVNOW7tQgzdp42/0sZtnFW0+64nFJ127Niq3QLT8vwHYw3kOplK43u3yllVjU+RYv76vu3JMghXWGsSB0u3ESlir8CjF5ZIflzQoMn0xbP3qWknhPYHTAfu11TcndM/gV+npAK5/yKkwjnzWs5UXGXJHwAFo1FU99jtfiDBlqk9Xmq1YKsy7YkB5nOmw6dy9mjCqYT72Nz9S4+BsTCObdH/e/YZR3MzUt/j/sjQMujqJNOqABq9wAJCDwn/vwSbELgikVGYviA89VqCQjLBkWsMBf7qNjRT3hPXMbT+DM+fsTUEgPlFV5oq2qzdgZ6uAb0yK/szd/zKqTdSC0GlgQ//otU9TAFEtm4moY7QTBAIb2YdPBQAqhW1LevpeqAvf9tku0fT+IfpA8fDsqAOAQxGbPa0YLgAOIZRFlh3WHrFyBDcFLdrSJP+9Ikfv1V16ukcQt9i8sBbU/+m0SAUsjdTq6mtQfoeI7xPWpsP+1vTo73Rz8VnYLmgxaDWgOuNmD8+vxzpyCIC1upRk0+Wd7Z0smljU7G9IdJYlY5vyGTyzRkkN88RMEm9OKFJ4IHwBxzcQtMNeMUwwUATphdaafYwiPK8NptzFLY0dUIAFj2UVoHzUBmmTP1mWCmKvvesqnrG3hj+FHkfjO3nN+MaWXgorgAAA6K9IXTUD1+uwaqHXsEALRgD82K6GVuzjQznaC89QI2B34wNf1dPIwydDO38xCsAKCdf19/ePn1xejxPZgLmzLlTLvloYWMde1luC66/CFwUdwGF5iJ4QIAM5jvbl94r6EYr52H2W12SlcjAHBSzoVjusrp7UZh18Z/J+vwjQccSS/JBNE2b1adygAAyNgJ5P+bqz5+CPu24bqx6Gjcz84IAtVx2VEyBJTqrocOCI9I7r4vD7cz9L3AGZ6DBzEu36w6fQsAkN2IsmzCZWMxqbMTE75ymnyFiK09l327D2K9sywTANigkEkmLwTn4RqDiPxpy5HKA4aeYqbSoi0AUAKsGA5go3ZXjR0qpUsAoMWolyNxzyiIPZ+qsEM7QDgbHW9WJWwBADq5800tDEPPiPa6ialFj0uNAEDJEC4am4A/oPGPxmDmXdikl4cLKa8CgG7265rxY/wjtmbutfwJ6M9Mer8dKHyeZkalbAEA49jkE8MATNz+qKwsMOlGAEC+lkvGJh0ds/j5uNtg3tilTY+NTe/JnqF4N6uSDACAHKQP1Lht8vSzU7iEyzPjut2EPs/Y38IspIepXm+8s+bS2w8QPd+8ONuavlmV3gIAJLA8T+O2x6fBKOJyYweNq/YsVtd2SjETADgxiwkX4POo7fsmuHnc8rCP05hqlnABgBq023MivCisNnZRtK+sru0oXAIAK+fRHim5pkf85kL/YfPLQ/xReQkXAChjtR0XhfDJaiOHaB9ZXctR2AQARsyesDkUv0deoTWmffvT4f6SYAUA6+xXzrX3Smi6X8zthH22b/w19LM0XlWqr0rjAgAWs1Wq4T6AhPsAVGoEAAa5PpwVKjiHWlfJ2TZJf63FjF8SUG6KBOOL9A4PW3qOHE295pQyfVPIvxcJeU+CKduBk6Q+a2BAVtKhf4QnHrHLFpj6sNDUDvhCfNPmtn4pdDSUkHE1wPPrF1UvkQS/L1S52Zv0Sb/r9YK+jx51oWU+i39Owb1p4MDw3LcwvjpMvtDXPEWBlLcw4DNpOOC8f11nKez61/hc4txssbudIo5lL+aszAI1EiiSfkCetqOyBs4trCbou3jqJZ4diL4zvDnDBRgP+086X66Tvj3JOY1rJwmj/sJrubDrVb32PWhOs6BN+sJXQ+6nOZJTgPRg4PWz8sp/wWI3wsGBQoSU6tr0dWOkrwhDNCN5mfGAM5vfnawcoCdm2CdzIN0r72XbbDWqjom1cMjYh229sPnvzWLZAaSiQR3bSL1XjCwFH1wa4ZmmLeiaD4xutxAZfzu0FwMUkXTsvb7SX7TLM4zwjGg+HbjiaRWI92lgwaxTyKgiXbnThL9j7uBDihzuMULvXXes0e9x7PwRK+6mBLGD9z7PAt7b7va1J2EHu/zZfZ6JPoQVd849MZCk3RJOxd5Nsxi+O0lUD4Pochlk5+4naG1j6yiVRKBPobLOad//hDECeD1ORiB9M37JsSxMC6yAkKEdy7S1aRmXRGrLECneqByM8iQ8x6d71F1uhkYUi3WEjh/A9Yw//HCidh7pl7XD8vEkuN/f7XQ3+fhmSfR/9fHkNcRp4qCD13IGIBIAsQXtoDUnASJc+5H5f7YWufNDdZ3SiHJqVvKw8K1RNB/4mJi3YzQP47nmN2cw2BH4yKk+zk7wcLx2bVzeS773YW/7nMg8DMlWZGeYPJ8lYLzOnN4o/0fk9Fb9upq1yXbRyN7iDSRnOnj+kn3vLjHbn3NmA2tRwcfVd/KHGxPybUwcg9e742hY/XBtEgCQYe9Qh8t8fte6aEo1Lt7a9rryutsDxLxo0o9/lhdL/GMs9n3cCxZiuv3as0lchJm9dQGckDBOT/R+y2ft/W/eswB4NFnsqcrBTerQmx0BTPclttiZPF+ctHerFc2RW9MJzpuGOShqyTLCNsCjhPV3EtMF8nVQf2TL6GzI6EphQEjQgG6JrtMu/0zWg2e97o/uoTIf4ipUvVVM0KYey+VkMCWrFynVZh/hpTTXcm3+EV7yX7W6Ehrz8KON4P9MrENJx2msYomlnUT80OrH6Y1+KEfOWn8KyenbZuHQkjBZcDAx5+J64Aj6TSooLJw3anwLeZGOQeSSPXLe6dVY7MF7HhAl2HU9fwES3l2dLETAm5btht91AwjpdUoQghLn7RhAIRWFRVWJa2Jtc0Tm+dHRGiAvx6wG/OCGa7BsWuJ6U3LwfOzSY5qNsj3Qpt6+JyEhflEfl2YZ7jhjJ3y+3ehNh4IBG4eEmVuhYdlx/EQQvnVDqC5Lodj7NWEXjMFyT14tjF768alhticUJrdl3w6P7cKsF4rhxIKWxOSELDHpzaBPR0EgNZlKdZrSiJfPGaWK++nvRxwoo0gt4maZU1CAx33oq3e+NirCq8K514FHpLc0jbti5KzNlr3ttdqoSeYKrOsq+jS0w4q5Z2AMeYnbAgCra8oCHFF0wJ/PTdXUMVyIdTRhS8cJZVr5dTMliVhKm9/TZduaYLTA346l+ILCTo1es+CVq/f+2MU+XuX47AuupenBsoFCNMV/2ywHjCr2flEAWipfnI46tqmjq81ytF7IWoydKyHCSI4ew+k4+ATvUzq2buldaR6SAI4VKAMyMT7zkBkAMB00NLbwmtJqj2k7NAGAqHKufA41DAksWEk7A33esJTuBprShiAOZCMOdd72+E7b1umdzQCSOsdaB3BxZgCAIhUUSdbxYbW7MfnSRjQBAOeidlz5FgodFOhlNAn2jcFu6KmERUygbnHGMpnfdLZ+KTEVgF9WExaIcJy8hr/tp7Y+ofIvp0nKjrUMZqLMAMAsmaCWuxWW9dpVpoxoAgBXKtOVhyhPGCAhWFJty3Ija39F5udrAvbBC+QD+d2Qpx5Dhfh+FqLgzUW10AwAWChUQzuhruPOnJ3rUZXMdgmhZDvzdRCfX1UCN4/l/wPrk1X0qHN3KbpjTKBihdxy04nZgZFKr7EcDqvvSSpivzg7QGxmssgfLo5KZRV1TZtdbR+k3S/kYjTNfDUZyWrcFtxkiVhetaWfvcxumYBgVeSozNkvIgSbt+L/2Cl6TuiPToNFUi3gzvnWRxo0ES1a/Wjq0Zc47dikmBBXXE4/cj/BEnTUGU8vsXsssBsmrEbCzB27QqDQGPdcgFpmIb3VQSk9zfTyXFlADILp0V5qUnuHn2SAu8QszfXheW/UnD34sJXHTECWUYQhLc5QozwqlP1qnYO/j2pQmGU03C06s3d2EjlIdLNuy+Z0X9GIUUWCXDpwtAPYI/zXrF26ADyEpyyj5o5bn4GKoyNdkhskDGYenTTQ+fRqo0EL0yIqcAfyVOvo2jq3CjCRKOLgRzv8NZ30rd0sMLzpKrIwt866C8KrAes6AeYvDWFOdG2WjV8dNiG2wUyaYIU3T/cDo3COPFw8EPEFcIZAcCNE6BpH0CBPxefguDvpbTKPZF5TYE+uaLtxvaIUB3bIQI6/yK34JNzrQt1az5ucZEtXCMlBED4lW3rAfndm6l/kCGLzwMc1jaGqJo9VNR0VIO4dMQMAo+m4cpFwrKQXPzW3czk7Vehrc4bS6j+UCQBQhrljlDaOxR/+L+5R2jt6Tz+GWNGIJbKP1cd9mk9gzEk9hjdUxnNNvHTW4dOvtRS4MRoQDFpUwYuR+pe67JmTNfNtDqx7LG4zNLjh8a/7i6F+adgW4ci+DW1Ilf9ok+1zg/3+lfN6pK5X6QelSexeWGj2JnH1ym6sQa173zvfno297vUcHC6hAoTC/3enX+ej+9JNHu5RQubQD4++jHOK2fiK8Df3A4QC1LZSDmK46S0VdPvZ8VSJnWHbWlJDsshRGb3dyRkMr3d8VnqqBEcrMSKUyBqMsk6yUayfov2tM+rgwqxlrsiFu4pvawUNfFtcuWrc8FmGXzmz8Vn5LxfzeQoLfUX/JWNR9xC9tZZamjtBesX5eUAqtw7rpFfDcdbgXsMcsICLg6iqrNnoDTf4umgefPn5ZdXLAEaKmKr9K2jWq3EjfHsxMwBg48Ul4dwopQnV1GzvwQsXaQIAGfxz3b1L+LfNKAGAuxiMqmZyB+AYNU1XTRJXly88AYU39jt8cP2yet2jRRzcU6scgDEiEryUmuE0/9XcsZcfId18ZowZMT1Pn3IAxpBI9rrhhqfOkyl7L398ZNuIPH7ElH1o1LGcrV7PCOR1IzMAwAuoc0mYU0VR8SZmewtvuEATAGjx8Jyr7ndZRRabBAAakrqa1eFyutex5al/HR9+Pg/51BPSD406ljMQA8pRvJ9nBgCMQyre6J1RTDLuzPw1pAsbjcEeOqQ1rdTmu87PE3XTX6L5Gyznwp9PhH9fPkpGQ8UNREgtj619rgZb/3wPFNQVbHc/a4jvwl/8oBKYjqAA6N6ujHBoGb4ATrvhNBnDILjc0CJKnveWTCZsDPoCAtX87ot1zaqQIOzniFoY5+YhQw5B2c/phhnSAZA9ApFkx0IJ7sCLThlPpxnHyv9oR13WpgPR4gUqXIl2N4nXnTkJrp58Eu4njBlKzTOEZg8IxnUq8+sqOnQo9N2SE6jdRZ1z/fsQ3CJqNvCck7DRQdc3RveF/dc5mlOPI8T4uL+oz+Z8sJ9wZo/NELlDNct9N677yFvr2oYCQ3/83EfWnj06lnR27o268AYQhVTPo3RYYPpkhgyVUD50TQGcbIPBCGxagjGtFBjceJbYSX958r3v5q3JbgoA8LXamYl9ce+UOusgjorz1/LGw/LsWuxIqVZLUflBNNzqe8wfBnngUekITgge65Xj6xD8Ero1H/HAEgzxiww6j8ZB7I9hA4PQLxy2xTCSF3tJ/60ye1nRAiEhHZjEwgdaaD7HdmaDiTG4HD0ArtUhToud4pjcKlanIcEUD7j13JTtBA9u040VgeqfcMoXejWyk7YDcHR0TNJsYM2cyGylQEg654jKROckKeaXtByXo7DqAQhhd+e41CpRPIm6zoUBBU30L6veKGoHUvVujt12wrswKY0GCX7BAJ1ePs85euedVbtDdCFD6u6HVpjhIAJuyalS4D2EoUBc+OfKne64AHj8o92ql+v1XqI15bZv54pNU+xgh2zxoFup3vOQ40Jgk6wnrxfKqgVYJ8SCL5iRzYqxfYJEKQ6I4V7umobUg1tBdDZCI6wYso5GIsPj5aztuwBIib7SFoG3neHuUIkB0omw3HgYMqAVKWPKX3j0zEOeXOXa53uihs/cCwK2zTUdWfmdaBXGvP2ca3oubeEUEhTjUTjLD469sBTbSoNat4Q6NAHDoLn1d7TVHjJAmwfrggxygS3ojqv4siKiccTvzqizQ/sT37uxiPOJBH54kEryjipahqC4WYQ3Ztrduw39FZkaL80/Kl1M7mFa0VRxRoxS2hASYUpIdRLxT54CSsaACskZURcD6T7DueOjXevevtHYqtG2ZT+lHHVdNiMYIjJ4fu/nmbJp1zaOCONKPSKaP8J95Ije8V4Dnzyb3018HkdmaFbKBJDZMrXEB/VBy2mXVnq8WJSTK8CQuWPax3x8N3IdHtP+nKkRuXSj644Hnl38rAj9tk+2VVRuWRjNa1nsrvymeydN2VmUP4vo65rVvUozV8g+vFK0Pl3TTFjraGzjnpqnYj8fEn7y8xRGCb8o0PpJFDvkn5OOcISVLmQL98k0v89Y4snCvN8eEeM3lT34MjVzW2tBDx823AnRhLHF+wMcfn1USCfNH/y2+Nkmud//9f0xIbj11Zu5Zj4+4VjnVY/3brOKzwL+ejBmAOA47WPUljHF/2vcrorTjC9qauGcdjWqnl4Xqn61TABAfHiRvtpVT/BXt6udWv7G98iwegCujaC1eL1yhl59ATcUPRL3AaIOA+I5uupJcT1P8HWp2/hzT0Sgulz3jhhpRAGwRce+/k0LmNKMTfgx0HDnnYCoD4hwwcoVOwxDBCUhRKsQoCSRhCue2/9c9F4/djN/iU8vqQQAu2W7NleXuELigy7hrrH0ugYBzkBDFOm6hLH5gmTFDrY922J2jrjyFiDRWEKvovHJtvocMB+GdcfEc26nXAIxds31Zvyjgg9jDEkcu356cP45FQyWQ/2Xr9D3uuWTcP5rnCe2ZJ0E+rAzmSuB7q8l5kKexhJKIEgrqufzwt4z0Ma+6Z2Tc87Mxal5/108FsEkt5OMAUkkyPVYQvnEFI//BZi8mLGfYTCJKmKnPSOjj6PKKtrk9r4yTzXtIoLNfgCFXbO64O3y2dHOc0mB/cn4z5fkuA4VivPPReLcHVz8e0Cn05dLt14MyJdAU5yPV1oQSPcU194ylCH1I3Xt+oTMx7XGZgDuxpWddWvXNDuvgrl5OdL1SFnrVEM9U/0qfyz+6vo/VODmhzpDG/dFXZtJ7jTriHeSCKPhhLO5/uYBuSfw1POp6E8u60XdpKOROkyUcoWjqimnNyHhPDDdV1/7ND2Bh/7aiuxpFbYlYhwZNrk3v2ylTvyNsFmfuRontBwiqKx329Zob7jLYDIb9PrG+AWk4nN4QAF3naK32CroJjFK0dzBGBdbhqGvOwlO4Bqc2B+K8vMn9SgTYKOTXQpGthMF0aJQHsdrTiN+fG+eK6bKky6CiukeqBgoB0KYhl0ngc3MWhYQhR6ULDmmmrqvURCguRGH+xUW59GyJPI78e38CbKxEQpOnYlmZUheRl8+5Orw0KnDEZXpMdVzYEcr8V95gf54U3cS7adnQVQm9yAR5pkyblumE52RaVLbIouY4WxcNzoLJraAqsbN7CUaEyQRtqm83YVxgTXFBNPk2z9SfS/2mTSulgEfWUOYmQEfiAaWnX+P0ezKFz1BzO/T9SX4B8Sm7NUmDnbHI74izpe3Dq/k2jqvsxNBX7keI1eux798aA+Ee3pag6xpPDa7uIun6dXBDb9xrdpAFa1TYvlj/3iacVrXUYInG3OQv5lASKQr6Ok3CWTOFrkE3Ab4lFR8hbY0DZsgpiXw3Ic8YccFXomJeuZ+zNjq4CmlxYhcXQnrgtpWb2S+JXEp5JHh9APA4IjKN4hdm0qnHRzhSFfJCcOkg/RinGMzwtgNDahb4H/uNWjrIexsVRC9uYlMT3CCWCLeq12rSi3BlAQrnIAdFhL2INatBUy7ruc1TE+6eZ2XkZ/C6d6+CJrwouvF0ghjWDogxPbgxotmr56iGJoKnuwNF/VWHb037trPU+K8a9PCmGGWrqdiVkSOISAAc7D91xXG8Svq43DBvltxo/jeFylAbMWcCDXDm0rM6DbyRvFtLzAazwd/SPi1x5/NHyxHgX5VESDDn1tRHXzSlbjz2ulMvtv9Dp+Ic6KQZ3edNwa+9iZsx7kIwYF4aRfPuiAwhoYbkgvhVzlgwfF3Z5tX5KgmwkDs6AQdqyuZv1U3sFzdM7UxaJQ6JM5ELO+d+/k6PEylnYrwSOBlurpS2rECSHSp8S5Sbrm9jweZ44BxmkOBY4P5BmhH1PRRkCRcXYG91K0JRzOD/B1vQCcHf//8atBI/HuWuilLAbut+HwOMwBwqaIhe73RUkx4vCmUs4j6ALwz2cUa21NgLwszAYDj7hk5AvfEbG4HnKsavV0z2HZTPwBwNCiFQ3kIus/yxQ2assWZAi2zvyzAEU2C3XdnMwLHq7+vztaFd9UtqeZAqkKXkjoBs2vNdgByZS2cA1XNs70DCmO/0wQp1xWZZFWF8W3oy6uDaQnLF/YRxHk4rtJAAui5f4zymPhhpt+bgyGzSZdePfx3cSoXJIAuErW2pSJav7eSO0FL2bOd0eNgTenDatV0qcMQm4q085gBgJZgp6OlHCwNuT4pJjv46ZFji8t1ho8XaAIABIPsmTYL/HWV3harXQv7AQAWvtqIyuK3dJ+Cj9PGMb7K/JvB5xoGYzzTeucCQeXKMYa5Jh9EzhnyD3aGdQvU/FS1qMnjkPpyqtBQbX+HZgCANU1TteXcz9EMPZ0a78Xu1gxoX41fMf9Gx5SxOfgyF43WlePpTPS7KysCZeKjhxfH8OR2QZTGU8btjQNsDjEviJ5zZ659N/5Cs3tCTKjmg9XhwU2AieBC2CpJAc9MszqjvkvHbiHW4L7rMM9qMRXNBirYkwJvjoctYaKk80gNWxIUK2xDd1rykGGMhRq2glXBCIanrVbE4ctMSCncz7rDmN8J8+7xEr+37HpwPbbLV7DuIoUNODXiuNOYAYAdqqXg3NFSErZEqkops7NsF4dEt0pzJgBg3t6nyOT+ujWUO3o/HWboODheW/ZPjzH7Y2vJl5Vf1yz6cJxee134g1HHKtqNR06Yb1afnVoMAHh1fMz7KJmMuovLqpY/VRzDP+iqbrVar9VPSZxLCflzMZyzGDZ8juE3iuEfdIFWywg4UAxhvkt7H3Vz2Nmijfg10C3pDCGbW5HkGR033VTgXud+mVEqiPa0FRwBokdONicFMVWtN2cDyUBXkaaL5B06Dqt35stna5O88Hr68+Z+0vHQeOL7mZXCPby/RztHkz1eoTOcHLwcfGzDjP9lqtKlou5FzABAt+Kmy07cqDp8+QpF+lRyz702fCBvwQM5RRMAiMkiog3HhpH3/YCarpVzwsDVzQUBQNA83tWEAQVHZpGCKOs9UgWB0sS0CoJt+jEqKJxR4KigJF3udZC6mslAYLpqlIKwZZRLawYKHLe1OAacLM8+C5yT/b4tcDp1RVdidcVxOsa8Vfh2fiRZ4tPLrNuhQJAAyu8f42gdo2Z48/uSo/P29+J71n4oGiSAghLF0zoExPPe086JT6uNadoIQf+UfWOXtuWPNasWv/o8ZgCguhluxCuXg+UWd3uW2hGf5Yq3s0gTAMDia0wbFX5SKZfmYVwWGgQAHXyMEWXhV+k+Ar+tjd34iPkX4kOGQRqfp70XJHXkjm/sJ/ruOb4mSeuYnTfjCWFvoEcG4BwfnEtpFvRelrlGIum4+DYYBA7AtEQyHmxHxTHP/CVxmr/Sp7QXobUx4qP+rGJRXehvjg/uZD3fs2M5+cf7E5+fOPC8KOzGyYE0ZYwhuF0MBVh+MePAVk05a3djJn7kqrUyvLsOroqbM46Z+nM6JvdaGsEjVfwqoN2SfHc135EyJUq88XZEIX8I5nbsDEklYj4fVQqmNM/LjlmbbOv7O+qij/N1bqYrmUIugDHNlrEKYJjRKVYXlHSPdfyGYRC+RPqs64u/jo2ougiKUNbbpI+Db/x2xXsz0rs6VPAcqFgWBi/RYfXDhM5Ens0FyhIjELEM6DiViir7E6DJ9dNP4HqWVSnodz119e7ebZ8KbVAEGh++0g/ApiYn5VRNSkMFBkNiOgyUXPxXrPkCEEh32BdBNi3O8TCdjh1Kx36Mgtx2wdrve3T5Tblwg3Dy+gFH1Y8bEJ4Y8CpF3f2ifCSfFN4eSp3qgkZwRVzRWFGKT6KmfJbumRyGcIXhjcutiG3UCPipFIo5tES/QJQ4o5fA1zjdnptOZ6UTfGNOqVAk55iL3/7V9vAJgEzoLJTAOcpesyuSLJ9+IW+7q3ToWSR3w5Y1jIGVKSSunuyIIgcV81NlP/hsnTQRh8qFuSJCUR//D4NH89aIdvtqj5KNjOeCsW9jtsu+p9no9a8geJI1GJXPffb0anRpeUfz4mHRTMBWKl2PDpgKGxjEFyPzEZovmYVbBJqzI/RTaIuAbGwW7lIsDnvF2tLp7Hu1b3qfcsk+/G3PLnDBtaF3JHFxcZZjXgxceGu9ILgKdVl711k70N7xjW3vWAcAGE3Dl1+jmMZYWowjir3aY4c8NRZirPY0Ev1+E7PCsPpUUrFDWx5UL3Rodd/wKDQrtaeR5aVhbA3ILyE3ZJhjvRLYnEuAOyGwKzeB1SZsOJCWaGuT/p5rkM+b8QSzB+lVCEqxH0kxZyEM08yz5OVyjGpfkg0zhcnqroQ1mRg3mTReLxNIU9elAcNGtsPJ5lXSDFeEIunTdwmY2MhZ8LoROcH35TLh3OplkQ6JJnwA1CB9d6SN0ThG3scVgT6N+LHBf3cmMBRjqZn7XbXIGemgb/Xk8bt/mx5VZe42eAID680ptynUQBNR9Rf8HbSWhuPaSJA7qG83SvHE4ZU8OEZqIpGXZ2GlaMKbIbq4uiDYovInRvGODQYcpAO4zgeB4dnzqV7jSqHt230tB5CUBEsE9/4cJkpF0SBAh3k35zXTHvCenvz1Ud2TezFEu6rBNFZnsbQrAZqU7ErkypRSf6XKqPZigpk+a+0vsVaED2D3JhRNwxIY2pE+dvJNX6SJNv8AiFzDxFryAUsX4o48r+31f43Yzj4WI6eSDCeJu+GPFvJDu133wd1RnUutlzOH90ntQT/X7R/amKrLW7A0s7jEKi1VMJ5La3AvXzgwxMrp+bww7wFh1HKN3Xhvv+lKLFWQ4sUEOD0zd8CG7eucPfHjJI21YN1vyB1iSH3wVqtyGD321FZKYMEewOQgYKGh26SN3RxAK4uhux5ehCjaQ3GjyCMS4cIeECSG9Ami/Bv5lzzDc4SKixDRO7muxtyUi7xbSGtZIACJ1BYtKuVj8nKICZEkv6tAB0p5TtJpK/9/XVrKVqIC5Gn5Gl+0A2Rp6qk+LbeXn8lN20x2VCwnMxjORdqIQiITNmlKN5I4thKV3Ze3OPhGP46gumAIlPrjldf1dBKZVqhtblr7/oNQt+T9uE7exCNrEZu9oghu1pbzbmo/SpgGJQZbzXpocaLCH1LDy+GH68PkYGdP4CubBJyQ1g6E90ERC3NTSp0QBu/GHRqDgqyK3V2j9dxCEcVLFpXzSIB7on3SnT1kN8WtZr7ekIrjZi5f0VjZ7TRFA2LXcUfw+v714j3uPV07vb6V+Guqzup7wTfa5UOr6bDQ1T3NbY5CGPvUfib/szeX2BjA7h6u+ioHp1/cw2IrfMVok9S9Z7yhpsnxkOmq8Xo0MV1RmRf8bpBvDNH6cgLW961Vv5SeD4Jpn5HEoPWpbBq9Bpna680qtL7lTEt5D8J1k+uhkho8aCcB6XQ2X8v3eZNlMhvyPqR7PLF2hJCMfG8uj+rFeMWAK3akFPtO/o/VbnP2iGtkR7/rWe7ck92lDvk8q6oXiA3cZktHYFYSaLq/Wd2Evot7Yw3RHQToOu7B9UKkrATgIggmR6iaaXml2a1gHX2n548XA7GA0NQHEl1jZVE8ujv65YK5p+tg0LLvdzacpN/toxn+ebxUhZ9WrxYP/6fr9Dd/3jKT9qPcwb0ZHjwa/vmHOeZ72aED+8NvjT7aj4YMnL9DKEMLCLsQsf5EarQaDzcmTWgys8xKOyFBrbcOon9JCV+wNpa53kzxvzJ5O7bVGIgO402v5IAgHbO+6RUbSNbEWEGK5hXuh+Ctu9QahUtfNk/FnItXny1lltmcqOehqOIVT1blWCfzlpMrYeA2qZwB3KGKD+QmDdOALt20yVYVTB5tTj2+GmMDy7xkk08/ezZRHkiu8F0SYN6kOz01gIVGhx4PnxMBNNZ19oSmZ0G7FbhqlOWIIN2tq4hR3nQRsLN+eWFM6eCpGpYrQ5lDB1p4wKcLgCNRIbYX1syQAvEl1a7llGiQmb6ECq/7/nV3Xt89iAoMLWoQN9mTtC42bTObuALCdRI0FV310Ea36gJCuyQ4X4E50iOCXlEIKYZ45eU7UrnNCS17WqO8MCAmY/Yand6v9O4d4kmT7ZC6qk2ekv8GIkgTdUVpWwTWFjLkaZ6q9fkiCDJsYM825A3DCEUh5hZUZGJFNwjUOTlKo3HuGa4aRV7sQlx3cjhkPGRIchPPtePHjmm8Ip2DZR/q5o86FVBaF5Sk9XumrXpwRZPTIQ8bJxNId0kTDy1nEIPjmvYo3kUVH3D7CVqAmawsvm8JH2Z8KLO8/ycLE/DBQ4WvxhWo0Pph5K98UQLfVWZ/UytitHvuWl11gNnpSwBMZijoDMvuarjMIyi2buz2w3nFt2lpdsU17X3m7DfPdSAU9ozBqxNBx8mWf4WzrW5IfaqvHR+vH+6YsTi6rz0tLf4aYgt3gu05+/SiYYq5pqhILfws18fN2XL7xjVL8jw9EWjAFXcAuix8blRIvBCOgrr//dB0izhF6Q4oWfD+aK30NB7cqT/Opn3kXl2QFB4JyrpPrPt0JPzeIdIfbzbr/hE9plcxZZnOkVdFV/zSp8FxdslyWpjEPNJJXZ1ePgtW8Q+fbzcSjnd79KdsHHypr2ZwICYguSrAJJFHlydIA6Ttjc067yPgP6S3LV3rdJuwzy3VURPPHcEuBE9RKTDdFVjDOea4iMrycYG+WNjo2W4TIQg4t+3bQ0kjB2yZ4EE1MQaEyWQTd7kBeL8RFGoyLWXUR5C3g+NeYxfCxVsIvZVoBp9HFHTUJCbXacDeU4pAR7s52EfaGGusTdyg4bF2zu/jkG6jO2B4phg6J6GFn4PPaNgei5xBroUV92Oj5wuQfwYpJO3/plgv5Y0r80XSsnGEXuAWiWmZmY1lsQ8US4K1dYzPRcTy5Jlxw4fYlmKuVWTRbRMYKmuw1I33DmDEq1P8VP92Od4QKQnw9hFYWJPYbHR0xKSftb2WMjZ8tBAxQRPsko2tgFd8fyI6MCWnUbiNYeCpRs+YHAIoP5A+IMw7ilfD67stGzBQbPe0rkPkdzvafekGuhsTZkCc1If+8DSkV43eb9zvJrl1ePyIq5kn1iSK48mmVI5s6WKnHAb87PJYKWmHAK/LiVmO1GT1IDxFSZpp6kLIrQ7z8uqWdiM1+HzjCOwrqHqwKVQCrrOeaQZV3Cn2NWhvzqwXdibTusuLztkgAGUlBxHXhPHbYl7s4t/uGwwBytV2qw66lXlF+tFiQG8sAr/l2+r8X+oPmPxVda9IVEtMFPehuoD+szcvsVuBjanjPfYXvZ1sY08gp19W6SxEGa5MH9kyBEfRetwvbGSqFojHD2jSJn5jmQ3OFTtWNPaj6WgL4LGDmfRvLGMwm5o3lTJkx2kAkCf27T4iS0PfW7p0PeQeHjoPZ90eKsPWr9dxgOSg7PKMbAB5+v0/X3SUGA8BZjFKz+g1kLfK4vgHtHa9G7ODeBAEKJ7NZ+pZtitnlTsDdSbUu3PeQvYjt8EhRO0QBPg22kUkFv+JRStiXAXYTTqYAjjf+cCyqr7UJcxbMM371xP4jigI4Kub0l4rz7G2iqZkzSvv47XPVqmV/l/qyRaVUsyrWGaB8Foer1e7OepmcSpQxfAbod3dnOIX4z27UQXtQgJobSIkWYTYZkjCAP37uo9WcCNqL9w4NRW40ADhRMYBmRub96mtPmEO9KOezoayE3UFzDVvk8YxLZha/Bzt9LXEfY5sF/FVyV4e+iHBKpbaCoIB/I7Ntfnf+qFO6ZQlYjH5ecDmKYSk61/ngM7IN9BaZKepxqwDSNsMK7eQ/gnoyGTVPFcPQgoPz7GMBocsvBftsYYjogrg5iLJtK+2TCKSnAt8VEF6h8ypqi4A7HaAjqhK8eQZOfi9fjaw35vff2n6/3Hy5fs4iRuaT43Vwu+NN/BLTk6tyTyTsd6o3OFwet5g6ojRzhtMnS3peiBHGEcGtg2GVTrJWp2gIFIs5KPyrAophV8Onw+qo/HH+YrmB6vkPieGt7VPry2xQCKnJ+lVCQrgZd0AQMCqvBgQp+mYcCLJzoVtart15zDIVzi0momismLW61a7tTrqbvnlGgR2GxHMECE3111MlUkwFXYtx1vcYe3fbYFXXPoPAKAoMCf2s2xwctbtusDZ1cPHEXsrhg3/zviTN7gbp4AtQqyGI8COwAUt782BS/OxOwDrfsN2AABVtfQvvN+Hai79m45zarWdRnmo7b48HqADqqPphAJOcVWmE6TrpjEPAGAPOIiNuy1QkZ2ZPlALnj0c0LW8YUJQOzVQI7Hs7nij+oX37OGikkz/Wu24Xl39/yx0G2C/WP7edwTWwENB1ZgUIXWF4/F+Hr/JnytTZk0+iu+3VNsAqsF0OLj5/sh79nCxF2bkfPhkWvtMijpO7Xf5R9kf4nyPCXtlFsb3H7YCf10Rc171fYX4MvixfNsA9tosnsxd4BIi9GaGT9iv+W53tfpIK2XugXoVRKRQcdx53QCAj68BNFTUdcqnmZ0LqS3ukg5q5isckmNHUVkxdEhOiVRJXISuGBHtETFhrrvIs0ngCmrX4y0mW/s3YzC3S/8BgF4cqD32EwR0ZN2mDHppiwcL+sT+RgXMwSnAcSFsTduP80FQBb4rDv49Ge9DKs6aW2psI90rV4gcAt7Eced1AQDnKIrYj0f8uwKmfu8wMr+ex/at+DweCrbC59l7ZD2HUL4oysJnurkIaug40ygE01hSAAAwASJFtvhpiPUHId5mMwgZ6lpROiDZvVwHAFBCCGOLuZhnvWQqIkz3JdKaxm5xUzevRXZkZY2929k7imOvtveTwVj3lH3OvBEvfIB4tw9/pcogEIS51MV2nLx6pta2ufndi5N/XyuzHOp4tX07VU0OQJPa84WmSZDrrfWbtTcfv/T39LPko+c1rF7YEz9rM6U1rF96M59g9cktVllRpsCqYhx3PjcAsAqrGUXBMKXcZPANOTGTJeUMraxbO2swl+LlKxzaRURxdsUEzquwS5GzJE5olHIeIgAQaVnLCVY9BRMda0k5d/1pC0gNvOwfANA6kA2xHyfxZ0FOob30iIXKxTmcqD8XxRNkr+jI0nuOA5Q5l/Jq2URemRf4ru8IkTdlT1JNaolgiwm6GXecj6Cx55gVt7BVgStP9CpJzZzxZDKMpraMBPF149VfuDk5W+JGpq7KhshgFoHBMTY8t4SruiUqOBuCgtuPmODsnl5BFd3SdTQ73pZ8fnYEBJfWAo1wYJhoYDrBwFRigU2n1YOJBAYIBC6Vl740850tyXxjgoDL/nFsp8JEAHMIANYhIQCe+XZ6Ki4wtj9z4s37J596qh8oJuSRpUTYdqvLqsl1IUNgMbGRMMVQqerjwIoOBIvhvCkAwLkOnN3usRMeBy7stGOP+bpL3ptAVFwl49CpoGt7WR4AcBwjboIWbqo65luDaW/ux0yvmj+YTumfhIntczgdVuwSmAxrg0FquqAGm9CpGElDj+MzoaBJj1s1e8vq2PD8Ub2HA5/0xTXL6K5pu/r9MM/tLnWJod96/hO400WAK2z3904HZ8b1HBMZXTWZkKNVzTR4IrD65o26AQALhQp4AbG8mTGwc8Xd5VXAeQsBSI0FsgDUVRK44G+FVjUhAgAtQ+sCJ9jUbPh1vDfcvcq/u15rNNB14z8A4DLk6XV+vLY4F6t5HHCxBfFN67IRXJ6mvw0U11QrpXisIL3DrfdWpyz1CcoU42Cq6+fWA06z7mHXSHJldz1Bkhc25j3eTjWa2gGAlJE0ZPmG5u00UW83EtQFOSsNCaSuMQ8AcA48R8Oh45ZVgdmyMih2uCIF5pZlo6wCC7EG1KjAVndAsbwg4+KWFd314aQ4TlpwPkNrbKkHhuodKaKYFRv6GbIfc/DTIS/9MrZTgbEBVOVonNhbndOIfBT6ofxW+ho/Rk89QuxZWDnKVkL8bABfj2PvaSj90uinomMD2POweJQ+Be/a1Cs42xFUIjL6yvFiE2NViUHkDnHced0AwLTOPzTImzsFZKTtprPxkryFUOjqikroqCpQTJVErdB9TYgAQEPQ4oYTrGru8jzeG2ZV+zfX4LSW/gMAWhl0k/3EBfraag4BBtTFkzBTRYeW3rOkWslLmQW+pPdhq706C5QyfZhgboceEvIzWO9lEqQ/ZO9xT/HNeinsY643vp+BGEBexdfzbQAABp/qaNw2vRWCquO3vPmnlM4CUVXQ3ZaB1pHCzA0IZ/H5u0IIma4MsYIQth1nEYuQ0CoWEwAA0w7bVYgUzJcJKp0cm5hka1dmMgCz4uQadgCA2UKsWExpLWFdNnMDYE1LvDGwFmySEogbcIxKHHj06/lwe8wpUMf+TymTqZT6cQlfVbGD4QS7nmACn+6OoP3enWfJG24ruwwvWxvb68HL+c16gt2TNasMXmaRIQBw0wgS+ynUJluos5PourUM3SwnJ0+i6Jh8vnMBH/+0qCq7K1ACAtXukEDFAHoaEAEAAARd7lPLiAJJU3vVf9PRNLE6vfgfABhAc5D5sxXKqv6W3tzG39LG2/hb36bb5EtKrTsBavpEC4MXLK+L+eAi1n/VrN8H+SC7f/79K/05bxVuEMRc/u+Ca6A8krSyN+q8ZhSj3vrcZL3BMXZZjEh+4pkDr12cFHsL/559wPd/sIUbHivH/4Z5/tj48SgOcLjTe8v3zOSy2/2M/gD9GkMWsVtTdyTVvg+3W6uwXhxk1FmId6QMP/uZeku8OJb5sRrrttOGRRDG+lpD88P7L10woNhld50dJssC2L3OGDzF47ApDuFpTp8CAII2lRzF8nnl43Csejuv2TTXrZuiCoipt3LVOC0PABikV4MhsqosnJsXcqNaGTOB3Fwn21xB7shpsLqgtLcrKqoQbBdOMXxwF9rGKrzKaemo3h+DlyEn+EL3F9zk7rf19d/HjKBNRb3EHooiBcy33plc/Tq+s+a6zu92p3tcZQgAjDX4ErKRamcBDryZOGA15vzu1LqhQJ9MYfDu3aUOAXV1EvABnDIihDlXeK67OE1OtL0glpV/vEGwZDDsxn8AYCRou9f8WQRwqr+tN5f4C228xF9cW+ZKN5RiEvjuRGUEldYn6Vt6kYQpp0tCIGG2M1CioNRuuxtMQ+kqZyxYIdOdZe0AQFgFBdiWL2IhA6bbLuIhJbK0klBFVWCVpjwAgOXhVVVBBTZuakC27IxTIAme7VmQXt6QEkijCio1Ltwj4zaUKHzkPcM5RXxjvU0t/cBQqSFFqKKiiIIb/jhTMe8lrqmdy2oNoAJD4wToKYbsWyW9Ofg7we/ImDz9CLE/XaFI8Oi10pejA7vfHCY/l9oawP52tWFpigZrOPMgp/nE2huTszl7klaVCKxzoloEDgCk2x8faoc3NwRE0HbZXL8sZyH17dVYFBuoUp1EWUDHRgR6xv+f6y66tlSUkduLpmZr/6Z3ZEMdTFfjPwAwIDTXNH+2QtTUn9Ob2/hb2ngbf+vadq70glDzAu6AcGy/akkqsE1/TKEItTbUb1F8oT/nBx9PzPQmWmTCtfG1dm8LcVdwF5g4UxQft+VK5Nvoj208DiQ8dQu3/atIawDmRPJ43jNDVrWAFTJ0OAJEYJGQzpeDGKkybTYd5mukPmldavVcjb4/dyfi/gLd/Ozoq0tIKBWjJy2eLim1ITyuoX2Edm7GMqOichceVrfRhypP98e5uOAaIt1SMlMZ2IhIq6e3SphC+I/h0nbG27Ai2dMU2mYYBoNsoANzwdjT0gvkUj0hNRpsDGuJBYmO1C7D5OPki6qP4mLe/obk8oiOTLSuUWjYBtLtYyCHeyA5Tw3tYSJItv1hitwsHaSGHT2dNhvkLxqYUw9Hu7C9CIQD18omTNkPwc1IQXEGbuS07nkzR6JsqXjCoNSB/tnqWkLsaDcUAmA8z86JiEM/Ni+SODFvBxi1gEAWZHLIlnoB1VkBkOBrf239cXXlpVD8c2NFej6ddl8uARiyiGrmQ9Hka+APe1xY9NRUTfwzLfv6FcD5A6WEtXxtbID+ymrVY9/J4iwNREZjukGdhjkX8hGsswGUWk7vnC9l7ibCX6ASP04eueRlIMD4qCzdpyeVoe+2oS3Uyi7xW4CtNYNLneV35GHLjDUvqWAwFviZPsYXKd3Uqh3A9GlyAfPGM0WbZ5+eTm8XiG9bTN+ULlK8BXWhTt9eX0xw6fmhzbNPz7XywsmFvyOUfKx3j5Wv9QMd33Kp0ouJJv36ePfA/bGqXGotwjghbiLn9s4bFtrzcNYh5vdx9wS8PmsHjblJ8rX0ORBx4SCS1KvrdExAQ9xPWeNmlEJnwqBsif2jfm+PyTxBNaN3rYpFkTQK+0rrGNAOxWV/wBCJ0kwgxiXHwLVoG8NTIrrxMiIcUDX6olm6hzE3XbRZFf1Psjqff6ujR29sTcPei1pgfGRzvgAqIHDToyngNbDbYTzaHmDsZMwrhVALcC6VHdMmJNirZ+h4+Aqx1qof3sHNn848n6ekkUKtk4gQdIA2AD2rUSVwMTGA95YBHeotFyOYhipzN3srWpDN6Iflf14z5Ob9ObbbRt2rWegh7JrzO+k0WiiO3AYhqgJrXDZ2t8iMcJNlDZRCMV8DndlBfACGGHAiLJcZtnQk7PVJE6jP8ceelv9dOzC53kfXG+wBAH1T9CXY8UBfmYmhWLzTo5rAMblPkTRKEaBgtZkotQhQ7LLEKNFqfgwbPtog3XsLUMN2ClDrVbGAADVaNwDlEhNsrXS6Fh2BW9tuLbBiz44n5lsQyCo5cbubMgQ5d85YKiOkr0f5k9PV5zqcONcoRMnJkGJoUL1q4RSvmp3aVQeS0lXTQxLDB3tHSL1gYmoFOfhhlYFVoBnIPzXLs4M6sfAJNaRCERBjfr4x17J5b7xCQllj2FP/auE0VrHLhG4qKin4El9AiQ9IcW4M8pntZMUtXK5iTkRlzvjn7m0nwtCCXVkoqCIlK6MULVW0ja07CkDffd/ZVrm6DRDZeDQv+PL2Pp6XH5qd5BLchhHXRrowk70ZsWolmlycHZeoRNFvkmOKUHKbe+0bYAslGi3kgZycD86ZfTZmRG4vKBRMphUh1Fh9Fyxz3n5RsXa4Fg9wYMTpDx4t5qxHiwKc9GSKY51QEz8zu/ENXOaQh+f8YjWU34kzjdUuErVYbcqaQkD6BQqcfSpwev9ejYSyePgOtL5aFtgex6x8BCSSdarUMGq9tUM+h7pXYPAnPvxK/trfumJ1bVjGnipf9E19v5hwCkD6GkwAgIDA0KbHTMcJyqIElfmfNAhW0nXG7kKw5twCNhvBunaR2DIAlxHBWm6unYoAAIgDcKLFgUb0ddjaX3MDHDhqAAgAcgPyiv0YByqrMdO9MjKCLhXFyfWXFHSblSYEBzYKdrKXAAVHZQbsqWAE3rVVYFw1hFuLXOXsbizkapuNJcPbVzcNEAFAlmDqdN/2OGovNz01d7tgMgPJVU6FTCfNhAAAF8As2rgpAgylZ3bHfVXaGDx7r5hsZmUQhwMzqBE7mFVjglV1DsU4rHmlNPXnfG4FjY7fKtQNoFpGYwS66swnSb8lOekLqzlu++bV36rWDWBfvdqocZ33hBvhXyZ3r8G/Gvvp1d8mlzydVnUtBMW2bB4ObwAT5g2gVoMJAKBewCzTwzOGq2ZRAqr4HwQm2HQoY1SflfFGpgGCtzGSVHhyqa2mhdv52no9+aJxO0zx0cU1B1GL+QH6viaAAEAH/LX5A+GHWrPCAHcFsZJY9ojfZZZ68VGlgozuYRGP1v5ZE1vnlIRkfUa71ybJ9dO1uT3X5/5+4usJ2R6uGEEGCTDhlSIelpNdDXBgDfkhCBXLMqgScP45B8E35l8YsGcK4Fw7QxJghRXQANhjyxkDshs+AACXENSWw0JPISL192ZMEJPWDZvfcaNoUgUWr8my5pPkuicgZwfXzWjenE2FgLkUZ0UjcwqkCxvDOpLUmfI84zmoYq4lrtJtYlvE0Rg2OJGLBAwb6zDa3AKN0xtp9MFLGD3+0V35Odcp3O5aBh7+rXbNUcL9weBlnWkPdwtovF19Mk3c9umJgmBvNLbXy/I4RKcX1VEid0n29ti6Wru6riQeoFgn7W2ZsDdAig0mAEBqgOnh6eMB1GUAyrXvEuyg9owogT3MgADAXpZECI9aJAoAqCAKw4hoGqCovAslO1ssU2z+xIvrKK6WagMAKHdsYcxmqYUBGtQ1dLmFHLASXdRstJktG2pqLXHrVu9Km2j6dKTaNSRecmGA9qR1RQ8ybuAEjYHGvy5OlEYDp5devkvTF9419AjUSoOS5RqG+RsheEFXiOU99MAgRldcPnYA8spa/hAAHFTSddLyHYfI69FHjjvfTtr1GStXaUzA5sw2rd/bwkxqm3uXVrj2bTNHsIXt+zFbJgi2cKeKY9tlsEVYYQ+eGGyzT6kR88DR5/KUvrhw0VS4vVLkuHwZmhvWJcb9+vDTWxjn+VWHK/kX/SoUq3XqR0HBGTPh2QLmpsEEANhq4LoN9XPvOoKU+F8UBOnUn1Glx5gGAh7XSBLxrEWiAIAPYtCMiINxvTWehk9Wqi4xuspxDTzbEA8ATDcorOHi3J3Pg4quWM3oQAuaOJv+nCho05SaGjfypyDOlHa9bu2tZMVZa/9jA26ti1vDuy4Gt11HeEMwHM276IdGeBEfuyWDSxogAoBbgzdj++6Wwc3W3N0ddJriKpdNi1hptqqGbxb5nHT+/YIBNdzO2JKvoMZaZqCCOhrZIxV0H4OYKdDNGrFJoAbFpivYPtPh8zIXnWTb4NoMHX9Ry20AdRga5LxjHugH46M3mZujv7QGO7LVx3JrfbcB7NhWfIaTEPDHbemR6f1aLg16p7axgc96WnvDbFfX3mDZOmlPyYQ9BnxoMAEAfAGmwtNHAXhn/kkD4OGGbFt7xj6AHWZANMAelkQQj1wkCgDwIKrDiGiM3q4BivTrJaIktTL/gMNFewCAKzU3zCRFgIYLM84tHjj8KvxqvSnhc7TxCk/L23TBjwvXHiotEtbfKvw5+lkkFSKsNf9Thf0xxbdyL0dmfhsdeZV96q/qm31cL/cESbWfcYgVSXcZmWQwLWX/OcrSNJ3jpCS+0D1+A3c9q/MHX0J4ghoN41Frez4G87xwUEUa3SS4QtPiGQjKX3b3V3oW8PrArxQTyNmt9IIQV8IZNPPN+xiDR7jOYBlumI9m+ndavwQK8ml2TBDE7KrwJRJLIrn933ZRANS++RXGPp5aMdhSrynKLZVl246VVuF28T/3Hn5NBXZYO3PdwK5YwbGAq7bkp0NM8ZZ8AABTuwjFcFc0An8wqrLx71lPM8Nb7ER+vOdplI0sAMBin1K76Ch1eqH2yGZ2Lu3EDKrTZYurZ3nk8Y3q4OOG8SVdqLdVwHYO1puo1IsrUjqt6k1Phhu+CwaMh00+Km9c85JuEr71c6VVc6coTDYFApkwkL5KBMBGkf7cdn4lfi756Ou6Iy5S8+ndlkiwa9w/tg7BPXed8XgIXq2t5KXgpeNnDGFXYCAtFKodFqHWisX+NAQAQNKCjEjHjDI6QG/rdRLRB9bgS/YaTXsAQN9mECdZpIQpcB+s8gqBTWC2tJk4uAlsR0uMy9xNswksRi6FG5OXWJJ+ZU+6uIlKLJ8pQMyjuLRZO127IrQ5dg/uumPEImCZvK/Lml4CluX7+axh4z38jDODyjDNmCHlRwt7m+xaULzsS+/TFP+b2XbHspvwWjdkEDxXhn/+BvDZ6YmXQQ6sjdKFuQiUIcsugueudKltySz0EOPMn0RzN0l5hU0iIj7H5H1Gz+NIo14fqzygBDhyqr6EhzVel9pnCR4A5ye8oyUn4drLXgFM3DSeijXfhN5+ndLoizM2fjpdAmKqvn+Snqv+DW0Rk5GiKkcF03T2GfKlFk7koDmkTRmuCo6N/+zDxA9a0gLghsGHa3f7GzHXnwufk7RCTgAGCjS113fL3VyubGSz8C9VH+J/TK/wlYbHe0XiOoCssAqQhVkOS85pjRk2/zek1zm94jq4saDT5fWk/ic7uyhNxQaIu7LyxeJbA2YtXN1P8V+fA+oqF+5lf1IrZOQoEtY1WkB4fxbUSPoEY/6uc8T/1/ZhckpcKWjvprk6wVs6sg3IUODu0ZONHFcd5ZLmswfUJMfvlsiykJf3jDY0f+sAYIYjjho0sQ2dX8JZIXw89IAQsCMyZnx3zb0lYgpPOEjADm2GTHmEMGSyRfXChbWO2QPb1UZmJNavM3IH52+cZz5oByzl+TwmeeBoGVT4zh2AHcEd2CTOq5zP2JnU9ZIhEU3pEacXOubXNmPYT9Iyrz2PkZDbaY4WD/ht8sKMY9q9r4QvYas9aWviMNFJ7+q9aTPy/dt0kK9cnAfMlygmIvIQnsU/inaR6Tqd2tTz6bImJEJrFGYCwef/j8G584jsg7cSkZ1JF7UcWR22TCVpWf993SKBcqVNaP6vE2h0aYGTARq0Jjksjoe12bjEw032fDSJyPo4Bj9xi9L9O1yaT3PfAikuJrNzdXzglixr6TVyW9QzWhZk588b3VhVCbcC4xJTFxmnmDpX3GLqAY5jTDVTGFTkj1k0gaF7sdGOfOKJtC34HbEThv/ggIetpwlCFx6rmTp37GbqgujyqYuM7QyKgtJjP1OXKRb0zm/d6pY/XjR1aeJHUxcST5o6pzcy2PGmqQ5+/GnqIRKPmmph8ampSxavyhWCsQWKjmflDxIyLTn48a5yuvCMFxofIbGbU486JeA8t6yE1FZkNQufzUtrjxxFUZqkrRb2bTiFNhiUFOkCkzvjRVs3+aQn9s+dK3UXPLHo6UEST47bcLYJGx5JyYXpCWpTCk4rYnqgJwpNKUPiECRAmoNrbKSqfJtl4GbRdC1ZtfiNNVsnc5QVV2ZQiC+Z7KDjcoTZG7RxejediCl9yz/pDuqIWIO7v8c6o26FgDWcOKdW2qUNpk5wVqZ7ptFicadaSggAbPUME2/Blh11ariFwULd92UWmY1TY4TgZCMXELL7gAFASrd5nTm20qrowm2O0CZ0+fa8hEMp+VDfYeNfM73HtRrCU936vdKrvZ2nniDHEYbSlRIGzTajAABaAClphug+jeeCBFabf1QPM439WLly2aO58otQF1wCtUUMYVdgIk0EbBsR5Jmiu9MQAADJ1WMSuftRfQBU7eskAt2jRClNewAAeuaMqUxS2Iv5w5rVDXyc3mTjs7QxG59lTLGZgghu8cozqD3JijALFJ0U7Ukv0uFieJ16c5d/rCI8scluSbvbRFbhssluR6vflGlG6h44PE0v1L1aehIANKeQjcJSuwGgBUFNleVrp+PcBWxq45x6tt0YTNtUh6kya7DVlNJMCAAwAcZVyHWi8K1gynpm50IIyLOxByE6BoFriBHrxHhNcgY6eZNjNMYb9XN/jvYv8QwfriF/EQKegg4B6o66JycYhQ3/gt8TNnbp1ww6pQJB/iMzP1UdAlQoyG9/mDg3Ka+NJbtD+ZDoVVWZIP+3VeaOqpnlsf2PBdz2cZHwYETZAuOijAIAzNGsbHlXe4jpul6Isq3L6V9z+S53FV57s2dYur2pDXToHok04xKlpSclUQCAWtQQRD3ZgTpUnE1s0KhLewDAZF57QdJ1rqUPcxgOh3Kc2TpUDsTnTYZ6SZ26LYJIdt3145JnScv+tSRc8pb7FhtjgQf6vRj++ubchl+5sg5v9gEyLz1kYmWXk62IXeBlOdlNA7fTXAIA3BXC3dAN7g4qlnMQpmH+jUrIe5qxR/047jpiuT7FOGsrJx0bGcfNGL68lS4nhNEu+gAA5vImDjGNuCyDjgTaXTWQggSvl7IAAHABIkrMhex5e3g6EjGxmeQN2beiyFIsMcXT9hZ3iuyPG+xLwkZ0je1mWAbOHxQNfKQpTmx6utzIWX3CX3kE3jpVnVXcTXJZCUe/tcVqnzf82BTL1RHGinX5gk01owAAG7FypjoLb2AATgBlas80DSjLDDQENMWSNAH2VG67rHZ9nrYUejhRlKgUI1qpTGTGF3BJr5fDAwCcXlAK+1EKkkWrqewEvULy2BZrcEF5WZuGkObGuuqUfsEkKmkb9kSXnAomtUSlWMAa3PdzsXaHIWs4UdUo7dmdYd2c+PANkUj5mKNI0finPMZ+7Q5msZJbXywQAmte7Cnnh4AIx+4TS5oJIjFCTBcDy+MV4BASLz0JALBuJLJcajcA4MoQFrF8LJ1nmNgilrLejmU3h9yVoTCYvedGEsw0EgIAmCQ5IpvLtrRwFBa7UcG6ui3NGr1awncZ2ga+y4QwofRV11jkIzgc831wRyDcOfZ9wuF8ujaslSif6D1qlWhvh0erDpx815boU9Cr1KLjboNFyIRZ7GvDwHIUp6MAAAr20U0nSOBQBuBlksIR2mzXma6B0G67BToSoavmSDqPxezCtWtGuM/7f56GAACIsTlRYnxOZSIXyZlr1AYAeD1DEM6oqJj9aA7ScNpM7RakydliXc/yg6hZLqUDyUu6a/3qPrPClqjkqmgU9+kSttRiwKbAu9ie6H6RzVoltjmJKhJMBLfdpUCIcDlsFAMRicNDGRAxu/QkAKAiJHFZajcA0L1Iiqf7kq4xPKBUc8cMpKp2VgRSHNZiQgDg4oTUauPSAlHOYKZRT5Qgo9K2IKOGsPluuPIquJia7Nufg4G3vbzgle+an/rvjhIrkkdV8vSiyY9lgfZxkXAaK9ey5KKIAgDcpWVv9UHkSpghSn0tAS+jlbvU2vmzK/RObXBA79VIJ85ccydtbi5QRKe03cTCKVGigz/+PQ67vqfziSqw0toAQFIrt7eSTrjssPD1jSVsyFzDbt8UKhDfeknToq27Ma/VLILrCknIq1vdzfGkfZYf9ZBRkydeukarr4LTHYTj3U7fmBxSsz48bCRP1SNCuQWUAMCm2Vm6GwDqgOI+9x4Jq+Fm7uL3eAcFCoZBm/3YTPOXj3u/dodfCq9c7Sr9478LSSSCQ4BKAPnt8RFmePFS/GQXvScfH5UKAPnP/GhWjT2uNvJPhw2292QYi3DRA5VSAAABI9UbVTFgYAs7yjNoOSDSoKFslJSKOlgwcduCqmxaW6QsEoh8IsEsxgMAOUAVkBcEcwY0HxcY4dbg8Ddo5thf+Or2EaYtZpAaF1cr2j59eY/k8Naz34seqeGRQSO5bhwydxXC3YniHBMA4ASoiwakl6g5B2F5DHDHQOZqZ6YHyJWuHE6sOcdQmIotHwvYqf/lXd/fFAn/IrGkC+jKzMsKG72neWn9SgIMsZb0gFdVW3Mn8JjlLAAAywXOwHDZ61tZUxJXozMvs129AjtniVWVBoJQcfffVak6ZognkNVP0rE+MijVuHUtoVZ7UQkaA41/VZxg8FE/kVvCOfkeIhEmfDpSQocNvw/f8R4uGSfp859wPXeh6nPW+BNxc6zfmDBuANxFcVoKAOAKDfUecH0lwJr9vJReqfpsVeMvb9s02OAtTaQ9wIUHXWM8bJOTKS9s3l1+DE6Zs0mUO5/eFUA99zqJEK7rFSaF3oZ4AEB0V1IlN8J+jBxRODTKapqeY73IUFli805CgE9geLP0VnmSFnsYwPK13nD62MBJa2QKhKCqeZcDUHUPeuq1xJBt7MI8D3lu+yBlRJuYz75QuY4eDVN/v/mwJRiiwrOMep/u1Qw7Boqcn6jpOpjfhm/FvzwPNuLtrWabFcXgVWG9nBXG/FP3N5slV1GFVP2BcohbSVCoXrdT3gNr7w3KIMOut9BvxuXNTe3gami2d2hgW7A8QabjNRuaaAkZkGmRFSH76GMMtFKFF6VJ4Uk/YIv/iZQooCIDM7pFPSQzdF2/py+WDSQo9rU0Q+FWmX3+t1DKAxY3EyLKkl0CC6AJmtF4eRiEqgChrTDnsh09afuxJ9csBnUPYVk35msPV7WwyOp94BCpCvT7TvyTaqY33Lgq5XAIY5butFhBbjePXBgoRYpxNObIQbCz3csteRS/Y0EWHXc/4gp8MA6BCw/mcqvz8y4kSiAYbIJFhjzwzQ5mXg7Fgl1oFHSKB1FRQ8hxY/qFJ8RHJz0PfDInOMJNxcuVPWiQ7nfORkOaaKIRaKEL8U5h3cf9ad3HCa378I+OqNf707oPi3wrHIAew+4tfQMpqChw+0EvGZ7pow/ub0BNi5yLvx78hDIKKaXMOUxKEKYekUoU7gfrPoYWiBUR9j45q3jGPQsjh1z+aRO6Bjnjwzj8El9kRqyraAuDfhWNNQ5YuDmIVjteui6G2rVJChUNWOnidyteR21FVirTNPBOzlnqOQjmclsbhdH3SMKeoktqZ2QQN9OLakubJS8mIGcB6ZArqOPhJXwgFqOiuycvMyMcatrFJ2bLsKAkuMb6VQkBgNzKzcTMqga1eAGOsqz4cJdkgqKo+DSXZQdoUfENL38INKIyXfvk4erResTmPg3OhDBdBdj6neA1KyFTSxVNuut6XZv8wHE1H3xq5dEiRPGueZJ5Rcc973b8I5quLGvS5D43j6or2+R3nrqKnGvVGOqyeEDPD+BhmkwoL3CfTRF7Xy7xm3cRKhw82Kq1Pj/QfJWv0EPRiRbc7pTb4/FqWa1QYWdkMWH25IuiwN7lKAAA+xirKBDL0plFqEz+p7pvwFjp323tmUvrTwFczQxcAVxkSa7FQzfvAgAYCrfHiaZu5oNNxKFVidrrH3hHarggHgCwJBNl/lh7wezEKrysprWgqMLYkiX7du5JjKm9txJqr4mT1QxYuElUS9aFnrwhZ5MowM5E9BI4tkOgBoAT9bA6MclJo376/N/FYJSFy3Vtq9Pg7S4nEwDUZ0hNt6dijFSLjECcqns/By5c2VhxF0+UCkZbvbdr/l1EouPM7GRskga1MrxBptUsW21kOsMgpAZZyLlWnmwdqBH3a7xpiG2Or1z4XkcTYqL/hS6wEvOvVTF07bUi4dtd3LLXvdMoAIAd2XU6zZlKsiLAHY7bzur25s9ce/WXdtUGLrSrSnJxZtT9L14AwIgCS8SKibYoXIui2cQJTTG5BwBUkFlhUuoWP76pxp15Fmfyxt44BDPx6BBTS+2gpaP33O0xtsjH/u0dqSy6UrDhOtScTxxBQE3QhCgWxrJtPUglqWpkgJrdNmjmlsoEgA2EHFMdGkoQpICMiMBd70UycRc2MGvGYVenseu8jVaekEL8m87+AEIM8TtT5989vD9lOjZNbhqj8EIG707iqQ6t03YLLYYNTCkFABigpbpRrAF3odnps31ZQGus2EALOkrSgirxAgAGpi7aBZ1NHG7oS+4BAJ2y1DAplvwRTS9zEkQoPjdccYBcT79lBR7BfaDZv/E1qef/onV5e7KR/4/t5Pf0CzxQ+7+qPP1X9c3e17palAmNWjQBAEBUmGFzFJrYQS3VgFvoNTviIgDHfqowrVLB+DuZ89x+zu953TiSprj7L+uPO6uJPq+ykAMAwGhd3JJaGW1w8H+vYfXZpBdaAIAx+qZyuU4FDIaSBpx5o+tY6ysxMbXW16qJ1Ky7ir2RUMZ/T91WKEiT+YGjqL2fzz/hHILfaDlBfarPwwjhnUJLzm0XUgCAKtpWcUMPQxQHvSiOAIvWO0s3smfOL+MtDQuD0SJZ9hxfazCqOwGEaWJ5FwDYwWhcnFF0nEtLProykWAVXhQPAHDxO2UX1g2yB9WH9CYXH6ONBXysKSXi6/R3hO8yBBKo1cO62lMDdm6yBduZ2N4ApBwCGgaoOGw0l0/T/10MRq3AQdc2HYG8Xk4mANC3EM1tTzlZJK0wAs60sUxy4AJruYqsxlS0gppaSAgATGX59QrWroVjGumTixk0g3y31hdazoZb69vzNuQgxIbqyVTFeM7P+6EhF+CDRh6WG1wf8aE4lFQvVYwDFc3u36vTOeHtZ1Txj6ejAAAqHpVTX52cnsoEVDNxVTzzzJl/fWTlSgZjZOWMpmPYogCkcRcAwDY0BXKiaaaBlhOpxqpE9wPu/46kuCAeAPBKpmW6WJ08zIO+UIzW9O52o2RlLbHTzeQlNag5JhUWmJ3idbsKocmKUyj+t1EQOpJQLMML/fhSJRT3GnpuonCa23qVCFY4nxVWO+eES6PG/5PwV5JjFG7dsa2eQapKy8kEAKEbUrvbU3EbqfZ1DYpXwKHZijtb5BQxUUMhAMCrZcrpY3WczSBNPaNmkLaZLTJIrwkhk/HEninzMcz0nzcDTo/z2RgbWqo9Z7SJof1NQSycOWQ6SokUAEDreTj+aCM/Bim1SwLejgZ1eTeyo9Kb1chc3cWVuZ8pf51qVt20ijFR9yzwAgADdCsuygvaOvGcqcSH6r7VcArxAMBokSx+dgOFsgjDmpOoZFrk4+IqZD0cqFoKDc2yK2ooeL9eyzEOKIvgHULLrn0MflgNbjpRfbQkAbSgwnAK0XaYCiUZ/UPfWNntSHdWoUwAKC0SGHV0sLKDq762BIrdk9PYYeP5CxDvGAte8KL06EJC/1ygT2p9ANGGeH50zxuWpP5ojzHlEiqVIw0J+tOCHkYMZ4pvPTVWKQUAWBXij8Z7YJBSqQbcheYyaARKHBiAcBqgS7wAQICKizJDn4fqM59YXMdiPAAQQBUQFgRzBjQfFxgx1eCE77oT8aG1hn+95Xg+xvMXOaKLqezwhuK7lqc/qjx4YZa9HELc2NV1mT1F6MFFEwDAQMRt0IMacEC98/td9tQ8eRs4/GBSFZlDFMve1d00hqHsblKeWYuQ8FFBMdFaXny6/Jou6idliJ+l3XXWcr3WLGpPXXl5UI4NLWx4V8qNCa14+0nhSQkOEAKyd3GFiuo18uLGPC+8MGFqQrFj3kmpv67078hXk0stMi2+frECpzezP5xLzKqmaqr+BIwIAHlx0mWje/pBvMGCHABgKMRMgbHMHJOxRSGZoLLmvMLsI3mdZhYAQEVB8pTposztl6cjSUFspm4WH/1BKVsPVEEcQaWYe6LeHZzl1vpL29NBmCA2NVDrsLRGsA60Uofd2c0BR4OG3DvDvOoIWsBXqc8/KWXy6td56555jDWs9IKBNcgXZK0vttHbZw6L7aiJj0RqozCEw6v8WHSlmhJqSqRATNPjaCEl9KYqiKQ73l9EeRL00EAN3JG8B59DKynocr5jPTlSDj6WNkLiMEHZhGxGciDWQnd3go42qClbafoELdPTDKM+/PrHeW+Iw/tdlTu5vqxiVkqanOxXrlg9QVTfbdZysCRR6mYUAEAaARNohgUb1yYPJIVYNgHFLe4B1Ecxhi+XUo0zYqzdTqFdJCR8VF0j2qqN9Ezkg8Mkz2lYRF/L5PHRJp2uINr+hcNcT/RitpEddkKCh4aWVF3zLjXuXw4XTpe/KzfMNa6xwnwF58PaMBxDV0J+hKulnP6E252B+GxGD6U1Ert8FwDQhkHX8iPOnlG09fitJ2NRl2heeaMiTXRDPABgubJ8pQA2f8ICOpHC7tuRaXaYWygUb0dWXCARUGjejnK7Rt8MEGfsNzI1hCLFC0MgQ0BY5XgRU5MCyrcqE6eQko8PxIWUprVwkrL/pFCltM0XM0RKN3Xb2WPgTkOZADAgmNCi7pFBpg2Cqw3NMP+tdLTGyu48xidts5kQAHA53Y0gi23jPAUNdu3MONCwwrPHCw0JBjEpaJXpMtsRJaPsxNklyHI7eR6H+EyAFr+Wu1tt+t7CSZCs/r/ONq6YFQWqy4bqrYWpLdVSUwspAADFht6u04NaSe5T0RpQ5HuGETJrbi5gZQYBsMQLACyomOgGejrYU4n1xIuDldwDAJr07YFSVPQzFfQdrKC5A146CsG4RnTvQch3ggndi56+BzucCEwxwnndLnYfcElnIhsD7AwjcGUO7aN2GZtrQe0xRteBuq7ddhf+saFMAHALdK1FNZuBa+sGTUCphKGE9aQzzU53X4hSIQDQYIW4+iXXwQkyPbSiHrDIHnuw4wd7MHkyMNDhKrwhI9zDMe6C+OWIeUU66f88q+/5bW7dywGKJYYbYCkFACAwoaGjCxYFSTgRSEC5uQUnMwggJV4AoFF7WjR34OQTl+u6GA8ACGwBZLCYUyD5eAHV7zrQDF7gSAHQnu60i91p7NkG57E7n9gb3yRlBYFnVZ0DJdhGB0owrpauzG3XaTVwoUwAoBYNGLV0sHKDraU9FQquNhPfk9rG91ypqz/kOwT2Ff2wRbbifQr3p/RAgEhX/K4dAJNcD2hetJu2v4D6iES54v9LDbPOdVxpeGK4AJRSAAAAkeoFrAgEwNzcgMkMNuASLwBQ4ERFj2Z9C5NPHLAW4wEAESz5Ixpc0Gxo9DqIUKyDlO8LiF/T1n/2LCb8d+qfvfXzbgzq18A/vhj2xwCb7fLg95bz4BvVQeTDRAPfs50lK1CV+dDjBRMAYJZ2qrlhmsbZkYMtCwKQBbuE1bV75mcPPbrSByhaGu+r6q74MPzus25ffqCBnb4/swfE/1X++1BdqH41n57m2UV39mbKtBUa2mmbMo3pijBXLQnXETtN1rJbid0/qYtdNeobpJrXZAEACO6JN86opJvmSq6FXDqt6U59KTfLta0uNqRy3fe3l9E7xFJQxtJ6l5XlmwRl3FqUsjiR5/hA8mtVILxavKcfPQIzjR8zj6aU0NEUTq9YsFYCk4oaMWHNAbo0owAArgLCMdMz3fQbIcYmoPTE498wUXHN1csxAqmtFVQVYBekfFwGOzu1EwAIaI62uZxooaSCmmx1baLjCXe16l0UDwBM42vzP+c+S4rv0ZvT+KnCeCoMky8lrfE+wV/o7xv8lSlwh7fNvHCDt6hPxC3ekBPogDfibDrhjTmjzngztdu6sDq3oEwAqGKgk0bt4WGdKgd7GXRPCcU3pWykNMvNhACAJeBgC5e+hhWkArOyM1uuUIZptsCztwaaxTKI7YL2wm6yA8/1mfYPU3HjUuX1KQBnOHmBh/jMaqX+RvfOlLzGFyswVv/5nL+qwNpM09lQw1qYyv3LNLWUAgBQtGHq9EzXU+FMjE4ApdqfxL9n9oXJmpsjaq4W5B2kK+oCAAInIjqQ2unBmkoswqGsG+YS8QBAffvuICOXfWTvG9vkQmal8dMDHYybhpAOtnwH6OB6noLlW6xwckiCBU4vEsHwLvLqlxUipK5Eqiy5bXfAVCB3xgqbPjjaSZ3GT5erYy7mJPexY9tc83aj0UwmAKgPafrsqfd4u5kxCHwVTEoOXDSdkWJlivj2HlSaEAB4pvs7qADXNEPvQYaZdI7HwY6zdXAiCB3E1JznlOvllt0FxUOllxDdpDdXOB5bcZf9EyOGg9qlFABAB0CqB+UqkAd0bs4AZwZ5KC3qAgA+ELKIIPOJAqcUDwBMt+3DwhFADSZsdgrqHsYnHwss+W6wGTwghcCyITCnXeRuq6UdwSsTyWPjVv6TwOTENNl4g/AptNhBapOVjAWtZrcn3FAslgkABRanFo1XEGybnj8GlxCBkjV2ui/HdD9v/xrmsdqFjZTKBItmxfcSFEjigQDRrfhdewJmzdTXA9cuZRLtdCWyFf/LTuD5Jbfu9VpBi2EDU0oBABboSL3ZSWiBYsAdK8CCys0JRGZwARZ1AYAFOyrqvcdZiHwiwSzGAwA5MAKoAB85c+CyMWl88l1gMbhBsP/ga70JnBvwnJXpxVHhNbLd7ylG7fI9tRH4kDISAKY4gQate1Cx0nMYOyWmaQiB4cRZeURPolI7P5cY/UImFqe7Ptx3/mWSDm4C7Hlb3c4bwRCm6nPMAqbyj/fYoyx8Pw9W77Z5aBpW6sERWsYBCUkKeAXWLb65e3yvxWCRRWniEIzl7Qhf+rFTQr83mCUQtK1DrWnuwj82gX2cp0vK7f0a1a075sa4iCnp6FqsoRcVp9w98OxdpKHRn9KNK15VN3oEIzK7mIWuGWyVGuwGfH58x4KvDEIVM0FsFm8AgAZKzNwfK7L4dlFptgaVQf58X62yzAIAREdJlnTZznr7jw+6Pg3I4MydDgg9ICaG9wtI+lDr5R2brvFXBIEa4LFH1uJN5c04CEpJNg2d7DKdYo6NJnEgQMyzHVxKb9MEHa7ZW3tum9WxwijycNI0itQ3Tseox9mncAd3S9gKAAvg4Bnm8X2a85Vj852EwM6fX+PDqV2BaNC+L6ymBfnXy8rqC87WjZkp7GZJFwDoQGpBlNOxqx5QLjFd5xYHWdoDAHgoTxQohRMl2pWp/K6jBeWweQh21aMmGNsDM+swNzJw/yeYg+Hu8zVkjX+fYAocLnMQbIvFSa/aQg4ul2NGsexGKwqOblKi7ehmSjQe3Wzy20e35cUyAcDF5RmyattdanbQoEvjVCWcnnK8G+okCgGAnj2LpRmWQ8kVbNGZZfbQjsahpsg+HeLVEBA0midLc2eZLlBPJYeBwipvDhNL8B2sGeN2zkTsBPCbzBUA3k8zd8L5lf4BFAVeedXP+pya8zsaJwb9TGdSFwCQVIIoH5oY6ANyKjFlvHYQyT0A4BhVOFAKG5d0tLP8igqaDUJ5BxOGj1YfboqJfR5AB4FPSAB/fLBY0OHfW24JjfDS9pawJex8oti6E0lAtu5ZyUa27l3JSLZGKbstXjTAYpkAIDpOsWpYczY/GMiSKPMIuL37Qk/vHbvJxvCCOa4rQwAHxDJztFHfg4iyvb9wI4iMts1BTpQ5UHo49E7S3c/QD0Annn/AwVGYJm4FgAUF8Qzz+J76M3cZZcEisIDOzQVkZrAAFXUBgAIpiwwyn2ium2I8AABwRA/B8CZofHxssLIPARG8979uBxVQPFzcElzhpa13YUso+USxdXskAdm6c5KNbN1zkpFs3efsNnnRaBXLBADRMc2qYc1cfjCQKVFmF57dD83ptfkYPWNU0zVv76h7ErsCwMKnSJNzAFH4eD4jhDIktZVbYwT3W+YdReCT0BUAFmjG08zt698j/RelKpAHVG7OAGYGeSgu6gIAPhCySCDyieK6FOMBgAYjegA6bDb5hixcNhaNL/tgsMPrkauPZ5Hh/xTVx9cy8jhHMpzD47/4Fx99uptiNG6wG0M4Wxt16Kmzte735N/vgqq3BxDt4vuLXcuP+m5O/KrHNQOEt3e3r3MTR7zVhdiXtWt+OywrmazPDUA93Fd82qtWXlzDyREPXF0sFF2rpHiSRAqkm9O0vnks6JXW0auyN3kfrYqZzW01yFo6JSEMGEDoBHISrfXXnaGBn2PjjPi+NnGstVVr1s/TIu6iYgQ+YbAPYGN56wZnTGXU89pAVxIAAudXACJYLd7u5Hvn3hQsXE/1FcZ4gX0WQHXr/hQ/PRI6rf9AIZYYkUnwuCN2bL5AhOglScUiRHdVXGRT9J9hTa0H+dZKTgIfURn9ZCuJxD1q+feF48pEzVHxf6ZtDotC6aiPBpTXnYNmibyhxiWQ16hJGk2TTk5j49pcHznrISXLcPjoXjyL7qO12v4raIhVQOLpe8qCLLNZZPeMTX6tkvcoY1N+3Lg+clEl6S7CRFWURYeLjv0yT9uU/urrwkbNt+Ms+ysCjcAKz7N1tc6uFqHVQYvQoX32t/je8bVtNyQQP6rWCrvAa/vDNeWZ7nnOsDUxfEVIgQxzPmSaC5kFfrecfUoKW/lHUhGY0xBayFMsQBzRTW9d/5m3qdcTVj9/h9BZWAf9ScJkpocTjamoWmXZOJMEhuMGgWpWHGmUyE9msihjgijVMayAsVUeG8zpC7L6YqEHGeBIIiJpAW808RWYRE6HofNLAmKkXFs70Nxl/70AMe1jfUm+wKJJxLalbtlCU+ABmc2IWeVjgVYyuIh+SrLeyQ9DXUScL8SpKUA+bTEtCIgKOa3jvWSVu0B/3AqoqHepvrEA3nB0LSQxy3dMX8RpZJ5BSUMAqYumdWepHnuI/XQewBJXXw2mrjhzjlCehsGI6MSKvXqaNFQvncKU+fAmGIGsBHNDlRBk1eaU+3Gvu/yN+g7BRp1z0FUQkPXkZRjxEzE3VLJZQcFsxoJ5aAtb/zLKbBpk6aQYjInSGrQlnrnzuvOfOYV5qjQtT0XJd5oq+pYJmV39gxMgLlB9uLT9vNhCMpk7A9PJeasWPBbOUlxIJEBqorrIesY35MkdxrFj9WrFDCDCkeyg7Je92OW05tDhKwiEnIWGwKkRpXURVNugtDIoMtm/XAKxpYZnzkT0YYnwxifqwmBJbqW0PtTNZvDU3te/d6b0Pt0X6kNuuKGHIxKDnyDu2Nq9Y3DYcPzDEtHiWZFDck++iCdgE9esQsy40FLokvtZ61HRKCrLTUIfBssNEEmHqbqfik6yMHX2w3v8hqGXdqyQjp0LDb8qhT7G/2Nvu73a78QS+5pYL6H5r9inSqjp8DJNqLnqoP7NvdlQMYSs0W3lopkwOX8O678qIepfbHXEH+ZGCq6yLd6yUA98mJLRse4/6Keyoa+zBb+bnzYhVeddHdxu6zBFhgxX6d63qeoJ6K4wu/seG7C+x49C6HWkkMTli+C1RBMSUdnmAiFYPRAPDHtUHqLPeReao6lgFEeI3EhzfReP1gjC8KlrdklHZoSX7Bj1W0Jnj7Ymv5tnADH3FDh+nVIytDyo1grvA0Do1k1IpVgE7nU8bFBDGRZD69nFSy3UvJf1OWwFrIhmWt90NtqgBDvj0fNHycyDc9QRRGvvgGUshqGtX42vAsO4tSt1DvJQ6UkBEIc+aXWOTVa99+WbOxDhMwRyYCZY7zYk3oihjI4Bj3kL7zfJ+BKQWzHwKH3DpQTdqeg7ED9yoRnQNJDCf7jcillJGhJxBYjYAdKwAaBsJ18S6D9nXmo4/0Lh+nPA8d9ZmIKPXeTN3dBwYB9C0UZp3KYoqKdEXz9k9zMNeD/9a0DyAwKKOmik5CAYeynb8raKJhY0Hc1g6fuEgWwmDO1mktqcDtBQXN5nqXnccYk8F1vfqQz7LE8mGKhHfkgsgwrUyHhBBdQO9F0QmHPB9MQU/YoUL/aNBXi5wPbup2Oa7DLrnACEWxzoLQ9QcTySOhYFZXvgQXcG8zE6q7xukivOOz8H44YT7rJJikywt0kwt1viT6vxy5oDz83yTouI78Z9Ux4EDbiWewhiI0fXSWVKSd+nUSdo2ZnBazv9m/rI9l1cH06KAswFolWytH4qZgmUJoE+lawZcgBlmXclXECDeU123a198j4H7Sq6GWUOTmj6tmqPJxGlopoSbbSo04Ci+jsTiUrROSNhs29ox7p2O98gnnrWh0S6UopfF8fRVZG6/o0nMEt8YpJH0iYKH3oXtdURpgo+zZI0pOnsWBZ5ha+gCftYn2KLHKSbUFQMC49QBm31FifBBwFENHeL0iTllYE5hRs57GbQ0LCI/z+gc5v+qZGBUY9HHYBU100FmUDfBVpn2QrLNamEbNhNWA+ynkyYvoLkZw1HdlmJ0dBB4ZhdmB/+DXVx3/Te3NZymCwMGM4MACcAvRGom6bwE2eKhIqHYVOtV2TgmoQDYw3qHl2HwrD+tM2+1ULm12r5nr4QjRzihyLnP4/edfJtsQWxdvD9YyfJxv/OeGDXhlF0x59Xv+UVvZm9XWFedVoyfQH2I0ztSxo20r1ZKcNmYXJC6PmIRwpNZp9S6lYVLsiUe5jR7JE35OFk1Ozsgojavt1k1ER7IohaZnd7lG8tmreZuYf2C43UlDQOfKx3WICBfv2VmUMjfcmdMTRyJOZ+KZGQ1eolpSWsOZ4qVm/qTnxP/6pP528flWdyglLkU5m6vnxPWUUFAptK2lE3ulEYfoiUlKlzR2TZ4EbuZDYDZwBYRfpZzvraIWXfTgZGt9t5YGE4435gov8/AwAC69pNBjLaXTJwe7sSckCDL15JSOvAiswKkb8HZr4YSLFd4EOchsPx6SL4efP+zAj6uIh2tqyebeyKLeqWraPrvGNyalt0n0tqRy99JfD5NOIPi4QCuTSTZyCZN0z+k9JewzvYJKhG7Kvkb+C/VPzjt3To9L7d5CPHfeXJembyomMU6pqBrBpcPgBncB8GdHkXgBPdZwEt7v4AnFtN0Hgz+wBM4RpYtPUuANO+Bhal2K0/DeT3zp9CPzGBb5MOCQhmi0oUuC4oHJzeUqkCV1gI22uNUzTGm2htZcG/r5QHAIYtTE5JBObnIiy/e4LVSVwaKCltZzKRuLu3rqBNp/eIkDZylGZ5iKMqoI01UReLUOSCj7DIgoEucKMXV4qKb6PKqT8HAj1Djqx/H3a5Fs8Gi2FZ+QVnERFZbSKHHHUN4TdjKApEeG9djAnBN8VfZPXMWsKxZZFvEb/SfJZOfvylx66TqaA2UjxdEG3TyEsSoUQtvZGkAxmzSov9x5toHtyz8+LXAiW68vpsbSnysrUogBb735H6ym8QdV5goZgU/qlQSMj3zjAIVzuFlfZP67IzcKUqA9hWiySaQiksO6PW6oZFO+vkQXcTKJX+asdnsYO7k2364jUgyVxH4jyuT3jl4jOFaOd4PCYixU28cAzA9kxmxEccZ5W+vgP7GIguiEjJc8x5CBsyX2gGQXvtHjQN7C3qAzjYxrKe0y+8RXAt7c4qEQixhKmPGUrUVqHR1/z8iMlni/EVOA29I+fINkuIQEDH59HwqBSfmitPhR/PM0RfBOLM/nyc0Nog1BON5D3QWzrGkMLaEbEkwqTR+V8f3y5gv+n0zn5M850OGBtfAApiQVsVfwwXEJVCH4WQTAl/5dvKHUF8UwJeSWeMRFdgUTnArtnOOdusnXNyWne2c153bnJid8ad2TK4GVI/a0jjrGKyxNhJQC/g6u+U5vLvFLv+O8c+gM7ufQGdYZ+ANyA0BBLy/OULODoFRJg6VoJwIUpx1Q5ZlDeqYRIVFgcTza1wmBQ7Iff+Oo6b7nq0qyjgQSqJSbUwnrDfOQaHtLm1/1GHd/PueSO0kCCUiSxb2Meps4Bad7mIfw39a1lJi0VlI765sx+ESHyMMyLHtuOD0QTK2yLayTMT3spDbUne9K0rp5iUA6XTrEpMk0tzs16wkk8oZzMhe8OHHoWA0sJIJsVXdjWnatsyay3IZRzCeqwY671Eza1dvLGVDCRJOfQDe0TMcB+sHoNJQemqQa2jjXaNyVlbGbtDQ4rfXSh8VfcN6N4xFR1rcp5Z4Jn9OCXcM9NGjSWbZIrBesmF1/iN86BGWmtvuQKJcpVGyYqbTdqAscRuR7cAD1d0p9z5TtnBGAYDRwqt+9ySNJvONDrn2TsDj3pWzmhQWN9R2oF27vxz1ZstYWeyUfI8qFMm5r4MDo+Ctsr+87qX0hum3GVWMnQlG4XCKSnql5PcV/e1RK0sW6K3/viVL6QqwJZkrPRasrNa1YLJxCg+GZMCM0dGRTYrUwDWo88FEaDCcG70apOyr8mXjNXqk7Fa3i6NKI7DKxNmJAwVrMlqh+XWSFHUOrAlVO+1ZGKWliI9qia9ymoJ2UHZqqmWJNZPLdFzQEZDk2Q45f4dufuyS8o1FRlzScWW+ZMeT7YpV1TIuaDiCIr7ur3KycRbtD+jTZyQbYnxmJKzKZThW4vzhdl9lTFufS6uqRIakE5ZNJACeJEQBS5xGgvljbLLN12Dk46bL0dx8TVwgfyy8XfXztmllhRfw7TpInvu/If6SrqmIuEr9krZsr8Ejc0Ts7hEvkwtsUEfGUterwtS5J98OfW5N1wzR8RbUgdCYq9GpuZvp5gHNEM5lZAFJCgJXbElXuiGByUFsMUl/yzkL4nILR4EgzmP4SVD9vyBVOu+ppTAacGj+v65MAWLr55QTV9kMTCfw+GiTCPM25vmGY/4E9+yD9T4hx4XX8pG/iT80Mx8Svng1YFTYKHgtXYqFz4CoTLA647tVU4I7tyfqyMsZX3XHfbFqSVtvZbbn9Hy/ORLoKNYofGbgo28BLeJapnGfgPig6vMrYu9okWpg2IzOyG3fiXpFeW834Q9yuNjJRF0nRjE0fZ7vv05MmviuhRP1dQP13cpQY3Ikf2AJU6UujIlOM5LzEXAi7QYN+iv1OL4Jgwau3Tresb39peHUu+2w591fvm9jY/Ivs5d2VHqqf694D4e9Hb1JnH3/Sx7XOag75knrm9oEFkEfZOChrCJy6RxVY+mUo/OKE6M34npq4GyF8enXlZf1ZBQSj4p8X1PA7hdkMREmnEgCa4iE8CU/Bp4oVCI5sKRaYp+tlQKweAJoJHwJpU7fHwOEQmhk/ntgyLZIGJB6ASXF5aWA6pT76qitdCeKT2QTYcFbffZ1s/7pqnywq3rWziqIKyvGnWIqlexPNQ1nJ+UP3vNTEIzjQksk/Lvy7DvKzGlLMBK/bC2AFjt2Ce+g0kg8gXdVfVW2wk7bstlfOjQAniWAA5wENiA6eLHcmubmEzvObFM+m6z77tB2qlNNcF/EKZWYU4Ty5gjOB0uBgt0GiGcofPoxOJgI0rc4oZRvCWB88saKH8wK6IFCRf4WgmuKMa9kg85JXjvEFKptgC+bQC2ADkDIISw06Li6lgbBlzSOcTlSitaDvhmAdyg0eFisQYARUSlXyPXgqGZdImceg/s3rWzr6sweDPYfqBVDKbaAvh6ACJtg0lTqSZk3mJbZmQmr1qDjAD2hwMGW7fRK77mUitexpHlc1msfthDomF11HS+hC7iq4IvNJhUmg+ONqc8l5R0QmPL89cKWUdTS3zxP8T6bgBB/DPok2JZOob4BOVxrENbnShM98RMysmfaXwqnbBlKYEO54w9X4wABB1OY8eOc3zWgkCodEEh5HqSqJ+aWLVmE//JKkBVrlqdjiJD+Wp9ukD451E7eM/As1ZCpOO7NaSZ13mh8fqGkFptLBwQ5uZ/4mXwf+K7Z8hvL8UmOHxZ0xWokU6fXq0BbuFfC/Lcxv2btgYYUW/YWLekvdmoKxN6qXV8qmEZdfj9d+CAzJudUy91O1bu4og01lJkTOTFHFHRO9frAEkHTzydVJwAQFDCC5wh2TOK6+enMTnXwVNK5RvCOWAFB5I94RgXL4ALTyk1CHLVgmKpIH301fWB8ibto2hKqRhhxQbECESYwtmTffMwaPV5lDDippaKi6GcQVjSBboYG0AODD2g5xXgTQWzKvPV/4IUDNQtRxdMrVYCNU3lT7ZZT3nzCBBAYK8F8DEFjD3RHvLw3sIdSE0GBuhXAELBWbdzUzbxq1A+aYWnYEt7PIxyZgF61g81yJa18fRK+hEl8ifpxh+Piz/xC5QFTuGaOZJsaXYINUAved54PjbeFwUHS5w8kc28cYfGno4OJizliCkGweF0sazgAkhMF/MPxIfj6tWUe+Ve4CTZW2Azf+zx2dM5o8ufVzqdYIoJazr/+HB8sFhuUAJCZw7nm388giN/2eLT4QIzfDocTofzD0ekw8VwASqIMQUxBZ+gEsJMUTv36ivJg5fgcdKsCT6/7IFI7IlGfM7ZE0JF1ndZeh1c50uDytl1k5Gj+UagknbzWfiVteODp9prGD3Fgtek4I65leMugso978cunBIfI8221n9WdL51XyAVAoOdDcc23YDZPt2muhvoS+NhdIbUuylyusTq9HIafR4dP/1zwFurCzmnm6r14eC5Z5cyFG3Icp8oOmLk9xGiQ7ePyOWRv+CFxXxKHhWR9JXwYAj7aqzQy2HtFX4CAKDzUwop3Kj9nAr+BK8I6QgKQipCA4GIAB9BB09owkQtPHUtCgy3wfSvtCzG6sABoxRV4mtaLOZW1Nyhj+Xady2aLyn/yRJcP86JBX2JRXWvHh5fH0N0QTujs5anK1eD9TgfRhJQi3zDL8/hC/kPvW/l0yvzFWOuT7dGZWE4gdFVMT1mTkbBjApPlBihJORJxsYKbxSo6b8r2Ow9WrA3aoEFmxxLGinRqEjEp+FR0ClQN39bcNyzsT3m73wUWguBiACg+/yVXFrBKv9tCbcXUq5bz8Dppkjpq75IvmROd0fGWVSgyQXYJlmjUdOIYIfAQnCCHm64d9LUPqk6KO1NlLGPsiaBGjNqkikJxKGnpx6dEHNlRT7MBRZL1psDk4eR2gN+RXt4M6hZye2qt1iP3xyAkHb6qv2eABhSnUVPIfAUM0JHPAIAFsrs8V0BTIRzxLwph/SN1g9OfWku8e3rCXY36mYvCj41ooH7Y57cpc0s10f4Oc2+Fox36Xv2+QVnCiQEv17N4zMZZAhE/Z2259iqT2baI2Y86YwnA5225+mCdNl5YZKJpQNe8P2HzwAAL1Yz46XcICq45KiUaLaHEzNHIPyZX5f0fY21m899lfmKUfwwUbdx8cGO0E3mvTfUPUOIkNO9FDKA0ViJSQCz4h5bhvuCY2foju96LsPldrCrolih55QtV4rMRHaruo43hCnaOeKBljBczeXNkUm4E7CsEIgnWTyJHry2askAXIS+mt0TV/xV0QAA3W6/ay9u9c1uGkW+QTRnPMqcZXmIyAVr+mn7Ka8ERWFD/moxtAiEQoBTP4OmsArmMYz1Dmmyrt2cwUc0XF2mzHWHC8EeB12GF6FpolsFosagKaJ7Kz2/GlVi3QJxYC+R9Wslt/w6S03FSVwT7eXXXUpy9k0sEZAwcQZXhNsDTWX0SRffyIprm1dJhFynuhD2ObfW3jn50W86OT0J/r4XmCHpKqLHyQLjhhIcnVySdhY7Xv75xrapwWY/MFfwPTn1wjSgsSxdUgmDk7C9WAeMI8kjil2onrJLbrrkSXrasCGQ8p422/I3YfAiXoqnYd6LptEZDxLPS808G7YlzW3RG9ETZ50DN7Z7uevubJaamvpOn0qjdovkBBN3hkq8pcTk+Gv4L82LZQ6aETE7bBQJEB1takIqYVyKUPYZpkT/pbNOZ19smJMNSmTURiiK77wKlZvYu8LmXmQFWP7zwaDaHbgNzBdgNBa+vHgA4TtnwO9I5N2RXI7etwscg7GFisbJi5v6o+68k5pPCiuvaIPwvkjbzOn1smMR7lzRyUKHhGFpzmdRTfOTpKiTOng3ehoHW/5UFM2LkgUg2wgnbcjAmsh+y0zQJj03oA8HJVNColAPYW9cVszdrRntOO2c5OBNqqitHOD1ZP0TiiX+noPLDLTMsx+7FtpmpgUFUsK6clkVK5bnQTn0Dv1WRcoj5qmhf4DN6jPP0xBt/Kk2X5KxA7NmWjs+MBe/zQNFbF+2jvwy0QdG5m6jmaIAHigFhb5LobPU1/My/2TeurS61yasvwNNbVkdM8AgMPSx4oL0yRm1DPqYaWP63AR9vGtb+myCPnW3eX0OQV96Wre+GYK+EK1p3xzJm08RJniX4vz88O5aiH5EegRIWr1q7VMNjO4zY8TcR51Wb8Qp2sQwKeNCUcCG4X1Am0kK0Tfqpw5vLMnjBpLS7ZRUhu7wds3dlAu2/vlaiS6Q/s06h11CjxfxcaoUKzCcx45U9M900Flq4HaXoAEArBWC8LFJcl1vnB1BVAxuZnq9EbNEZ97cDDQ71cG+pUPMXnXtbE1DyZ3rkt0yPYWECgcR1x/UAEKmjYFkAgh3bQukI4DY3eZBLgLIPa0bNEUAmWhNoQH1On103C3+/K2r3vy17GFlcQub/XBW/focHAPICc6nUOAtQ3c/c2JLbrAERGZM0Lpy5F5igG4U8Nm8JoFojvsJL5M/y/zJAHjAg30e2srcWH5yx7VFylr1i2/ZzhZZkrIYSUIDZXLX2ofdKejVbE8P4SFaX9/O4HZ1/5+JuqXnUwfAtqGpuWHvC5xKQ0eqsoJAsLsJ5iBBYXlCAABvQdDJPcQYEAE6/9QOxDm1HaptpH1tL3YO6dAW+UAo1ji6WQ7UFbV/zRmoMWnr20fCpvF1ydcO72AMXxTviK93PFn74/M6cGg8L/4SUpNwwwPRWhMu4PzSBYGIvWfrCpnu+n43ONzQ3Zk/fJxmIOd9zufJ6nSP42x+nd7qB5jucv+YfcTQ3eHW2gCAuvGwtluFwQ2NkS/Ma2h+IvCbm8DcRuNyNZM9JfrMp/dmxbB/MPpW/vz0ri5dSwg03CgdFRnOih9cfEaCwD2nghM13EJ79R6hw220qMI4jTskJhIFOD6fLOn4CFxLB6rZBCJOikDM14zAhHtkDEHA73ediZn8qdYFg0kQ4veVe19nci5/dxNv9XfesugnyIdnOfOolbWxdO+x8K1Vh8mlxMtx05pL1G4i/gr+QYsdFK67TfrGLgV42nwEXlFA9qYaxEUB7WxqQTYU0N2mPOSWHqb8u92V6GFQv9ceTMFqXm4COKQ+yKsinh6LwZ/fAazWf6039dGtZH7/MZKprOkc4TOTLuBLVfOmjzX1OmDHkiQ/OfIHQN0bgVLX+JCYnHC/XhKS89DfbylLpxaALXq63RR6Hdaro05eyxyGixAO65PR7mY9V0iC3Lq3+x/10KBo9f65U0d+L020uPWOAMCdZaK9f9zrNROd+W3UJ4r16UbfnQqvELGaJe3VUPbXoL435ou+fzNxmkn96ZH3j6aQDix1jykaDGOGvv77oexh4UAmz9433Levmf0wG8+yc6l+DfW6db9XyeWvUveUTUiElu5dbconDnSvsKUKocJjqNTjN758m/v0EXl8NLp4fXpIEAHEFMfGE7oDWrlkQZ/Po2J1VRArAoi/nWy42Rbc8Y4AYEqLTvX3eoct7H7EEQV4rpTn0+DYhyu9ubVjWDPvhLU93kHs9bVwewDDhEv3POHt7LGDRL1L0ACARGKYBOcEJ1mFAcHdW6wN66vDMP3M9kxypRPQQ2XF95PTbu1g7aAt3TVPpRVEdmvJtLx081zfBkemU3w0Uyg7mi4hTVzCFr/uzbuyorQR+sOJaNI07YfeeCT+kO2QLDmbIkdBEaZZpTRxoZ2VJSZ8ixPahjMTfYjn1Bi4QxzlmOtyJo7SQ0nOqP2mKz8K6wO0v+3Pr9NmPctarUhmuybxustm3pwRt4U3XZ23xYB1Z4R598GfZWqGGhJXuTMCJ81CrgIuYGVuQH+t+y6oquVLm7wRNB5Kfw1Vg79mfCcKSFEWhPkO/nnQUa02yaStZCVle9twrJ0Qn4Dhxto9COnri5l3buRlSuCV5bDJScQkAbjcNSmWWj3oYJk0yZQvJT2/YoagJNO8d/cqfIpqvRSPdPTw/q0DPyDbIx0/oj8ryM9Ds/3se5JEONLqIfNfN39k/Sck41nltNPfT0eoWWoPvei5O1J3JG98l5d9XQGUrR9v8skdAU7/eDAwfzoVp5zDWL2qlHR4aw0o8xu4LBIWahVb3xrdY3U/rMBWW4UtkX/t2SJneC67unXOuL+WoV1QW2HXVnhQhqqJjdg0x5CoNpEtDZYzkGCh3XN2HcRyloIBAGyjZyaQbK+kpmKBskLNjj9sMKQJt9Nfk5iD6/O2BpoLa9i3hZhb1u5sB5recV6G2WOcbhayR3AGVuZ84Jasy52B7bR5rhq+5EIHY66O0WTgohNr0IytX6Pzn82lO5Pj4DZsqvvqF8pX1zgFiy92MTHTzFutXSjP6x5yRUiLdglda9JV3UKRebjnO3O8mtGEpg/3+tEWO3VSNBow98QxxFRb6m20rTF2V87GETJu/3C7EHanrSdKhGFw6Drh8Lpt5O4VoHiq6lPWdtQeZNdK5Fq7t2Ta/Onm3XzLZJhmXUetz7pM473r3/Ngxg6mfyDu6tqBuzn/46ZaAFIxCGd9OcrrmQYTWPdQ6dPvOO9Q0t6ah/IO7L8LxFEuvNyh4ui4VjpUqozjPGlAi/csEW1L4/ItJQ2VKu2Mg8B8bHLA9tT+XQ5Yu4vapWamWn/HXTGuEHKBdyV0gx7Y/UkDu+2QsKaBE1obNge4UevCHgK3afPYa77EvisIsP0oeZ21jY99atCOjxomXbp0CP+OIWojqOah3Fc7Ptw/Z3ucENRt/oTu7V+vrfvwL12zwA83rNQMBY2qkXr/G3dWIWGVfxfTxztWnIgF3Qx0hVxWDgrycMt53Ic8bV9QpwxBN51OGAAJdzqUMDFzgus1jJCss4fjQBjzMsTCEmx1+J/glnge3v0i/ZfWfw4TOuUAQxzSbfWEESzdc7GSf3e/tP7kMmE8lx2Wl1djmpDsuaxofeylk6uRUn3P1RV5tNF2FWgLuwcrvA3FcqgXDhDeeYIVIwH0q+sBcAQQNh+zntA1UIklhWbD7yHBWap9aHcHnhhGrEhHADAHFh6fG2SEI2Depj46r1hfr1+DC9+b5DUeRxlWorgfhYRAMTaueIhzxT0/o6CzeikYAHAO09k6zM1ce5VbOtGX6elmfqFunYzSZhGXeP2rvM5fp0VfMhH8iM/q++1T7zMjvNLGq77GtxUk5DTfShc7jXcuFq6k43LugpTtTrRgek3BNL21eW56lasMjDrLYDU3SbC9jPVqgJY4HGSATI2eZLxRHbt76J1qdswjQLGsioHIpQDFrGJh3KvDTkap6ncWW5yMUvOqdmYgRz8fz2wcR7ggYxe/Mf8ezLRz5+feSh19zQ78H1WkPNGOi6anWzbV9/zsswMAk1/Q/VF98LP7ICi2MyMGYfjyXAhXD6sz6vCuonwvt542Mj555mIAAMChF1qextCbMMFWgUSZzEe8Rfl8ggcp2D2LwQAAtBRQO8uqF+1sWr0zizuC3k5tXhPILbh+HSVoS67dAQIq5C6RIMNwQSwKMts2xq4d2cJ1mBrbYpPrMFPugu3u/kzaGVfH40XaSyfWs8XIu7wHu/IWsyVMufQn27tMau6ga1x301FEXmuXIwQAxw10rHIPz16kU2L9m4XS43t+FHCiNbi5tmKRgbbA9njZDVzi6B4ciK5t/7hoiNNs61UswkRfkbzRjkI6qg6T6MnT0woyu9LDg+E04AAAo1L/lBYm1eFtXpcwhQVRMKu36Z/L0e6S8NcLzQCAHbxFVOf2qLdiZIvlbZPOPxcWvFYdelcBR9XHNIC3+x1pAqzc6qcoJNXHR1LHgFptk2FAt3aZRtKY3+kgU4v3PT4YH5zcB2nkYFbzITgYih0dyWBcLPhsSKW+xwgmdCR40FllwEcX+NJyK6u/Ny4Pq3uUDxmwakvVBZUl0ar0jg1OPT748z/OHsb/N/QQW9nIqaS3xGeLozO2Yyn+Ox4zRMoVSJtBkrPcc41GIJFzgg0JpPWYdqUkl/Dk6MYxkbRJ0R49xencyZ+rwXV7A2EPl5nuLHAKByZQnnzpVkSyLpUMC0mLF52VOIkbmrJGjkDz7L1zUEh1VSRcHkOHXeXRrfZg8Kqu/FXXmgdU9+F5BFDfAGg8oRRQiSWFvsZNz7EX3MH5QnUv0RfGkhhx4yYBwA648h99YCxDF+aPC+EPPYOfz7YgOd5X0PveM+rnVYeeYebN0cFxLgYo0g1OKQwAOGhLxAazAn7dt/Vi8HdjwvO58/2vN28eex/g8+Ojzpg247mlzEXvHnkO6L1a8EQ7mfp8u5/bWN0WlsEAgI39HLsAKop0yqZxASEmnDHa2W0gvVbnDSTEqcfGHDMkZFK1s3iyid4ZXRAUAPWp2hjUFdQ3aFvQCNS3dhfQPCT66OqAGiRQ5y6DOcKBipTffBT4V5EN8S5pI0F7K92zQnQrUZwLAACcQMfuCAUwxwRFAmky5mwAzjB0xaAaDWEAgGuB6dJXy3HhN4tWbBccuAUPWpzq88QDSdSwuxugUbdjErpyuS4HNpTVcZApjmzAm8g1tDJT1zcCMSfrMk0o53EXprXK6ZjtDN0tnOX0No8dDiMJiZwlbBZib0wpsucGBtOlUcUMkHY8pLbtZ85Ff0GLW/5oYkm7Pl3J69NPs3ToB6fyNeec9ryRFkyjVxU/1ESapHn/HPpfIC3o6n9ga0B8t9HjaA9if1aBk/pt4n+TiT735J/uB3VtBZPBIkgcUvRt0pdw6AhxfiTbW7rS6i0Fccd6MLiqtSpbzKHBdWEVpsteyZ60f949yLPd1qduuSEK6fUajgI732mg7x6Rp2bP0XQOkKoGHAAg1WDQ+gULBjAKcXgas9qGGoCZze6MgYOGF5oBADS+XdmTpX9ZZ8zdYMOdsu6PDaT7tgadK8jorY1RBeDgbuQUNALs/qQlV4WRuG8Oc0NX2hojAt3VtphVkLvlLpjNTZoAO7LR7wUGJnmwLdDBXcYrNlgHnSB2E2KjLytsEcnWsp6eAjtzQe09gimCqhiCtU5lH5p5rUk+7voUhTcSAACmfN3EglP5WnlOf27UCaZ0UsUcJ2xFwWDKc8rFcC3HRzHQ67vA9PmIDZJumwMbnsrj0q1kxpdKJ4bs7Uusd8EMVYbh4AeBcP2f1BeHe7wGrdFkwRHt/Qx55GI5gxWbgWpnOx/NFqHnzk+1WF51H55HAHUGAMcKsjtgicWFdsHqgYvOLvrqAhXcYFQIPP99BACpoF3nP86CkwxzmD/qgrRs07u/vQ323ixbI/agZ9BkHWPhszOz3saCo5WDCphmCX3yYwMFR3umwTg3yf5t+GKKnbBsVgwbwAunu6/dLAk6eI2PfesKE3IlhU6A6alZGhR4mEJn2spewVO9EtdXbbp+gK4Z+3EXxK0rn2diuop4UpXBlfOT7Mm/h6Cq0fCpGuuCMNbAF7p/jYPNjVNqtzTO9tehdaLuTGqKWI/mxerjx3dlUfrb5k8odZ1dOCA31SR72qON0BuV4sZAXYnwU4lz9CbIK8JUKrKxzJD+YO7Oky2gbI0QVFciRHRbGSAg2tYFLCboQMbADgNOGTuGA3AZMyzCwdv87k1rgz9fVet7FU8S37rZz0jeHI13tRAAADiCauidCSjYENwrDie6eznGPAIgwzy3Ik4l4u+cDwYArJHeLoO/ZsFXM9MXCsX2ksMtMR6I0nKmQs/QV1ex+/DEyp00dHCZL6fjXiinUkYIFPIPNA1amWFD07Z1GQqaznCGoV3lmDsOqzyj1gvshC+x9kJUtSvFNERh640iMJCmOSAAyBpMkR9uGtracfuXbjBpy3JaUBlrMTbobns8d6AspjsSlGq2fyGCDHptvWnCvR+8hVdHMfZe4B/tXTon74qzugFIVLmic3EAANPLWhhy6W39XtL1Kk7XkgFdwRCzThHvaGbvgMQ2mQEAYoHB/g7Gl+D9uTjpH85JOXCH0iWXx3YEFZ0YPCv/rkHMVGspCbhJJq93UxmzBuS+K4UHptfubw2IJiNREcTE2mgaZK11cQ1IFGNwHwNj2dFgGFjiwaMDlr7HpDTIbhYPoggKubBEAXNb6rnxXRTZi0SnUHGq6qIOZjB9TR8BwGWBHRuP3d2sEKfuYjkNJiTjBSYNpHlXi5IJMMvLZWoJ3F07FVYBW26NtmuA1bX3225gDrUVVzd8jD6GKqe/rwqbW/B0BaH6A/X5+EICqPQAZE/IC9RiSaOn6fdQ4CJWFGgHo1SMqOhHALAEVzePfb1wB+OrgtQR8jmSTztL6bmcWLsArN9kc/XJY/fymgogbeUQAcMxz8eHnEnBGSwGAwDmfDqppmw9FWflwCmGc1X0volr9L5s5epn8vDVXuXB7Wm1jhZvVbGz5oM7/7t41favd++//fife+PD3MryGqE8eqfrGCrC1vDB7aZ/Jj9PVR/kUeB2m8EAgJRUAHv1BZwFvDTisim1C8yoPm+X4DZq2M8WlqjduRnQFAvJHOgbHTN6omAI7TLbDu+ESIwBc0iswXZYhcRmeSwLJG8Y8JXWufUDI4SzT0KlhiRtLyp+0u0OgVAdPDHMSMk4Q9tKq2OnGdr2uYJ2wIa93fI3DnPv6nAqeikTPYcfLgoDAIb0jrULqgA4l+I0rJTSalOfFzZoqCJsKjkXzc4FS7U7A1/8jPmyBi0YIQNxUlZm5phMVFqXZYMxGMOK4KacnS03uBOHdmuIJKcuHB6x6+9g/D+JsaX5lBZm/39/j/8BVLxy5pQarOp6I7QZFKo5IACAF+yJgSgmmpY0t2GFC5O2vOonjfFUSzB+8x6dl2D0ridY/z1EBbpiPJESKuiKNp4zHpeJV1HaBb6qAHTmZ6n4siYOSKIZD8NOmtL85JCj6wOtrwr2ybvCwo5Ar5pOAIDeYV/7mU784ZCoHIV+GR/CRFAPL9QOkByvHi0ghWdbBWq7yQwA8BKc7Zq2awCd4mMsAXTX/rkIcq8O3WNAdbUxvgEc3o3GDW2l7f7CeVOm7zgk3l1x0tbmHHAu1uXOwNa6C6kaZKrjGgVtZIpwggMOGOKuExMM5m64Kva/S+2MIbeM2f/f7xOhDQ/hwMsKWoSAas4DIeP62yK48qKaWhA5E0E3ypPl7xxgd6EAAGAO5GTzF3oa4lWVIJureE1ZSKJ9gdE10jjWongKGO9lJOVl/K7j/0W2bPvn+3Drf/Zg87cglrtXhSH+2u/j0eUE7tWHMJcWaev2ACFeKY0v4G8qGK5IOHMcvGEE309e79B28qscVtOAbHFUaAOitQzRWqgzcreZh7mtc89zi6zkIcitFNX5YABAHCa1VsHVm7mfqbPScKjh5fSCJH6tof9L+vv6uPWpryoJez6948M7VDedwe7TOwHYhCk4RqbQefQ028JPLQoDANJshCnrC6QDEhlxk46XAWtX6F3y8EFvrx6bRWbI/jU5A8tPcj0p92AAXOiEgF35XByxkDaGPYFYaetC9OB0RKwhYyAwVztJYvvdSNHjYmFPSMd/1inf0e94n36o999UHX7hvMxf+DFpaAZJ3DixlIcp9LeMkGwUlMDanPg3KPO7yidJvXHRM51hTgHm9AInwyWcx+nMtBcqprbQmQJxFAy6LLhGeoPfhZO3f3drbiY7O0+F6cwFJCihz3gfqmBuzgkDAManVVXL1tXYpdNM9sAMYNaEc5WLtbH2WZ03Ja1vath3ho1Nj5U2c1LV4B8WnIWoF+VQRBDGQbpSlMZe4NcU9Pwkb6gkkW/4w626ZtNJwsEQdJ2MuILsWTAF+mmyLvkD+FT+CcF6KjzIcWIF5ilc6IJsyy2DtpA2ZtGEttJty8KAtobuwiJCLrYdoNWgy7Wfs07s6sR67kNHNlTFkhFVIa+nUsRxKatAcw2McVFk5JJyeDqwp7p/rgAy8tsj+Dacpol4U+wY6DLrnxx0Pb68nYJ8ncLtWIvG1B0GdtEiNxu4Ga4L5IueC4oTC5idcW0bZsYWTy0ryP5e2hp2cR5588OvEuHeENRY/wd+gaeeWYu7vt+IW9mpx3H7/vE7nuFhh6dJ+hk2kGmcJwG+Yk+Lvxl6ssISfPkkku8QOKj9bMCC7cFvaZVAmUU44kCP7Tdfq9qV891AIPcirduHo/6FQM3C2UuI4Qe31FqOBmirjr3x0zsV+kUTqjOZFwuDbuIKErqcOddRgcA6615enHLHxd9maKDSF+uQPaWw02DtBsA17AAAIOxl9IuZQF9ANG5hrBOGxau3Ds9laKfwrYVmAEDEYKWKtjEI0hybAQVV/k1ABbXo0dJb2PNMkRdq8FUIc1daCFT4O4pxSx8/pYAf4JsBfOwui/DSrWrz4QlTBfEuVG+mVeWU7jNJwikAyk/rmxAKeqxL1NmGIQZwGCLsNhDndxRmvD/xE9jxX0Em4e73sSWhh7P/UEamG5x4W2wVR7nLnBdCOY4OkEOCxoXFAzAs1rNuYJuXVRYH2Bo3o4sgxzUGvOEiSxYAgK4x+f3x3g1u4To23FBX5jLZFCCOdYlRsSBvuwsldYCCrctVvNUSqzKuu+huF3KJtkUBkcvY2ieDPHbXY6TNDx+1z2YeTbjH/MG3u/tP3t5A/wy4kmwmZlNnR2+6fL7RrqjgVRaDAQAHFWxtaf0arm1WDEsK+X08a/PeNZbeF5+plr2+qoPbC3VOiNj21DhtJ3xTgatiR1OHtQK8YYNSXQBn85waBY0UJGsxGADAU4HwKgwG4Zvav9S7h5W2GH/Wx6FtviD4bl9sWIfRqM0p3N+B4TXUzU8Tvn9uHpmlQtxcqqJUtOIL5K16mGwnjg2HwpsiPhLsuo/p1Gmy5zIOKmiKih501YqKtFY9Zks2r674l5Mza8zV7P863Tf9qtocqqPvE6lvjPrvCS1CMmE85aWQGrogSERZGWnwxbZFrsMXGYOMKVxaynMOkIZspgcpn3msxvlWVvKtohruZL0wb4X8xZvQnmjBHQnbn27dMz0hEymQuGkAAEgWuJLWucyEOwpcDxe8bQQ65z4DAv3L8HOVd6+0qapgMxgAoDoVj11e10Hum0khZx63RBlVYu9UoXc9FWP4V/rqwNxExZVhNBwmZ4xMXmr2uQPtqhZKpcMMCzk5YuzpqLIyZ0DHsXU5BzruMIbzIM93DtDNlfLSdmhvG5CbxYlMRh0qOZYj5Y0h9smmUJVcsr1kdH1xdH1BdH0F0/X9dM02mim1eKOrJJrWiHLGyPaS0vUZdE3+c+J5S7f30zWf0lipRTpdicw5hwyG4EoTp/9qFFmowXUrqi5sIiXctrUgMitgEAtqjckGxMs5boKPauDcUn0a/JfNhvXuDr4Hth6qifu+cVjpsFpX6iP3w9nvMn6kutByExbVhJ/SNdOO1gJeZW7Ipz1W63zQxB3qwdoy9QaEqu1fHYVp/Gri/e6KOHn7adnAtAi3ntbhfA55EzzG5r6tk7c3peumADcvDO4wx//BTx/GbV8WDUzICZdkaFU7CrP6JMwdz94juFSDGQBwDIQWOtqAIWCtRslNnxn72RjpHylrpqZuJwPkxJqzqbCayr+75zVt6F1bMjW7qUSonjXO4tTpGIfMuaAslMgqbJIlP2Bm969s0afumU7bAed16vPQ6SSm8SMlNftvpt+Mmw2nHGGvCborDTRX6dNlr4W9nW1iVBqhGcmkU4A2Gq3amskcNO6zLjO9ch6iMdtdmGFtckZ0mOYE5IzPCZ6LoC0XLYITAySH69ALMfFlhbuGeCLrUadDt5NafUkVYwhKMQ1kR7Cb/NYmobmmBQAAg9HqJrcvITR7xNXIdIMYXChxB3mqLjG+CTQzXYuypekkgxbM5WrNbLSKL7k7CcEVq+4TXaVAcEXxfv1VZIJr7Kpivz64q731t+j/Fxo6l8QIL0AqRH8oQycvx+/ti+LoD5fGF//K4BOdT1Yb8CgTLB5c9sU2rQo9fS9Zv5v0uBAGAKS1WgHVuqarUe6NRjxCD9nr4mDgFzx87jRotXJwk1ITO8lV8B6phnXYS26ttapiQR29G6EPQ7wOgYkwAMBeAjIGjbaqORvgdN6Yw+tAsxWdUlS1ZPAoxBvmXbMYhSy9IR2dHGXcIZnaSWWxi+2kFg1KnaO+r8BbDTTHOuoT5q3GgHmUd57xSvpd47IX3BH6VLs8AABMo+bIMw2h5KDQgxg6JFMtVfJcSzSkn8s7O2XgdJK6JNZxbPf2VNhIrowqR00+TzroSXgd8Ow9j0LFHxkENkjCCHH3c37FPxcyK55oXS4AT2IMF3LnYmkCraLRXlmdKsfGsf7aJNoDp86UOoRHKpFVj9CtMhGNV41v1z/Inrll6QkVUakZbHOlPsi+t8gW2cecWnZ+LXuP9xKXaWc20ZiarTdyKmqGIQ4Npo737xDE9oXNWSS7bS1UBDtljaVFqqtMN96CufIkFnfH/qEKeZWz79wQNuQeUjkaBevufHF3x8nbKxaCFaypYbP3sUqpw3upuIfcR6oMd7uS83UAgOOKihhxJWXDcGXL1sMKctqZjvBq77lmAMCh+HRlW8IKTLYNV3r+X9/993aUoiTOkxT3rkDf3vyf+XuFrwKNetwKyrpbi5mL37uyfI+gu584vL2CPe/n9g+p6/ZK8lvvL3EGM65h3/n1lmjHmG0isu15X9ayVBOu+jMGSQa0yt4MjT/WLyP8nRLDJohSyuqdyXQLbtsN3kKBXbnbsBcUwXUig4O+uJwa787kARZ0EhHv5qIqNOjMg3MoFZH9V8Zg/DBPs/CTuGHgzR/VuAAADLa3/89oo68mV82D8cMcdAYuGgxG4o/DGhMACMt6j7LLU24G1vG294qtNL7OfjOxwkKXmXQVeJVKlN78UIqW05eszbSYwoX3iqAYXTQcCwAU1La2n53dhxUUOnr9O4hC1cNOsw+D3wAYL3TwmZFby4HQKCDI5I42+6Nm1egSFC+FAQA76O4ZhAAT9Gf3tufFyMuWvCbCx9+TPLq9NFjpDvZQvyLUayethS3ExXjkYr+CDltjn14/3tf6LDEPuU4fn5X2XBW3C81zF0yq4vZsDN4xtBZ0z60dAmu9qhaDAQAHh3ZnugtsGKG037Oa3r3Pll+Um9J8FkLXqs9zIUE7JZ1hrVzH3ESFbkDuvmPK9p+Z9uwH3aN7PJsq7vVNr12XGsSZ3Lp8MJNv/FXyVLkgXg3kCdsYXxvy3OoXX850St4uxuDLZMcoU4ADlJ7dZIrLY4PKISiTN6zw7qa+92GMz65grmcc0HEk+/cx+B5Jn4K/N4xmuXFldyOqsWn6kHCt0FcFP9XBzfcT+/kBXXUCnGLACoHI1sX/zqsV63KPoYQG1g3964Dbhv7VEmevBynsEMJs6aIH+A3YOQBjKIwXewqwhifIscrtDAY/vx2l+b0oHJ5DMsSJtRjMVe8PXU/djVB7XIFAzhYMeDSyuV3urD1142583+I32Z2NWc03BJI4Oo3ew1QLpql0kLYoFInsqzpYe/No6WJL4Dn5wZcML+kXj4sOt7LX9Ql5wU7+r0+eDSRPhFs9+kwzH0bC+4Q/pBCV/N9j99bG99MjXrah7FP888CcJRPL5hfHSwJBMXaHLgSlY4N0IzjVaoznicLGGehOWry0qR25IAwAcBzqHb7OglNVikjl5MVzhY6KDK8zL7uBMjNd8DkvInPTuZHbgrBoZ4BVas3fgLW0C8KuDiXagLW3bQy7loB1pH5h53pMxDpdY+cXvM5ujwPEprnO7qFLy+ZA27RDtFRDm6MjtVeBMuxHcppXmih/rS/rLcCctbfx7yMZ15v9SO74SiPnMQEAa8bfNMjlhDct5Rrvgenh+qeDXJqkLpj94kBMsHnaGi9trhsow2krprBQZvO9NzVDoivLjG2I855042Qv6qQGo5Mhh5/5ML3dtLnZge3OzGyH0JQryQo0I7gZxjW+LYQ5bWI52VmIp0k+Fmsz5PMLxRNdcW9QX9qJWIyVee04ez8dcvZGUVGVvkcKMONiZ7PfKgVm1xRcRheGApmY50MVnO7FYADAjApUp76gawCRPM8MvUGNnpbApPWVbtlHOz/R/mwbDbp1IG1Gf58TPI8RcnXELe94+9Qy08Ba1iXV6/hQ8iYuQwrQHxlA4H66IqtX5VibvGGOfThx5zD6y/G3a2GBG7kie5xiOfR6yhlFqJxXonHYV6G/PExfYCdvz6UDXYQ76syf6CFdhsdA9dW/5O0PcpEcBK+0WAEAKAHI6R1yhaEkiIUzSGr1TAM6BRAwz9VrsGQF6akykJ2bZD9B3YJnA0JEpG8MvbBYURHtVuglUAxXw2cQsVxJkYFwfS4Bu3CvEnywDFItJBPx10XMrDpvIz6qaOmFgXLEJ0wGmFVVHqhfDkdWnZysI+WchhO1CRrFpYYEtq/TaYqODxGZ5eqjqZUd7umoAICUu/DDgfPwtM0T27J+eeck+c1z4by4mQ3luluLQfW9RMBL2We4wPOaxnCciCR2ktU8FNj8Er/D/o/SH4be//bMaS23l3LG1IsVvXbULkuH3GzimLOp7o4iiFRRyXgWYAgi1VFKg+lm6J+s7cfOJnpd4D9SHW5RGABQBzTowDdhpnLYEjyPoZfC056d5+5GrnjrSvjmcHgxcZWt3DCg+GSGZM59b1DisTPZymsJIQfrklWuU38nU/qHYCyk1MgTCcO92bNlGD2Ewz/FffCn4E7Y9xMfuroecun6/G5w9+qUsx7/BdRn/2A/gOe49gdftOrTCi8BqAHSb1fOQydWHq5SsmL5ejYbTp5uaGQG1FxuBAYw5SccEFU98jfgGwcWPaqaSnh8TDp6BK7k+eWFeP++s3kQ6PK7sSSwZOMFX1iH5+gSOPi9XH+6b3Y/cBe/Njjxd3h9Lub2VIfg7m/Wkp+fFaehNuqdqY7ORDGO8ewz/p9h5vPT4qo55YurCjzaLX8STLKf3ya4xZamKR30krko8TSYZDFNOu0u7rmLOqZigLFAU5AvYd9lS8pn7Ic+RzyBW5/D3K5n5gsjJ6Lt2NBHfV5KuWVZWr71XOmHmOFbXqFzXlvpmWjWXY6UoLYL+SJh09cnt+Q3hubO8COP6War8uqA+M9XqMh1l2+vFpfL4TU4H7gWB1cBfE7g+UFteZ7vI05o+u3xUsP9UZK3bgCNNCoAAI0D6NY76sWwwgYZaQyKByN1wjQ1oHfxTuXzPe7tCgq3GAwAMFRgKBN+05NcZkfAmOepBTipzpueqSzvJEXPhN9wHt9IQGs3tlLAJ5EEH6A72McDtjmqTJBB2bEBO1WKjpk1YIdWdMvCgB2NYi6sDNhrt25EiT9gb/afYgEQx7Vvp94/l4lQs3y6CpjUYRYL6FszcVtDtcmxChhMZolEADDXAGfpIG4dgHO/+42ekjghnfPv9q0OWvv8q/5UZR8eYx/f3Bvb+L6w7/pON2u7fbO85b0+3MlVn3053tMWO4O5xmTC1TofFrnRPXjqV+QxerGjYvs5jkrsR0f07/RUYf0w5vURO62d6WOAT+g4YLNWNuULi6qrWhCPU+jskS+PeK7S4LlRhzWPfrpIJ9ILzzZo5yfpZcvwbpisaQijY3lrQK64Oq/nkHdP3AUr4aEYG/qyG18xuJYrb+j2zYsdi1sFzZjG586pDdm9b/ZVu28Ca8fKT3aktXL+4rMD4H4jsyPodkZvG7OjPnfMKFeh/TmbB1kgnkauWMd0NbZUxN/JXs5nzij+XXnBF2UTNX/7m3YL63UvByhLwwXhxY7E6cOb7J8rx/4V9POIDU/l+xnxOsT4TbQn6svnbM8VFhiirzobqG7CMllCe++j7cI3F2l9Fnpwe67vKl14wWIFACDG2yl0vCDbVVBV5mBCT8efBwLEyqMvkagiXnxaGABgxJsqw98xPJ0dgTkzzxVnlhvJ2jP0dummQxlAX+Xm2ef5idunR18xMJThcjCJIR0Cbqf687AUB0F1F29XYG9sDGpV4AjbgoYKnMQX0HSLaEPrRhmJjq0BI2ANl+jKA/LuN0k3zNWcDWcUnDBQ+h7AOTO5krUrz+cekJFCPLOL/0THPo/AKTDmixuvK0vq9Ulp3dBwnWkOLa/4R9nkfs4U+aMIo00vYzBL1SeYrb3XoZplSZPq1Mvt2iUSAcDShVxM8UOzkFaK9Q8CpveiHw20NW0tlmkafNyGfV41X7yO/PcUnp3XZ+c1DM43ifNdG/8MbPHaM7ctvH7Bfe58+qy89rq+m+ziscCOY86oWkGDYscthaWA1uVBK5rxV1p9XuVEpti6T79c8Tg7i9Gl/YPz9uvXa4xrQ7a9TcBvPdn3rNsxnjiOveaCMABAc/iioafZem8NEzrTrSm8MECeZ+JARW/YPKvz4gUe8cSeqK0GiQz5/ETRF6Y8InJsl0NmmKSmSUfPzGTmhZOJe7MtW4OchAbDdjJnvzG7bfu2xQH21EJsOTxPXp8nr2ExvnyIdPR26W1/eH5x+D6ensGb1zDs4OA6HwX4qryTBV9CT8HeStOs6KvOZqiL3kwhONHhH+b156T7iGeuqDX6s9CDb73cd5M5wHONCgCAF8CWip1N5zMV2J7S4Pq0qkRnTa1mH8XLjT6SpoF5dvCLXtcnl02dqpxH8t42gwEAvps8UZ92+ka2PkQKETOT9WOHRTjexQxntaCiMg97QDODWT2nPlXwjN+Y1fcVA0N5UfojCuMOSN76sUtoaYQkcZ5DsGRjMJweBbcIz226ZcYtwteaC7MqsHXtG6sALNASsNAEKkiqDCJpMGIJVNt96k6qusBNfp1x5rVkx2sHMvorxoZ/qfU/87VzW1T9Hqi2arYe58Xt4n/WAYCthkgunYswtQKy/iD02p+bEGyVpIofsiQOxfsnBW7rgr8iQaruFF3BbUh3SrUU7SwapCkq//ZDm2P8bd+VPw8n6NvuWj/1sZt6S3d2UOFzb/eMqosIfIhLKXYsxK2UBuOkVa1BZePpFoUBAO4YpoHRVhcsm4VdjefJ6W2KNzo7b6NS9I7T7Znw9o7D1lSeBafbBFm3W5CCM9Ayh2ZhH8yWdrkwmG2D4Qbcon3bPnDLNmLRzKJzqCt5Ps+lYuchzZfhu/7UP+Hl9g2YZmXOe1PfTU4BaSxWAADSzb7uLTXPFd7aGLxG8e7Ka2P60duYUxPgqIYwAGCKfdsWB6xcYPA2Rt4dkd5MZR4xM4ArA7QKq0uxr+YniqC4snpAsQ2CdBewJYTHQbA4DzigBqeqmNkYj/Ex+gWHh1HKDCfiYt/YBnFjC9iDgqriRCmDN7KbvaEhH7bV4/9o8iqpt0UijZeK23fqXPbwbLEu9l5qH4qOLfxsXPvOyZqOi7ptV29mkEylzceyh1rHKduSdPqEVtt98zl85h7vsomK8+M9/w++WIvOoaq8J3yCf7UYvCR8OKm+lE/yGH2CB+m5Dv6JidLoIU/mh/hiOQXtjzhatQ85YkdsD7v/8VPmJEog7ZUKj2jCxvO6LsXNCcLK7+niPQryHDEdafxurmo3xH/8VbK/jwV5rg03y/tvC9T1Rd8JKI2usEZSQgV1ss8+gJtjtpcD","base64")).toString()),wq}var tEe=new Map([[G.makeIdent(null,"fsevents").identHash,Zye],[G.makeIdent(null,"resolve").identHash,$ye],[G.makeIdent(null,"typescript").identHash,eEe]]),Lct={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,s]of Eq)e(G.parseDescriptor(r,!0),s)},getBuiltinPatch:async(t,e)=>{let r="compat/";if(!e.startsWith(r))return;let s=G.parseIdent(e.slice(r.length)),a=tEe.get(s.identHash)?.();return typeof a<"u"?a:null},reduceDependency:async(t,e,r,s)=>typeof tEe.get(t.identHash)>"u"?t:G.makeDescriptor(t,G.makeRange({protocol:"patch:",source:G.stringifyDescriptor(t),selector:`optional!builtin`,params:null}))}},Mct=Lct;var _q={};Vt(_q,{ConstraintsCheckCommand:()=>ZC,ConstraintsQueryCommand:()=>zC,ConstraintsSourceCommand:()=>XC,default:()=>nut});Ge();Ge();iS();var YC=class{constructor(e){this.project=e}createEnvironment(){let e=new WC(["cwd","ident"]),r=new WC(["workspace","type","ident"]),s=new WC(["ident"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,c=new Map;for(let f of this.project.storedPackages.values()){let p=Array.from(f.peerDependencies.values(),h=>[G.stringifyIdent(h),h.range]);n.set(f.locatorHash,{workspace:null,ident:G.stringifyIdent(f),version:f.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional===!0))})}for(let f of this.project.storedPackages.values()){let p=n.get(f.locatorHash);p.dependencies=new Map(Array.from(f.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>"u")throw new Error("Assertion failed: The resolution should have been registered");let C=n.get(E);if(typeof C>"u")throw new Error("Assertion failed: The package should have been registered");return[G.stringifyIdent(h),C]})),p.dependencies.delete(p.ident)}for(let f of this.project.workspaces){let p=G.stringifyIdent(f.anchoredLocator),h=f.manifest.exportTo({}),E=n.get(f.anchoredLocator.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");let C=(R,N,{caller:U=Ui.getCaller()}={})=>{let W=nS(R),ee=je.getMapWithDefault(a.manifestUpdates,f.cwd),ie=je.getMapWithDefault(ee,W),ue=je.getSetWithDefault(ie,N);U!==null&&ue.add(U)},S=R=>C(R,void 0,{caller:Ui.getCaller()}),P=R=>{je.getArrayWithDefault(a.reportedErrors,f.cwd).push(R)},I=e.insert({cwd:f.relativeCwd,ident:p,manifest:h,pkg:E,set:C,unset:S,error:P});c.set(f,I);for(let R of Ut.allDependencies)for(let N of f.manifest[R].values()){let U=G.stringifyIdent(N),W=()=>{C([R,U],void 0,{caller:Ui.getCaller()})},ee=ue=>{C([R,U],ue,{caller:Ui.getCaller()})},ie=null;if(R!=="peerDependencies"&&(R!=="dependencies"||!f.manifest.devDependencies.has(N.identHash))){let ue=f.anchoredPackage.dependencies.get(N.identHash);if(ue){if(typeof ue>"u")throw new Error("Assertion failed: The dependency should have been registered");let le=this.project.storedResolutions.get(ue.descriptorHash);if(typeof le>"u")throw new Error("Assertion failed: The resolution should have been registered");let me=n.get(le);if(typeof me>"u")throw new Error("Assertion failed: The package should have been registered");ie=me}}r.insert({workspace:I,ident:U,range:N.range,type:R,resolution:ie,update:ee,delete:W,error:P})}}for(let f of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(f);if(!p)continue;let h=c.get(p);if(typeof h>"u")throw new Error("Assertion failed: The workspace should have been registered");let E=n.get(f.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");E.workspace=h}return{workspaces:e,dependencies:r,packages:s,result:a}}async process(){let e=this.createEnvironment(),r={Yarn:{workspace:a=>e.workspaces.find(a)[0]??null,workspaces:a=>e.workspaces.find(a),dependency:a=>e.dependencies.find(a)[0]??null,dependencies:a=>e.dependencies.find(a),package:a=>e.packages.find(a)[0]??null,packages:a=>e.packages.find(a)}},s=await this.project.loadUserConfig();return s?.constraints?(await s.constraints(r),e.result):null}};Ge();Ge();Yt();var zC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.query=ge.String()}static{this.paths=[["constraints","query"]]}static{this.usage=ot.Usage({category:"Constraints-related commands",description:"query the constraints fact database",details:` - This command will output all matches to the given prolog query. - `,examples:[["List all dependencies throughout the workspace","yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Tt.find(s,this.context.cwd),n=await r.find(a),c=this.query;return c.endsWith(".")||(c=`${c}.`),(await Ot.start({configuration:s,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(c)){let E=Array.from(Object.entries(h)),C=E.length,S=E.reduce((P,[I])=>Math.max(P,I.length),0);for(let P=0;P(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Tt.find(s,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};Ge();Ge();Yt();iS();var ZC=class extends ft{constructor(){super(...arguments);this.fix=ge.Boolean("--fix",!1,{description:"Attempt to automatically fix unambiguous issues, following a multi-pass process"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["constraints"]]}static{this.usage=ot.Usage({category:"Constraints-related commands",description:"check that the project constraints are met",details:` - This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code. - - If the \`--fix\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution. - - For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints. - `,examples:[["Check that all constraints are satisfied","yarn constraints"],["Autofix all unmet constraints","yarn constraints --fix"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);await s.restoreInstallState();let a=await s.loadUserConfig(),n;if(a?.constraints)n=new YC(s);else{let{Constraints:h}=await Promise.resolve().then(()=>(lS(),aS));n=await h.find(s)}let c,f=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:C,remainingErrors:S}=iF(s,E,{fix:this.fix}),P=[];for(let[I,R]of C){let N=I.manifest.indent;I.manifest=new Ut,I.manifest.indent=N,I.manifest.load(R),P.push(I.persistManifest())}if(await Promise.all(P),!(C.size>0&&h>1)){c=rEe(S,{configuration:r}),f=!1,p=!0;for(let[,I]of S)for(let R of I)R.fixable?f=!0:p=!1}}if(c.children.length===0)return 0;if(f){let h=p?`Those errors can all be fixed by running ${he.pretty(r,"yarn constraints --fix",he.Type.CODE)}`:`Errors prefixed by '\u2699' can be fixed by running ${he.pretty(r,"yarn constraints --fix",he.Type.CODE)}`;await Ot.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return c.children=je.sortMap(c.children,h=>h.value[1]),xs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};iS();var rut={configuration:{enableConstraintsChecks:{description:"If true, constraints will run during installs",type:"BOOLEAN",default:!1},constraintsPath:{description:"The path of the constraints file.",type:"ABSOLUTE_PATH",default:"./constraints.pro"}},commands:[zC,XC,ZC],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get("enableConstraintsChecks"))return;let r=await t.loadUserConfig(),s;if(r?.constraints)s=new YC(t);else{let{Constraints:c}=await Promise.resolve().then(()=>(lS(),aS));s=await c.find(t)}let a=await s.process();if(!a)return;let{remainingErrors:n}=iF(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[c,f]of n)for(let p of f)e(84,`${he.pretty(t.configuration,c.anchoredLocator,he.Type.IDENT)}: ${p.text}`);else e(84,`Constraint check failed; run ${he.pretty(t.configuration,"yarn constraints",he.Type.CODE)} for more details`)}}},nut=rut;var Hq={};Vt(Hq,{CreateCommand:()=>$C,DlxCommand:()=>ew,default:()=>sut});Ge();Yt();var $C=class extends ft{constructor(){super(...arguments);this.pkg=ge.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=ge.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=ge.String();this.args=ge.Proxy()}static{this.paths=[["create"]]}async execute(){let r=[];this.pkg&&r.push("--package",this.pkg),this.quiet&&r.push("--quiet");let s=this.command.replace(/^(@[^@/]+)(@|$)/,"$1/create$2"),a=G.parseDescriptor(s),n=a.name.match(/^create(-|$)/)?a:a.scope?G.makeIdent(a.scope,`create-${a.name}`):G.makeIdent(null,`create-${a.name}`),c=G.stringifyIdent(n);return a.range!=="unknown"&&(c+=`@${a.range}`),this.cli.run(["dlx",...r,c,...this.args])}};Ge();Ge();Dt();Yt();var ew=class extends ft{constructor(){super(...arguments);this.packages=ge.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=ge.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=ge.String();this.args=ge.Proxy()}static{this.paths=[["dlx"]]}static{this.usage=ot.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-vite to scaffold a new Vite project","yarn dlx create-vite"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]})}async execute(){return ze.telemetry=null,await ce.mktempPromise(async r=>{let s=J.join(r,`dlx-${process.pid}`);await ce.mkdirPromise(s),await ce.writeFilePromise(J.join(s,"package.json"),`{} -`),await ce.writeFilePromise(J.join(s,"yarn.lock"),"");let a=J.join(s,".yarnrc.yml"),n=await ze.findProjectCwd(this.context.cwd),f={enableGlobalCache:!(await ze.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),enableTelemetry:!1,logFilters:[{code:Yf(68),level:he.LogLevel.Discard}]},p=n!==null?J.join(n,".yarnrc.yml"):null;p!==null&&ce.existsSync(p)?(await ce.copyFilePromise(p,a),await ze.updateConfiguration(s,N=>{let U=je.toMerged(N,f);return Array.isArray(N.plugins)&&(U.plugins=N.plugins.map(W=>{let ee=typeof W=="string"?W:W.path,ie=fe.isAbsolute(ee)?ee:fe.resolve(fe.fromPortablePath(n),ee);return typeof W=="string"?ie:{path:ie,spec:W.spec}})),U})):await ce.writeJsonPromise(a,f);let h=this.packages??[this.command],E=G.parseDescriptor(this.command).name,C=await this.cli.run(["add","--fixed","--",...h],{cwd:s,quiet:this.quiet});if(C!==0)return C;this.quiet||this.context.stdout.write(` -`);let S=await ze.find(s,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,s);if(I===null)throw new ar(P.cwd,s);await P.restoreInstallState();let R=await In.getWorkspaceAccessibleBinaries(I);return R.has(E)===!1&&R.size===1&&typeof this.packages>"u"&&(E=Array.from(R)[0][0]),await In.executeWorkspaceAccessibleBinary(I,E,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};var iut={commands:[$C,ew]},sut=iut;var qq={};Vt(qq,{ExecFetcher:()=>uS,ExecResolver:()=>fS,default:()=>lut,execUtils:()=>lF});Ge();Ge();Dt();var cA="exec:";var lF={};Vt(lF,{loadGeneratorFile:()=>cS,makeLocator:()=>Gq,makeSpec:()=>PEe,parseSpec:()=>jq});Ge();Dt();function jq(t){let{params:e,selector:r}=G.parseRange(t),s=fe.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?G.parseLocator(e.locator):null,path:s}}function PEe({parentLocator:t,path:e,generatorHash:r,protocol:s}){let a=t!==null?{locator:G.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return G.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function Gq(t,{parentLocator:e,path:r,generatorHash:s,protocol:a}){return G.makeLocator(t,PEe({parentLocator:e,path:r,generatorHash:s,protocol:a}))}async function cS(t,e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(t,{protocol:e}),n=J.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,n.localPath)}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.join(c.prefixPath,a);return await f.readFilePromise(p,"utf8")}var uS=class{supports(e,r){return!!e.reference.startsWith(cA)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:cA});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){let s=await cS(e.reference,cA,r);return ce.mktempPromise(async a=>{let n=J.join(a,"generator.js");return await ce.writeFilePromise(n,s),ce.mktempPromise(async c=>{if(await this.generatePackage(c,e,n,r),!ce.existsSync(J.join(c,"build")))throw new Error("The script should have generated a build directory");return await ps.makeArchiveFromDirectory(J.join(c,"build"),{prefixPath:G.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel")})})})}async generatePackage(e,r,s,a){return await ce.mktempPromise(async n=>{let c=await In.makeScriptEnv({project:a.project,binFolder:n}),f=J.join(e,"runtime.js");return await ce.mktempPromise(async p=>{let h=J.join(p,"buildfile.log"),E=J.join(e,"generator"),C=J.join(e,"build");await ce.mkdirPromise(E),await ce.mkdirPromise(C);let S={tempDir:fe.fromPortablePath(E),buildDir:fe.fromPortablePath(C),locator:G.stringifyLocator(r)};await ce.writeFilePromise(f,` - // Expose 'Module' as a global variable - Object.defineProperty(global, 'Module', { - get: () => require('module'), - configurable: true, - enumerable: false, - }); - - // Expose non-hidden built-in modules as global variables - for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) { - Object.defineProperty(global, name, { - get: () => require(name), - configurable: true, - enumerable: false, - }); - } - - // Expose the 'execEnv' global variable - Object.defineProperty(global, 'execEnv', { - value: { - ...${JSON.stringify(S)}, - }, - enumerable: true, - }); - `);let P=c.NODE_OPTIONS||"",I=/\s*--require\s+\S*\.pnp\.c?js\s*/g;P=P.replace(I," ").trim(),c.NODE_OPTIONS=P;let{stdout:R,stderr:N}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${G.stringifyLocator(r)}) -`,prefix:G.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await qr.pipevp(process.execPath,["--require",fe.fromPortablePath(f),fe.fromPortablePath(s),G.stringifyIdent(r)],{cwd:e,env:c,stdin:null,stdout:R,stderr:N});if(U!==0)throw ce.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${he.pretty(a.project.configuration,h,he.Type.PATH)})`)})})}};Ge();Ge();var out=2,fS=class{supportsDescriptor(e,r){return!!e.range.startsWith(cA)}supportsLocator(e,r){return!!e.reference.startsWith(cA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=jq(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await cS(G.makeRange({protocol:cA,source:a,selector:a,params:{locator:G.stringifyLocator(n)}}),cA,s.fetchOptions),f=Nn.makeHash(`${out}`,c).slice(0,6);return[Gq(e,{parentLocator:n,path:a,generatorHash:f,protocol:cA})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var aut={fetchers:[uS],resolvers:[fS]},lut=aut;var Yq={};Vt(Yq,{FileFetcher:()=>gS,FileResolver:()=>dS,TarballFileFetcher:()=>mS,TarballFileResolver:()=>yS,default:()=>fut,fileUtils:()=>xm});Ge();Dt();var tw=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,AS=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,es="file:";var xm={};Vt(xm,{fetchArchiveFromLocator:()=>hS,makeArchiveFromLocator:()=>cF,makeBufferFromLocator:()=>Wq,makeLocator:()=>rw,makeSpec:()=>xEe,parseSpec:()=>pS});Ge();Dt();function pS(t){let{params:e,selector:r}=G.parseRange(t),s=fe.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?G.parseLocator(e.locator):null,path:s}}function xEe({parentLocator:t,path:e,hash:r,protocol:s}){let a=t!==null?{locator:G.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return G.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function rw(t,{parentLocator:e,path:r,hash:s,protocol:a}){return G.makeLocator(t,xEe({parentLocator:e,path:r,hash:s,protocol:a}))}async function hS(t,e){let{parentLocator:r,path:s}=G.parseFileStyleRange(t.reference,{protocol:es}),a=J.isAbsolute(s)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let c=n.packageFs,f=J.join(n.prefixPath,s);return await je.releaseAfterUseAsync(async()=>await c.readFilePromise(f),n.releaseFs)}async function cF(t,{protocol:e,fetchOptions:r,inMemory:s=!1}){let{parentLocator:a,path:n}=G.parseFileStyleRange(t.reference,{protocol:e}),c=J.isAbsolute(n)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(a,r),f=c.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,c.localPath)}:c;c!==f&&c.releaseFs&&c.releaseFs();let p=f.packageFs,h=J.join(f.prefixPath,n);return await je.releaseAfterUseAsync(async()=>await ps.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:G.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:s}),f.releaseFs)}async function Wq(t,{protocol:e,fetchOptions:r}){return(await cF(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var gS=class{supports(e,r){return!!e.reference.startsWith(es)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:es});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){return cF(e,{protocol:es,fetchOptions:r})}};Ge();Ge();var cut=2,dS=class{supportsDescriptor(e,r){return e.range.match(tw)?!0:!!e.range.startsWith(es)}supportsLocator(e,r){return!!e.reference.startsWith(es)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return tw.test(e.range)&&(e=G.makeDescriptor(e,`${es}${e.range}`)),G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=pS(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await Wq(G.makeLocator(e,G.makeRange({protocol:es,source:a,selector:a,params:{locator:G.stringifyLocator(n)}})),{protocol:es,fetchOptions:s.fetchOptions}),f=Nn.makeHash(`${cut}`,c).slice(0,6);return[rw(e,{parentLocator:n,path:a,hash:f,protocol:es})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};Ge();var mS=class{supports(e,r){return AS.test(e.reference)?!!e.reference.startsWith(es):!1}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:c}}async fetchFromDisk(e,r){let s=await hS(e,r);return await ps.convertToZip(s,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}};Ge();Ge();Ge();var yS=class{supportsDescriptor(e,r){return AS.test(e.range)?!!(e.range.startsWith(es)||tw.test(e.range)):!1}supportsLocator(e,r){return AS.test(e.reference)?!!e.reference.startsWith(es):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return tw.test(e.range)&&(e=G.makeDescriptor(e,`${es}${e.range}`)),G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=pS(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=rw(e,{parentLocator:n,path:a,hash:"",protocol:es}),f=await hS(c,s.fetchOptions),p=Nn.makeHash(f).slice(0,6);return[rw(e,{parentLocator:n,path:a,hash:p,protocol:es})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var uut={fetchers:[mS,gS],resolvers:[yS,dS]},fut=uut;var Kq={};Vt(Kq,{GithubFetcher:()=>ES,default:()=>put,githubUtils:()=>uF});Ge();Dt();var uF={};Vt(uF,{invalidGithubUrlMessage:()=>TEe,isGithubUrl:()=>Vq,parseGithubUrl:()=>Jq});var kEe=ut(Ie("querystring")),QEe=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function Vq(t){return t?QEe.some(e=>!!t.match(e)):!1}function Jq(t){let e;for(let f of QEe)if(e=t.match(f),e)break;if(!e)throw new Error(TEe(t));let[,r,s,a,n="master"]=e,{commit:c}=kEe.default.parse(n);return n=c||n.replace(/[^:]*:/,""),{auth:r,username:s,reponame:a,treeish:n}}function TEe(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var ES=class{supports(e,r){return!!Vq(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s=await nn.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await ce.mktempPromise(async a=>{let n=new Sn(a);await ps.extractArchiveTo(s,n,{stripComponents:1});let c=ka.splitRepoUrl(e.reference),f=J.join(a,"package.tgz");await In.prepareExternalProject(a,f,{configuration:r.project.configuration,report:r.report,workspace:c.extra.workspace,locator:e});let p=await ce.readFilePromise(f);return await ps.convertToZip(p,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:s,username:a,reponame:n,treeish:c}=Jq(e.reference);return`https://${s?`${s}@`:""}github.com/${a}/${n}/archive/${c}.tar.gz`}};var Aut={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let s=new ES;if(!s.supports(e,r))return null;try{return await s.fetch(e,r)}catch{return null}}}},put=Aut;var zq={};Vt(zq,{TarballHttpFetcher:()=>CS,TarballHttpResolver:()=>wS,default:()=>gut});Ge();function IS(t){let e;try{e=new URL(t)}catch{return!1}return!(e.protocol!=="http:"&&e.protocol!=="https:"||!e.pathname.match(/(\.tar\.gz|\.tgz|\/[^.]+)$/))}var CS=class{supports(e,r){return IS(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s=await nn.get(e.reference,{configuration:r.project.configuration});return await ps.convertToZip(s,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}};Ge();Ge();var wS=class{supportsDescriptor(e,r){return IS(e.range)}supportsLocator(e,r){return IS(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){return[G.convertDescriptorToLocator(e)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var hut={fetchers:[CS],resolvers:[wS]},gut=hut;var Xq={};Vt(Xq,{InitCommand:()=>z0,InitInitializerCommand:()=>nw,default:()=>mut});Yt();Ge();Ge();Dt();Yt();var z0=class extends ft{constructor(){super(...arguments);this.private=ge.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=ge.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=ge.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.name=ge.String("-n,--name",{description:"Initialize a package with the given name"});this.usev2=ge.Boolean("-2",!1,{hidden:!0});this.yes=ge.Boolean("-y,--yes",{hidden:!0})}static{this.paths=[["init"]]}static{this.usage=ot.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return s!==null?await this.executeProxy(r,s):await this.executeRegular(r)}async executeProxy(r,s){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new nt("Cannot use the --install flag from within a project subdirectory");ce.existsSync(this.context.cwd)||await ce.mkdirPromise(this.context.cwd,{recursive:!0});let a=J.join(this.context.cwd,Er.lockfile);ce.existsSync(a)||await ce.writeFilePromise(a,"");let n=await this.cli.run(["set","version",s],{quiet:!0});if(n!==0)return n;let c=[];return this.private&&c.push("-p"),this.workspace&&c.push("-w"),this.name&&c.push(`-n=${this.name}`),this.yes&&c.push("-y"),await ce.mktempPromise(async f=>{let{code:p}=await qr.pipevp("yarn",["init",...c],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await In.makeScriptEnv({binFolder:f})});return p})}async initialize(){}async executeRegular(r){let s=null;try{s=(await Tt.find(r,this.context.cwd)).project}catch{s=null}ce.existsSync(this.context.cwd)||await ce.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Ut.tryFind(this.context.cwd),n=a??new Ut,c=Object.fromEntries(r.get("initFields").entries());n.load(c),n.name=n.name??G.makeIdent(r.get("initScope"),this.name??J.basename(this.context.cwd)),n.packageManager=fn&&je.isTaggedYarnVersion(fn)?`yarn@${fn}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await ce.mkdirPromise(J.join(this.context.cwd,"packages"),{recursive:!0}),n.workspaceDefinitions=[{pattern:"packages/*"}]);let f={};n.exportTo(f);let p=J.join(this.context.cwd,Ut.fileName);await ce.changeFilePromise(p,`${JSON.stringify(f,null,2)} -`,{automaticNewlines:!0});let h=[p],E=J.join(this.context.cwd,"README.md");if(ce.existsSync(E)||(await ce.writeFilePromise(E,`# ${G.stringifyIdent(n.name)} -`),h.push(E)),!s||s.cwd===this.context.cwd){let C=J.join(this.context.cwd,Er.lockfile);ce.existsSync(C)||(await ce.writeFilePromise(C,""),h.push(C));let P=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Whether you use PnP or not, the node_modules folder is often used to store","# build artifacts that should be gitignored","node_modules","","# Swap the comments on the following lines if you wish to use zero-installs","# In that case, don't forget to run `yarn config set enableGlobalCache false`!","# Documentation here: https://yarnpkg.com/features/caching#zero-installs","","#!.yarn/cache",".pnp.*"].map(ue=>`${ue} -`).join(""),I=J.join(this.context.cwd,".gitignore");ce.existsSync(I)||(await ce.writeFilePromise(I,P),h.push(I));let N=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(ue=>`${ue} -`).join(""),U=J.join(this.context.cwd,".gitattributes");ce.existsSync(U)||(await ce.writeFilePromise(U,N),h.push(U));let W={"*":{charset:"utf-8",endOfLine:"lf",indentSize:2,indentStyle:"space",insertFinalNewline:!0}};je.mergeIntoTarget(W,r.get("initEditorConfig"));let ee=`root = true -`;for(let[ue,le]of Object.entries(W)){ee+=` -[${ue}] -`;for(let[me,pe]of Object.entries(le)){let Be=me.replace(/[A-Z]/g,Ce=>`_${Ce.toLowerCase()}`);ee+=`${Be} = ${pe} -`}}let ie=J.join(this.context.cwd,".editorconfig");ce.existsSync(ie)||(await ce.writeFilePromise(ie,ee),h.push(ie)),await this.cli.run(["install"],{quiet:!0}),await this.initialize(),ce.existsSync(J.join(this.context.cwd,".git"))||(await qr.execvp("git",["init"],{cwd:this.context.cwd}),await qr.execvp("git",["add","--",...h],{cwd:this.context.cwd}),await qr.execvp("git",["commit","--allow-empty","-m","First commit"],{cwd:this.context.cwd}))}}};var nw=class extends z0{constructor(){super(...arguments);this.initializer=ge.String();this.argv=ge.Proxy()}static{this.paths=[["init"]]}async initialize(){this.context.stdout.write(` -`),await this.cli.run(["dlx",this.initializer,...this.argv],{quiet:!0})}};var dut={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[z0,nw]},mut=dut;var JW={};Vt(JW,{SearchCommand:()=>Iw,UpgradeInteractiveCommand:()=>Cw,default:()=>Dgt});Ge();var FEe=ut(Ie("os"));function iw({stdout:t}){if(FEe.default.endianness()==="BE")throw new Error("Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures");if(!t.isTTY)throw new Error("Interactive commands can only be used inside a TTY environment")}Yt();var YIe=ut(g9()),d9={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},hAt=(0,YIe.default)(d9.appId,d9.apiKey).initIndex(d9.indexName),m9=async(t,e=0)=>await hAt.search(t,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:e,hitsPerPage:10});var CD=["regular","dev","peer"],Iw=class extends ft{static{this.paths=[["search"]]}static{this.usage=ot.Usage({category:"Interactive commands",description:"open the search interface",details:` - This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry. - `,examples:[["Open the search window","yarn search"]]})}async execute(){iw(this.context);let{Gem:e}=await Promise.resolve().then(()=>(WF(),LW)),{ScrollableItems:r}=await Promise.resolve().then(()=>(KF(),JF)),{useKeypress:s}=await Promise.resolve().then(()=>(yD(),w2e)),{useMinistore:a}=await Promise.resolve().then(()=>(GW(),jW)),{renderForm:n}=await Promise.resolve().then(()=>($F(),ZF)),{default:c}=await Promise.resolve().then(()=>ut(T2e())),{Box:f,Text:p}=await Promise.resolve().then(()=>ut(Wc())),{default:h,useEffect:E,useState:C}=await Promise.resolve().then(()=>ut(hn())),S=await ze.find(this.context.cwd,this.context.plugins),P=()=>h.createElement(f,{flexDirection:"row"},h.createElement(f,{flexDirection:"column",width:48},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move between packages.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select a package.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," again to change the target."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to install the selected packages.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),I=()=>h.createElement(h.Fragment,null,h.createElement(f,{width:15},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Owner")),h.createElement(f,{width:11},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Version")),h.createElement(f,{width:10},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Downloads"))),R=()=>h.createElement(f,{width:17},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Target")),N=({hit:pe,active:Be})=>{let[Ce,g]=a(pe.name,null);s({active:Be},(Ae,se)=>{if(se.name!=="space")return;if(!Ce){g(CD[0]);return}let Z=CD.indexOf(Ce)+1;Z===CD.length?g(null):g(CD[Z])},[Ce,g]);let we=G.parseIdent(pe.name),ye=G.prettyIdent(S,we);return h.createElement(f,null,h.createElement(f,{width:45},h.createElement(p,{bold:!0,wrap:"wrap"},ye)),h.createElement(f,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:"truncate"},pe.owner.name)),h.createElement(f,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:"truncate"},pe.version)),h.createElement(f,{width:16,marginLeft:1},h.createElement(p,null,pe.humanDownloadsLast30Days)))},U=({name:pe,active:Be})=>{let[Ce]=a(pe,null),g=G.parseIdent(pe);return h.createElement(f,null,h.createElement(f,{width:47},h.createElement(p,{bold:!0}," - ",G.prettyIdent(S,g))),CD.map(we=>h.createElement(f,{key:we,width:14,marginLeft:1},h.createElement(p,null," ",h.createElement(e,{active:Ce===we})," ",h.createElement(p,{bold:!0},we)))))},W=()=>h.createElement(f,{marginTop:1},h.createElement(p,null,"Powered by Algolia.")),ie=await n(({useSubmit:pe})=>{let Be=a();pe(Be);let Ce=Array.from(Be.keys()).filter(j=>Be.get(j)!==null),[g,we]=C(""),[ye,Ae]=C(0),[se,Z]=C([]),De=j=>{j.match(/\t| /)||we(j)},Re=async()=>{Ae(0);let j=await m9(g);j.query===g&&Z(j.hits)},mt=async()=>{let j=await m9(g,ye+1);j.query===g&&j.page-1===ye&&(Ae(j.page),Z([...se,...j.hits]))};return E(()=>{g?Re():Z([])},[g]),h.createElement(f,{flexDirection:"column"},h.createElement(P,null),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(p,{bold:!0},"Search: "),h.createElement(f,{width:41},h.createElement(c,{value:g,onChange:De,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),h.createElement(I,null)),se.length?h.createElement(r,{radius:2,loop:!1,children:se.map(j=>h.createElement(N,{key:j.name,hit:j,active:!1})),willReachEnd:mt}):h.createElement(p,{color:"gray"},"Start typing..."),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(f,{width:49},h.createElement(p,{bold:!0},"Selected:")),h.createElement(R,null)),Ce.length?Ce.map(j=>h.createElement(U,{key:j,name:j,active:!1})):h.createElement(p,{color:"gray"},"No selected packages..."),h.createElement(W,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ie>"u")return 1;let ue=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="regular"),le=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="dev"),me=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="peer");return ue.length&&await this.cli.run(["add",...ue]),le.length&&await this.cli.run(["add","--dev",...le]),me&&await this.cli.run(["add","--peer",...me]),0}};Ge();Yt();YG();var U2e=ut(Ai()),M2e=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/;function _2e(t,e){return t.length>0?[t.slice(0,e)].concat(_2e(t.slice(e),e)):[]}var Cw=class extends ft{static{this.paths=[["upgrade-interactive"]]}static{this.usage=ot.Usage({category:"Interactive commands",description:"open the upgrade interface",details:` - This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade. - `,examples:[["Open the upgrade window","yarn upgrade-interactive"]]})}async execute(){iw(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(L2e(),O2e)),{Pad:r}=await Promise.resolve().then(()=>(VW(),N2e)),{ScrollableItems:s}=await Promise.resolve().then(()=>(KF(),JF)),{useMinistore:a}=await Promise.resolve().then(()=>(GW(),jW)),{renderForm:n}=await Promise.resolve().then(()=>($F(),ZF)),{Box:c,Text:f}=await Promise.resolve().then(()=>ut(Wc())),{default:p,useEffect:h,useRef:E,useState:C}=await Promise.resolve().then(()=>ut(hn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,this.context.cwd),R=await Kr.find(S);if(!I)throw new ar(P.cwd,this.context.cwd);await P.restoreInstallState({restoreResolutions:!1});let N=this.context.stdout.rows-7,U=(we,ye)=>{let Ae=mde(we,ye),se="";for(let Z of Ae)Z.added?se+=he.pretty(S,Z.value,"green"):Z.removed||(se+=Z.value);return se},W=(we,ye)=>{if(we===ye)return ye;let Ae=G.parseRange(we),se=G.parseRange(ye),Z=Ae.selector.match(M2e),De=se.selector.match(M2e);if(!Z||!De)return U(we,ye);let Re=["gray","red","yellow","green","magenta"],mt=null,j="";for(let rt=1;rt{let se=await Xu.fetchDescriptorFrom(we,Ae,{project:P,cache:R,preserveModifier:ye,workspace:I});return se!==null?se.range:we.range},ie=async we=>{let ye=U2e.default.valid(we.range)?`^${we.range}`:we.range,[Ae,se]=await Promise.all([ee(we,we.range,ye).catch(()=>null),ee(we,we.range,"latest").catch(()=>null)]),Z=[{value:null,label:we.range}];return Ae&&Ae!==we.range?Z.push({value:Ae,label:W(we.range,Ae)}):Z.push({value:null,label:""}),se&&se!==Ae&&se!==we.range?Z.push({value:se,label:W(we.range,se)}):Z.push({value:null,label:""}),Z},ue=()=>p.createElement(c,{flexDirection:"row"},p.createElement(c,{flexDirection:"column",width:49},p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},""),"/",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to select packages.")),p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},""),"/",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to select versions."))),p.createElement(c,{flexDirection:"column"},p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to install.")),p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to abort.")))),le=()=>p.createElement(c,{flexDirection:"row",paddingTop:1,paddingBottom:1},p.createElement(c,{width:50},p.createElement(f,{bold:!0},p.createElement(f,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:"gray"},"Current")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:"gray"},"Range")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:"gray"},"Latest"))),me=({active:we,descriptor:ye,suggestions:Ae})=>{let[se,Z]=a(ye.descriptorHash,null),De=G.stringifyIdent(ye),Re=Math.max(0,45-De.length);return p.createElement(p.Fragment,null,p.createElement(c,null,p.createElement(c,{width:45},p.createElement(f,{bold:!0},G.prettyIdent(S,ye)),p.createElement(r,{active:we,length:Re})),p.createElement(e,{active:we,options:Ae,value:se,skewer:!0,onChange:Z,sizes:[17,17,17]})))},pe=({dependencies:we})=>{let[ye,Ae]=C(we.map(()=>null)),se=E(!0),Z=async De=>{let Re=await ie(De);return Re.filter(mt=>mt.label!=="").length<=1?null:{descriptor:De,suggestions:Re}};return h(()=>()=>{se.current=!1},[]),h(()=>{let De=Math.trunc(N*1.75),Re=we.slice(0,De),mt=we.slice(De),j=_2e(mt,N),rt=Re.map(Z).reduce(async(Fe,Ne)=>{await Fe;let Pe=await Ne;Pe!==null&&se.current&&Ae(Ve=>{let ke=Ve.findIndex(Ue=>Ue===null),it=[...Ve];return it[ke]=Pe,it})},Promise.resolve());j.reduce((Fe,Ne)=>Promise.all(Ne.map(Pe=>Promise.resolve().then(()=>Z(Pe)))).then(async Pe=>{Pe=Pe.filter(Ve=>Ve!==null),await Fe,se.current&&Ae(Ve=>{let ke=Ve.findIndex(it=>it===null);return Ve.slice(0,ke).concat(Pe).concat(Ve.slice(ke+Pe.length))})}),rt).then(()=>{se.current&&Ae(Fe=>Fe.filter(Ne=>Ne!==null))})},[]),ye.length?p.createElement(s,{radius:N>>1,children:ye.map((De,Re)=>De!==null?p.createElement(me,{key:Re,active:!1,descriptor:De.descriptor,suggestions:De.suggestions}):p.createElement(f,{key:Re},"Loading..."))}):p.createElement(f,null,"No upgrades found")},Ce=await n(({useSubmit:we})=>{we(a());let ye=new Map;for(let se of P.workspaces)for(let Z of["dependencies","devDependencies"])for(let De of se.manifest[Z].values())P.tryWorkspaceByDescriptor(De)===null&&(De.range.startsWith("link:")||ye.set(De.descriptorHash,De));let Ae=je.sortMap(ye.values(),se=>G.stringifyDescriptor(se));return p.createElement(c,{flexDirection:"column"},p.createElement(ue,null),p.createElement(le,null),p.createElement(pe,{dependencies:Ae}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof Ce>"u")return 1;let g=!1;for(let we of P.workspaces)for(let ye of["dependencies","devDependencies"]){let Ae=we.manifest[ye];for(let se of Ae.values()){let Z=Ce.get(se.descriptorHash);typeof Z<"u"&&Z!==null&&(Ae.set(se.identHash,G.makeDescriptor(se,Z)),g=!0)}}return g?await P.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:R}):0}};var Sgt={commands:[Iw,Cw]},Dgt=Sgt;var zW={};Vt(zW,{default:()=>kgt});Ge();var BD="jsr:";Ge();Ge();function ww(t){let e=t.range.slice(4);if(Fr.validRange(e))return G.makeDescriptor(t,`npm:${G.stringifyIdent(G.wrapIdentIntoScope(t,"jsr"))}@${e}`);let r=G.tryParseDescriptor(e,!0);if(r!==null)return G.makeDescriptor(t,`npm:${G.stringifyIdent(G.wrapIdentIntoScope(r,"jsr"))}@${r.range}`);throw new Error(`Invalid range: ${t.range}`)}function Bw(t){return G.makeLocator(G.wrapIdentIntoScope(t,"jsr"),`npm:${t.reference.slice(4)}`)}function KW(t){return G.makeLocator(G.unwrapIdentFromScope(t,"jsr"),`jsr:${t.reference.slice(4)}`)}var eN=class{supports(e,r){return e.reference.startsWith(BD)}getLocalPath(e,r){let s=Bw(e);return r.fetcher.getLocalPath(s,r)}fetch(e,r){let s=Bw(e);return r.fetcher.fetch(s,r)}};var tN=class{supportsDescriptor(e,r){return!!e.range.startsWith(BD)}supportsLocator(e,r){return!!e.reference.startsWith(BD)}shouldPersistResolution(e,r){let s=Bw(e);return r.resolver.shouldPersistResolution(s,r)}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{inner:ww(e)}}async getCandidates(e,r,s){let a=s.project.configuration.normalizeDependency(ww(e));return(await s.resolver.getCandidates(a,r,s)).map(c=>KW(c))}async getSatisfying(e,r,s,a){let n=a.project.configuration.normalizeDependency(ww(e));return a.resolver.getSatisfying(n,r,s,a)}async resolve(e,r){let s=Bw(e),a=await r.resolver.resolve(s,r);return{...a,...KW(a)}}};var bgt=["dependencies","devDependencies","peerDependencies"];function Pgt(t,e){for(let r of bgt)for(let s of t.manifest.getForScope(r).values()){if(!s.range.startsWith("jsr:"))continue;let a=ww(s),n=r==="dependencies"?G.makeDescriptor(s,"unknown"):null,c=n!==null&&t.manifest.ensureDependencyMeta(n).optional?"optionalDependencies":r;e[c][G.stringifyIdent(s)]=a.range}}var xgt={hooks:{beforeWorkspacePacking:Pgt},resolvers:[tN],fetchers:[eN]},kgt=xgt;var XW={};Vt(XW,{LinkFetcher:()=>vD,LinkResolver:()=>SD,PortalFetcher:()=>DD,PortalResolver:()=>bD,default:()=>Tgt});Ge();Dt();var rh="portal:",nh="link:";var vD=class{supports(e,r){return!!e.reference.startsWith(nh)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:nh});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:nh}),n=J.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Sn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new Hf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0}}};Ge();Dt();var SD=class{supportsDescriptor(e,r){return!!e.range.startsWith(nh)}supportsLocator(e,r){return!!e.reference.startsWith(nh)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(nh.length);return[G.makeLocator(e,`${nh}${fe.toPortablePath(a)}`)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){return{...e,version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};Ge();Dt();var DD=class{supports(e,r){return!!e.reference.startsWith(rh)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:rh});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:rh}),n=J.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Sn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,localPath:p}:{packageFs:new Hf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot}}};Ge();Ge();Dt();var bD=class{supportsDescriptor(e,r){return!!e.range.startsWith(rh)}supportsLocator(e,r){return!!e.reference.startsWith(rh)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(rh.length);return[G.makeLocator(e,`${rh}${fe.toPortablePath(a)}`)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Qgt={fetchers:[vD,DD],resolvers:[SD,bD]},Tgt=Qgt;var FY={};Vt(FY,{NodeModulesLinker:()=>jD,NodeModulesMode:()=>kY,PnpLooseLinker:()=>GD,default:()=>Kdt});Dt();Ge();Dt();Dt();var $W=(t,e)=>`${t}@${e}`,H2e=(t,e)=>{let r=e.indexOf("#"),s=r>=0?e.substring(r+1):e;return $W(t,s)};var G2e=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),s=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:s,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},c;n.debugLevel>=0&&(c=Date.now());let f=Ugt(t,n),p=!1,h=0;do{let E=eY(f,[f],new Set([f.locator]),new Map,n);p=E.anotherRoundNeeded||E.isGraphChanged,n.fastLookupPossible=!1,h++}while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-c}ms, rounds: ${h}`),n.debugLevel>=1){let E=PD(f);if(eY(f,[f],new Set([f.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: -${E}, next tree: -${PD(f)}`);let S=q2e(f);if(S)throw new Error(`${S}, after hoisting finished: -${PD(f)}`)}return n.debugLevel>=2&&console.log(PD(f)),_gt(f)},Rgt=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=n=>{if(!s.has(n)){s.add(n);for(let c of n.hoistedDependencies.values())r.set(c.name,c);for(let c of n.dependencies.values())n.peerNames.has(c.name)||a(c)}};return a(e),r},Fgt=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=new Set,n=(c,f)=>{if(s.has(c))return;s.add(c);for(let h of c.hoistedDependencies.values())if(!f.has(h.name)){let E;for(let C of t)E=C.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of c.dependencies.values())p.add(h.name);for(let h of c.dependencies.values())c.peerNames.has(h.name)||n(h,p)};return n(e,a),r},j2e=(t,e)=>{if(e.decoupled)return e;let{name:r,references:s,ident:a,locator:n,dependencies:c,originalDependencies:f,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:C,hoistPriority:S,dependencyKind:P,hoistedFrom:I,hoistedTo:R}=e,N={name:r,references:new Set(s),ident:a,locator:n,dependencies:new Map(c),originalDependencies:new Map(f),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:C,hoistPriority:S,dependencyKind:P,hoistedFrom:new Map(I),hoistedTo:new Map(R)},U=N.dependencies.get(r);return U&&U.ident==N.ident&&N.dependencies.set(r,N),t.dependencies.set(N.name,N),N},Ngt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let s=Array.from(e.keys());s.sort((a,n)=>{let c=e.get(a),f=e.get(n);if(f.hoistPriority!==c.hoistPriority)return f.hoistPriority-c.hoistPriority;{let p=c.dependents.size+c.peerDependents.size;return f.dependents.size+f.peerDependents.size-p}});for(let a of s){let n=a.substring(0,a.indexOf("@",1)),c=a.substring(n.length+1);if(!t.peerNames.has(n)){let f=r.get(n);f||(f=[],r.set(n,f)),f.indexOf(c)<0&&f.push(c)}}return r},ZW=t=>{let e=new Set,r=(s,a=new Set)=>{if(!a.has(s)){a.add(s);for(let n of s.peerNames)if(!t.peerNames.has(n)){let c=t.dependencies.get(n);c&&!e.has(c)&&r(c,a)}e.add(s)}};for(let s of t.dependencies.values())t.peerNames.has(s.name)||r(s);return e},eY=(t,e,r,s,a,n=new Set)=>{let c=e[e.length-1];if(n.has(c))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(c);let f=Hgt(c),p=Ngt(c,f),h=t==c?new Map:a.fastLookupPossible?Rgt(e):Fgt(e),E,C=!1,S=!1,P=new Map(Array.from(p.entries()).map(([R,N])=>[R,N[0]])),I=new Map;do{let R=Mgt(t,e,r,h,P,p,s,I,a);R.isGraphChanged&&(S=!0),R.anotherRoundNeeded&&(C=!0),E=!1;for(let[N,U]of p)U.length>1&&!c.dependencies.has(N)&&(P.delete(N),U.shift(),P.set(N,U[0]),E=!0)}while(E);for(let R of c.dependencies.values())if(!c.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let N=eY(t,[...e,R],r,I,a);N.isGraphChanged&&(S=!0),N.anotherRoundNeeded&&(C=!0),r.delete(R.locator)}return{anotherRoundNeeded:C,isGraphChanged:S}},Ogt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},Lgt=(t,e,r,s,a,n,c,f,{outputReason:p,fastLookupPossible:h})=>{let E,C=null,S=new Set;p&&(E=`${Array.from(e).map(N=>yo(N)).join("\u2192")}`);let P=r[r.length-1],R=!(s.ident===P.ident);if(p&&!R&&(C="- self-reference"),R&&(R=s.dependencyKind!==1,p&&!R&&(C="- workspace")),R&&s.dependencyKind===2&&(R=!Ogt(s),p&&!R&&(C="- external soft link with unhoisted dependencies")),R&&(R=!t.peerNames.has(s.name),p&&!R&&(C=`- cannot shadow peer: ${yo(t.originalDependencies.get(s.name).locator)} at ${E}`)),R){let N=!1,U=a.get(s.name);if(N=!U||U.ident===s.ident,p&&!N&&(C=`- filled by: ${yo(U.locator)} at ${E}`),N)for(let W=r.length-1;W>=1;W--){let ie=r[W].dependencies.get(s.name);if(ie&&ie.ident!==s.ident){N=!1;let ue=f.get(P);ue||(ue=new Set,f.set(P,ue)),ue.add(s.name),p&&(C=`- filled by ${yo(ie.locator)} at ${r.slice(0,W).map(le=>yo(le.locator)).join("\u2192")}`);break}}R=N}if(R&&(R=n.get(s.name)===s.ident,p&&!R&&(C=`- filled by: ${yo(c.get(s.name)[0])} at ${E}`)),R){let N=!0,U=new Set(s.peerNames);for(let W=r.length-1;W>=1;W--){let ee=r[W];for(let ie of U){if(ee.peerNames.has(ie)&&ee.originalDependencies.has(ie))continue;let ue=ee.dependencies.get(ie);ue&&t.dependencies.get(ie)!==ue&&(W===r.length-1?S.add(ue):(S=null,N=!1,p&&(C=`- peer dependency ${yo(ue.locator)} from parent ${yo(ee.locator)} was not hoisted to ${E}`))),U.delete(ie)}if(!N)break}R=N}if(R&&!h)for(let N of s.hoistedDependencies.values()){let U=a.get(N.name)||t.dependencies.get(N.name);if(!U||N.ident!==U.ident){R=!1,p&&(C=`- previously hoisted dependency mismatch, needed: ${yo(N.locator)}, available: ${yo(U?.locator)}`);break}}return S!==null&&S.size>0?{isHoistable:2,dependsOn:S,reason:C}:{isHoistable:R?0:1,reason:C}},rN=t=>`${t.name}@${t.locator}`,Mgt=(t,e,r,s,a,n,c,f,p)=>{let h=e[e.length-1],E=new Set,C=!1,S=!1,P=(U,W,ee,ie,ue)=>{if(E.has(ie))return;let le=[...W,rN(ie)],me=[...ee,rN(ie)],pe=new Map,Be=new Map;for(let Ae of ZW(ie)){let se=Lgt(h,r,[h,...U,ie],Ae,s,a,n,f,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Be.set(Ae,se),se.isHoistable===2)for(let Z of se.dependsOn){let De=pe.get(Z.name)||new Set;De.add(Ae.name),pe.set(Z.name,De)}}let Ce=new Set,g=(Ae,se,Z)=>{if(!Ce.has(Ae)){Ce.add(Ae),Be.set(Ae,{isHoistable:1,reason:Z});for(let De of pe.get(Ae.name)||[])g(ie.dependencies.get(De),se,p.debugLevel>=2?`- peer dependency ${yo(Ae.locator)} from parent ${yo(ie.locator)} was not hoisted`:"")}};for(let[Ae,se]of Be)se.isHoistable===1&&g(Ae,se,se.reason);let we=!1;for(let Ae of Be.keys())if(!Ce.has(Ae)){S=!0;let se=c.get(ie);se&&se.has(Ae.name)&&(C=!0),we=!0,ie.dependencies.delete(Ae.name),ie.hoistedDependencies.set(Ae.name,Ae),ie.reasons.delete(Ae.name);let Z=h.dependencies.get(Ae.name);if(p.debugLevel>=2){let De=Array.from(W).concat([ie.locator]).map(mt=>yo(mt)).join("\u2192"),Re=h.hoistedFrom.get(Ae.name);Re||(Re=[],h.hoistedFrom.set(Ae.name,Re)),Re.push(De),ie.hoistedTo.set(Ae.name,Array.from(e).map(mt=>yo(mt.locator)).join("\u2192"))}if(!Z)h.ident!==Ae.ident&&(h.dependencies.set(Ae.name,Ae),ue.add(Ae));else for(let De of Ae.references)Z.references.add(De)}if(ie.dependencyKind===2&&we&&(C=!0),p.check){let Ae=q2e(t);if(Ae)throw new Error(`${Ae}, after hoisting dependencies of ${[h,...U,ie].map(se=>yo(se.locator)).join("\u2192")}: -${PD(t)}`)}let ye=ZW(ie);for(let Ae of ye)if(Ce.has(Ae)){let se=Be.get(Ae);if((a.get(Ae.name)===Ae.ident||!ie.reasons.has(Ae.name))&&se.isHoistable!==0&&ie.reasons.set(Ae.name,se.reason),!Ae.isHoistBorder&&me.indexOf(rN(Ae))<0){E.add(ie);let De=j2e(ie,Ae);P([...U,ie],le,me,De,R),E.delete(ie)}}},I,R=new Set(ZW(h)),N=Array.from(e).map(U=>rN(U));do{I=R,R=new Set;for(let U of I){if(U.locator===h.locator||U.isHoistBorder)continue;let W=j2e(h,U);P([],Array.from(r),N,W,R)}}while(R.size>0);return{anotherRoundNeeded:C,isGraphChanged:S}},q2e=t=>{let e=[],r=new Set,s=new Set,a=(n,c,f)=>{if(r.has(n)||(r.add(n),s.has(n)))return;let p=new Map(c);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),C=()=>`${Array.from(s).concat([n]).map(S=>yo(S.locator)).join("\u2192")}`;if(n.peerNames.has(h.name)){let S=c.get(h.name);(S!==E||!S||S.ident!==h.ident)&&e.push(`${C()} - broken peer promise: expected ${h.ident} but found ${S&&S.ident}`)}else{let S=f.hoistedFrom.get(n.name),P=n.hoistedTo.get(h.name),I=`${S?` hoisted from ${S.join(", ")}`:""}`,R=`${P?` hoisted to ${P}`:""}`,N=`${C()}${I}`;E?E.ident!==h.ident&&e.push(`${N} - broken require promise for ${h.name}${R}: expected ${h.ident}, but found: ${E.ident}`):e.push(`${N} - broken require promise: no required dependency ${h.name}${R} found`)}}s.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);s.delete(n)};return a(t,t.dependencies,t),e.join(` -`)},Ugt=(t,e)=>{let{identName:r,name:s,reference:a,peerNames:n}=t,c={name:s,references:new Set([a]),locator:$W(r,a),ident:H2e(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},f=new Map([[t,c]]),p=(h,E)=>{let C=f.get(h),S=!!C;if(!C){let{name:P,identName:I,reference:R,peerNames:N,hoistPriority:U,dependencyKind:W}=h,ee=e.hoistingLimits.get(E.locator);C={name:P,references:new Set([R]),locator:$W(I,R),ident:H2e(I,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(N),reasons:new Map,decoupled:!0,isHoistBorder:ee?ee.has(P):!1,hoistPriority:U||0,dependencyKind:W||0,hoistedFrom:new Map,hoistedTo:new Map},f.set(h,C)}if(E.dependencies.set(h.name,C),E.originalDependencies.set(h.name,C),S){let P=new Set,I=R=>{if(!P.has(R)){P.add(R),R.decoupled=!1;for(let N of R.dependencies.values())R.peerNames.has(N.name)||I(N)}};I(C)}else for(let P of h.dependencies)p(P,C)};for(let h of t.dependencies)p(h,c);return c},tY=t=>t.substring(0,t.indexOf("@",1)),_gt=t=>{let e={name:t.name,identName:tY(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),s=(a,n,c)=>{let f=r.has(a),p;if(n===a)p=c;else{let{name:h,references:E,locator:C}=a;p={name:h,identName:tY(C),references:E,dependencies:new Set}}if(c.dependencies.add(p),!f){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||s(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())s(a,t,e);return e},Hgt=t=>{let e=new Map,r=new Set([t]),s=c=>`${c.name}@${c.ident}`,a=c=>{let f=s(c),p=e.get(f);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(f,p)),p},n=(c,f)=>{let p=!!r.has(f);if(a(f).dependents.add(c.ident),!p){r.add(f);for(let E of f.dependencies.values()){let C=a(E);C.hoistPriority=Math.max(C.hoistPriority,E.hoistPriority),f.peerNames.has(E.name)?C.peerDependents.add(f.ident):n(f,E)}}};for(let c of t.dependencies.values())t.peerNames.has(c.name)||n(t,c);return e},yo=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let s=t.substring(e+1);if(s==="workspace:.")return".";if(s){let a=(s.indexOf("#")>0?s.split("#")[1]:s).replace("npm:","");return s.startsWith("virtual")&&(r=`v:${r}`),a.startsWith("workspace")&&(r=`w:${r}`,a=""),`${r}${a?`@${a}`:""}`}else return`${r}`};var PD=t=>{let e=0,r=(a,n,c="")=>{if(e>5e4||n.has(a))return"";e++;let f=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p="";n.add(a);for(let h=0;h":"")+(S!==E.name?`a:${E.name}:`:"")+yo(E.locator)+(C?` ${C}`:"")} -`,p+=r(E,n,`${c}${h5e4?` -Tree is too large, part of the tree has been dunped -`:"")};var xD=(s=>(s.WORKSPACES="workspaces",s.DEPENDENCIES="dependencies",s.NONE="none",s))(xD||{}),W2e="node_modules",rg="$wsroot$";var kD=(t,e)=>{let{packageTree:r,hoistingLimits:s,errors:a,preserveSymlinksRequired:n}=Ggt(t,e),c=null;if(a.length===0){let f=G2e(r,{hoistingLimits:s});c=Wgt(t,f,e)}return{tree:c,errors:a,preserveSymlinksRequired:n}},pA=t=>`${t.name}@${t.reference}`,nY=t=>{let e=new Map;for(let[r,s]of t.entries())if(!s.dirList){let a=e.get(s.locator);a||(a={target:s.target,linkType:s.linkType,locations:[],aliases:s.aliases},e.set(s.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((s,a)=>{let n=s.split(J.delimiter).length,c=a.split(J.delimiter).length;return a===s?0:n!==c?c-n:a>s?1:-1});return e},Y2e=(t,e)=>{let r=G.isVirtualLocator(t)?G.devirtualizeLocator(t):t,s=G.isVirtualLocator(e)?G.devirtualizeLocator(e):e;return G.areLocatorsEqual(r,s)},rY=(t,e,r,s)=>{if(t.linkType!=="SOFT")return!1;let a=fe.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return J.contains(s,a)===null},jgt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let s=fe.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},c=t.getDependencyTreeRoots(),f=new Map,p=new Set,h=(S,P)=>{let I=pA(S);if(p.has(I))return;p.add(I);let R=t.getPackageInformation(S);if(R){let N=P?pA(P):"";if(pA(S)!==N&&R.linkType==="SOFT"&&!S.reference.startsWith("link:")&&!rY(R,S,t,s)){let U=V2e(R,S,t);(!f.get(U)||S.reference.startsWith("workspace:"))&&f.set(U,S)}for(let[U,W]of R.packageDependencies)W!==null&&(R.packagePeers.has(U)||h(t.getLocator(U,W),S))}};for(let S of c)h(S,null);let E=s.split(J.sep);for(let S of f.values()){let P=t.getPackageInformation(S),R=fe.toPortablePath(P.packageLocation.slice(0,-1)).split(J.sep).slice(E.length),N=n;for(let U of R){let W=N.children.get(U);W||(W={children:new Map},N.children.set(U,W)),N=W}N.workspaceLocator=S}let C=(S,P)=>{if(S.workspaceLocator){let I=pA(P),R=a.get(I);R||(R=new Set,a.set(I,R)),R.add(S.workspaceLocator)}for(let I of S.children.values())C(I,S.workspaceLocator||P)};for(let S of n.children.values())C(S,n.workspaceLocator);return a},Ggt=(t,e)=>{let r=[],s=!1,a=new Map,n=jgt(t),c=t.getPackageInformation(t.topLevel);if(c===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let f=t.findPackageLocator(c.packageLocation);if(f===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let p=fe.toPortablePath(c.packageLocation.slice(0,-1)),h={name:f.name,identName:f.name,reference:f.reference,peerNames:c.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,C=(P,I)=>`${pA(I)}:${P}`,S=(P,I,R,N,U,W,ee,ie)=>{let ue=C(P,R),le=E.get(ue),me=!!le;!me&&R.name===f.name&&R.reference===f.reference&&(le=h,E.set(ue,h));let pe=rY(I,R,t,p);if(!le){let Ae=0;pe?Ae=2:I.linkType==="SOFT"&&R.name.endsWith(rg)&&(Ae=1),le={name:P,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:Ae===1?new Set:I.packagePeers,dependencyKind:Ae},E.set(ue,le)}let Be;if(pe?Be=2:U.linkType==="SOFT"?Be=1:Be=0,le.hoistPriority=Math.max(le.hoistPriority||0,Be),ie&&!pe){let Ae=pA({name:N.identName,reference:N.reference}),se=a.get(Ae)||new Set;a.set(Ae,se),se.add(le.name)}let Ce=new Map(I.packageDependencies);if(e.project){let Ae=e.project.workspacesByCwd.get(fe.toPortablePath(I.packageLocation.slice(0,-1)));if(Ae){let se=new Set([...Array.from(Ae.manifest.peerDependencies.values(),Z=>G.stringifyIdent(Z)),...Array.from(Ae.manifest.peerDependenciesMeta.keys())]);for(let Z of se)Ce.has(Z)||(Ce.set(Z,W.get(Z)||null),le.peerNames.add(Z))}}let g=pA({name:R.name.replace(rg,""),reference:R.reference}),we=n.get(g);if(we)for(let Ae of we)Ce.set(`${Ae.name}${rg}`,Ae.reference);(I!==U||I.linkType!=="SOFT"||!pe&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(ee)))&&N.dependencies.add(le);let ye=R!==f&&I.linkType==="SOFT"&&!R.name.endsWith(rg)&&!pe;if(!me&&!ye){let Ae=new Map;for(let[se,Z]of Ce)if(Z!==null){let De=t.getLocator(se,Z),Re=t.getLocator(se.replace(rg,""),Z),mt=t.getPackageInformation(Re);if(mt===null)throw new Error("Assertion failed: Expected the package to have been registered");let j=rY(mt,De,t,p);if(e.validateExternalSoftLinks&&e.project&&j){mt.packageDependencies.size>0&&(s=!0);for(let[Ve,ke]of mt.packageDependencies)if(ke!==null){let it=G.parseLocator(Array.isArray(ke)?`${ke[0]}@${ke[1]}`:`${Ve}@${ke}`);if(pA(it)!==pA(De)){let Ue=Ce.get(Ve);if(Ue){let x=G.parseLocator(Array.isArray(Ue)?`${Ue[0]}@${Ue[1]}`:`${Ve}@${Ue}`);Y2e(x,it)||r.push({messageName:71,text:`Cannot link ${G.prettyIdent(e.project.configuration,G.parseIdent(De.name))} into ${G.prettyLocator(e.project.configuration,G.parseLocator(`${R.name}@${R.reference}`))} dependency ${G.prettyLocator(e.project.configuration,it)} conflicts with parent dependency ${G.prettyLocator(e.project.configuration,x)}`})}else{let x=Ae.get(Ve);if(x){let w=x.target,b=G.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${Ve}@${w}`);Y2e(b,it)||r.push({messageName:71,text:`Cannot link ${G.prettyIdent(e.project.configuration,G.parseIdent(De.name))} into ${G.prettyLocator(e.project.configuration,G.parseLocator(`${R.name}@${R.reference}`))} dependency ${G.prettyLocator(e.project.configuration,it)} conflicts with dependency ${G.prettyLocator(e.project.configuration,b)} from sibling portal ${G.prettyIdent(e.project.configuration,G.parseIdent(x.portal.name))}`})}else Ae.set(Ve,{target:it.reference,portal:De})}}}}let rt=e.hoistingLimitsByCwd?.get(ee),Fe=j?ee:J.relative(p,fe.toPortablePath(mt.packageLocation))||vt.dot,Ne=e.hoistingLimitsByCwd?.get(Fe);S(se,mt,De,le,I,Ce,Fe,rt==="dependencies"||Ne==="dependencies"||Ne==="workspaces")}}};return S(f.name,c,f,h,c,c.packageDependencies,vt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:s}};function V2e(t,e,r){let s=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return fe.toPortablePath(s||t.packageLocation)}function qgt(t,e,r){let s=e.getLocator(t.name.replace(rg,""),t.reference),a=e.getPackageInformation(s);if(a===null)throw new Error("Assertion failed: Expected the package to be registered");return r.pnpifyFs?{linkType:"SOFT",target:fe.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:V2e(a,t,e)}}var Wgt=(t,e,r)=>{let s=new Map,a=(E,C,S)=>{let{linkType:P,target:I}=qgt(E,t,r);return{locator:pA(E),nodePath:C,target:I,linkType:P,aliases:S}},n=E=>{let[C,S]=E.split("/");return S?{scope:C,name:S}:{scope:null,name:C}},c=new Set,f=(E,C,S)=>{if(c.has(E))return;c.add(E);let P=Array.from(E.references).sort().join("#");for(let I of E.dependencies){let R=Array.from(I.references).sort().join("#");if(I.identName===E.identName.replace(rg,"")&&R===P)continue;let N=Array.from(I.references).sort(),U={name:I.identName,reference:N[0]},{name:W,scope:ee}=n(I.name),ie=ee?[ee,W]:[W],ue=J.join(C,W2e),le=J.join(ue,...ie),me=`${S}/${U.name}`,pe=a(U,S,N.slice(1)),Be=!1;if(pe.linkType==="SOFT"&&r.project){let Ce=r.project.workspacesByCwd.get(pe.target.slice(0,-1));Be=!!(Ce&&!Ce.manifest.name)}if(!I.name.endsWith(rg)&&!Be){let Ce=s.get(le);if(Ce){if(Ce.dirList)throw new Error(`Assertion failed: ${le} cannot merge dir node with leaf node`);{let ye=G.parseLocator(Ce.locator),Ae=G.parseLocator(pe.locator);if(Ce.linkType!==pe.linkType)throw new Error(`Assertion failed: ${le} cannot merge nodes with different link types ${Ce.nodePath}/${G.stringifyLocator(ye)} and ${S}/${G.stringifyLocator(Ae)}`);if(ye.identHash!==Ae.identHash)throw new Error(`Assertion failed: ${le} cannot merge nodes with different idents ${Ce.nodePath}/${G.stringifyLocator(ye)} and ${S}/s${G.stringifyLocator(Ae)}`);pe.aliases=[...pe.aliases,...Ce.aliases,G.parseLocator(Ce.locator).reference]}}s.set(le,pe);let g=le.split("/"),we=g.indexOf(W2e);for(let ye=g.length-1;we>=0&&ye>we;ye--){let Ae=fe.toPortablePath(g.slice(0,ye).join(J.sep)),se=g[ye],Z=s.get(Ae);if(!Z)s.set(Ae,{dirList:new Set([se])});else if(Z.dirList){if(Z.dirList.has(se))break;Z.dirList.add(se)}}}f(I,pe.linkType==="SOFT"?pe.target:le,me)}},p=a({name:e.name,reference:Array.from(e.references)[0]},"",[]),h=p.target;return s.set(h,p),f(e,h,""),s};Ge();Ge();Dt();Dt();eA();wc();var wY={};Vt(wY,{PnpInstaller:()=>Gm,PnpLinker:()=>sg,UnplugCommand:()=>Sw,default:()=>Cdt,getPnpPath:()=>og,jsInstallUtils:()=>gA,pnpUtils:()=>HD,quotePathIfNeeded:()=>QBe});Dt();var kBe=Ie("url");Ge();Ge();Dt();Dt();var J2e={DEFAULT:{collapsed:!1,next:{"*":"DEFAULT"}},TOP_LEVEL:{collapsed:!1,next:{fallbackExclusionList:"FALLBACK_EXCLUSION_LIST",packageRegistryData:"PACKAGE_REGISTRY_DATA","*":"DEFAULT"}},FALLBACK_EXCLUSION_LIST:{collapsed:!1,next:{"*":"FALLBACK_EXCLUSION_ENTRIES"}},FALLBACK_EXCLUSION_ENTRIES:{collapsed:!0,next:{"*":"FALLBACK_EXCLUSION_DATA"}},FALLBACK_EXCLUSION_DATA:{collapsed:!0,next:{"*":"DEFAULT"}},PACKAGE_REGISTRY_DATA:{collapsed:!1,next:{"*":"PACKAGE_REGISTRY_ENTRIES"}},PACKAGE_REGISTRY_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_STORE_DATA"}},PACKAGE_STORE_DATA:{collapsed:!1,next:{"*":"PACKAGE_STORE_ENTRIES"}},PACKAGE_STORE_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_INFORMATION_DATA"}},PACKAGE_INFORMATION_DATA:{collapsed:!1,next:{packageDependencies:"PACKAGE_DEPENDENCIES","*":"DEFAULT"}},PACKAGE_DEPENDENCIES:{collapsed:!1,next:{"*":"PACKAGE_DEPENDENCY"}},PACKAGE_DEPENDENCY:{collapsed:!0,next:{"*":"DEFAULT"}}};function Ygt(t,e,r){let s="";s+="[";for(let a=0,n=t.length;a"u"||(f!==0&&(a+=", "),a+=JSON.stringify(p),a+=": ",a+=nN(p,h,e,r).replace(/^ +/g,""),f+=1)}return a+="}",a}function Kgt(t,e,r){let s=Object.keys(t),a=`${r} `,n="";n+=r,n+=`{ -`;let c=0;for(let f=0,p=s.length;f"u"||(c!==0&&(n+=",",n+=` -`),n+=a,n+=JSON.stringify(h),n+=": ",n+=nN(h,E,e,a).replace(/^ +/g,""),c+=1)}return c!==0&&(n+=` -`),n+=r,n+="}",n}function nN(t,e,r,s){let{next:a}=J2e[r],n=a[t]||a["*"];return K2e(e,n,s)}function K2e(t,e,r){let{collapsed:s}=J2e[e];return Array.isArray(t)?s?Ygt(t,e,r):Vgt(t,e,r):typeof t=="object"&&t!==null?s?Jgt(t,e,r):Kgt(t,e,r):JSON.stringify(t)}function z2e(t){return K2e(t,"TOP_LEVEL","")}function QD(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];for(let n of e)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function zgt(t){let e=new Map,r=QD(t.fallbackExclusionList||[],[({name:s,reference:a})=>s,({name:s,reference:a})=>a]);for(let{name:s,reference:a}of r){let n=e.get(s);typeof n>"u"&&e.set(s,n=new Set),n.add(a)}return Array.from(e).map(([s,a])=>[s,Array.from(a)])}function Xgt(t){return QD(t.fallbackPool||[],([e])=>e)}function Zgt(t){let e=[],r=t.dependencyTreeRoots.find(s=>t.packageRegistry.get(s.name)?.get(s.reference)?.packageLocation==="./");for(let[s,a]of QD(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){if(s===null)continue;let n=[];e.push([s,n]);for(let[c,{packageLocation:f,packageDependencies:p,packagePeers:h,linkType:E,discardFromLookup:C}]of QD(a,([S])=>S===null?"0":`1${S}`)){if(c===null)continue;let S=[];s!==null&&c!==null&&!p.has(s)&&S.push([s,c]);for(let[U,W]of p)S.push([U,W]);let P=QD(S,([U])=>U),I=h&&h.size>0?Array.from(h):void 0,N={packageLocation:f,packageDependencies:P,packagePeers:I,linkType:E,discardFromLookup:C||void 0};n.push([c,N]),r&&s===r.name&&c===r.reference&&e.unshift([null,[[null,N]]])}}return e}function TD(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,pnpZipBackend:t.pnpZipBackend,fallbackExclusionList:zgt(t),fallbackPool:Xgt(t),packageRegistryData:Zgt(t)}}var $2e=ut(Z2e());function eBe(t,e){return[t?`${t} -`:"",`/* eslint-disable */ -`,`// @ts-nocheck -`,`"use strict"; -`,` -`,e,` -`,(0,$2e.default)()].join("")}function $gt(t){return JSON.stringify(t,null,2)}function edt(t){return`'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ -`)}'`}function tdt(t){return[`const RAW_RUNTIME_STATE = -`,`${edt(z2e(t))}; - -`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); -`,`} -`].join("")}function rdt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,` const fs = require('fs'); -`,` const path = require('path'); -`,` const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(Er.pnpData)}); -`,` return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname}); -`,`} -`].join("")}function tBe(t){let e=TD(t),r=tdt(e);return eBe(t.shebang,r)}function rBe(t){let e=TD(t),r=rdt(),s=eBe(t.shebang,r);return{dataFile:$gt(e),loaderFile:s}}Dt();function sY(t,{basePath:e}){let r=fe.toPortablePath(e),s=J.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,c=new Map(t.packageRegistryData.map(([C,S])=>[C,new Map(S.map(([P,I])=>{if(C===null!=(P===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let R=I.discardFromLookup??!1,N={name:C,reference:P},U=n.get(I.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&R,R||(U.locator=N)):n.set(I.packageLocation,{locator:N,discardFromLookup:R});let W=null;return[P,{packageDependencies:new Map(I.packageDependencies),packagePeers:new Set(I.packagePeers),linkType:I.linkType,discardFromLookup:R,get packageLocation(){return W||(W=J.join(s,I.packageLocation))}}]}))])),f=new Map(t.fallbackExclusionList.map(([C,S])=>[C,new Set(S)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,E=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:f,pnpZipBackend:t.pnpZipBackend,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:c}}Dt();Dt();var sh=Ie("module"),jm=Ie("url"),gY=Ie("util");var ta=Ie("url");var oBe=ut(Ie("assert"));var oY=Array.isArray,RD=JSON.stringify,FD=Object.getOwnPropertyNames,Hm=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),aY=(t,e)=>RegExp.prototype.exec.call(t,e),lY=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),ng=(t,...e)=>String.prototype.endsWith.apply(t,e),cY=(t,...e)=>String.prototype.includes.apply(t,e),uY=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),ND=(t,...e)=>String.prototype.indexOf.apply(t,e),nBe=(t,...e)=>String.prototype.replace.apply(t,e),ig=(t,...e)=>String.prototype.slice.apply(t,e),hA=(t,...e)=>String.prototype.startsWith.apply(t,e),iBe=Map,sBe=JSON.parse;function OD(t,e,r){return class extends r{constructor(...s){super(e(...s)),this.code=t,this.name=`${r.name} [${t}]`}}}var aBe=OD("ERR_PACKAGE_IMPORT_NOT_DEFINED",(t,e,r)=>`Package import specifier "${t}" is not defined${e?` in package ${e}package.json`:""} imported from ${r}`,TypeError),fY=OD("ERR_INVALID_MODULE_SPECIFIER",(t,e,r=void 0)=>`Invalid module "${t}" ${e}${r?` imported from ${r}`:""}`,TypeError),lBe=OD("ERR_INVALID_PACKAGE_TARGET",(t,e,r,s=!1,a=void 0)=>{let n=typeof r=="string"&&!s&&r.length&&!hA(r,"./");return e==="."?((0,oBe.default)(s===!1),`Invalid "exports" main target ${RD(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`):`Invalid "${s?"imports":"exports"}" target ${RD(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`},Error),LD=OD("ERR_INVALID_PACKAGE_CONFIG",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:""}${r?`. ${r}`:""}`,Error),cBe=OD("ERR_PACKAGE_PATH_NOT_EXPORTED",(t,e,r=void 0)=>e==="."?`No "exports" main defined in ${t}package.json${r?` imported from ${r}`:""}`:`Package subpath '${e}' is not defined by "exports" in ${t}package.json${r?` imported from ${r}`:""}`,Error);var sN=Ie("url");function uBe(t,e){let r=Object.create(null);for(let s=0;se):t+e}MD(r,t,s,c,a)}aY(ABe,ig(t,2))!==null&&MD(r,t,s,c,a);let p=new URL(t,s),h=p.pathname,E=new URL(".",s).pathname;if(hA(h,E)||MD(r,t,s,c,a),e==="")return p;if(aY(ABe,e)!==null){let C=n?nBe(r,"*",()=>e):r+e;sdt(C,s,c,a)}return n?new URL(lY(pBe,p.href,()=>e)):new URL(e,p)}function adt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function vw(t,e,r,s,a,n,c,f){if(typeof e=="string")return odt(e,r,s,t,a,n,c,f);if(oY(e)){if(e.length===0)return null;let p;for(let h=0;hn?-1:n>a||r===-1?1:s===-1||t.length>e.length?-1:e.length>t.length?1:0}function ldt(t,e,r){if(typeof t=="string"||oY(t))return!0;if(typeof t!="object"||t===null)return!1;let s=FD(t),a=!1,n=0;for(let c=0;c=h.length&&ng(e,C)&&gBe(n,h)===1&&uY(h,"*")===E&&(n=h,c=ig(e,E,e.length-C.length))}}if(n){let p=r[n],h=vw(t,p,c,n,s,!0,!1,a);return h==null&&AY(e,t,s),h}AY(e,t,s)}function mBe({name:t,base:e,conditions:r,readFileSyncFn:s}){if(t==="#"||hA(t,"#/")||ng(t,"/")){let c="is not a valid internal imports specifier name";throw new fY(t,c,(0,ta.fileURLToPath)(e))}let a,n=fBe(e,s);if(n.exists){a=(0,ta.pathToFileURL)(n.pjsonPath);let c=n.imports;if(c)if(Hm(c,t)&&!cY(t,"*")){let f=vw(a,c[t],"",t,e,!1,!0,r);if(f!=null)return f}else{let f="",p,h=FD(c);for(let E=0;E=C.length&&ng(t,P)&&gBe(f,C)===1&&uY(C,"*")===S&&(f=C,p=ig(t,S,t.length-P.length))}}if(f){let E=c[f],C=vw(a,E,p,f,e,!0,!0,r);if(C!=null)return C}}}idt(t,a,e)}Dt();var udt=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function gs(t,e,r={},s){s??=udt.has(t)?"MODULE_NOT_FOUND":t;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:s},pnpCode:{...a,value:t},data:{...a,value:r}})}function lf(t){return fe.normalize(fe.fromPortablePath(t))}var CBe=ut(EBe());function wBe(t){return fdt(),hY[t]}var hY;function fdt(){hY||(hY={"--conditions":[],...IBe(Adt()),...IBe(process.execArgv)})}function IBe(t){return(0,CBe.default)({"--conditions":[String],"-C":"--conditions"},{argv:t,permissive:!0})}function Adt(){let t=[],e=pdt(process.env.NODE_OPTIONS||"",t);return t.length,e}function pdt(t,e){let r=[],s=!1,a=!0;for(let n=0;nparseInt(t,10)),BBe=ml>19||ml===19&&ih>=2||ml===18&&ih>=13,UZt=ml===20&&ih<6||ml===19&&ih>=3,_Zt=ml>19||ml===19&&ih>=6,HZt=ml>=21||ml===20&&ih>=10||ml===18&&ih>=19,jZt=ml>=21||ml===20&&ih>=10||ml===18&&ih>=20,GZt=ml>=22;function vBe(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>fe.fromPortablePath(uo.resolveVirtual(fe.toPortablePath(e)))),BBe)process.send({"watch:require":t});else for(let e of t)process.send({"watch:require":e})}function dY(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,s=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,n=/^(\/|\.{1,2}(\/|$))/,c=/\/$/,f=/^\.{0,2}\//,p={name:null,reference:null},h=[],E=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Fe of["react-scripts","gatsby"]){let Ne=t.packageRegistry.get(Fe);if(Ne)for(let Pe of Ne.keys()){if(Pe===null)throw new Error("Assertion failed: This reference shouldn't be null");h.push({name:Fe,reference:Pe})}}let{ignorePattern:C,packageRegistry:S,packageLocatorsByLocations:P}=t;function I(Fe,Ne){return{fn:Fe,args:Ne,error:null,result:null}}function R(Fe){let Ne=process.stderr?.hasColors?.()??process.stdout.isTTY,Pe=(it,Ue)=>`\x1B[${it}m${Ue}\x1B[0m`,Ve=Fe.error;console.error(Ve?Pe("31;1",`\u2716 ${Fe.error?.message.replace(/\n.*/s,"")}`):Pe("33;1","\u203C Resolution")),Fe.args.length>0&&console.error();for(let it of Fe.args)console.error(` ${Pe("37;1","In \u2190")} ${(0,gY.inspect)(it,{colors:Ne,compact:!0})}`);Fe.result&&(console.error(),console.error(` ${Pe("37;1","Out \u2192")} ${(0,gY.inspect)(Fe.result,{colors:Ne,compact:!0})}`));let ke=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(ke.length>0){console.error();for(let it of ke)console.error(` ${Pe("38;5;244",it)}`)}console.error()}function N(Fe,Ne){if(e.allowDebug===!1)return Ne;if(Number.isFinite(s)){if(s>=2)return(...Pe)=>{let Ve=I(Fe,Pe);try{return Ve.result=Ne(...Pe)}catch(ke){throw Ve.error=ke}finally{R(Ve)}};if(s>=1)return(...Pe)=>{try{return Ne(...Pe)}catch(Ve){let ke=I(Fe,Pe);throw ke.error=Ve,R(ke),Ve}}}return Ne}function U(Fe){let Ne=g(Fe);if(!Ne)throw gs("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return Ne}function W(Fe){if(Fe.name===null)return!0;for(let Ne of t.dependencyTreeRoots)if(Ne.name===Fe.name&&Ne.reference===Fe.reference)return!0;return!1}let ee=new Set(["node","require",...wBe("--conditions")]);function ie(Fe,Ne=ee,Pe){let Ve=Ae(J.join(Fe,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(Ve===null)throw gs("INTERNAL",`The locator that owns the "${Fe}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ke}=U(Ve),it=J.join(ke,Er.manifest);if(!e.fakeFs.existsSync(it))return null;let Ue=JSON.parse(e.fakeFs.readFileSync(it,"utf8"));if(Ue.exports==null)return null;let x=J.contains(ke,Fe);if(x===null)throw gs("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");x!=="."&&!f.test(x)&&(x=`./${x}`);try{let w=dBe({packageJSONUrl:(0,jm.pathToFileURL)(fe.fromPortablePath(it)),packageSubpath:x,exports:Ue.exports,base:Pe?(0,jm.pathToFileURL)(fe.fromPortablePath(Pe)):null,conditions:Ne});return fe.toPortablePath((0,jm.fileURLToPath)(w))}catch(w){throw gs("EXPORTS_RESOLUTION_FAILED",w.message,{unqualifiedPath:lf(Fe),locator:Ve,pkgJson:Ue,subpath:lf(x),conditions:Ne},w.code)}}function ue(Fe,Ne,{extensions:Pe}){let Ve;try{Ne.push(Fe),Ve=e.fakeFs.statSync(Fe)}catch{}if(Ve&&!Ve.isDirectory())return e.fakeFs.realpathSync(Fe);if(Ve&&Ve.isDirectory()){let ke;try{ke=JSON.parse(e.fakeFs.readFileSync(J.join(Fe,Er.manifest),"utf8"))}catch{}let it;if(ke&&ke.main&&(it=J.resolve(Fe,ke.main)),it&&it!==Fe){let Ue=ue(it,Ne,{extensions:Pe});if(Ue!==null)return Ue}}for(let ke=0,it=Pe.length;ke{let x=JSON.stringify(Ue.name);if(Ve.has(x))return;Ve.add(x);let w=we(Ue);for(let b of w)if(U(b).packagePeers.has(Fe))ke(b);else{let F=Pe.get(b.name);typeof F>"u"&&Pe.set(b.name,F=new Set),F.add(b.reference)}};ke(Ne);let it=[];for(let Ue of[...Pe.keys()].sort())for(let x of[...Pe.get(Ue)].sort())it.push({name:Ue,reference:x});return it}function Ae(Fe,{resolveIgnored:Ne=!1,includeDiscardFromLookup:Pe=!1}={}){if(pe(Fe)&&!Ne)return null;let Ve=J.relative(t.basePath,Fe);Ve.match(n)||(Ve=`./${Ve}`),Ve.endsWith("/")||(Ve=`${Ve}/`);do{let ke=P.get(Ve);if(typeof ke>"u"||ke.discardFromLookup&&!Pe){Ve=Ve.substring(0,Ve.lastIndexOf("/",Ve.length-2)+1);continue}return ke.locator}while(Ve!=="");return null}function se(Fe){try{return e.fakeFs.readFileSync(fe.toPortablePath(Fe),"utf8")}catch(Ne){if(Ne.code==="ENOENT")return;throw Ne}}function Z(Fe,Ne,{considerBuiltins:Pe=!0}={}){if(Fe.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(Fe==="pnpapi")return fe.toPortablePath(e.pnpapiResolution);if(Pe&&(0,sh.isBuiltin)(Fe))return null;let Ve=lf(Fe),ke=Ne&&lf(Ne);if(Ne&&pe(Ne)&&(!J.isAbsolute(Fe)||Ae(Fe)===null)){let x=me(Fe,Ne);if(x===!1)throw gs("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) - -Require request: "${Ve}" -Required by: ${ke} -`,{request:Ve,issuer:ke});return fe.toPortablePath(x)}let it,Ue=Fe.match(a);if(Ue){if(!Ne)throw gs("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:Ve,issuer:ke});let[,x,w]=Ue,b=Ae(Ne);if(!b){let Te=me(Fe,Ne);if(Te===!1)throw gs("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). - -Require path: "${Ve}" -Required by: ${ke} -`,{request:Ve,issuer:ke});return fe.toPortablePath(Te)}let F=U(b).packageDependencies.get(x),z=null;if(F==null&&b.name!==null){let Te=t.fallbackExclusionList.get(b.name);if(!Te||!Te.has(b.reference)){for(let Ct=0,qt=h.length;CtW(lt))?X=gs("MISSING_PEER_DEPENDENCY",`${b.name} tried to access ${x} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. - -Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} -Required by: ${b.name}@${b.reference} (via ${ke}) -${Te.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference} -`).join("")} -`,{request:Ve,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x,brokenAncestors:Te}):X=gs("MISSING_PEER_DEPENDENCY",`${b.name} tried to access ${x} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. - -Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} -Required by: ${b.name}@${b.reference} (via ${ke}) - -${Te.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference} -`).join("")} -`,{request:Ve,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x,brokenAncestors:Te})}else F===void 0&&(!Pe&&(0,sh.isBuiltin)(Fe)?W(b)?X=gs("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. - -Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} -Required by: ${ke} -`,{request:Ve,issuer:ke,dependencyName:x}):X=gs("UNDECLARED_DEPENDENCY",`${b.name} tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in ${b.name}'s dependencies, this makes the require call ambiguous and unsound. - -Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} -Required by: ${ke} -`,{request:Ve,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x}):W(b)?X=gs("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. - -Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} -Required by: ${ke} -`,{request:Ve,issuer:ke,dependencyName:x}):X=gs("UNDECLARED_DEPENDENCY",`${b.name} tried to access ${x}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. - -Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} -Required by: ${b.name}@${b.reference} (via ${ke}) -`,{request:Ve,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x}));if(F==null){if(z===null||X===null)throw X||new Error("Assertion failed: Expected an error to have been set");F=z;let Te=X.message.replace(/\n.*/g,"");X.message=Te,!E.has(Te)&&s!==0&&(E.add(Te),process.emitWarning(X))}let $=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:x,reference:F},oe=U($);if(!oe.packageLocation)throw gs("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. - -Required package: ${$.name}@${$.reference}${$.name!==Ve?` (via "${Ve}")`:""} -Required by: ${b.name}@${b.reference} (via ${ke}) -`,{request:Ve,issuer:ke,dependencyLocator:Object.assign({},$)});let xe=oe.packageLocation;w?it=J.join(xe,w):it=xe}else if(J.isAbsolute(Fe))it=J.normalize(Fe);else{if(!Ne)throw gs("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:Ve,issuer:ke});let x=J.resolve(Ne);Ne.match(c)?it=J.normalize(J.join(x,Fe)):it=J.normalize(J.join(J.dirname(x),Fe))}return J.normalize(it)}function De(Fe,Ne,Pe=ee,Ve){if(n.test(Fe))return Ne;let ke=ie(Ne,Pe,Ve);return ke?J.normalize(ke):Ne}function Re(Fe,{extensions:Ne=Object.keys(sh.Module._extensions)}={}){let Pe=[],Ve=ue(Fe,Pe,{extensions:Ne});if(Ve)return J.normalize(Ve);{vBe(Pe.map(Ue=>fe.fromPortablePath(Ue)));let ke=lf(Fe),it=Ae(Fe);if(it){let{packageLocation:Ue}=U(it),x=!0;try{e.fakeFs.accessSync(Ue)}catch(w){if(w?.code==="ENOENT")x=!1;else{let b=(w?.message??w??"empty exception thrown").replace(/^[A-Z]/,y=>y.toLowerCase());throw gs("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${b}). - -Missing package: ${it.name}@${it.reference} -Expected package location: ${lf(Ue)} -`,{unqualifiedPath:ke,extensions:Ne})}}if(!x){let w=Ue.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw gs("QUALIFIED_PATH_RESOLUTION_FAILED",`${w} - -Missing package: ${it.name}@${it.reference} -Expected package location: ${lf(Ue)} -`,{unqualifiedPath:ke,extensions:Ne})}}throw gs("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed. - -Source path: ${ke} -${Pe.map(Ue=>`Not found: ${lf(Ue)} -`).join("")}`,{unqualifiedPath:ke,extensions:Ne})}}function mt(Fe,Ne,Pe){if(!Ne)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let Ve=mBe({name:Fe,base:(0,jm.pathToFileURL)(fe.fromPortablePath(Ne)),conditions:Pe.conditions??ee,readFileSyncFn:se});if(Ve instanceof URL)return Re(fe.toPortablePath((0,jm.fileURLToPath)(Ve)),{extensions:Pe.extensions});if(Ve.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return j(Ve,Ne,Pe)}function j(Fe,Ne,Pe={}){try{if(Fe.startsWith("#"))return mt(Fe,Ne,Pe);let{considerBuiltins:Ve,extensions:ke,conditions:it}=Pe,Ue=Z(Fe,Ne,{considerBuiltins:Ve});if(Fe==="pnpapi")return Ue;if(Ue===null)return null;let x=()=>Ne!==null?pe(Ne):!1,w=(!Ve||!(0,sh.isBuiltin)(Fe))&&!x()?De(Fe,Ue,it,Ne):Ue;return Re(w,{extensions:ke})}catch(Ve){throw Object.hasOwn(Ve,"pnpCode")&&Object.assign(Ve.data,{request:lf(Fe),issuer:Ne&&lf(Ne)}),Ve}}function rt(Fe){let Ne=J.normalize(Fe),Pe=uo.resolveVirtual(Ne);return Pe!==Ne?Pe:null}return{VERSIONS:Be,topLevel:Ce,getLocator:(Fe,Ne)=>Array.isArray(Ne)?{name:Ne[0],reference:Ne[1]}:{name:Fe,reference:Ne},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Fe=[];for(let[Ne,Pe]of S)for(let Ve of Pe.keys())Ne!==null&&Ve!==null&&Fe.push({name:Ne,reference:Ve});return Fe},getPackageInformation:Fe=>{let Ne=g(Fe);if(Ne===null)return null;let Pe=fe.fromPortablePath(Ne.packageLocation);return{...Ne,packageLocation:Pe}},findPackageLocator:Fe=>Ae(fe.toPortablePath(Fe)),resolveToUnqualified:N("resolveToUnqualified",(Fe,Ne,Pe)=>{let Ve=Ne!==null?fe.toPortablePath(Ne):null,ke=Z(fe.toPortablePath(Fe),Ve,Pe);return ke===null?null:fe.fromPortablePath(ke)}),resolveUnqualified:N("resolveUnqualified",(Fe,Ne)=>fe.fromPortablePath(Re(fe.toPortablePath(Fe),Ne))),resolveRequest:N("resolveRequest",(Fe,Ne,Pe)=>{let Ve=Ne!==null?fe.toPortablePath(Ne):null,ke=j(fe.toPortablePath(Fe),Ve,Pe);return ke===null?null:fe.fromPortablePath(ke)}),resolveVirtual:N("resolveVirtual",Fe=>{let Ne=rt(fe.toPortablePath(Fe));return Ne!==null?fe.fromPortablePath(Ne):null})}}Dt();var SBe=(t,e,r)=>{let s=TD(t),a=sY(s,{basePath:e}),n=fe.join(e,Er.pnpCjs);return dY(a,{fakeFs:r,pnpapiResolution:n})};var yY=ut(bBe());Yt();var gA={};Vt(gA,{checkManifestCompatibility:()=>PBe,extractBuildRequest:()=>oN,getExtractHint:()=>EY,hasBindingGyp:()=>IY});Ge();Dt();function PBe(t){return G.isPackageCompatible(t,Ui.getArchitectureSet())}function oN(t,e,r,{configuration:s}){let a=[];for(let n of["preinstall","install","postinstall"])e.manifest.scripts.has(n)&&a.push({type:0,script:n});return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&a.push({type:1,script:"node-gyp rebuild"}),a.length===0?null:t.linkType!=="HARD"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${G.prettyLocator(s,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${G.prettyLocator(s,t)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!s.get("enableScripts")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${G.prettyLocator(s,t)} lists build scripts, but all build scripts have been disabled.`)}:PBe(t)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${G.prettyLocator(s,t)} The ${Ui.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var gdt=new Set([".exe",".bin",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function EY(t){return t.packageFs.getExtractHint({relevantExtensions:gdt})}function IY(t){let e=J.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var HD={};Vt(HD,{getUnpluggedPath:()=>_D});Ge();Dt();function _D(t,{configuration:e}){return J.resolve(e.get("pnpUnpluggedFolder"),G.slugifyLocator(t))}var ddt=new Set([G.makeIdent(null,"open").identHash,G.makeIdent(null,"opn").identHash]),sg=class{constructor(){this.mode="strict";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:"PnpLinker",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let s=og(r.project).cjs;if(!ce.existsSync(s))throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=je.getFactoryWithDefault(this.pnpCache,s,()=>je.dynamicRequire(s,{cachingStrategy:je.CachingStrategy.FsTime})),n={name:G.stringifyIdent(e),reference:e.reference},c=a.getPackageInformation(n);if(!c)throw new nt(`Couldn't find ${G.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return fe.toPortablePath(c.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=og(r.project).cjs;if(!ce.existsSync(s))return null;let n=je.getFactoryWithDefault(this.pnpCache,s,()=>je.dynamicRequire(s,{cachingStrategy:je.CachingStrategy.FsTime})).findPackageLocator(fe.fromPortablePath(e));return n?G.makeLocator(G.parseIdent(n.name),n.reference):null}makeInstaller(e){return new Gm(e)}isEnabled(e){return!(e.project.configuration.get("nodeLinker")!=="pnp"||e.project.configuration.get("pnpMode")!==this.mode)}},Gm=class{constructor(e){this.opts=e;this.mode="strict";this.asyncActions=new je.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}attachCustomData(e){this.customData=e}async installPackage(e,r,s){let a=G.stringifyIdent(e),n=e.reference,c=!!this.opts.project.tryWorkspaceByLocator(e),f=G.isVirtualLocator(e),p=e.peerDependencies.size>0&&!f,h=!p&&!c,E=!p&&e.linkType!=="SOFT",C,S;if(h||E){let ee=f?G.devirtualizeLocator(e):e;C=this.customData.store.get(ee.locatorHash),typeof C>"u"&&(C=await mdt(r),e.linkType==="HARD"&&this.customData.store.set(ee.locatorHash,C)),C.manifest.type==="module"&&(this.isESMLoaderRequired=!0),S=this.opts.project.getDependencyMeta(ee,e.version)}let P=h?oN(e,C,S,{configuration:this.opts.project.configuration}):null,I=E?await this.unplugPackageIfNeeded(e,C,r,S,s):r.packageFs;if(J.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let R=J.resolve(I.getRealPath(),r.prefixPath),N=CY(this.opts.project.cwd,R),U=new Map,W=new Set;if(f){for(let ee of e.peerDependencies.values())U.set(G.stringifyIdent(ee),null),W.add(G.stringifyIdent(ee));if(!c){let ee=G.devirtualizeLocator(e);this.virtualTemplates.set(ee.locatorHash,{location:CY(this.opts.project.cwd,uo.resolveVirtual(R)),locator:ee})}}return je.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:N,packageDependencies:U,packagePeers:W,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:R,buildRequest:P}}async attachInternalDependencies(e,r){let s=this.getPackageInformation(e);for(let[a,n]of r){let c=G.areIdentsEqual(a,n)?n.reference:[G.stringifyIdent(n),n.reference];s.packageDependencies.set(G.stringifyIdent(a),c)}}async attachExternalDependents(e,r){for(let s of r)this.getDiskInformation(s).packageDependencies.set(G.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=og(this.opts.project);if(this.isEsmEnabled()||await ce.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await ce.removePromise(e.cjs),await ce.removePromise(e.data),await ce.removePromise(e.esmLoader),await ce.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:C,location:S}of this.virtualTemplates.values())je.getMapWithDefault(this.packageRegistry,G.stringifyIdent(C)).set(C.reference,{packageLocation:S,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});let r=this.opts.project.configuration.get("pnpFallbackMode"),s=this.opts.project.workspaces.map(({anchoredLocator:C})=>({name:G.stringifyIdent(C),reference:C.reference})),a=r!=="none",n=[],c=new Map,f=je.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),p=this.packageRegistry,h=this.opts.project.configuration.get("pnpShebang"),E=this.opts.project.configuration.get("pnpZipBackend");if(r==="dependencies-only")for(let C of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(C)&&n.push({name:G.stringifyIdent(C),reference:C.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:s,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:c,ignorePattern:f,pnpZipBackend:E,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=og(this.opts.project),s=await this.locateNodeModules(e.ignorePattern);if(s.length>0){this.opts.report.reportWarning(31,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let n of s)await ce.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let n=tBe(e);await ce.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await ce.removePromise(r.data)}else{let{dataFile:n,loaderFile:c}=rBe(e);await ce.changeFilePromise(r.cjs,c,{automaticNewlines:!0,mode:493}),await ce.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await ce.changeFilePromise(r.esmLoader,(0,yY.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await ce.removePromise(a);else for(let n of await ce.readdirPromise(a)){let c=J.resolve(a,n);this.unpluggedPaths.has(c)||await ce.removePromise(c)}}async locateNodeModules(e){let r=[],s=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=J.join(a.cwd,"node_modules");if(s&&s.test(J.relative(this.opts.project.cwd,a.cwd))||!ce.existsSync(n))continue;let c=await ce.readdirPromise(n,{withFileTypes:!0}),f=c.filter(p=>!p.isDirectory()||p.name===".bin"||!p.name.startsWith("."));if(f.length===c.length)r.push(n);else for(let p of f)r.push(J.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,s,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,s,n):s.packageFs}shouldBeUnplugged(e,r,s){return typeof s.unplugged<"u"?s.unplugged:ddt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(oN(e,r,s,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(e,r,s){let a=_D(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new _f(a,{baseFs:r.packageFs,pathUtils:J}):(this.unpluggedPaths.add(a),s.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=J.join(a,r.prefixPath,".ready");await ce.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await ce.mkdirPromise(a,{recursive:!0}),await ce.copyPromise(a,vt.dot,{baseFs:r.packageFs,overwrite:!1}),await ce.writeFilePromise(n,""))})),new Sn(a))}getPackageInformation(e){let r=G.stringifyIdent(e),s=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${G.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(s);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${G.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=je.getMapWithDefault(this.packageRegistry,"@@disk"),s=CY(this.opts.project.cwd,e);return je.getFactoryWithDefault(r,s,()=>({packageLocation:s,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function CY(t,e){let r=J.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function mdt(t){let e=await Ut.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Ut,r=new Set(["preinstall","install","postinstall"]);for(let s of e.scripts.keys())r.has(s)||e.scripts.delete(s);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:EY(t),hasBindingGyp:IY(t)}}}Ge();Ge();Yt();var xBe=ut(Go());var Sw=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=ge.Rest()}static{this.paths=[["unplug"]]}static{this.usage=ot.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);if(r.get("nodeLinker")!=="pnp")throw new nt("This command can only be used if the `nodeLinker` option is set to `pnp`");await s.restoreInstallState();let c=new Set(this.patterns),f=this.patterns.map(P=>{let I=G.parseDescriptor(P),R=I.range!=="unknown"?I:G.makeDescriptor(I,"*");if(!Fr.validRange(R.range))throw new nt(`The range of the descriptor patterns must be a valid semver range (${G.prettyDescriptor(r,R)})`);return N=>{let U=G.stringifyIdent(N);return!xBe.default.isMatch(U,G.stringifyIdent(R))||N.version&&!Fr.satisfiesWithPrereleases(N.version,R.range)?!1:(c.delete(P),!0)}}),p=()=>{let P=[];for(let I of s.storedPackages.values())!s.tryWorkspaceByLocator(I)&&!G.isVirtualLocator(I)&&f.some(R=>R(I))&&P.push(I);return P},h=P=>{let I=new Set,R=[],N=(U,W)=>{if(I.has(U.locatorHash))return;let ee=!!s.tryWorkspaceByLocator(U);if(!(W>0&&!this.recursive&&ee)&&(I.add(U.locatorHash),!s.tryWorkspaceByLocator(U)&&f.some(ie=>ie(U))&&R.push(U),!(W>0&&!this.recursive)))for(let ie of U.dependencies.values()){let ue=s.storedResolutions.get(ie.descriptorHash);if(!ue)throw new Error("Assertion failed: The resolution should have been registered");let le=s.storedPackages.get(ue);if(!le)throw new Error("Assertion failed: The package should have been registered");N(le,W+1)}};for(let U of P)N(U.anchoredPackage,0);return R},E,C;if(this.all&&this.recursive?(E=p(),C="the project"):this.all?(E=h(s.workspaces),C="any workspace"):(E=h([a]),C="this workspace"),c.size>1)throw new nt(`Patterns ${he.prettyList(r,c,he.Type.CODE)} don't match any packages referenced by ${C}`);if(c.size>0)throw new nt(`Pattern ${he.prettyList(r,c,he.Type.CODE)} doesn't match any packages referenced by ${C}`);E=je.sortMap(E,P=>G.stringifyLocator(P));let S=await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async P=>{for(let I of E){let R=I.version??"unknown",N=s.topLevelWorkspace.manifest.ensureDependencyMeta(G.makeDescriptor(I,R));N.unplugged=!0,P.reportInfo(0,`Will unpack ${G.prettyLocator(r,I)} to ${he.pretty(r,_D(I,{configuration:r}),he.Type.PATH)}`),P.reportJson({locator:G.stringifyLocator(I),version:R})}await s.topLevelWorkspace.persistManifest(),this.json||P.reportSeparator()});return S.hasErrors()?S.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};var og=t=>({cjs:J.join(t.cwd,Er.pnpCjs),data:J.join(t.cwd,Er.pnpData),esmLoader:J.join(t.cwd,Er.pnpEsmLoader)}),QBe=t=>/\s/.test(t)?JSON.stringify(t):t;async function ydt(t,e,r){let s=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/,n=(e.NODE_OPTIONS??"").replace(s," ").replace(a," ").trim();if(t.configuration.get("nodeLinker")!=="pnp"){e.NODE_OPTIONS=n||void 0;return}let c=og(t),f=`--require ${QBe(fe.fromPortablePath(c.cjs))}`;ce.existsSync(c.esmLoader)&&(f=`${f} --experimental-loader ${(0,kBe.pathToFileURL)(fe.fromPortablePath(c.esmLoader)).href}`),ce.existsSync(c.cjs)&&(e.NODE_OPTIONS=n?`${f} ${n}`:f)}async function Edt(t,e){let r=og(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get("pnpUnpluggedFolder"))}var Idt={hooks:{populateYarnPaths:Edt,setupScriptEnvironment:ydt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "pnpm", or "node-modules"',type:"STRING",default:"pnp"},minizip:{description:"Whether Yarn should use minizip to extract archives",type:"BOOLEAN",default:!1},winLinkType:{description:"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.",type:"STRING",values:["junctions","symlinks"],default:"junctions"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:"STRING",default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:"STRING",default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:"STRING",default:[],isArray:!0},pnpZipBackend:{description:"Whether to use the experimental js implementation for the ZipFS",type:"STRING",values:["libzip","js"],default:"libzip"},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:"BOOLEAN",default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:"BOOLEAN",default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:"STRING",default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:"ABSOLUTE_PATH",default:"./.yarn/unplugged"}},linkers:[sg],commands:[Sw]},Cdt=Idt;var UBe=ut(OBe());Yt();var xY=ut(Ie("crypto")),_Be=ut(Ie("fs")),HBe=1,Ti="node_modules",aN=".bin",jBe=".yarn-state.yml",Mdt=1e3,kY=(s=>(s.CLASSIC="classic",s.HARDLINKS_LOCAL="hardlinks-local",s.HARDLINKS_GLOBAL="hardlinks-global",s))(kY||{}),jD=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:"NodeModulesLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let s=r.project.tryWorkspaceByLocator(e);if(s)return s.cwd;let a=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await PY(r.project,{unrollAliases:!0}));if(a===null)throw new nt("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let n=a.locatorMap.get(G.stringifyLocator(e));if(!n){let p=new nt(`Couldn't find ${G.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw p.code="LOCATOR_NOT_INSTALLED",p}let c=n.locations.sort((p,h)=>p.split(J.sep).length-h.split(J.sep).length),f=J.join(r.project.configuration.startingCwd,Ti);return c.find(p=>J.contains(f,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await PY(r.project,{unrollAliases:!0}));if(s===null)return null;let{locationRoot:a,segments:n}=lN(J.resolve(e),{skipPrefix:r.project.cwd}),c=s.locationTree.get(a);if(!c)return null;let f=c.locator;for(let p of n){if(c=c.children.get(p),!c)break;f=c.locator||f}return G.parseLocator(f)}makeInstaller(e){return new bY(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="node-modules"}},bY=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(e){this.customData=e}async installPackage(e,r){let s=J.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>"u"&&(a=await Udt(e,r),e.linkType==="HARD"&&this.customData.store.set(e.locatorHash,a)),!G.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,c=new Set;n.has(G.stringifyIdent(e))||n.set(G.stringifyIdent(e),e.reference);let f=e;if(G.isVirtualLocator(e)){f=G.devirtualizeLocator(e);for(let E of e.peerDependencies.values())n.set(G.stringifyIdent(E),null),c.add(G.stringifyIdent(E))}let p={packageLocation:`${fe.fromPortablePath(s)}/`,packageDependencies:n,packagePeers:c,linkType:e.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(f.locatorHash,h),{packageLocation:s,buildRequest:null}}async attachInternalDependencies(e,r){let s=this.localStore.get(e.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[a,n]of r){let c=G.areIdentsEqual(a,n)?n.reference:[G.stringifyIdent(n),n.reference];s.pnpNode.packageDependencies.set(G.stringifyIdent(a),c)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new uo({baseFs:new $f({maxOpenFiles:80,readOnlyArchives:!0})}),r=await PY(this.opts.project),s=this.opts.project.configuration.get("nmMode");(r===null||s!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:s,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(S=>{let P=this.opts.project.configuration.get("nmHoistingLimits");try{P=je.validateEnum(xD,S.manifest.installConfig?.hoistingLimits??P)}catch{let I=G.prettyWorkspace(this.opts.project.configuration,S);this.opts.report.reportWarning(57,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(xD).join(", ")}, using default: "${P}"`)}return[S.relativeCwd,P]})),n=new Map(this.opts.project.workspaces.map(S=>{let P=this.opts.project.configuration.get("nmSelfReferences");return P=S.manifest.installConfig?.selfReferences??P,[S.relativeCwd,P]})),c={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(S,P)=>Array.isArray(P)?{name:P[0],reference:P[1]}:{name:S,reference:P},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(S=>{let P=S.anchoredLocator;return{name:G.stringifyIdent(P),reference:P.reference}}),getPackageInformation:S=>{let P=S.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:G.makeLocator(G.parseIdent(S.name),S.reference),I=this.localStore.get(P.locatorHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return I.pnpNode},findPackageLocator:S=>{let P=this.opts.project.tryWorkspaceByCwd(fe.toPortablePath(S));if(P!==null){let I=P.anchoredLocator;return{name:G.stringifyIdent(I),reference:I.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:S=>fe.fromPortablePath(uo.resolveVirtual(fe.toPortablePath(S)))},{tree:f,errors:p,preserveSymlinksRequired:h}=kD(c,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!f){for(let{messageName:S,text:P}of p)this.opts.report.reportError(S,P);return}let E=nY(f);await Ydt(r,E,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async S=>{let P=G.parseLocator(S),I=this.localStore.get(P.locatorHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the slot to exist");return I.customPackageData.manifest}});let C=[];for(let[S,P]of E.entries()){if(WBe(S))continue;let I=G.parseLocator(S),R=this.localStore.get(I.locatorHash);if(typeof R>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(R.pkg))continue;let N=gA.extractBuildRequest(R.pkg,R.customPackageData,R.dependencyMeta,{configuration:this.opts.project.configuration});N&&C.push({buildLocations:P.locations,locator:I,buildRequest:N})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${he.pretty(this.opts.project.configuration,"--preserve-symlinks",he.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:C}}};async function Udt(t,e){let r=await Ut.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Ut,s=new Set(["preinstall","install","postinstall"]);for(let a of r.scripts.keys())s.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:gA.hasBindingGyp(e)}}}async function _dt(t,e,r,s,{installChangedByUser:a}){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will -`,n+=`# cause your node_modules installation to become invalidated. -`,n+=` -`,n+=`__metadata: -`,n+=` version: ${HBe} -`,n+=` nmMode: ${s.value} -`;let c=Array.from(e.keys()).sort(),f=G.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let E of c){let C=e.get(E);n+=` -`,n+=`${JSON.stringify(E)}: -`,n+=` locations: -`;for(let S of C.locations){let P=J.contains(t.cwd,S);if(P===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` - ${JSON.stringify(P)} -`}if(C.aliases.length>0){n+=` aliases: -`;for(let S of C.aliases)n+=` - ${JSON.stringify(S)} -`}if(E===f&&r.size>0){n+=` bin: -`;for(let[S,P]of r){let I=J.contains(t.cwd,S);if(I===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` ${JSON.stringify(I)}: -`;for(let[R,N]of P){let U=J.relative(J.join(S,Ti),N);n+=` ${JSON.stringify(R)}: ${JSON.stringify(U)} -`}}}}let p=t.cwd,h=J.join(p,Ti,jBe);a&&await ce.removePromise(h),await ce.changeFilePromise(h,n,{automaticNewlines:!0})}async function PY(t,{unrollAliases:e=!1}={}){let r=t.cwd,s=J.join(r,Ti,jBe),a;try{a=await ce.statPromise(s)}catch{}if(!a)return null;let n=ls(await ce.readFilePromise(s,"utf8"));if(n.__metadata.version>HBe)return null;let c=n.__metadata.nmMode||"classic",f=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let C=E.locations.map(P=>J.join(r,P)),S=E.bin;if(S)for(let[P,I]of Object.entries(S)){let R=J.join(r,fe.toPortablePath(P)),N=je.getMapWithDefault(p,R);for(let[U,W]of Object.entries(I))N.set(U,fe.toPortablePath([R,Ti,W].join(J.sep)))}if(f.set(h,{target:vt.dot,linkType:"HARD",locations:C,aliases:E.aliases||[]}),e&&E.aliases)for(let P of E.aliases){let{scope:I,name:R}=G.parseLocator(h),N=G.makeLocator(G.makeIdent(I,R),P),U=G.stringifyLocator(N);f.set(U,{target:vt.dot,linkType:"HARD",locations:C,aliases:[]})}}return{locatorMap:f,binSymlinks:p,locationTree:GBe(f,{skipPrefix:t.cwd}),nmMode:c,mtimeMs:a.mtimeMs}}var bw=async(t,e)=>{if(t.split(J.sep).indexOf(Ti)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{let r;if(!e.innerLoop&&(r=await ce.lstatPromise(t),!r.isDirectory()&&!r.isSymbolicLink()||r.isSymbolicLink()&&!e.isWorkspaceDir)){await ce.unlinkPromise(t);return}let s=await ce.readdirPromise(t,{withFileTypes:!0});for(let n of s){let c=J.join(t,n.name);n.isDirectory()?(n.name!==Ti||e&&e.innerLoop)&&await bw(c,{innerLoop:!0,contentsOnly:!1}):await ce.unlinkPromise(c)}let a=!e.innerLoop&&e.isWorkspaceDir&&r?.isSymbolicLink();!e.contentsOnly&&!a&&await ce.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},LBe=4,lN=(t,{skipPrefix:e})=>{let r=J.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let s=r.split(J.sep).filter(p=>p!==""),a=s.indexOf(Ti),n=s.slice(0,a).join(J.sep),c=J.join(e,n),f=s.slice(a);return{locationRoot:c,segments:f}},GBe=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let s=()=>({children:new Map,linkType:"HARD"});for(let[a,n]of t.entries()){if(n.linkType==="SOFT"&&J.contains(e,n.target)!==null){let f=je.getFactoryWithDefault(r,n.target,s);f.locator=a,f.linkType=n.linkType}for(let c of n.locations){let{locationRoot:f,segments:p}=lN(c,{skipPrefix:e}),h=je.getFactoryWithDefault(r,f,s);for(let E=0;E{if(process.platform==="win32"&&r==="junctions"){let s;try{s=await ce.lstatPromise(t)}catch{}if(!s||s.isDirectory()){await ce.symlinkPromise(t,e,"junction");return}}await ce.symlinkPromise(J.relative(J.dirname(e),t),e)};async function qBe(t,e,r){let s=J.join(t,`${xY.default.randomBytes(16).toString("hex")}.tmp`);try{await ce.writeFilePromise(s,r);try{await ce.linkPromise(s,e)}catch{}}finally{await ce.unlinkPromise(s)}}async function Hdt({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:s,baseFs:a,nmMode:n}){if(r.kind==="file"){if(n.value==="hardlinks-global"&&s&&r.digest){let f=J.join(s,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await ce.statPromise(f);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs{await ce.mkdirPromise(t,{recursive:!0});let f=async(E=vt.dot)=>{let C=J.join(e,E),S=await r.readdirPromise(C,{withFileTypes:!0}),P=new Map;for(let I of S){let R=J.join(E,I.name),N,U=J.join(C,I.name);if(I.isFile()){if(N={kind:"file",mode:(await r.lstatPromise(U)).mode},a.value==="hardlinks-global"){let W=await Nn.checksumFile(U,{baseFs:r,algorithm:"sha1"});N.digest=W}}else if(I.isDirectory())N={kind:"directory"};else if(I.isSymbolicLink())N={kind:"symlink",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,"0")})`);if(P.set(R,N),I.isDirectory()&&R!==Ti){let W=await f(R);for(let[ee,ie]of W)P.set(ee,ie)}}return P},p;if(a.value==="hardlinks-global"&&s&&c){let E=J.join(s,c.substring(0,2),`${c.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await ce.readFilePromise(E,"utf8"))))}catch{p=await f()}}else p=await f();let h=!1;for(let[E,C]of p){let S=J.join(e,E),P=J.join(t,E);if(C.kind==="directory")await ce.mkdirPromise(P,{recursive:!0});else if(C.kind==="file"){let I=C.mtimeMs;await Hdt({srcPath:S,dstPath:P,entry:C,nmMode:a,baseFs:r,globalHardlinksStore:s}),C.mtimeMs!==I&&(h=!0)}else C.kind==="symlink"&&await QY(J.resolve(J.dirname(P),C.symlinkTo),P,n)}if(a.value==="hardlinks-global"&&s&&h&&c){let E=J.join(s,c.substring(0,2),`${c.substring(2)}.json`);await ce.removePromise(E),await qBe(s,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function Gdt(t,e,r,s){let a=new Map,n=new Map,c=new Map,f=!1,p=(h,E,C,S,P)=>{let I=!0,R=J.join(h,E),N=new Set;if(E===Ti||E.startsWith("@")){let W;try{W=ce.statSync(R)}catch{}I=!!W,W?W.mtimeMs>r?(f=!0,N=new Set(ce.readdirSync(R))):N=new Set(C.children.get(E).children.keys()):f=!0;let ee=e.get(h);if(ee){let ie=J.join(h,Ti,aN),ue;try{ue=ce.statSync(ie)}catch{}if(!ue)f=!0;else if(ue.mtimeMs>r){f=!0;let le=new Set(ce.readdirSync(ie)),me=new Map;n.set(h,me);for(let[pe,Be]of ee)le.has(pe)&&me.set(pe,Be)}else n.set(h,ee)}}else I=P.has(E);let U=C.children.get(E);if(I){let{linkType:W,locator:ee}=U,ie={children:new Map,linkType:W,locator:ee};if(S.children.set(E,ie),ee){let ue=je.getSetWithDefault(c,ee);ue.add(R),c.set(ee,ue)}for(let ue of U.children.keys())p(R,ue,U,ie,N)}else U.locator&&s.storedBuildState.delete(G.parseLocator(U.locator).locatorHash)};for(let[h,E]of t){let{linkType:C,locator:S}=E,P={children:new Map,linkType:C,locator:S};if(a.set(h,P),S){let I=je.getSetWithDefault(c,E.locator);I.add(h),c.set(E.locator,I)}E.children.has(Ti)&&p(h,Ti,E,P,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:c,installChangedByUser:f}}function WBe(t){let e=G.parseDescriptor(t);return G.isVirtualDescriptor(e)&&(e=G.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function qdt(t,e,r,{loadManifest:s}){let a=new Map;for(let[f,{locations:p}]of t){let h=WBe(f)?null:await s(f,p[0]),E=new Map;if(h)for(let[C,S]of h.bin){let P=J.join(p[0],S);S!==""&&ce.existsSync(P)&&E.set(C,S)}a.set(f,E)}let n=new Map,c=(f,p,h)=>{let E=new Map,C=J.contains(r,f);if(h.locator&&C!==null){let S=a.get(h.locator);for(let[P,I]of S){let R=J.join(f,fe.toPortablePath(I));E.set(P,R)}for(let[P,I]of h.children){let R=J.join(f,P),N=c(R,R,I);N.size>0&&n.set(f,new Map([...n.get(f)||new Map,...N]))}}else for(let[S,P]of h.children){let I=c(J.join(f,S),p,P);for(let[R,N]of I)E.set(R,N)}return E};for(let[f,p]of e){let h=c(f,f,p);h.size>0&&n.set(f,new Map([...n.get(f)||new Map,...h]))}return n}var MBe=(t,e)=>{if(!t||!e)return t===e;let r=G.parseLocator(t);G.isVirtualLocator(r)&&(r=G.devirtualizeLocator(r));let s=G.parseLocator(e);return G.isVirtualLocator(s)&&(s=G.devirtualizeLocator(s)),G.areLocatorsEqual(r,s)};function TY(t){return J.join(t.get("globalFolder"),"store")}function Wdt(t,e){let r=s=>{let a=s.split(J.sep),n=a.lastIndexOf(Ti);if(n<0||n==a.length-1)throw new Error(`Assertion failed. Path is outside of any node_modules package ${s}`);return a.slice(0,n+(a[n+1].startsWith("@")?3:2)).join(J.sep)};for(let s of t.values())for(let[a,n]of s)e.has(r(n))&&s.delete(a)}async function Ydt(t,e,{baseFs:r,project:s,report:a,loadManifest:n,realLocatorChecksums:c}){let f=J.join(s.cwd,Ti),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:C}=Gdt(t.locationTree,t.binSymlinks,t.mtimeMs,s),S=GBe(e,{skipPrefix:s.cwd}),P=[],I=async({srcDir:Be,dstDir:Ce,linkType:g,globalHardlinksStore:we,nmMode:ye,windowsLinkType:Ae,packageChecksum:se})=>{let Z=(async()=>{try{g==="SOFT"?(await ce.mkdirPromise(J.dirname(Ce),{recursive:!0}),await QY(J.resolve(Be),Ce,Ae)):await jdt(Ce,Be,{baseFs:r,globalHardlinksStore:we,nmMode:ye,windowsLinkType:Ae,packageChecksum:se})}catch(De){throw De.message=`While persisting ${Be} -> ${Ce} ${De.message}`,De}finally{ie.tick()}})().then(()=>P.splice(P.indexOf(Z),1));P.push(Z),P.length>LBe&&await Promise.race(P)},R=async(Be,Ce,g)=>{let we=(async()=>{let ye=async(Ae,se,Z)=>{try{Z.innerLoop||await ce.mkdirPromise(se,{recursive:!0});let De=await ce.readdirPromise(Ae,{withFileTypes:!0});for(let Re of De){if(!Z.innerLoop&&Re.name===aN)continue;let mt=J.join(Ae,Re.name),j=J.join(se,Re.name);Re.isDirectory()?(Re.name!==Ti||Z&&Z.innerLoop)&&(await ce.mkdirPromise(j,{recursive:!0}),await ye(mt,j,{...Z,innerLoop:!0})):me.value==="hardlinks-local"||me.value==="hardlinks-global"?await ce.linkPromise(mt,j):await ce.copyFilePromise(mt,j,_Be.default.constants.COPYFILE_FICLONE)}}catch(De){throw Z.innerLoop||(De.message=`While cloning ${Ae} -> ${se} ${De.message}`),De}finally{Z.innerLoop||ie.tick()}};await ye(Be,Ce,g)})().then(()=>P.splice(P.indexOf(we),1));P.push(we),P.length>LBe&&await Promise.race(P)},N=async(Be,Ce,g)=>{if(g)for(let[we,ye]of Ce.children){let Ae=g.children.get(we);await N(J.join(Be,we),ye,Ae)}else{Ce.children.has(Ti)&&await bw(J.join(Be,Ti),{contentsOnly:!1});let we=J.basename(Be)===Ti&&p.has(J.join(J.dirname(Be)));await bw(Be,{contentsOnly:Be===f,isWorkspaceDir:we})}};for(let[Be,Ce]of p){let g=S.get(Be);for(let[we,ye]of Ce.children){if(we===".")continue;let Ae=g&&g.children.get(we),se=J.join(Be,we);await N(se,ye,Ae)}}let U=async(Be,Ce,g)=>{if(g){MBe(Ce.locator,g.locator)||await bw(Be,{contentsOnly:Ce.linkType==="HARD"});for(let[we,ye]of Ce.children){let Ae=g.children.get(we);await U(J.join(Be,we),ye,Ae)}}else{Ce.children.has(Ti)&&await bw(J.join(Be,Ti),{contentsOnly:!0});let we=J.basename(Be)===Ti&&S.has(J.join(J.dirname(Be)));await bw(Be,{contentsOnly:Ce.linkType==="HARD",isWorkspaceDir:we})}};for(let[Be,Ce]of S){let g=p.get(Be);for(let[we,ye]of Ce.children){if(we===".")continue;let Ae=g&&g.children.get(we);await U(J.join(Be,we),ye,Ae)}}let W=new Map,ee=[];for(let[Be,Ce]of E)for(let g of Ce){let{locationRoot:we,segments:ye}=lN(g,{skipPrefix:s.cwd}),Ae=S.get(we),se=we;if(Ae){for(let Z of ye)if(se=J.join(se,Z),Ae=Ae.children.get(Z),!Ae)break;if(Ae){let Z=MBe(Ae.locator,Be),De=e.get(Ae.locator),Re=De.target,mt=se,j=De.linkType;if(Z)W.has(Re)||W.set(Re,mt);else if(Re!==mt){let rt=G.parseLocator(Ae.locator);G.isVirtualLocator(rt)&&(rt=G.devirtualizeLocator(rt)),ee.push({srcDir:Re,dstDir:mt,linkType:j,realLocatorHash:rt.locatorHash})}}}}for(let[Be,{locations:Ce}]of e.entries())for(let g of Ce){let{locationRoot:we,segments:ye}=lN(g,{skipPrefix:s.cwd}),Ae=p.get(we),se=S.get(we),Z=we,De=e.get(Be),Re=G.parseLocator(Be);G.isVirtualLocator(Re)&&(Re=G.devirtualizeLocator(Re));let mt=Re.locatorHash,j=De.target,rt=g;if(j===rt)continue;let Fe=De.linkType;for(let Ne of ye)se=se.children.get(Ne);if(!Ae)ee.push({srcDir:j,dstDir:rt,linkType:Fe,realLocatorHash:mt});else for(let Ne of ye)if(Z=J.join(Z,Ne),Ae=Ae.children.get(Ne),!Ae){ee.push({srcDir:j,dstDir:rt,linkType:Fe,realLocatorHash:mt});break}}let ie=Ao.progressViaCounter(ee.length),ue=a.reportProgress(ie),le=s.configuration.get("nmMode"),me={value:le},pe=s.configuration.get("winLinkType");try{let Be=me.value==="hardlinks-global"?`${TY(s.configuration)}/v1`:null;if(Be&&!await ce.existsPromise(Be)){await ce.mkdirpPromise(Be);for(let g=0;g<256;g++)await ce.mkdirPromise(J.join(Be,g.toString(16).padStart(2,"0")))}for(let g of ee)(g.linkType==="SOFT"||!W.has(g.srcDir))&&(W.set(g.srcDir,g.dstDir),await I({...g,globalHardlinksStore:Be,nmMode:me,windowsLinkType:pe,packageChecksum:c.get(g.realLocatorHash)||null}));await Promise.all(P),P.length=0;for(let g of ee){let we=W.get(g.srcDir);g.linkType!=="SOFT"&&g.dstDir!==we&&await R(we,g.dstDir,{nmMode:me})}await Promise.all(P),await ce.mkdirPromise(f,{recursive:!0}),Wdt(h,new Set(ee.map(g=>g.dstDir)));let Ce=await qdt(e,S,s.cwd,{loadManifest:n});await Vdt(h,Ce,s.cwd,pe),await _dt(s,e,Ce,me,{installChangedByUser:C}),le=="hardlinks-global"&&me.value=="hardlinks-local"&&a.reportWarningOnce(74,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{ue.stop()}}async function Vdt(t,e,r,s){for(let a of t.keys()){if(J.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!e.has(a)){let n=J.join(a,Ti,aN);await ce.removePromise(n)}}for(let[a,n]of e){if(J.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let c=J.join(a,Ti,aN),f=t.get(a)||new Map;await ce.mkdirPromise(c,{recursive:!0});for(let p of f.keys())n.has(p)||(await ce.removePromise(J.join(c,p)),process.platform==="win32"&&await ce.removePromise(J.join(c,`${p}.cmd`)));for(let[p,h]of n){let E=f.get(p),C=J.join(c,p);E!==h&&(process.platform==="win32"?await(0,UBe.default)(fe.fromPortablePath(h),fe.fromPortablePath(C),{createPwshFile:!1}):(await ce.removePromise(C),await QY(h,C,s),J.contains(r,await ce.realpathPromise(h))!==null&&await ce.chmodPromise(h,493)))}}}Ge();Dt();eA();var GD=class extends sg{constructor(){super(...arguments);this.mode="loose"}makeInstaller(r){return new RY(r)}},RY=class extends Gm{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(r){let s=new uo({baseFs:new $f({maxOpenFiles:80,readOnlyArchives:!0})}),a=SBe(r,this.opts.project.cwd,s),{tree:n,errors:c}=kD(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:C,text:S}of c)this.opts.report.reportError(C,S);return}let f=new Map;r.fallbackPool=f;let p=(C,S)=>{let P=G.parseLocator(S.locator),I=G.stringifyIdent(P);I===C?f.set(C,P.reference):f.set(C,[I,P.reference])},h=J.join(this.opts.project.cwd,Er.nodeModules),E=n.get(h);if(!(typeof E>"u")){if("target"in E)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let C of E.dirList){let S=J.join(h,C),P=n.get(S);if(typeof P>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in P)p(C,P);else for(let I of P.dirList){let R=J.join(S,I),N=n.get(R);if(typeof N>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in N)p(`${C}/${I}`,N);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var Jdt={hooks:{cleanGlobalArtifacts:async t=>{let e=TY(t);await ce.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevents packages to be hoisted past specific levels",type:"STRING",values:["workspaces","dependencies","none"],default:"none"},nmMode:{description:"Defines in which measure Yarn must use hardlinks and symlinks when generated `node_modules` directories.",type:"STRING",values:["classic","hardlinks-local","hardlinks-global"],default:"classic"},nmSelfReferences:{description:"Defines whether the linker should generate self-referencing symlinks for workspaces.",type:"BOOLEAN",default:!0}},linkers:[jD,GD]},Kdt=Jdt;var FK={};Vt(FK,{NpmHttpFetcher:()=>VD,NpmRemapResolver:()=>JD,NpmSemverFetcher:()=>oh,NpmSemverResolver:()=>KD,NpmTagResolver:()=>zD,default:()=>ubt,npmConfigUtils:()=>hi,npmHttpUtils:()=>en,npmPublishUtils:()=>v1});Ge();var $Be=ut(Ai());var oi="npm:";var en={};Vt(en,{AuthType:()=>zBe,customPackageError:()=>qm,del:()=>Amt,get:()=>Wm,getIdentUrl:()=>WD,getPackageMetadata:()=>Qw,handleInvalidAuthenticationError:()=>ag,post:()=>umt,put:()=>fmt});Ge();Ge();Dt();var LY=ut(Vv());ql();var KBe=ut(Ai());var hi={};Vt(hi,{RegistryType:()=>VBe,getAuditRegistry:()=>zdt,getAuthConfiguration:()=>OY,getDefaultRegistry:()=>qD,getPublishRegistry:()=>Xdt,getRegistryConfiguration:()=>JBe,getScopeConfiguration:()=>NY,getScopeRegistry:()=>Pw,isPackageApproved:()=>xw,normalizeRegistry:()=>Jc});Ge();var YBe=ut(Go()),VBe=(s=>(s.AUDIT_REGISTRY="npmAuditRegistry",s.FETCH_REGISTRY="npmRegistryServer",s.PUBLISH_REGISTRY="npmPublishRegistry",s))(VBe||{});function Jc(t){return t.replace(/\/$/,"")}function zdt({configuration:t}){return qD({configuration:t,type:"npmAuditRegistry"})}function Xdt(t,{configuration:e}){return t.publishConfig?.registry?Jc(t.publishConfig.registry):t.name?Pw(t.name.scope,{configuration:e,type:"npmPublishRegistry"}):qD({configuration:e,type:"npmPublishRegistry"})}function Pw(t,{configuration:e,type:r="npmRegistryServer"}){let s=NY(t,{configuration:e});if(s===null)return qD({configuration:e,type:r});let a=s.get(r);return a===null?qD({configuration:e,type:r}):Jc(a)}function qD({configuration:t,type:e="npmRegistryServer"}){let r=t.get(e);return Jc(r!==null?r:t.get("npmRegistryServer"))}function JBe(t,{configuration:e}){let r=e.get("npmRegistries"),s=Jc(t),a=r.get(s);if(typeof a<"u")return a;let n=r.get(s.replace(/^[a-z]+:/,""));return typeof n<"u"?n:null}var Zdt=new Map([["npmRegistryServer","https://npm.jsr.io/"]]);function NY(t,{configuration:e}){if(t===null)return null;let s=e.get("npmScopes").get(t);return s||(t==="jsr"?Zdt:null)}function OY(t,{configuration:e,ident:r}){let s=r&&NY(r.scope,{configuration:e});return s?.get("npmAuthIdent")||s?.get("npmAuthToken")?s:JBe(t,{configuration:e})||e}function $dt({configuration:t,version:e,publishTimes:r}){let s=t.get("npmMinimalAgeGate");if(s){let a=r?.[e];if(typeof a>"u"||(new Date().getTime()-new Date(a).getTime())/60/1e3emt(e,r,s))}function xw(t){return!$dt(t)||tmt(t)}var zBe=(a=>(a[a.NO_AUTH=0]="NO_AUTH",a[a.BEST_EFFORT=1]="BEST_EFFORT",a[a.CONFIGURATION=2]="CONFIGURATION",a[a.ALWAYS_AUTH=3]="ALWAYS_AUTH",a))(zBe||{});async function ag(t,{attemptedAs:e,registry:r,headers:s,configuration:a}){if(uN(t))throw new jt(41,"Invalid OTP token");if(t.originalError?.name==="HTTPError"&&t.originalError?.response.statusCode===401)throw new jt(41,`Invalid authentication (${typeof e!="string"?`as ${await hmt(r,s,{configuration:a})}`:`attempted as ${e}`})`)}function qm(t,e){let r=t.response?.statusCode;return r?r===404?"Package not found":r>=500&&r<600?`The registry appears to be down (using a ${he.applyHyperlink(e,"local cache","https://yarnpkg.com/advanced/lexicon#local-cache")} might have protected you against such outages)`:null:null}function WD(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}var XBe=new Map,rmt=new Map;async function nmt(t){return await je.getFactoryWithDefault(XBe,t,async()=>{let e=null;try{e=await ce.readJsonPromise(t)}catch{}return e})}async function imt(t,e,{configuration:r,cached:s,registry:a,headers:n,version:c,...f}){return await je.getFactoryWithDefault(rmt,t,async()=>await Wm(WD(e),{...f,customErrorMessage:qm,configuration:r,registry:a,ident:e,headers:{...n,"If-None-Match":s?.etag,"If-Modified-Since":s?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(s===null)throw new Error("Assertion failed: cachedMetadata should not be null");return{...h,body:s.metadata}}let E=omt(JSON.parse(h.body.toString())),C={metadata:E,etag:h.headers.etag,lastModified:h.headers["last-modified"]};return XBe.set(t,Promise.resolve(C)),Promise.resolve().then(async()=>{let S=`${t}-${process.pid}.tmp`;await ce.mkdirPromise(J.dirname(S),{recursive:!0}),await ce.writeJsonPromise(S,C,{compact:!0}),await ce.renamePromise(S,t)}).catch(()=>{}),{...h,body:E}}}))}function smt(t){return t.scope!==null?`@${t.scope}-${t.name}-${t.scope.length}`:t.name}async function Qw(t,{cache:e,project:r,registry:s,headers:a,version:n,...c}){let{configuration:f}=r;s=YD(f,{ident:t,registry:s});let p=lmt(f,s),h=J.join(p,`${smt(t)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await nmt(h),E)){if(typeof n<"u"&&typeof E.metadata.versions[n]<"u")return E.metadata;if(f.get("enableOfflineMode")){let C=structuredClone(E.metadata),S=new Set;if(e){for(let I of Object.keys(C.versions)){let R=G.makeLocator(t,`npm:${I}`),N=e.getLocatorMirrorPath(R);(!N||!ce.existsSync(N))&&(delete C.versions[I],S.add(I))}let P=C["dist-tags"].latest;if(S.has(P)){let I=Object.keys(E.metadata.versions).sort(KBe.default.compare),R=I.indexOf(P);for(;S.has(I[R])&&R>=0;)R-=1;R>=0?C["dist-tags"].latest=I[R]:delete C["dist-tags"].latest}}return C}}return await imt(h,t,{...c,configuration:f,cached:E,registry:s,headers:a,version:n})}var ZBe=["name","dist.tarball","bin","scripts","os","cpu","libc","dependencies","dependenciesMeta","optionalDependencies","peerDependencies","peerDependenciesMeta","deprecated"];function omt(t){return{"dist-tags":t["dist-tags"],versions:Object.fromEntries(Object.entries(t.versions).map(([e,r])=>[e,Kd(r,ZBe)])),time:t.time}}var amt=Nn.makeHash("time",...ZBe).slice(0,6);function lmt(t,e){let r=cmt(t),s=new URL(e);return J.join(r,amt,s.hostname)}function cmt(t){return J.join(t.get("globalFolder"),"metadata/npm")}async function Wm(t,{configuration:e,headers:r,ident:s,authType:a,allowOidc:n,registry:c,...f}){c=YD(e,{ident:s,registry:c}),s&&s.scope&&typeof a>"u"&&(a=1);let p=await cN(c,{authType:a,allowOidc:n,configuration:e,ident:s});p&&(r={...r,authorization:p});try{return await nn.get(t.charAt(0)==="/"?`${c}${t}`:t,{configuration:e,headers:r,...f})}catch(h){throw await ag(h,{registry:c,configuration:e,headers:r}),h}}async function umt(t,e,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=YD(s,{ident:n,registry:p});let C=await cN(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...kw(h)});try{return await nn.post(p+t,e,{configuration:s,headers:a,...E})}catch(S){if(!uN(S)||h)throw await ag(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await MY(S,{configuration:s});let P={...a,...kw(h)};try{return await nn.post(`${p}${t}`,e,{configuration:s,headers:P,...E})}catch(I){throw await ag(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function fmt(t,e,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=YD(s,{ident:n,registry:p});let C=await cN(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...kw(h)});try{return await nn.put(p+t,e,{configuration:s,headers:a,...E})}catch(S){if(!uN(S))throw await ag(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await MY(S,{configuration:s});let P={...a,...kw(h)};try{return await nn.put(`${p}${t}`,e,{configuration:s,headers:P,...E})}catch(I){throw await ag(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function Amt(t,{attemptedAs:e,configuration:r,headers:s,ident:a,authType:n=3,allowOidc:c,registry:f,otp:p,...h}){f=YD(r,{ident:a,registry:f});let E=await cN(f,{authType:n,allowOidc:c,configuration:r,ident:a});E&&(s={...s,authorization:E}),p&&(s={...s,...kw(p)});try{return await nn.del(f+t,{configuration:r,headers:s,...h})}catch(C){if(!uN(C)||p)throw await ag(C,{attemptedAs:e,registry:f,configuration:r,headers:s}),C;p=await MY(C,{configuration:r});let S={...s,...kw(p)};try{return await nn.del(`${f}${t}`,{configuration:r,headers:S,...h})}catch(P){throw await ag(P,{attemptedAs:e,registry:f,configuration:r,headers:s}),P}}}function YD(t,{ident:e,registry:r}){if(typeof r>"u"&&e)return Pw(e.scope,{configuration:t});if(typeof r!="string")throw new Error("Assertion failed: The registry should be a string");return Jc(r)}async function cN(t,{authType:e=2,allowOidc:r=!1,configuration:s,ident:a}){let n=OY(t,{configuration:s,ident:a}),c=pmt(n,e);if(!c)return null;let f=await s.reduceHook(p=>p.getNpmAuthenticationHeader,void 0,t,{configuration:s,ident:a});if(f)return f;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let p=n.get("npmAuthIdent");return p.includes(":")?`Basic ${Buffer.from(p).toString("base64")}`:`Basic ${p}`}if(r&&a){let p=await gmt(t,{configuration:s,ident:a});if(p)return`Bearer ${p}`}if(c&&e!==1)throw new jt(33,"No authentication configured for request");return null}function pmt(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function hmt(t,e,{configuration:r}){if(typeof e>"u"||typeof e.authorization>"u")return"an anonymous user";try{return(await nn.get(new URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??"an unknown user"}catch{return"an unknown user"}}async function MY(t,{configuration:e}){let r=t.originalError?.response.headers["npm-notice"];if(r&&(await Ot.start({configuration:e,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\/\/\S+)/g,he.pretty(e,"$1",he.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\/\/\S+)/i);if(n&&Ui.openUrl){let{openNow:c}=await(0,LY.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open this url now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});c&&(await Ui.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.")))}}}),process.stdout.write(` -`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";let{otp:s}=await(0,LY.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(` -`),s}function uN(t){if(t.originalError?.name!=="HTTPError")return!1;try{return(t.originalError?.response.headers["www-authenticate"].split(/,\s*/).map(r=>r.toLowerCase())).includes("otp")}catch{return!1}}function kw(t){return{"npm-otp":t}}async function gmt(t,{configuration:e,ident:r}){let s=null;if(process.env.GITLAB_CI)s=process.env.NPM_ID_TOKEN||null;else if(process.env.GITHUB_ACTIONS){if(!(process.env.ACTIONS_ID_TOKEN_REQUEST_URL&&process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN))return null;let a=`npm:${new URL(t).host.replace("registry.yarnpkg.com","registry.npmjs.org").replace("yarn.npmjs.org","registry.npmjs.org")}`,n=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);n.searchParams.append("audience",a),s=(await nn.get(n.href,{configuration:e,jsonResponse:!0,headers:{Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).value}if(!s)return null;try{return(await nn.post(`${t}/-/npm/v1/oidc/token/exchange/package${WD(r)}`,null,{configuration:e,jsonResponse:!0,headers:{Authorization:`Bearer ${s}`}})).token||null}catch{}return null}var VD=class{supports(e,r){if(!e.reference.startsWith(oi))return!1;let{selector:s,params:a}=G.parseRange(e.reference);return!(!$Be.default.valid(s)||a===null||typeof a.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let{params:s}=G.parseRange(e.reference);if(s===null||typeof s.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let a=await Wm(s.__archiveUrl,{customErrorMessage:qm,configuration:r.project.configuration,ident:e});return await ps.convertToZip(a,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}};Ge();var JD=class{supportsDescriptor(e,r){return!(!e.range.startsWith(oi)||!G.tryParseDescriptor(e.range.slice(oi.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){let s=r.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(oi.length),!0));return r.resolver.getResolutionDependencies(s,r)}async getCandidates(e,r,s){let a=s.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(oi.length),!0));return await s.resolver.getCandidates(a,r,s)}async getSatisfying(e,r,s,a){let n=a.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(oi.length),!0));return a.resolver.getSatisfying(n,r,s,a)}resolve(e,r){throw new Error("Unreachable")}};Ge();Ge();var eve=ut(Ai());var oh=class t{supports(e,r){if(!e.reference.startsWith(oi))return!1;let s=new URL(e.reference);return!(!eve.default.valid(s.pathname)||s.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s;try{s=await Wm(t.getLocatorUrl(e),{customErrorMessage:qm,configuration:r.project.configuration,ident:e})}catch{s=await Wm(t.getLocatorUrl(e).replace(/%2f/g,"/"),{customErrorMessage:qm,configuration:r.project.configuration,ident:e})}return await ps.convertToZip(s,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:s}){let a=Pw(e.scope,{configuration:s}),n=t.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),a=a.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===a+n||r===a+n.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=Fr.clean(e.reference.slice(oi.length));if(r===null)throw new jt(10,"The npm semver resolver got selected, but the version isn't semver");return`${WD(e)}/-/${e.name}-${r}.tgz`}};Ge();Ge();Ge();var UY=ut(Ai());var fN=G.makeIdent(null,"node-gyp"),dmt=/\b(node-gyp|prebuild-install)\b/,KD=class{supportsDescriptor(e,r){return e.range.startsWith(oi)?!!Fr.validRange(e.range.slice(oi.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(oi))return!1;let{selector:s}=G.parseRange(e.reference);return!!UY.default.valid(s)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=Fr.validRange(e.range.slice(oi.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(oi.length)}`);let n=await Qw(e,{cache:s.fetchOptions?.cache,project:s.project,version:UY.default.valid(a.raw)?a.raw:void 0}),c=je.mapAndFilter(Object.keys(n.versions),h=>{try{let E=new Fr.SemVer(h);if(a.test(E))return xw({configuration:s.project.configuration,ident:e,version:h,publishTimes:n.time})?E:je.mapAndFilter.skip}catch{}return je.mapAndFilter.skip}),f=c.filter(h=>!n.versions[h.raw].deprecated),p=f.length>0?f:c;return p.sort((h,E)=>-h.compare(E)),p.map(h=>{let E=G.makeLocator(e,`${oi}${h.raw}`),C=n.versions[h.raw].dist.tarball;return oh.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?E:G.bindLocator(E,{__archiveUrl:C})})}async getSatisfying(e,r,s,a){let n=Fr.validRange(e.range.slice(oi.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(oi.length)}`);return{locators:je.mapAndFilter(s,p=>{if(p.identHash!==e.identHash)return je.mapAndFilter.skip;let h=G.tryParseRange(p.reference,{requireProtocol:oi});if(!h)return je.mapAndFilter.skip;let E=new Fr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:je.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:s}=G.parseRange(e.reference),a=Fr.clean(s);if(a===null)throw new jt(10,"The npm semver resolver got selected, but the version isn't semver");let n=await Qw(e,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,"versions"))throw new jt(15,'Registry returned invalid data for - missing "versions" field');if(!Object.hasOwn(n.versions,a))throw new jt(16,`Registry failed to return reference "${a}"`);let c=new Ut;if(c.load(n.versions[a]),!c.dependencies.has(fN.identHash)&&!c.peerDependencies.has(fN.identHash)){for(let f of c.scripts.values())if(f.match(dmt)){c.dependencies.set(fN.identHash,G.makeDescriptor(fN,"latest"));break}}return{...e,version:a,languageName:"node",linkType:"HARD",conditions:c.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(c.dependencies),peerDependencies:c.peerDependencies,dependenciesMeta:c.dependenciesMeta,peerDependenciesMeta:c.peerDependenciesMeta,bin:c.bin}}};Ge();Ge();var AN=ut(Ai());var zD=class{supportsDescriptor(e,r){return!(!e.range.startsWith(oi)||!Mp.test(e.range.slice(oi.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(oi.length),n=await Qw(e,{cache:s.fetchOptions?.cache,project:s.project});if(!Object.hasOwn(n,"dist-tags"))throw new jt(15,'Registry returned invalid data - missing "dist-tags" field');let c=n["dist-tags"];if(!Object.hasOwn(c,a))throw new jt(16,`Registry failed to return tag "${a}"`);let f=Object.keys(n.versions),p=n.time,h=c[a];if(a==="latest"&&!xw({configuration:s.project.configuration,ident:e,version:h,publishTimes:p})){let S=h.includes("-"),P=AN.default.rsort(f).find(I=>AN.default.lt(I,h)&&(S||!I.includes("-"))&&xw({configuration:s.project.configuration,ident:e,version:I,publishTimes:p}));if(!P)throw new jt(16,`The version for tag "${a}" is quarantined, and no lower version is available`);h=P}let E=G.makeLocator(e,`${oi}${h}`),C=n.versions[h].dist.tarball;return oh.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?[E]:[G.bindLocator(E,{__archiveUrl:C})]}async getSatisfying(e,r,s,a){let n=[];for(let c of s){if(c.identHash!==e.identHash)continue;let f=G.tryParseRange(c.reference,{requireProtocol:oi});if(!(!f||!AN.default.valid(f.selector))){if(f.params?.__archiveUrl){let p=G.makeRange({protocol:oi,selector:f.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(G.makeDescriptor(e,p),r,a);if(c.reference!==h.reference)continue}n.push(c)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error("Unreachable")}};var v1={};Vt(v1,{getGitHead:()=>abt,getPublishAccess:()=>qxe,getReadmeContent:()=>Wxe,makePublishBody:()=>obt});Ge();Ge();Dt();var bV={};Vt(bV,{PackCommand:()=>jw,default:()=>KEt,packUtils:()=>yA});Ge();Ge();Ge();Dt();Yt();var yA={};Vt(yA,{genPackList:()=>NN,genPackStream:()=>DV,genPackageManifest:()=>QSe,hasPackScripts:()=>vV,prepareForPack:()=>SV});Ge();Dt();var BV=ut(Go()),xSe=ut(SSe()),kSe=Ie("zlib"),MEt=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],UEt=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function vV(t){return!!(In.hasWorkspaceScript(t,"prepack")||In.hasWorkspaceScript(t,"postpack"))}async function SV(t,{report:e},r){await In.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let s=J.join(t.cwd,Ut.fileName);await ce.existsPromise(s)&&await t.manifest.loadFile(s,{baseFs:ce}),await r()}finally{await In.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function DV(t,e){typeof e>"u"&&(e=await NN(t));let r=new Set;for(let n of t.manifest.publishConfig?.executableFiles??new Set)r.add(J.normalize(n));for(let n of t.manifest.bin.values())r.add(J.normalize(n));let s=xSe.default.pack();process.nextTick(async()=>{for(let n of e){let c=J.normalize(n),f=J.resolve(t.cwd,c),p=J.join("package",c),h=await ce.lstatPromise(f),E={name:p,mtime:new Date(fi.SAFE_TIME*1e3)},C=r.has(c)?493:420,S,P,I=new Promise((N,U)=>{S=N,P=U}),R=N=>{N?P(N):S()};if(h.isFile()){let N;c==="package.json"?N=Buffer.from(JSON.stringify(await QSe(t),null,2)):N=await ce.readFilePromise(f),s.entry({...E,mode:C,type:"file"},N,R)}else h.isSymbolicLink()?s.entry({...E,mode:C,type:"symlink",linkname:await ce.readlinkPromise(f)},R):R(new Error(`Unsupported file type ${h.mode} for ${fe.fromPortablePath(c)}`));await I}s.finalize()});let a=(0,kSe.createGzip)();return s.pipe(a),a}async function QSe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function NN(t){let e=t.project,r=e.configuration,s={accept:[],reject:[]};for(let C of UEt)s.reject.push(C);for(let C of MEt)s.accept.push(C);s.reject.push(r.get("rcFilename"));let a=C=>{if(C===null||!C.startsWith(`${t.cwd}/`))return;let S=J.relative(t.cwd,C),P=J.resolve(vt.root,S);s.reject.push(P)};a(J.resolve(e.cwd,Er.lockfile)),a(r.get("cacheFolder")),a(r.get("globalFolder")),a(r.get("installStatePath")),a(r.get("virtualFolder")),a(r.get("yarnPath")),await r.triggerHook(C=>C.populateYarnPaths,e,C=>{a(C)});for(let C of e.workspaces){let S=J.relative(t.cwd,C.cwd);S!==""&&!S.match(/^(\.\.)?\//)&&s.reject.push(`/${S}`)}let n={accept:[],reject:[]},c=t.manifest.publishConfig?.main??t.manifest.main,f=t.manifest.publishConfig?.module??t.manifest.module,p=t.manifest.publishConfig?.browser??t.manifest.browser,h=t.manifest.publishConfig?.bin??t.manifest.bin;c!=null&&n.accept.push(J.resolve(vt.root,c)),f!=null&&n.accept.push(J.resolve(vt.root,f)),typeof p=="string"&&n.accept.push(J.resolve(vt.root,p));for(let C of h.values())n.accept.push(J.resolve(vt.root,C));if(p instanceof Map)for(let[C,S]of p.entries())n.accept.push(J.resolve(vt.root,C)),typeof S=="string"&&n.accept.push(J.resolve(vt.root,S));let E=t.manifest.files!==null;if(E){n.reject.push("/*");for(let C of t.manifest.files)TSe(n.accept,C,{cwd:vt.root})}return await _Et(t.cwd,{hasExplicitFileList:E,globalList:s,ignoreList:n})}async function _Et(t,{hasExplicitFileList:e,globalList:r,ignoreList:s}){let a=[],n=new Hf(t),c=[[vt.root,[s]]];for(;c.length>0;){let[f,p]=c.pop(),h=await n.lstatPromise(f);if(!bSe(f,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(f),C=!1,S=!1;if(!e||f!==vt.root)for(let R of E)C=C||R===".gitignore",S=S||R===".npmignore";let P=S?await DSe(n,f,".npmignore"):C?await DSe(n,f,".gitignore"):null,I=P!==null?[P].concat(p):p;bSe(f,{globalList:r,ignoreLists:p})&&(I=[...p,{accept:[],reject:["**/*"]}]);for(let R of E)c.push([J.resolve(f,R),I])}else(h.isFile()||h.isSymbolicLink())&&a.push(J.relative(vt.root,f))}return a.sort()}async function DSe(t,e,r){let s={accept:[],reject:[]},a=await t.readFilePromise(J.join(e,r),"utf8");for(let n of a.split(/\n/g))TSe(s.reject,n,{cwd:e});return s}function HEt(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=J.resolve(e,t)),r&&(t=`!${t}`),t}function TSe(t,e,{cwd:r}){let s=e.trim();s===""||s[0]==="#"||t.push(HEt(s,{cwd:r}))}function bSe(t,{globalList:e,ignoreLists:r}){let s=FN(t,e.accept);if(s!==0)return s===2;let a=FN(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let c=FN(t,n.accept);if(c!==0)return c===2;let f=FN(t,n.reject);if(f!==0)return f===1}return!1}function FN(t,e){let r=e,s=[];for(let a=0;a{await SV(a,{report:p},async()=>{p.reportJson({base:fe.fromPortablePath(a.cwd)});let h=await NN(a);for(let E of h)p.reportInfo(null,fe.fromPortablePath(E)),p.reportJson({location:fe.fromPortablePath(E)});if(!this.dryRun){let E=await DV(a,h);await ce.mkdirPromise(J.dirname(c),{recursive:!0});let C=ce.createWriteStream(c);E.pipe(C),await new Promise(S=>{C.on("finish",S)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${he.pretty(r,c,he.Type.PATH)}`),p.reportJson({output:fe.fromPortablePath(c)}))})).exitCode()}};function jEt(t,{workspace:e}){let r=t.replace("%s",GEt(e)).replace("%v",qEt(e));return fe.toPortablePath(r)}function GEt(t){return t.manifest.name!==null?G.slugifyIdent(t.manifest.name):"package"}function qEt(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var WEt=["dependencies","devDependencies","peerDependencies"],YEt="workspace:",VEt=(t,e)=>{e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.imports&&(e.imports=e.publishConfig.imports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of WEt)for(let a of t.manifest.getForScope(s).values()){let n=r.tryWorkspaceByDescriptor(a),c=G.parseRange(a.range);if(c.protocol===YEt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new jt(21,`${G.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let f;G.areDescriptorsEqual(a,n.anchoredDescriptor)||c.selector==="*"?f=n.manifest.version??"0.0.0":c.selector==="~"||c.selector==="^"?f=`${c.selector}${n.manifest.version??"0.0.0"}`:f=c.selector;let p=s==="dependencies"?G.makeDescriptor(a,"unknown"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?"optionalDependencies":s;e[h][G.stringifyIdent(a)]=f}}},JEt={hooks:{beforeWorkspacePacking:VEt},commands:[jw]},KEt=JEt;var Gxe=ut(HSe());Ge();var Hxe=ut(_xe()),{env:Bt}=process,XDt="application/vnd.in-toto+json",ZDt="https://in-toto.io/Statement/v0.1",$Dt="https://in-toto.io/Statement/v1",ebt="https://slsa.dev/provenance/v0.2",tbt="https://slsa.dev/provenance/v1",rbt="https://github.com/actions/runner",nbt="https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1",ibt="https://github.com/npm/cli/gitlab",sbt="v0alpha1",jxe=async(t,e)=>{let r;if(Bt.GITHUB_ACTIONS){if(!Bt.ACTIONS_ID_TOKEN_REQUEST_URL)throw new jt(91,'Provenance generation in GitHub Actions requires "write" access to the "id-token" permission');let s=(Bt.GITHUB_WORKFLOW_REF||"").replace(`${Bt.GITHUB_REPOSITORY}/`,""),a=s.indexOf("@"),n=s.slice(0,a),c=s.slice(a+1);r={_type:$Dt,subject:t,predicateType:tbt,predicate:{buildDefinition:{buildType:nbt,externalParameters:{workflow:{ref:c,repository:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}`,path:n}},internalParameters:{github:{event_name:Bt.GITHUB_EVENT_NAME,repository_id:Bt.GITHUB_REPOSITORY_ID,repository_owner_id:Bt.GITHUB_REPOSITORY_OWNER_ID}},resolvedDependencies:[{uri:`git+${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}@${Bt.GITHUB_REF}`,digest:{gitCommit:Bt.GITHUB_SHA}}]},runDetails:{builder:{id:`${rbt}/${Bt.RUNNER_ENVIRONMENT}`},metadata:{invocationId:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}/actions/runs/${Bt.GITHUB_RUN_ID}/attempts/${Bt.GITHUB_RUN_ATTEMPT}`}}}}}else if(Bt.GITLAB_CI){if(!Bt.SIGSTORE_ID_TOKEN)throw new jt(91,`Provenance generation in GitLab CI requires "SIGSTORE_ID_TOKEN" with "sigstore" audience to be present in "id_tokens". For more info see: -https://docs.gitlab.com/ee/ci/secrets/id_token_authentication.html`);r={_type:ZDt,subject:t,predicateType:ebt,predicate:{buildType:`${ibt}/${sbt}`,builder:{id:`${Bt.CI_PROJECT_URL}/-/runners/${Bt.CI_RUNNER_ID}`},invocation:{configSource:{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA},entryPoint:Bt.CI_JOB_NAME},parameters:{CI:Bt.CI,CI_API_GRAPHQL_URL:Bt.CI_API_GRAPHQL_URL,CI_API_V4_URL:Bt.CI_API_V4_URL,CI_BUILD_BEFORE_SHA:Bt.CI_BUILD_BEFORE_SHA,CI_BUILD_ID:Bt.CI_BUILD_ID,CI_BUILD_NAME:Bt.CI_BUILD_NAME,CI_BUILD_REF:Bt.CI_BUILD_REF,CI_BUILD_REF_NAME:Bt.CI_BUILD_REF_NAME,CI_BUILD_REF_SLUG:Bt.CI_BUILD_REF_SLUG,CI_BUILD_STAGE:Bt.CI_BUILD_STAGE,CI_COMMIT_BEFORE_SHA:Bt.CI_COMMIT_BEFORE_SHA,CI_COMMIT_BRANCH:Bt.CI_COMMIT_BRANCH,CI_COMMIT_REF_NAME:Bt.CI_COMMIT_REF_NAME,CI_COMMIT_REF_PROTECTED:Bt.CI_COMMIT_REF_PROTECTED,CI_COMMIT_REF_SLUG:Bt.CI_COMMIT_REF_SLUG,CI_COMMIT_SHA:Bt.CI_COMMIT_SHA,CI_COMMIT_SHORT_SHA:Bt.CI_COMMIT_SHORT_SHA,CI_COMMIT_TIMESTAMP:Bt.CI_COMMIT_TIMESTAMP,CI_COMMIT_TITLE:Bt.CI_COMMIT_TITLE,CI_CONFIG_PATH:Bt.CI_CONFIG_PATH,CI_DEFAULT_BRANCH:Bt.CI_DEFAULT_BRANCH,CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_SERVER:Bt.CI_DEPENDENCY_PROXY_SERVER,CI_DEPENDENCY_PROXY_USER:Bt.CI_DEPENDENCY_PROXY_USER,CI_JOB_ID:Bt.CI_JOB_ID,CI_JOB_NAME:Bt.CI_JOB_NAME,CI_JOB_NAME_SLUG:Bt.CI_JOB_NAME_SLUG,CI_JOB_STAGE:Bt.CI_JOB_STAGE,CI_JOB_STARTED_AT:Bt.CI_JOB_STARTED_AT,CI_JOB_URL:Bt.CI_JOB_URL,CI_NODE_TOTAL:Bt.CI_NODE_TOTAL,CI_PAGES_DOMAIN:Bt.CI_PAGES_DOMAIN,CI_PAGES_URL:Bt.CI_PAGES_URL,CI_PIPELINE_CREATED_AT:Bt.CI_PIPELINE_CREATED_AT,CI_PIPELINE_ID:Bt.CI_PIPELINE_ID,CI_PIPELINE_IID:Bt.CI_PIPELINE_IID,CI_PIPELINE_SOURCE:Bt.CI_PIPELINE_SOURCE,CI_PIPELINE_URL:Bt.CI_PIPELINE_URL,CI_PROJECT_CLASSIFICATION_LABEL:Bt.CI_PROJECT_CLASSIFICATION_LABEL,CI_PROJECT_DESCRIPTION:Bt.CI_PROJECT_DESCRIPTION,CI_PROJECT_ID:Bt.CI_PROJECT_ID,CI_PROJECT_NAME:Bt.CI_PROJECT_NAME,CI_PROJECT_NAMESPACE:Bt.CI_PROJECT_NAMESPACE,CI_PROJECT_NAMESPACE_ID:Bt.CI_PROJECT_NAMESPACE_ID,CI_PROJECT_PATH:Bt.CI_PROJECT_PATH,CI_PROJECT_PATH_SLUG:Bt.CI_PROJECT_PATH_SLUG,CI_PROJECT_REPOSITORY_LANGUAGES:Bt.CI_PROJECT_REPOSITORY_LANGUAGES,CI_PROJECT_ROOT_NAMESPACE:Bt.CI_PROJECT_ROOT_NAMESPACE,CI_PROJECT_TITLE:Bt.CI_PROJECT_TITLE,CI_PROJECT_URL:Bt.CI_PROJECT_URL,CI_PROJECT_VISIBILITY:Bt.CI_PROJECT_VISIBILITY,CI_REGISTRY:Bt.CI_REGISTRY,CI_REGISTRY_IMAGE:Bt.CI_REGISTRY_IMAGE,CI_REGISTRY_USER:Bt.CI_REGISTRY_USER,CI_RUNNER_DESCRIPTION:Bt.CI_RUNNER_DESCRIPTION,CI_RUNNER_ID:Bt.CI_RUNNER_ID,CI_RUNNER_TAGS:Bt.CI_RUNNER_TAGS,CI_SERVER_HOST:Bt.CI_SERVER_HOST,CI_SERVER_NAME:Bt.CI_SERVER_NAME,CI_SERVER_PORT:Bt.CI_SERVER_PORT,CI_SERVER_PROTOCOL:Bt.CI_SERVER_PROTOCOL,CI_SERVER_REVISION:Bt.CI_SERVER_REVISION,CI_SERVER_SHELL_SSH_HOST:Bt.CI_SERVER_SHELL_SSH_HOST,CI_SERVER_SHELL_SSH_PORT:Bt.CI_SERVER_SHELL_SSH_PORT,CI_SERVER_URL:Bt.CI_SERVER_URL,CI_SERVER_VERSION:Bt.CI_SERVER_VERSION,CI_SERVER_VERSION_MAJOR:Bt.CI_SERVER_VERSION_MAJOR,CI_SERVER_VERSION_MINOR:Bt.CI_SERVER_VERSION_MINOR,CI_SERVER_VERSION_PATCH:Bt.CI_SERVER_VERSION_PATCH,CI_TEMPLATE_REGISTRY_HOST:Bt.CI_TEMPLATE_REGISTRY_HOST,GITLAB_CI:Bt.GITLAB_CI,GITLAB_FEATURES:Bt.GITLAB_FEATURES,GITLAB_USER_ID:Bt.GITLAB_USER_ID,GITLAB_USER_LOGIN:Bt.GITLAB_USER_LOGIN,RUNNER_GENERATE_ARTIFACTS_METADATA:Bt.RUNNER_GENERATE_ARTIFACTS_METADATA},environment:{name:Bt.CI_RUNNER_DESCRIPTION,architecture:Bt.CI_RUNNER_EXECUTABLE_ARCH,server:Bt.CI_SERVER_URL,project:Bt.CI_PROJECT_PATH,job:{id:Bt.CI_JOB_ID},pipeline:{id:Bt.CI_PIPELINE_ID,ref:Bt.CI_CONFIG_PATH}}},metadata:{buildInvocationId:`${Bt.CI_JOB_URL}`,completeness:{parameters:!0,environment:!0,materials:!1},reproducible:!1},materials:[{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA}}]}}}else throw new jt(91,"Provenance generation is only supported in GitHub Actions and GitLab CI");return Hxe.attest(Buffer.from(JSON.stringify(r)),XDt,e)};async function obt(t,e,{access:r,tag:s,registry:a,gitHead:n,provenance:c}){let f=t.manifest.name,p=t.manifest.version,h=G.stringifyIdent(f),E=Gxe.default.fromData(e,{algorithms:["sha1","sha512"]}),C=r??qxe(t,f),S=await Wxe(t),P=await yA.genPackageManifest(t),I=`${h}-${p}.tgz`,R=new URL(`${Jc(a)}/${h}/-/${I}`),N={[I]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}};if(c){let U={name:`pkg:npm/${h.replace(/^@/,"%40")}@${p}`,digest:{sha512:E.sha512[0].hexDigest()}},W=await jxe([U]),ee=JSON.stringify(W);N[`${h}-${p}.sigstore`]={content_type:W.mediaType,data:ee,length:ee.length}}return{_id:h,_attachments:N,name:h,access:C,"dist-tags":{[s]:p},versions:{[p]:{...P,_id:`${h}@${p}`,name:h,version:p,gitHead:n,dist:{shasum:E.sha1[0].hexDigest(),integrity:E.sha512[0].toString(),tarball:R.toString()}}},readme:S}}async function abt(t){try{let{stdout:e}=await qr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}function qxe(t,e){let r=t.project.configuration;return t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?t.manifest.publishConfig.access:r.get("npmPublishAccess")!==null?r.get("npmPublishAccess"):e.scope?"restricted":"public"}async function Wxe(t){let e=fe.toPortablePath(`${t.cwd}/README.md`),r=t.manifest.name,a=`# ${G.stringifyIdent(r)} -`;try{a=await ce.readFilePromise(e,"utf8")}catch(n){if(n.code==="ENOENT")return a;throw n}return a}var RK={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},Yxe={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},lbt={npmMinimalAgeGate:{description:"Minimum age of a package version according to the publish date on the npm registry to be considered for installation",type:"DURATION",unit:"m",default:"0m"},npmPreapprovedPackages:{description:"Array of package descriptors or package name glob patterns to exclude from the minimum release age check",type:"STRING",isArray:!0,default:[]}},cbt={configuration:{...RK,...Yxe,...lbt,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...RK,...Yxe}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:Jc,valueDefinition:{description:"",type:"SHAPE",properties:{...RK}}}},fetchers:[VD,oh],resolvers:[JD,KD,zD]},ubt=cbt;var qK={};Vt(qK,{NpmAuditCommand:()=>D1,NpmInfoCommand:()=>b1,NpmLoginCommand:()=>P1,NpmLogoutCommand:()=>k1,NpmPublishCommand:()=>Q1,NpmTagAddCommand:()=>R1,NpmTagListCommand:()=>T1,NpmTagRemoveCommand:()=>F1,NpmWhoamiCommand:()=>N1,default:()=>wbt,npmAuditTypes:()=>zb,npmAuditUtils:()=>kL});Ge();Ge();Yt();var UK=ut(Go());Ul();var zb={};Vt(zb,{Environment:()=>Jb,Severity:()=>Kb});var Jb=(s=>(s.All="all",s.Production="production",s.Development="development",s))(Jb||{}),Kb=(n=>(n.Info="info",n.Low="low",n.Moderate="moderate",n.High="high",n.Critical="critical",n))(Kb||{});var kL={};Vt(kL,{allSeverities:()=>S1,getPackages:()=>MK,getReportTree:()=>OK,getSeverityInclusions:()=>NK,getTopLevelDependencies:()=>LK});Ge();var Vxe=ut(Ai());var S1=["info","low","moderate","high","critical"];function NK(t){if(typeof t>"u")return new Set(S1);let e=S1.indexOf(t),r=S1.slice(e);return new Set(r)}function OK(t){let e={},r={children:e};for(let[s,a]of je.sortMap(Object.entries(t),n=>n[0]))for(let n of je.sortMap(a,c=>`${c.id}`))e[`${s}/${n.id}`]={value:he.tuple(he.Type.IDENT,G.parseIdent(s)),children:{ID:typeof n.id<"u"&&{label:"ID",value:he.tuple(he.Type.ID,n.id)},Issue:{label:"Issue",value:he.tuple(he.Type.NO_HINT,n.title)},URL:typeof n.url<"u"&&{label:"URL",value:he.tuple(he.Type.URL,n.url)},Severity:{label:"Severity",value:he.tuple(he.Type.NO_HINT,n.severity)},"Vulnerable Versions":{label:"Vulnerable Versions",value:he.tuple(he.Type.RANGE,n.vulnerable_versions)},"Tree Versions":{label:"Tree Versions",children:[...n.versions].sort(Vxe.default.compare).map(c=>({value:he.tuple(he.Type.REFERENCE,c)}))},Dependents:{label:"Dependents",children:je.sortMap(n.dependents,c=>G.stringifyLocator(c)).map(c=>({value:he.tuple(he.Type.LOCATOR,c)}))}}};return r}function LK(t,e,{all:r,environment:s}){let a=[],n=r?t.workspaces:[e],c=["all","production"].includes(s),f=["all","development"].includes(s);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!f:!c)||a.push({workspace:p,dependency:h});return a}function MK(t,e,{recursive:r}){let s=new Map,a=new Set,n=[],c=(f,p)=>{let h=t.storedResolutions.get(p.descriptorHash);if(typeof h>"u")throw new Error("Assertion failed: The resolution should have been registered");if(!a.has(h))a.add(h);else return;let E=t.storedPackages.get(h);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");if(G.ensureDevirtualizedLocator(E).reference.startsWith("npm:")&&E.version!==null){let S=G.stringifyIdent(E),P=je.getMapWithDefault(s,S);je.getArrayWithDefault(P,E.version).push(f)}if(r)for(let S of E.dependencies.values())n.push([E,S])};for(let{workspace:f,dependency:p}of e)n.push([f.anchoredLocator,p]);for(;n.length>0;){let[f,p]=n.shift();c(f,p)}return s}var D1=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=ge.String("--environment","all",{description:"Which environments to cover",validator:fo(Jb)});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.noDeprecations=ge.Boolean("--no-deprecations",!1,{description:"Don't warn about deprecated packages"});this.severity=ge.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validator:fo(Kb)});this.excludes=ge.Array("--exclude",[],{description:"Array of glob patterns of packages to exclude from audit"});this.ignores=ge.Array("--ignore",[],{description:"Array of glob patterns of advisory ID's to ignore in the audit report"})}static{this.paths=[["npm","audit"]]}static{this.usage=ot.Usage({description:"perform a vulnerability audit against the installed packages",details:` - This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). - - For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. - - Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${S1.map(r=>`\`${r}\``).join(", ")}. - - If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. - - If certain packages produce false positives for a particular environment, the \`--exclude\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \`npmAuditExcludePackages\` option. - - If particular advisories are needed to be ignored, the \`--ignore\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \`npmAuditIgnoreAdvisories\` option. - - To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why package\` to get more information as to who depends on them. - `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=LK(s,a,{all:this.all,environment:this.environment}),c=MK(s,n,{recursive:this.recursive}),f=Array.from(new Set([...r.get("npmAuditExcludePackages"),...this.excludes])),p=Object.create(null);for(let[N,U]of c)f.some(W=>UK.default.isMatch(N,W))||(p[N]=[...U.keys()]);let h=hi.getAuditRegistry({configuration:r}),E,C=await lA.start({configuration:r,stdout:this.context.stdout},async()=>{let N=en.post("/-/npm/v1/security/advisories/bulk",p,{authType:en.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([ee,ie])=>{let ue=await en.getPackageMetadata(G.parseIdent(ee),{project:s});return je.mapAndFilter(ie,le=>{let{deprecated:me}=ue.versions[le];return me?[ee,le,me]:je.mapAndFilter.skip})})),W=await N;for(let[ee,ie,ue]of U.flat(1))Object.hasOwn(W,ee)&&W[ee].some(le=>Fr.satisfiesWithPrereleases(ie,le.vulnerable_versions))||(W[ee]??=[],W[ee].push({id:`${ee} (deprecation)`,title:(typeof ue=="string"?ue:"").trim()||"This package has been deprecated.",severity:"moderate",vulnerable_versions:ie}));E=W});if(C.hasErrors())return C.exitCode();let S=NK(this.severity),P=Array.from(new Set([...r.get("npmAuditIgnoreAdvisories"),...this.ignores])),I=Object.create(null);for(let[N,U]of Object.entries(E)){let W=U.filter(ee=>!UK.default.isMatch(`${ee.id}`,P)&&S.has(ee.severity));W.length>0&&(I[N]=W.map(ee=>{let ie=c.get(N);if(typeof ie>"u")throw new Error("Assertion failed: Expected the registry to only return packages that were requested");let ue=[...ie.keys()].filter(me=>Fr.satisfiesWithPrereleases(me,ee.vulnerable_versions)),le=new Map;for(let me of ue)for(let pe of ie.get(me))le.set(pe.locatorHash,pe);return{...ee,versions:ue,dependents:[...le.values()]}}))}let R=Object.keys(I).length>0;return R?(xs.emitTree(OK(I),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async N=>{N.reportInfo(1,"No audit suggestions")}),R?1:0)}};Ge();Ge();Dt();Yt();var _K=ut(Ai()),HK=Ie("util"),b1=class extends ft{constructor(){super(...arguments);this.fields=ge.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=ge.Rest()}static{this.paths=[["npm","info"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],c=!1,f=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h==="."){let ie=s.topLevelWorkspace;if(!ie.manifest.name)throw new nt(`Missing ${he.pretty(r,"name",he.Type.CODE)} field in ${fe.fromPortablePath(J.join(ie.cwd,Er.manifest))}`);E=G.makeDescriptor(ie.manifest.name,"unknown")}else E=G.parseDescriptor(h);let C=en.getIdentUrl(E),S=jK(await en.get(C,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:en.customPackageError})),P=Object.keys(S.versions).sort(_K.default.compareLoose),R=S["dist-tags"].latest||P[P.length-1],N=Fr.validRange(E.range);if(N){let ie=_K.default.maxSatisfying(P,N);ie!==null?R=ie:(p.reportWarning(0,`Unmet range ${G.prettyRange(r,E.range)}; falling back to the latest version`),c=!0)}else Object.hasOwn(S["dist-tags"],E.range)?R=S["dist-tags"][E.range]:E.range!=="unknown"&&(p.reportWarning(0,`Unknown tag ${G.prettyRange(r,E.range)}; falling back to the latest version`),c=!0);let U=S.versions[R],W={...S,...U,version:R,versions:P},ee;if(a!==null){ee={};for(let ie of a){let ue=W[ie];if(typeof ue<"u")ee[ie]=ue;else{p.reportWarning(1,`The ${he.pretty(r,ie,he.Type.CODE)} field doesn't exist inside ${G.prettyIdent(r,E)}'s information`),c=!0;continue}}}else this.json||(delete W.dist,delete W.readme,delete W.users),ee=W;p.reportJson(ee),this.json||n.push(ee)}});HK.inspect.styles.name="cyan";for(let p of n)(p!==n[0]||c)&&this.context.stdout.write(` -`),this.context.stdout.write(`${(0,HK.inspect)(p,{depth:1/0,colors:!0,compact:!1})} -`);return f.exitCode()}};function jK(t){if(Array.isArray(t)){let e=[];for(let r of t)r=jK(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let s=jK(t[r]);s&&(e[r]=s)}return e}else return t||null}Ge();Ge();Yt();var GK=ut(Vv()),P1=class extends ft{constructor(){super(...arguments);this.scope=ge.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=ge.Boolean("--publish",!1,{description:"Login to the publish registry"});this.alwaysAuth=ge.Boolean("--always-auth",{description:"Set the npmAlwaysAuth configuration"});this.webLogin=ge.Boolean("--web-login",{description:"Enable web login"})}static{this.paths=[["npm","login"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await QL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ot.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let c=await gbt({registry:s,configuration:r,report:n,webLogin:this.webLogin,stdin:this.context.stdin,stdout:this.context.stdout});return await mbt(s,c,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,"Successfully logged in")})).exitCode()}};async function QL({scope:t,publish:e,configuration:r,cwd:s}){return t&&e?hi.getScopeRegistry(t,{configuration:r,type:hi.RegistryType.PUBLISH_REGISTRY}):t?hi.getScopeRegistry(t,{configuration:r}):e?hi.getPublishRegistry((await eC(r,s)).manifest,{configuration:r}):hi.getDefaultRegistry({configuration:r})}async function fbt(t,e){let r;try{r=await en.post("/-/v1/login",null,{configuration:e,registry:t,authType:en.AuthType.NO_AUTH,jsonResponse:!0,headers:{"npm-auth-type":"web"}})}catch{return null}return r}async function Abt(t,e){let r=await nn.request(t,null,{configuration:e,jsonResponse:!0});if(r.statusCode===202){let s=r.headers["retry-after"]??"1";return{type:"waiting",sleep:parseInt(s,10)}}return r.statusCode===200?{type:"success",token:r.body.token}:null}async function pbt({registry:t,configuration:e,report:r}){let s=await fbt(t,e);if(!s)return null;if(Ui.openUrl){r.reportInfo(0,"Starting the web login process..."),r.reportSeparator();let{openNow:a}=await(0,GK.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open your browser now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});r.reportSeparator(),(!a||!await Ui.openUrl(s.loginUrl))&&(r.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice:"),r.reportWarning(0,he.pretty(e,s.loginUrl,he.Type.URL)),r.reportSeparator())}for(;;){let a=await Abt(s.doneUrl,e);if(a===null)return null;if(a.type==="waiting")await new Promise(n=>setTimeout(n,a.sleep*1e3));else return a.token}}var hbt=["https://registry.yarnpkg.com","https://registry.npmjs.org"];async function gbt(t){if(t.webLogin??hbt.includes(t.registry)){let e=await pbt(t);if(e!==null)return e}return await dbt(t)}async function dbt({registry:t,configuration:e,report:r,stdin:s,stdout:a}){let n=await ybt({configuration:e,registry:t,report:r,stdin:s,stdout:a}),c=`/-/user/org.couchdb.user:${encodeURIComponent(n.name)}`,f={_id:`org.couchdb.user:${n.name}`,name:n.name,password:n.password,type:"user",roles:[],date:new Date().toISOString()},p={attemptedAs:n.name,configuration:e,registry:t,jsonResponse:!0,authType:en.AuthType.NO_AUTH};try{return(await en.put(c,f,p)).token}catch(P){if(!(P.originalError?.name==="HTTPError"&&P.originalError?.response.statusCode===409))throw P}let h={...p,authType:en.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${n.name}:${n.password}`).toString("base64")}`}},E=await en.get(c,h);for(let[P,I]of Object.entries(E))(!f[P]||P==="roles")&&(f[P]=I);let C=`${c}/-rev/${f._rev}`;return(await en.put(C,f,h)).token}async function mbt(t,e,{alwaysAuth:r,scope:s}){let a=c=>f=>{let p=je.isIndexableObject(f)?f:{},h=p[c],E=je.isIndexableObject(h)?h:{};return{...p,[c]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:e}}},n=s?{npmScopes:a(s)}:{npmRegistries:a(t)};return await ze.updateHomeConfiguration(n)}async function ybt({configuration:t,registry:e,report:r,stdin:s,stdout:a}){r.reportInfo(0,`Logging in to ${he.pretty(t,e,he.Type.URL)}`);let n=!1;if(e.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(r.reportInfo(0,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),r.reportSeparator(),t.env.YARN_IS_TEST_ENV)return{name:t.env.YARN_INJECT_NPM_USER||"",password:t.env.YARN_INJECT_NPM_PASSWORD||""};let c=await(0,GK.prompt)([{type:"input",name:"name",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a}]);return r.reportSeparator(),c}Ge();Ge();Yt();var x1=new Set(["npmAuthIdent","npmAuthToken"]),k1=class extends ft{constructor(){super(...arguments);this.scope=ge.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=ge.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=ge.Boolean("-A,--all",!1,{description:"Logout of all registries"})}static{this.paths=[["npm","logout"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=async()=>{let n=await QL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),c=await ze.find(this.context.cwd,this.context.plugins),f=G.makeIdent(this.scope??null,"pkg");return!hi.getAuthConfiguration(n,{configuration:c,ident:f}).get("npmAuthToken")};return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await Ibt(),n.reportInfo(0,"Successfully logged out from everything")),this.scope){await Jxe("npmScopes",this.scope),await s()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,"Scope authentication settings removed, but some other ones settings still apply to it");return}let c=await QL({configuration:r,cwd:this.context.cwd,publish:this.publish});await Jxe("npmRegistries",c),await s()?n.reportInfo(0,`Successfully logged out from ${c}`):n.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};function Ebt(t,e){let r=t[e];if(!je.isIndexableObject(r))return!1;let s=new Set(Object.keys(r));if([...x1].every(n=>!s.has(n)))return!1;for(let n of x1)s.delete(n);if(s.size===0)return t[e]=void 0,!0;let a={...r};for(let n of x1)delete a[n];return t[e]=a,!0}async function Ibt(){let t=e=>{let r=!1,s=je.isIndexableObject(e)?{...e}:{};s.npmAuthToken&&(delete s.npmAuthToken,r=!0);for(let a of Object.keys(s))Ebt(s,a)&&(r=!0);if(Object.keys(s).length!==0)return r?s:e};return await ze.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function Jxe(t,e){return await ze.updateHomeConfiguration({[t]:r=>{let s=je.isIndexableObject(r)?r:{};if(!Object.hasOwn(s,e))return r;let a=s[e],n=je.isIndexableObject(a)?a:{},c=new Set(Object.keys(n));if([...x1].every(p=>!c.has(p)))return r;for(let p of x1)c.delete(p);if(c.size===0)return Object.keys(s).length===1?void 0:{...s,[e]:void 0};let f={};for(let p of x1)f[p]=void 0;return{...s,[e]:{...n,...f}}}})}Ge();Dt();Yt();var Q1=class extends ft{constructor(){super(...arguments);this.access=ge.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=ge.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=ge.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=ge.String("--otp",{description:"The OTP token to use with the command"});this.provenance=ge.Boolean("--provenance",!1,{description:"Generate provenance for the package. Only available in GitHub Actions and GitLab CI. Can be set globally through the `npmPublishProvenance` setting or the `YARN_NPM_CONFIG_PROVENANCE` environment variable, or per-package through the `publishConfig.provenance` field in package.json."});this.dryRun=ge.Boolean("-n,--dry-run",!1,{description:"Show what would be published without actually publishing"});this.json=ge.Boolean("--json",!1,{description:"Output the result in JSON format"})}static{this.paths=[["npm","publish"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overridden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);if(a.manifest.private)throw new nt("Private workspaces cannot be published");if(a.manifest.name===null||a.manifest.version===null)throw new nt("Workspaces must have valid names and versions to be published on an external registry");await s.restoreInstallState();let n=a.manifest.name,c=a.manifest.version,f=hi.getPublishRegistry(a.manifest,{configuration:r});return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async h=>{if(this.tolerateRepublish)try{let E=await en.get(en.getIdentUrl(n),{configuration:r,registry:f,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,"versions"))throw new jt(15,'Registry returned invalid data for - missing "versions" field');if(Object.hasOwn(E.versions,c)){let C=`Registry already knows about version ${c}; skipping.`;h.reportWarning(0,C),h.reportJson({name:G.stringifyIdent(n),version:c,registry:f,warning:C,skipped:!0});return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await In.maybeExecuteWorkspaceLifecycleScript(a,"prepublish",{report:h}),await yA.prepareForPack(a,{report:h},async()=>{let E=await yA.genPackList(a);for(let W of E)h.reportInfo(null,fe.fromPortablePath(W)),h.reportJson({file:fe.fromPortablePath(W)});let C=await yA.genPackStream(a,E),S=await je.bufferStream(C),P=await v1.getGitHead(a.cwd),I=!1,R="";a.manifest.publishConfig&&"provenance"in a.manifest.publishConfig?(I=!!a.manifest.publishConfig.provenance,R=I?"Generating provenance statement because `publishConfig.provenance` field is set.":"Skipping provenance statement because `publishConfig.provenance` field is set to false."):this.provenance?(I=!0,R="Generating provenance statement because `--provenance` flag is set."):r.get("npmPublishProvenance")&&(I=!0,R="Generating provenance statement because `npmPublishProvenance` setting is set."),R&&(h.reportInfo(null,R),h.reportJson({type:"provenance",enabled:I,provenanceMessage:R}));let N=await v1.makePublishBody(a,S,{access:this.access,tag:this.tag,registry:f,gitHead:P,provenance:I});this.dryRun||await en.put(en.getIdentUrl(n),N,{configuration:r,registry:f,ident:n,otp:this.otp,jsonResponse:!0,allowOidc:!!(process.env.CI&&(process.env.GITHUB_ACTIONS||process.env.GITLAB_CI))});let U=this.dryRun?`[DRY RUN] Package would be published to ${f} with tag ${this.tag}`:"Package archive published";h.reportInfo(0,U),h.reportJson({name:G.stringifyIdent(n),version:c,registry:f,tag:this.tag||"latest",files:E.map(W=>fe.fromPortablePath(W)),access:this.access||null,dryRun:this.dryRun,published:!this.dryRun,message:U,provenance:!!I})})})).exitCode()}};Ge();Yt();var Kxe=ut(Ai());Ge();Dt();Yt();var T1=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=ge.String({required:!1})}static{this.paths=[["npm","tag","list"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` - This command will list all tags of a package from the npm registry. - - If the package is not specified, Yarn will default to the current workspace. - `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n;if(typeof this.package<"u")n=G.parseIdent(this.package);else{if(!a)throw new ar(s.cwd,this.context.cwd);if(!a.manifest.name)throw new nt(`Missing 'name' field in ${fe.fromPortablePath(J.join(a.cwd,Er.manifest))}`);n=a.manifest.name}let c=await Xb(n,r),p={children:je.sortMap(Object.entries(c),([h])=>h).map(([h,E])=>({value:he.tuple(he.Type.RESOLUTION,{descriptor:G.makeDescriptor(n,h),locator:G.makeLocator(n,E)})}))};return xs.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};async function Xb(t,e){let r=`/-/package${en.getIdentUrl(t)}/dist-tags`;return en.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:en.customPackageError})}var R1=class extends ft{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}static{this.paths=[["npm","tag","add"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` - This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. - `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=G.parseDescriptor(this.package,!0),c=n.range;if(!Kxe.default.valid(c))throw new nt(`The range ${he.pretty(r,n.range,he.Type.RANGE)} must be a valid semver version`);let f=hi.getPublishRegistry(a.manifest,{configuration:r}),p=he.pretty(r,n,he.Type.IDENT),h=he.pretty(r,c,he.Type.RANGE),E=he.pretty(r,this.tag,he.Type.CODE);return(await Ot.start({configuration:r,stdout:this.context.stdout},async S=>{let P=await Xb(n,r);Object.hasOwn(P,this.tag)&&P[this.tag]===c&&S.reportWarning(0,`Tag ${E} is already set to version ${h}`);let I=`/-/package${en.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await en.put(I,c,{configuration:r,registry:f,ident:n,jsonRequest:!0,jsonResponse:!0}),S.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};Ge();Yt();var F1=class extends ft{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}static{this.paths=[["npm","tag","remove"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` - This command will remove a tag from a package from the npm registry. - `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]})}async execute(){if(this.tag==="latest")throw new nt("The 'latest' tag cannot be removed.");let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=G.parseIdent(this.package),c=hi.getPublishRegistry(a.manifest,{configuration:r}),f=he.pretty(r,this.tag,he.Type.CODE),p=he.pretty(r,n,he.Type.IDENT),h=await Xb(n,r);if(!Object.hasOwn(h,this.tag))throw new nt(`${f} is not a tag of package ${p}`);return(await Ot.start({configuration:r,stdout:this.context.stdout},async C=>{let S=`/-/package${en.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await en.del(S,{configuration:r,registry:c,ident:n,jsonResponse:!0}),C.reportInfo(0,`Tag ${f} removed from package ${p}`)})).exitCode()}};Ge();Ge();Yt();var N1=class extends ft{constructor(){super(...arguments);this.scope=ge.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=ge.Boolean("--publish",!1,{description:"Print username for the publish registry"})}static{this.paths=[["npm","whoami"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s;return this.scope&&this.publish?s=hi.getScopeRegistry(this.scope,{configuration:r,type:hi.RegistryType.PUBLISH_REGISTRY}):this.scope?s=hi.getScopeRegistry(this.scope,{configuration:r}):this.publish?s=hi.getPublishRegistry((await eC(r,this.context.cwd)).manifest,{configuration:r}):s=hi.getDefaultRegistry({configuration:r}),(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c;try{c=await en.get("/-/whoami",{configuration:r,registry:s,authType:en.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?G.makeIdent(this.scope,""):void 0})}catch(f){if(f.response?.statusCode===401||f.response?.statusCode===403){n.reportError(41,"Authentication failed - your credentials may have expired");return}else throw f}n.reportInfo(0,c.username)})).exitCode()}};var Cbt={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmPublishProvenance:{description:"Whether to generate provenance for the published packages",type:"BOOLEAN",default:!1},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[D1,b1,P1,k1,Q1,R1,T1,F1,N1]},wbt=Cbt;var XK={};Vt(XK,{PatchCommand:()=>H1,PatchCommitCommand:()=>_1,PatchFetcher:()=>rP,PatchResolver:()=>nP,default:()=>_bt,patchUtils:()=>gy});Ge();Ge();Dt();eA();var gy={};Vt(gy,{applyPatchFile:()=>RL,diffFolders:()=>KK,ensureUnpatchedDescriptor:()=>WK,ensureUnpatchedLocator:()=>NL,extractPackageToDisk:()=>JK,extractPatchFlags:()=>rke,isParentRequired:()=>VK,isPatchDescriptor:()=>FL,isPatchLocator:()=>Rg,loadPatchFiles:()=>tP,makeDescriptor:()=>OL,makeLocator:()=>YK,makePatchHash:()=>zK,parseDescriptor:()=>$b,parseLocator:()=>eP,parsePatchFile:()=>Zb,unpatchDescriptor:()=>Lbt,unpatchLocator:()=>Mbt});Ge();Dt();Ge();Dt();var Bbt=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function O1(t){return J.relative(vt.root,J.resolve(vt.root,fe.toPortablePath(t)))}function vbt(t){let e=t.trim().match(Bbt);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var Sbt=420,Dbt=493;var zxe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),bbt=t=>({header:vbt(t),parts:[]}),Pbt={"@":"header","-":"deletion","+":"insertion"," ":"context","\\":"pragma",undefined:"context"};function xbt(t){let e=[],r=zxe(),s="parsing header",a=null,n=null;function c(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function f(){c(),e.push(r),r=zxe()}for(let p=0;p0?"patch":"mode change",W=null;switch(U){case"rename":{if(!E||!C)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:s,fromPath:O1(E),toPath:O1(C)}),W=C}break;case"file deletion":{let ee=a||I;if(!ee)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:s,hunk:N&&N[0]||null,path:O1(ee),mode:TL(p),hash:S})}break;case"file creation":{let ee=n||R;if(!ee)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:s,hunk:N&&N[0]||null,path:O1(ee),mode:TL(h),hash:P})}break;case"patch":case"mode change":W=R||n;break;default:je.assertNever(U);break}W&&c&&f&&c!==f&&e.push({type:"mode change",semverExclusivity:s,path:O1(W),oldMode:TL(c),newMode:TL(f)}),W&&N&&N.length&&e.push({type:"patch",semverExclusivity:s,path:O1(W),hunks:N,beforeHash:S,afterHash:P})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function TL(t){let e=parseInt(t,8)&511;if(e!==Sbt&&e!==Dbt)throw new Error(`Unexpected file mode string: ${t}`);return e}function Zb(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),kbt(xbt(e))}function Qbt(t){let e=0,r=0;for(let{type:s,lines:a}of t.parts)switch(s){case"context":r+=a.length,e+=a.length;break;case"deletion":e+=a.length;break;case"insertion":r+=a.length;break;default:je.assertNever(s);break}if(e!==t.header.original.length||r!==t.header.patched.length){let s=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${s(t.header.original.length)} ${s(t.header.patched.length)} @@, got @@ ${s(e)} ${s(r)} @@)`)}}Ge();Dt();var L1=class extends Error{constructor(r,s){super(`Cannot apply hunk #${r+1}`);this.hunk=s}};async function M1(t,e,r){let s=await t.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await t.lutimesPromise(e,s.atime,s.mtime)}async function RL(t,{baseFs:e=new Yn,dryRun:r=!1,version:s=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&s!==null&&!Fr.satisfiesWithPrereleases(s,a.semverExclusivity)))switch(a.type){case"file deletion":if(r){if(!e.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await M1(e,J.dirname(a.path),async()=>{await e.unlinkPromise(a.path)});break;case"rename":if(r){if(!e.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await M1(e,J.dirname(a.fromPath),async()=>{await M1(e,J.dirname(a.toPath),async()=>{await M1(e,a.fromPath,async()=>(await e.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case"file creation":if(r){if(e.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(` -`)+(a.hunk.parts[0].noNewlineAtEndOfFile?"":` -`):"";await e.mkdirpPromise(J.dirname(a.path),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,fi.SAFE_TIME,fi.SAFE_TIME)}break;case"patch":await M1(e,a.path,async()=>{await Fbt(a,{baseFs:e,dryRun:r})});break;case"mode change":{let c=(await e.statPromise(a.path)).mode;if(Xxe(a.newMode)!==Xxe(c))continue;await M1(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:je.assertNever(a);break}}function Xxe(t){return(t&64)>0}function Zxe(t){return t.replace(/\s+$/,"")}function Rbt(t,e){return Zxe(t)===Zxe(e)}async function Fbt({hunks:t,path:e},{baseFs:r,dryRun:s=!1}){let a=await r.statSync(e).mode,c=(await r.readFileSync(e,"utf8")).split(/\n/),f=[],p=0,h=0;for(let C of t){let S=Math.max(h,C.header.patched.start+p),P=Math.max(0,S-h),I=Math.max(0,c.length-S-C.header.original.length),R=Math.max(P,I),N=0,U=0,W=null;for(;N<=R;){if(N<=P&&(U=S-N,W=$xe(C,c,U),W!==null)){N=-N;break}if(N<=I&&(U=S+N,W=$xe(C,c,U),W!==null))break;N+=1}if(W===null)throw new L1(t.indexOf(C),C);f.push(W),p+=N,h=U+C.header.original.length}if(s)return;let E=0;for(let C of f)for(let S of C)switch(S.type){case"splice":{let P=S.index+E;c.splice(P,S.numToDelete,...S.linesToInsert),E+=S.linesToInsert.length-S.numToDelete}break;case"pop":c.pop();break;case"push":c.push(S.line);break;default:je.assertNever(S);break}await r.writeFilePromise(e,c.join(` -`),{mode:a})}function $xe(t,e,r){let s=[];for(let a of t.parts)switch(a.type){case"context":case"deletion":{for(let n of a.lines){let c=e[r];if(c==null||!Rbt(c,n))return null;r+=1}a.type==="deletion"&&(s.push({type:"splice",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&s.push({type:"push",line:""}))}break;case"insertion":s.push({type:"splice",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&s.push({type:"pop"});break;default:je.assertNever(a.type);break}return s}var Obt=/^builtin<([^>]+)>$/;function U1(t,e){let{protocol:r,source:s,selector:a,params:n}=G.parseRange(t);if(r!=="patch:")throw new Error("Invalid patch range");if(s===null)throw new Error("Patch locators must explicitly define their source");let c=a?a.split(/&/).map(E=>fe.toPortablePath(E)):[],f=n&&typeof n.locator=="string"?G.parseLocator(n.locator):null,p=n&&typeof n.version=="string"?n.version:null,h=e(s);return{parentLocator:f,sourceItem:h,patchPaths:c,sourceVersion:p}}function FL(t){return t.range.startsWith("patch:")}function Rg(t){return t.reference.startsWith("patch:")}function $b(t){let{sourceItem:e,...r}=U1(t.range,G.parseDescriptor);return{...r,sourceDescriptor:e}}function eP(t){let{sourceItem:e,...r}=U1(t.reference,G.parseLocator);return{...r,sourceLocator:e}}function Lbt(t){let{sourceItem:e}=U1(t.range,G.parseDescriptor);return e}function Mbt(t){let{sourceItem:e}=U1(t.reference,G.parseLocator);return e}function WK(t){if(!FL(t))return t;let{sourceItem:e}=U1(t.range,G.parseDescriptor);return e}function NL(t){if(!Rg(t))return t;let{sourceItem:e}=U1(t.reference,G.parseLocator);return e}function eke({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:s,patchHash:a},n){let c=t!==null?{locator:G.stringifyLocator(t)}:{},f=typeof s<"u"?{version:s}:{},p=typeof a<"u"?{hash:a}:{};return G.makeRange({protocol:"patch:",source:n(e),selector:r.join("&"),params:{...f,...p,...c}})}function OL(t,{parentLocator:e,sourceDescriptor:r,patchPaths:s}){return G.makeDescriptor(t,eke({parentLocator:e,sourceItem:r,patchPaths:s},G.stringifyDescriptor))}function YK(t,{parentLocator:e,sourcePackage:r,patchPaths:s,patchHash:a}){return G.makeLocator(t,eke({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:s,patchHash:a},G.stringifyLocator))}function tke({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:s},a){let n=a.lastIndexOf("!");n!==-1&&(a=a.slice(n+1));let c=a.match(Obt);return c!==null?s(c[1]):a.startsWith("~/")?r(a.slice(2)):J.isAbsolute(a)?t(a):e(a)}function rke(t){let e=t.lastIndexOf("!");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has("optional")}}function VK(t){return tke({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function tP(t,e,r){let s=t!==null?await r.fetcher.fetch(t,r):null,a=s&&s.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,s.localPath)}:s;s&&s!==a&&s.releaseFs&&s.releaseFs();let n=await je.releaseAfterUseAsync(async()=>await Promise.all(e.map(async c=>{let f=rke(c),p=await tke({onAbsolute:async h=>await ce.readFilePromise(h,"utf8"),onRelative:async h=>{if(a===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await a.packageFs.readFilePromise(J.join(a.prefixPath,h),"utf8")},onProject:async h=>await ce.readFilePromise(J.join(r.project.cwd,h),"utf8"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},c);return{...f,source:p}})));for(let c of n)typeof c.source=="string"&&(c.source=c.source.replace(/\r\n?/g,` -`));return n}async function JK(t,{cache:e,project:r}){let s=r.storedPackages.get(t.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected the package to be registered");let a=NL(t),n=r.storedChecksums,c=new ki,f=await ce.mktempPromise(),p=J.join(f,"source"),h=J.join(f,"user"),E=J.join(f,".yarn-patch.json"),C=r.configuration.makeFetcher(),S=[];try{let P,I;if(t.locatorHash===a.locatorHash){let R=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c});S.push(()=>R.releaseFs?.()),P=R,I=R}else P=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>P.releaseFs?.()),I=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>I.releaseFs?.());await Promise.all([ce.copyPromise(p,P.prefixPath,{baseFs:P.packageFs}),ce.copyPromise(h,I.prefixPath,{baseFs:I.packageFs}),ce.writeJsonPromise(E,{locator:G.stringifyLocator(t),version:s.version})])}finally{for(let P of S)P()}return ce.detachTemp(f),h}async function KK(t,e){let r=fe.fromPortablePath(t).replace(/\\/g,"/"),s=fe.fromPortablePath(e).replace(/\\/g,"/"),{stdout:a,stderr:n}=await qr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",r,s],{cwd:fe.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. -The following error was reported by 'git': -${n}`);let c=r.startsWith("/")?f=>f.slice(1):f=>f;return a.replace(new RegExp(`(a|b)(${je.escapeRegExp(`/${c(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${je.escapeRegExp(`/${c(s)}/`)}`,"g"),"$1/").replace(new RegExp(je.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(je.escapeRegExp(`${s}/`),"g"),"")}function zK(t,e){let r=[];for(let{source:s}of t){if(s===null)continue;let a=Zb(s);for(let n of a){let{semverExclusivity:c,...f}=n;c!==null&&e!==null&&!Fr.satisfiesWithPrereleases(e,c)||r.push(JSON.stringify(f))}}return Nn.makeHash(`${3}`,...r).slice(0,6)}Ge();function nke(t,{configuration:e,report:r}){for(let s of t.parts)for(let a of s.lines)switch(s.type){case"context":r.reportInfo(null,` ${he.pretty(e,a,"grey")}`);break;case"deletion":r.reportError(28,`- ${he.pretty(e,a,he.Type.REMOVED)}`);break;case"insertion":r.reportError(28,`+ ${he.pretty(e,a,he.Type.ADDED)}`);break;default:je.assertNever(s.type)}}var rP=class{supports(e,r){return!!Rg(e)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async patchPackage(e,r){let{parentLocator:s,sourceLocator:a,sourceVersion:n,patchPaths:c}=eP(e),f=await tP(s,c,r),p=await ce.mktempPromise(),h=J.join(p,"current.zip"),E=await r.fetcher.fetch(a,r),C=G.getIdentVendorPath(e),S=new As(h,{create:!0,level:r.project.configuration.get("compressionLevel")});await je.releaseAfterUseAsync(async()=>{await S.copyPromise(C,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),S.saveAndClose();for(let{source:P,optional:I}of f){if(P===null)continue;let R=new As(h,{level:r.project.configuration.get("compressionLevel")}),N=new Sn(J.resolve(vt.root,C),{baseFs:R});try{await RL(Zb(P),{baseFs:N,version:n})}catch(U){if(!(U instanceof L1))throw U;let W=r.project.configuration.get("enableInlineHunks"),ee=!W&&!I?" (set enableInlineHunks for details)":"",ie=`${G.prettyLocator(r.project.configuration,e)}: ${U.message}${ee}`,ue=le=>{W&&nke(U.hunk,{configuration:r.project.configuration,report:le})};if(R.discardAndClose(),I){r.report.reportWarningOnce(66,ie,{reportExtra:ue});continue}else throw new jt(66,ie,ue)}R.saveAndClose()}return new As(h,{level:r.project.configuration.get("compressionLevel")})}};Ge();var nP=class{supportsDescriptor(e,r){return!!FL(e)}supportsLocator(e,r){return!!Rg(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){let{patchPaths:a}=$b(e);return a.every(n=>!VK(n))?e:G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:s}=$b(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(s)}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:a,patchPaths:n}=$b(e),c=await tP(a,n,s.fetchOptions),f=r.sourceDescriptor;if(typeof f>"u")throw new Error("Assertion failed: The dependency should have been resolved");let p=zK(c,f.version);return[YK(e,{parentLocator:a,sourcePackage:f,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:s}=eP(e);return{...await r.resolver.resolve(s,r),...e}}};Ge();Dt();Yt();var _1=class extends ft{constructor(){super(...arguments);this.save=ge.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=ge.String()}static{this.paths=[["patch-commit"]]}static{this.usage=ot.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=J.resolve(this.context.cwd,fe.toPortablePath(this.patchFolder)),c=J.join(n,"../source"),f=J.join(n,"../.yarn-patch.json");if(!ce.existsSync(c))throw new nt("The argument folder didn't get created by 'yarn patch'");let p=await KK(c,n),h=await ce.readJsonPromise(f),E=G.parseLocator(h.locator,!0);if(!s.storedPackages.has(E.locatorHash))throw new nt("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(p);return}let C=r.get("patchFolder"),S=J.join(C,`${G.slugifyLocator(E)}.patch`);await ce.mkdirPromise(C,{recursive:!0}),await ce.writeFilePromise(S,p);let P=[],I=new Map;for(let R of s.storedPackages.values()){if(G.isVirtualLocator(R))continue;let N=R.dependencies.get(E.identHash);if(!N)continue;let U=G.ensureDevirtualizedDescriptor(N),W=WK(U),ee=s.storedResolutions.get(W.descriptorHash);if(!ee)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!s.storedPackages.get(ee))throw new Error("Assertion failed: Expected the package to have been registered");let ue=s.tryWorkspaceByLocator(R);if(ue)P.push(ue);else{let le=s.originalPackages.get(R.locatorHash);if(!le)throw new Error("Assertion failed: Expected the original package to have been registered");let me=le.dependencies.get(N.identHash);if(!me)throw new Error("Assertion failed: Expected the original dependency to have been registered");I.set(me.descriptorHash,me)}}for(let R of P)for(let N of Ut.hardDependencies){let U=R.manifest[N].get(E.identHash);if(!U)continue;let W=OL(U,{parentLocator:null,sourceDescriptor:G.convertLocatorToDescriptor(E),patchPaths:[J.join(Er.home,J.relative(s.cwd,S))]});R.manifest[N].set(U.identHash,W)}for(let R of I.values()){let N=OL(R,{parentLocator:null,sourceDescriptor:G.convertLocatorToDescriptor(E),patchPaths:[J.join(Er.home,J.relative(s.cwd,S))]});s.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:G.stringifyIdent(N),description:R.range}},reference:N.range})}await s.persist()}};Ge();Dt();Yt();var H1=class extends ft{constructor(){super(...arguments);this.update=ge.Boolean("-u,--update",!1,{description:"Reapply local patches that already apply to this packages"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=ge.String()}static{this.paths=[["patch"]]}static{this.usage=ot.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n\n Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n\n Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=G.parseLocator(this.package);if(c.reference==="unknown"){let f=je.mapAndFilter([...s.storedPackages.values()],p=>p.identHash!==c.identHash?je.mapAndFilter.skip:G.isVirtualLocator(p)?je.mapAndFilter.skip:Rg(p)!==this.update?je.mapAndFilter.skip:p);if(f.length===0)throw new nt("No package found in the project for the given locator");if(f.length>1)throw new nt(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): -${f.map(p=>` -- ${G.prettyLocator(r,p)}`).join("")}`);c=f[0]}if(!s.storedPackages.has(c.locatorHash))throw new nt("No package found in the project for the given locator");await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=NL(c),h=await JK(c,{cache:n,project:s});f.reportJson({locator:G.stringifyLocator(p),path:fe.fromPortablePath(h)});let E=this.update?" along with its current modifications":"";f.reportInfo(0,`Package ${G.prettyLocator(r,p)} got extracted with success${E}!`),f.reportInfo(0,`You can now edit the following folder: ${he.pretty(r,fe.fromPortablePath(h),"magenta")}`),f.reportInfo(0,`Once you are done run ${he.pretty(r,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${fe.fromPortablePath(h)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};var Ubt={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[_1,H1],fetchers:[rP],resolvers:[nP]},_bt=Ubt;var ez={};Vt(ez,{PnpmLinker:()=>iP,default:()=>Ybt});Ge();Dt();Yt();var iP=class{getCustomDataKey(){return JSON.stringify({name:"PnpmLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>"u")throw new nt(`Couldn't find ${G.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let c=e,f=e;do{f=c,c=J.dirname(f);let p=a.locatorByPath.get(f);if(p)return p}while(c!==f);return null}makeInstaller(e){return new ZK(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},ZK=class{constructor(e){this.opts=e;this.asyncActions=new je.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=$P(ce,{indexPath:J.join(e.project.configuration.get("globalFolder"),"index")})}attachCustomData(e){}async installPackage(e,r,s){switch(e.linkType){case"SOFT":return this.installPackageSoft(e,r,s);case"HARD":return this.installPackageHard(e,r,s)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,s){let a=J.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?J.join(a,Er.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(e,r,s){let a=jbt(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,G.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),s.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await ce.mkdirPromise(n,{recursive:!0}),await ce.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:"HardlinkFromIndex",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let f=G.isVirtualLocator(e)?G.devirtualizeLocator(e):e,p={manifest:await Ut.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Ut,misc:{hasBindingGyp:gA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(f,e.version),E=gA.extractBuildRequest(e,p,h,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:E}}async attachInternalDependencies(e,r){if(this.opts.project.configuration.get("nodeLinker")!=="pnpm"||!ike(e,{project:this.opts.project}))return;let s=this.customData.pathsByLocator.get(e.locatorHash);if(typeof s>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${G.stringifyLocator(e)})`);let{dependenciesLocation:a}=s;a&&this.asyncActions.reduce(e.locatorHash,async n=>{await ce.mkdirPromise(a,{recursive:!0});let c=await Gbt(a),f=new Map(c),p=[n],h=(C,S)=>{let P=S;ike(S,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),P=G.devirtualizeLocator(S));let I=this.customData.pathsByLocator.get(P.locatorHash);if(typeof I>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${G.stringifyLocator(S)})`);let R=G.stringifyIdent(C),N=J.join(a,R),U=J.relative(J.dirname(N),I.packageLocation),W=f.get(R);f.delete(R),p.push(Promise.resolve().then(async()=>{if(W){if(W.isSymbolicLink()&&await ce.readlinkPromise(N)===U)return;await ce.removePromise(N)}await ce.mkdirpPromise(J.dirname(N)),process.platform=="win32"&&this.opts.project.configuration.get("winLinkType")==="junctions"?await ce.symlinkPromise(I.packageLocation,N,"junction"):await ce.symlinkPromise(U,N)}))},E=!1;for(let[C,S]of r)C.identHash===e.identHash&&(E=!0),h(C,S);!E&&!this.opts.project.tryWorkspaceByLocator(e)&&h(G.convertLocatorToDescriptor(e),e),p.push(qbt(a,f)),await Promise.all(p)})}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=ske(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await ce.removePromise(e);else{let r;try{r=new Set(await ce.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:s}of this.customData.pathsByLocator.values()){if(!s)continue;let a=J.contains(e,s);if(a===null)continue;let[n]=a.split(J.sep);r.delete(n)}await Promise.all([...r].map(async s=>{await ce.removePromise(J.join(e,s))}))}return await this.asyncActions.wait(),await $K(e),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await $K(Hbt(this.opts.project)),{customData:this.customData}}};function Hbt(t){return J.join(t.cwd,Er.nodeModules)}function ske(t){return t.configuration.get("pnpmStoreFolder")}function jbt(t,{project:e}){let r=G.slugifyLocator(t),s=ske(e),a=J.join(s,r,"package"),n=J.join(s,r,Er.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function ike(t,{project:e}){return!G.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function Gbt(t){let e=new Map,r=[];try{r=await ce.readdirPromise(t,{withFileTypes:!0})}catch(s){if(s.code!=="ENOENT")throw s}try{for(let s of r)if(!s.name.startsWith("."))if(s.name.startsWith("@")){let a=await ce.readdirPromise(J.join(t,s.name),{withFileTypes:!0});if(a.length===0)e.set(s.name,s);else for(let n of a)e.set(`${s.name}/${n.name}`,n)}else e.set(s.name,s)}catch(s){if(s.code!=="ENOENT")throw s}return e}async function qbt(t,e){let r=[],s=new Set;for(let a of e.keys()){r.push(ce.removePromise(J.join(t,a)));let n=G.tryParseIdent(a)?.scope;n&&s.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...s].map(a=>$K(J.join(t,a)))))}async function $K(t){try{await ce.rmdirPromise(t)}catch(e){if(e.code!=="ENOENT"&&e.code!=="ENOTEMPTY"&&e.code!=="EBUSY")throw e}}var Wbt={configuration:{pnpmStoreFolder:{description:"By default, the store is stored in the 'node_modules/.store' of the project. Sometimes in CI scenario's it is convenient to store this in a different location so it can be cached and reused.",type:"ABSOLUTE_PATH",default:"./node_modules/.store"}},linkers:[iP]},Ybt=Wbt;var az={};Vt(az,{StageCommand:()=>j1,default:()=>nPt,stageUtils:()=>ML});Ge();Dt();Yt();Ge();Dt();var ML={};Vt(ML,{ActionType:()=>tz,checkConsensus:()=>LL,expandDirectory:()=>iz,findConsensus:()=>sz,findVcsRoot:()=>rz,genCommitMessage:()=>oz,getCommitPrefix:()=>oke,isYarnFile:()=>nz});Dt();var tz=(n=>(n[n.CREATE=0]="CREATE",n[n.DELETE=1]="DELETE",n[n.ADD=2]="ADD",n[n.REMOVE=3]="REMOVE",n[n.MODIFY=4]="MODIFY",n))(tz||{});async function rz(t,{marker:e}){do if(!ce.existsSync(J.join(t,e)))t=J.dirname(t);else return t;while(t!=="/");return null}function nz(t,{roots:e,names:r}){if(r.has(J.basename(t)))return!0;do if(!e.has(t))t=J.dirname(t);else return!0;while(t!=="/");return!1}function iz(t){let e=[],r=[t];for(;r.length>0;){let s=r.pop(),a=ce.readdirSync(s);for(let n of a){let c=J.resolve(s,n);ce.lstatSync(c).isDirectory()?r.push(c):e.push(c)}}return e}function LL(t,e){let r=0,s=0;for(let a of t)a!=="wip"&&(e.test(a)?r+=1:s+=1);return r>=s}function sz(t){let e=LL(t,/^(\w\(\w+\):\s*)?\w+s/),r=LL(t,/^(\w\(\w+\):\s*)?[A-Z]/),s=LL(t,/^\w\(\w+\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:s}}function oke(t){return t.useComponent?"chore(yarn): ":""}var Vbt=new Map([[0,"create"],[1,"delete"],[2,"add"],[3,"remove"],[4,"update"]]);function oz(t,e){let r=oke(t),s=[],a=e.slice().sort((n,c)=>n[0]-c[0]);for(;a.length>0;){let[n,c]=a.shift(),f=Vbt.get(n);t.useUpperCase&&s.length===0&&(f=`${f[0].toUpperCase()}${f.slice(1)}`),t.useThirdPerson&&(f+="s");let p=[c];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=" (and one other)":p.length>1&&(h+=` (and ${p.length} others)`),s.push(`${f} ${h}`)}return`${r}${s.join(", ")}`}var Jbt="Commit generated via `yarn stage`",Kbt=11;async function ake(t){let{code:e,stdout:r}=await qr.execvp("git",["log","-1","--pretty=format:%H"],{cwd:t});return e===0?r.trim():null}async function zbt(t,e){let r=[],s=e.filter(h=>J.basename(h.path)==="package.json");for(let{action:h,path:E}of s){let C=J.relative(t,E);if(h===4){let S=await ake(t),{stdout:P}=await qr.execvp("git",["show",`${S}:${C}`],{cwd:t,strict:!0}),I=await Ut.fromText(P),R=await Ut.fromFile(E),N=new Map([...R.dependencies,...R.devDependencies]),U=new Map([...I.dependencies,...I.devDependencies]);for(let[W,ee]of U){let ie=G.stringifyIdent(ee),ue=N.get(W);ue?ue.range!==ee.range&&r.push([4,`${ie} to ${ue.range}`]):r.push([3,ie])}for(let[W,ee]of N)U.has(W)||r.push([2,G.stringifyIdent(ee)])}else if(h===0){let S=await Ut.fromFile(E);S.name?r.push([0,G.stringifyIdent(S.name)]):r.push([0,"a package"])}else if(h===1){let S=await ake(t),{stdout:P}=await qr.execvp("git",["show",`${S}:${C}`],{cwd:t,strict:!0}),I=await Ut.fromText(P);I.name?r.push([1,G.stringifyIdent(I.name)]):r.push([1,"a package"])}else throw new Error("Assertion failed: Unsupported action type")}let{code:a,stdout:n}=await qr.execvp("git",["log",`-${Kbt}`,"--pretty=format:%s"],{cwd:t}),c=a===0?n.split(/\n/g).filter(h=>h!==""):[],f=sz(c);return oz(f,r)}var Xbt={0:[" A ","?? "],4:[" M "],1:[" D "]},Zbt={0:["A "],4:["M "],1:["D "]},lke={async findRoot(t){return await rz(t,{marker:".git"})},async filterChanges(t,e,r,s){let{stdout:a}=await qr.execvp("git",["status","-s"],{cwd:t,strict:!0}),n=a.toString().split(/\n/g),c=s?.staged?Zbt:Xbt;return[].concat(...n.map(p=>{if(p==="")return[];let h=p.slice(0,3),E=J.resolve(t,p.slice(3));if(!s?.staged&&h==="?? "&&p.endsWith("/"))return iz(E).map(C=>({action:0,path:C}));{let S=[0,4,1].find(P=>c[P].includes(h));return S!==void 0?[{action:S,path:E}]:[]}})).filter(p=>nz(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await zbt(t,e)},async makeStage(t,e){let r=e.map(s=>fe.fromPortablePath(s.path));await qr.execvp("git",["add","--",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let s=e.map(a=>fe.fromPortablePath(a.path));await qr.execvp("git",["add","-N","--",...s],{cwd:t,strict:!0}),await qr.execvp("git",["commit","-m",`${r} - -${Jbt} -`,"--",...s],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(s=>fe.fromPortablePath(s.path));await qr.execvp("git",["reset","HEAD","--",...r],{cwd:t,strict:!0})}};var $bt=[lke],j1=class extends ft{constructor(){super(...arguments);this.commit=ge.Boolean("-c,--commit",!1,{description:"Commit the staged files"});this.reset=ge.Boolean("-r,--reset",!1,{description:"Remove all files from the staging area"});this.dryRun=ge.Boolean("-n,--dry-run",!1,{description:"Print the commit message and the list of modified files without staging / committing"});this.update=ge.Boolean("-u,--update",!1,{hidden:!0})}static{this.paths=[["stage"]]}static{this.usage=ot.Usage({description:"add all yarn files to your vcs",details:"\n This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\n\n Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\n\n Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\n ",examples:[["Adds all modified project files to the staging area","yarn stage"],["Creates a new commit containing all modified project files","yarn stage --commit"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),{driver:a,root:n}=await ePt(s.cwd),c=[r.get("cacheFolder"),r.get("globalFolder"),r.get("virtualFolder"),r.get("yarnPath")];await r.triggerHook(C=>C.populateYarnPaths,s,C=>{c.push(C)});let f=new Set;for(let C of c)for(let S of tPt(n,C))f.add(S);let p=new Set([r.get("rcFilename"),Er.lockfile,Er.manifest]),h=await a.filterChanges(n,f,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E} -`);else for(let C of h)this.context.stdout.write(`${fe.fromPortablePath(C.path)} -`);else if(this.reset){let C=await a.filterChanges(n,f,p,{staged:!0});C.length===0?this.context.stdout.write("No staged changes found!"):await a.makeReset(n,C)}else h.length===0?this.context.stdout.write("No changes found!"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};async function ePt(t){let e=null,r=null;for(let s of $bt)if((r=await s.findRoot(t))!==null){e=s;break}if(e===null||r===null)throw new nt("No stage driver has been found for your current project");return{driver:e,root:r}}function tPt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let s;try{s=ce.statSync(e)}catch{break}if(s.isSymbolicLink())e=J.resolve(J.dirname(e),ce.readlinkSync(e));else break}return r}var rPt={commands:[j1]},nPt=rPt;var lz={};Vt(lz,{default:()=>fPt});Ge();Ge();Dt();var fke=ut(Ai());Ge();var cke=ut(g9()),iPt="e8e1bd300d860104bb8c58453ffa1eb4",sPt="OFCNCOG2CU",uke=async(t,e)=>{let r=G.stringifyIdent(t),a=oPt(e).initIndex("npm-search");try{return(await a.getObject(r,{attributesToRetrieve:["types"]})).types?.ts==="definitely-typed"}catch{return!1}},oPt=t=>(0,cke.default)(sPt,iPt,{requester:{async send(r){try{let s=await nn.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:s.body,isTimedOut:!1,status:s.statusCode}}catch(s){return{content:s.response.body,isTimedOut:!1,status:s.response.statusCode}}}}});var Ake=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,aPt=async(t,e,r,s)=>{if(r.scope==="types")return;let{project:a}=t,{configuration:n}=a;if(!(n.get("tsEnableAutoTypes")??(ce.existsSync(J.join(t.cwd,"tsconfig.json"))||ce.existsSync(J.join(a.cwd,"tsconfig.json")))))return;let f=n.makeResolver(),p={project:a,resolver:f,report:new ki};if(!await uke(r,n))return;let E=Ake(r),C=G.parseRange(r.range).selector;if(!Fr.validRange(C)){let N=n.normalizeDependency(r),U=await f.getCandidates(N,{},p);C=G.parseRange(U[0].reference).selector}let S=fke.default.coerce(C);if(S===null)return;let P=`${Xu.Modifier.CARET}${S.major}`,I=G.makeDescriptor(G.makeIdent("types",E),P),R=je.mapAndFind(a.workspaces,N=>{let U=N.manifest.dependencies.get(r.identHash)?.descriptorHash,W=N.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&W!==r.descriptorHash)return je.mapAndFind.skip;let ee=[];for(let ie of Ut.allDependencies){let ue=N.manifest[ie].get(I.identHash);typeof ue>"u"||ee.push([ie,ue])}return ee.length===0?je.mapAndFind.skip:ee});if(typeof R<"u")for(let[N,U]of R)t.manifest[N].set(U.identHash,U);else{try{let N=n.normalizeDependency(I);if((await f.getCandidates(N,{},p)).length===0)return}catch{return}t.manifest[Xu.Target.DEVELOPMENT].set(I.identHash,I)}},lPt=async(t,e,r)=>{if(r.scope==="types")return;let{project:s}=t,{configuration:a}=s;if(!(a.get("tsEnableAutoTypes")??(ce.existsSync(J.join(t.cwd,"tsconfig.json"))||ce.existsSync(J.join(s.cwd,"tsconfig.json")))))return;let c=Ake(r),f=G.makeIdent("types",c);for(let p of Ut.allDependencies)typeof t.manifest[p].get(f.identHash)>"u"||t.manifest[p].delete(f.identHash)},cPt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},uPt={configuration:{tsEnableAutoTypes:{description:"Whether Yarn should auto-install @types/ dependencies on 'yarn add'",type:"BOOLEAN",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:aPt,afterWorkspaceDependencyRemoval:lPt,beforeWorkspacePacking:cPt}},fPt=uPt;var pz={};Vt(pz,{VersionApplyCommand:()=>Y1,VersionCheckCommand:()=>V1,VersionCommand:()=>J1,default:()=>dPt,versionUtils:()=>W1});Ge();Ge();Yt();var W1={};Vt(W1,{Decision:()=>G1,applyPrerelease:()=>pke,applyReleases:()=>Az,applyStrategy:()=>sP,clearVersionFiles:()=>cz,getUndecidedDependentWorkspaces:()=>aP,getUndecidedWorkspaces:()=>UL,openVersionFile:()=>q1,requireMoreDecisions:()=>pPt,resolveVersionFiles:()=>oP,suggestStrategy:()=>fz,updateVersionFiles:()=>uz,validateReleaseDecision:()=>dy});Ge();Dt();wc();Yt();ql();var kA=ut(Ai()),APt=/^(>=|[~^]|)(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$/,G1=(h=>(h.UNDECIDED="undecided",h.DECLINE="decline",h.MAJOR="major",h.MINOR="minor",h.PATCH="patch",h.PREMAJOR="premajor",h.PREMINOR="preminor",h.PREPATCH="prepatch",h.PRERELEASE="prerelease",h))(G1||{});function dy(t){let e=kA.default.valid(t);return e||je.validateEnum(O4(G1,"UNDECIDED"),t)}async function oP(t,{prerelease:e=null}={}){let r=new Map,s=t.configuration.get("deferredVersionFolder");if(!ce.existsSync(s))return r;let a=await ce.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=J.join(s,n),f=await ce.readFilePromise(c,"utf8"),p=ls(f);for(let[h,E]of Object.entries(p.releases||{})){if(E==="decline")continue;let C=G.parseIdent(h),S=t.tryWorkspaceByIdent(C);if(S===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${J.basename(c)} references ${h})`);if(S.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${G.prettyLocator(t.configuration,S.anchoredLocator)})`);let P=S.manifest.raw.stableVersion??S.manifest.version,I=r.get(S),R=sP(E==="prerelease"?S.manifest.version:P,dy(E));if(R===null)throw new Error(`Assertion failed: Expected ${P} to support being bumped via strategy ${E}`);let N=typeof I<"u"?kA.default.gt(R,I)?R:I:R;r.set(S,N)}}return e&&(r=new Map([...r].map(([n,c])=>[n,pke(c,{current:n.manifest.version,prerelease:e})]))),r}async function cz(t){let e=t.configuration.get("deferredVersionFolder");ce.existsSync(e)&&await ce.removePromise(e)}async function uz(t,e){let r=new Set(e),s=t.configuration.get("deferredVersionFolder");if(!ce.existsSync(s))return;let a=await ce.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=J.join(s,n),f=await ce.readFilePromise(c,"utf8"),p=ls(f),h=p?.releases;if(h){for(let E of Object.keys(h)){let C=G.parseIdent(E),S=t.tryWorkspaceByIdent(C);(S===null||r.has(S))&&delete p.releases[E]}Object.keys(p.releases).length>0?await ce.changeFilePromise(c,nl(new nl.PreserveOrdering(p))):await ce.unlinkPromise(c)}}}async function q1(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new nt("This command can only be run from within a Yarn project");let s=await ka.fetchRoot(r.projectCwd),a=s!==null?await ka.fetchBase(s,{baseRefs:r.get("changesetBaseRefs")}):null,n=s!==null?await ka.fetchChangedFiles(s,{base:a.hash,project:t}):[],c=r.get("deferredVersionFolder"),f=n.filter(P=>J.contains(c,P)!==null);if(f.length>1)throw new nt(`Your current branch contains multiple versioning files; this isn't supported: -- ${f.map(P=>fe.fromPortablePath(P)).join(` -- `)}`);let p=new Set(je.mapAndFilter(n,P=>{let I=t.tryWorkspaceByFilePath(P);return I===null?je.mapAndFilter.skip:I}));if(f.length===0&&p.size===0&&!e)return null;let h=f.length===1?f[0]:J.join(c,`${Nn.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=ce.existsSync(h)?await ce.readFilePromise(h,"utf8"):"{}",C=ls(E),S=new Map;for(let P of C.declined||[]){let I=G.parseIdent(P),R=t.getWorkspaceByIdent(I);S.set(R,"decline")}for(let[P,I]of Object.entries(C.releases||{})){let R=G.parseIdent(P),N=t.getWorkspaceByIdent(R);S.set(N,dy(I))}return{project:t,root:s,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(P=>P.manifest.version!==null)),releases:S,async saveAll(){let P={},I=[],R=[];for(let N of t.workspaces){if(N.manifest.version===null)continue;let U=G.stringifyIdent(N.anchoredLocator),W=S.get(N);W==="decline"?I.push(U):typeof W<"u"?P[U]=dy(W):p.has(N)&&R.push(U)}await ce.mkdirPromise(J.dirname(h),{recursive:!0}),await ce.changeFilePromise(h,nl(new nl.PreserveOrdering({releases:Object.keys(P).length>0?P:void 0,declined:I.length>0?I:void 0,undecided:R.length>0?R:void 0})))}}}function pPt(t){return UL(t).size>0||aP(t).length>0}function UL(t){let e=new Set;for(let r of t.changedWorkspaces)r.manifest.version!==null&&(t.releases.has(r)||e.add(r));return e}function aP(t,{include:e=new Set}={}){let r=[],s=new Map(je.mapAndFilter([...t.releases],([n,c])=>c==="decline"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(je.mapAndFilter([...t.releases],([n,c])=>c!=="decline"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||s.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let c of Ut.hardDependencies)for(let f of n.manifest.getForScope(c).values()){let p=t.project.tryWorkspaceByDescriptor(f);p!==null&&s.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function fz(t,e){let r=kA.default.clean(e);for(let s of Object.values(G1))if(s!=="undecided"&&s!=="decline"&&kA.default.inc(t,s)===r)return s;return null}function sP(t,e){if(kA.default.valid(e))return e;if(t===null)throw new nt(`Cannot apply the release strategy "${e}" unless the workspace already has a valid version`);if(!kA.default.valid(t))throw new nt(`Cannot apply the release strategy "${e}" on a non-semver version (${t})`);let r=kA.default.inc(t,e);if(r===null)throw new nt(`Cannot apply the release strategy "${e}" on the specified version (${t})`);return r}function Az(t,e,{report:r,exact:s}){let a=new Map;for(let n of t.workspaces)for(let c of Ut.allDependencies)for(let f of n.manifest[c].values()){let p=t.tryWorkspaceByDescriptor(f);if(p===null||!e.has(p))continue;je.getArrayWithDefault(a,p).push([n,c,f.identHash])}for(let[n,c]of e){let f=n.manifest.version;n.manifest.version=c,kA.default.prerelease(c)===null?delete n.manifest.raw.stableVersion:n.manifest.raw.stableVersion||(n.manifest.raw.stableVersion=f);let p=n.manifest.name!==null?G.stringifyIdent(n.manifest.name):null;r.reportInfo(0,`${G.prettyLocator(t.configuration,n.anchoredLocator)}: Bumped to ${c}`),r.reportJson({cwd:fe.fromPortablePath(n.cwd),ident:p,oldVersion:f,newVersion:c});let h=a.get(n);if(!(typeof h>"u"))for(let[E,C,S]of h){let P=E.manifest[C].get(S);if(typeof P>"u")throw new Error("Assertion failed: The dependency should have existed");let I=P.range,R=!1;if(I.startsWith(Ei.protocol)&&(I=I.slice(Ei.protocol.length),R=!0,I===n.relativeCwd))continue;let N=I.match(APt);if(!N){r.reportWarning(0,`Couldn't auto-upgrade range ${I} (in ${G.prettyLocator(t.configuration,E.anchoredLocator)})`);continue}let U=s?`${c}`:`${N[1]}${c}`;R&&(U=`${Ei.protocol}${U}`);let W=G.makeDescriptor(P,U);E.manifest[C].set(S,W)}}}var hPt=new Map([["%n",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function pke(t,{current:e,prerelease:r}){let s=new kA.default.SemVer(e),a=s.prerelease.slice(),n=[];s.prerelease=[],s.format()!==t&&(a.length=0);let c=!0,f=r.split(/\./g);for(let p of f){let h=hPt.get(p);if(typeof h>"u")n.push(p),a[0]===p?a.shift():c=!1;else{let E=c?h.extract(a):null;E!==null&&typeof E[0]=="number"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),c=!1)}}return s.prerelease&&(s.prerelease=[]),`${t}-${n.join(".")}`}var Y1=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("--all",!1,{description:"Apply the deferred version changes on all workspaces"});this.dryRun=ge.Boolean("--dry-run",!1,{description:"Print the versions without actually generating the package archive"});this.prerelease=ge.String("--prerelease",{description:"Add a prerelease identifier to new versions",tolerateBoolean:!0});this.exact=ge.Boolean("--exact",!1,{description:"Use the exact version of each package, removes any range. Useful for nightly releases where the range might match another version."});this.recursive=ge.Boolean("-R,--recursive",{description:"Release the transitive workspaces as well"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["version","apply"]]}static{this.usage=ot.Usage({category:"Release-related commands",description:"apply all the deferred version bumps at once",details:` - This command will apply the deferred version changes and remove their definitions from the repository. - - Note that if \`--prerelease\` is set, the given prerelease identifier (by default \`rc.%n\`) will be used on all new versions and the version definitions will be kept as-is. - - By default only the current workspace will be bumped, but you can configure this behavior by using one of: - - - \`--recursive\` to also apply the version bump on its dependencies - - \`--all\` to apply the version bump on all packages in the repository - - Note that this command will also update the \`workspace:\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump. - `,examples:[["Apply the version change to the local workspace","yarn version apply"],["Apply the version change to all the workspaces in the local workspace","yarn version apply --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=this.prerelease?typeof this.prerelease!="boolean"?this.prerelease:"rc.%n":null,h=await oP(s,{prerelease:p}),E=new Map;if(this.all)E=h;else{let C=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let S of C){let P=h.get(S);typeof P<"u"&&E.set(S,P)}}if(E.size===0){let C=h.size>0?" Did you want to add --all?":"";f.reportWarning(0,`The current workspace doesn't seem to require a version bump.${C}`);return}Az(s,E,{report:f,exact:this.exact}),this.dryRun||(p||(this.all?await cz(s):await uz(s,[...E.keys()])),f.reportSeparator())});return this.dryRun||c.hasErrors()?c.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};Ge();Dt();Yt();var _L=ut(Ai());var V1=class extends ft{constructor(){super(...arguments);this.interactive=ge.Boolean("-i,--interactive",{description:"Open an interactive interface used to set version bumps"})}static{this.paths=[["version","check"]]}static{this.usage=ot.Usage({category:"Release-related commands",description:"check that all the relevant packages have been bumped",details:"\n **Warning:** This command currently requires Git.\n\n This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\n\n In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\n\n In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\n ",examples:[["Check whether the modified packages need a bump","yarn version check"]]})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){iw(this.context);let{Gem:r}=await Promise.resolve().then(()=>(WF(),LW)),{ScrollableItems:s}=await Promise.resolve().then(()=>(KF(),JF)),{FocusRequest:a}=await Promise.resolve().then(()=>(UW(),v2e)),{useListInput:n}=await Promise.resolve().then(()=>(VF(),S2e)),{renderForm:c}=await Promise.resolve().then(()=>($F(),ZF)),{Box:f,Text:p}=await Promise.resolve().then(()=>ut(Wc())),{default:h,useCallback:E,useState:C}=await Promise.resolve().then(()=>ut(hn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,this.context.cwd);if(!I)throw new ar(P.cwd,this.context.cwd);await P.restoreInstallState();let R=await q1(P);if(R===null||R.releaseRoots.size===0)return 0;if(R.root===null)throw new nt("This command can only be run on Git repositories");let N=()=>h.createElement(f,{flexDirection:"row",paddingBottom:1},h.createElement(f,{flexDirection:"column",width:60},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select workspaces.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select release strategies."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to save.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),U=({workspace:me,active:pe,decision:Be,setDecision:Ce})=>{let g=me.manifest.raw.stableVersion??me.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${G.prettyLocator(S,me.anchoredLocator)})`);if(_L.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let we=["undecided","decline","patch","minor","major"];n(Be,we,{active:pe,minus:"left",plus:"right",set:Ce});let ye=Be==="undecided"?h.createElement(p,{color:"yellow"},g):Be==="decline"?h.createElement(p,{color:"green"},g):h.createElement(p,null,h.createElement(p,{color:"magenta"},g)," \u2192 ",h.createElement(p,{color:"green"},_L.default.valid(Be)?Be:_L.default.inc(g,Be)));return h.createElement(f,{flexDirection:"column"},h.createElement(f,null,h.createElement(p,null,G.prettyLocator(S,me.anchoredLocator)," - ",ye)),h.createElement(f,null,we.map(Ae=>h.createElement(f,{key:Ae,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:Ae===Be})," ",Ae)))))},W=me=>{let pe=new Set(R.releaseRoots),Be=new Map([...me].filter(([Ce])=>pe.has(Ce)));for(;;){let Ce=aP({project:R.project,releases:Be}),g=!1;if(Ce.length>0){for(let[we]of Ce)if(!pe.has(we)){pe.add(we),g=!0;let ye=me.get(we);typeof ye<"u"&&Be.set(we,ye)}}if(!g)break}return{relevantWorkspaces:pe,relevantReleases:Be}},ee=()=>{let[me,pe]=C(()=>new Map(R.releases)),Be=E((Ce,g)=>{let we=new Map(me);g!=="undecided"?we.set(Ce,g):we.delete(Ce);let{relevantReleases:ye}=W(we);pe(ye)},[me,pe]);return[me,Be]},ie=({workspaces:me,releases:pe})=>{let Be=[];Be.push(`${me.size} total`);let Ce=0,g=0;for(let we of me){let ye=pe.get(we);typeof ye>"u"?g+=1:ye!=="decline"&&(Ce+=1)}return Be.push(`${Ce} release${Ce===1?"":"s"}`),Be.push(`${g} remaining`),h.createElement(p,{color:"yellow"},Be.join(", "))},le=await c(({useSubmit:me})=>{let[pe,Be]=ee();me(pe);let{relevantWorkspaces:Ce}=W(pe),g=new Set([...Ce].filter(se=>!R.releaseRoots.has(se))),[we,ye]=C(0),Ae=E(se=>{switch(se){case a.BEFORE:ye(we-1);break;case a.AFTER:ye(we+1);break}},[we,ye]);return h.createElement(f,{flexDirection:"column"},h.createElement(N,null),h.createElement(f,null,h.createElement(p,{wrap:"wrap"},"The following files have been modified in your local checkout.")),h.createElement(f,{flexDirection:"column",marginTop:1,paddingLeft:2},[...R.changedFiles].map(se=>h.createElement(f,{key:se},h.createElement(p,null,h.createElement(p,{color:"grey"},fe.fromPortablePath(R.root)),fe.sep,fe.relative(fe.fromPortablePath(R.root),fe.fromPortablePath(se)))))),R.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):")),g.size>3?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:R.releaseRoots,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:we%2===0,radius:1,size:2,onFocusRequest:Ae},[...R.releaseRoots].map(se=>h.createElement(U,{key:se.cwd,workspace:se,decision:pe.get(se)||"undecided",setDecision:Z=>Be(se,Z)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:")),h.createElement(f,null,h.createElement(p,null,"(Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move the focus between the workspace groups.)")),g.size>5?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:g,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:we%2===1,radius:2,size:2,onFocusRequest:Ae},[...g].map(se=>h.createElement(U,{key:se.cwd,workspace:se,decision:pe.get(se)||"undecided",setDecision:Z=>Be(se,Z)}))))):null)},{versionFile:R},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof le>"u")return 1;R.releases.clear();for(let[me,pe]of le)R.releases.set(me,pe);await R.saveAll()}async executeStandard(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return await s.restoreInstallState(),(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{let f=await q1(s);if(f===null||f.releaseRoots.size===0)return;if(f.root===null)throw new nt("This command can only be run on Git repositories");if(c.reportInfo(0,`Your PR was started right after ${he.pretty(r,f.baseHash.slice(0,7),"yellow")} ${he.pretty(r,f.baseTitle,"magenta")}`),f.changedFiles.size>0){c.reportInfo(0,"You have changed the following files since then:"),c.reportSeparator();for(let S of f.changedFiles)c.reportInfo(null,`${he.pretty(r,fe.fromPortablePath(f.root),"gray")}${fe.sep}${fe.relative(fe.fromPortablePath(f.root),fe.fromPortablePath(S))}`)}let p=!1,h=!1,E=UL(f);if(E.size>0){p||c.reportSeparator();for(let S of E)c.reportError(0,`${G.prettyLocator(r,S.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let C=aP(f);for(let[S,P]of C)h||c.reportSeparator(),c.reportError(0,`${G.prettyLocator(r,S.anchoredLocator)} doesn't have a release strategy attached, but depends on ${G.prettyWorkspace(r,P)} which is planned for release.`),h=!0;(p||h)&&(c.reportSeparator(),c.reportInfo(0,"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed)."),c.reportInfo(0,"To correct these errors, run `yarn version check --interactive` then follow the instructions."))})).exitCode()}};Ge();Yt();var HL=ut(Ai());var J1=class extends ft{constructor(){super(...arguments);this.deferred=ge.Boolean("-d,--deferred",{description:"Prepare the version to be bumped during the next release cycle"});this.immediate=ge.Boolean("-i,--immediate",{description:"Bump the version immediately"});this.strategy=ge.String()}static{this.paths=[["version"]]}static{this.usage=ot.Usage({category:"Release-related commands",description:"apply a new version to the current package",details:"\n This command will bump the version number for the given package, following the specified strategy:\n\n - If `major`, the first number from the semver range will be increased (`X.0.0`).\n - If `minor`, the second number from the semver range will be increased (`0.X.0`).\n - If `patch`, the third number from the semver range will be increased (`0.0.X`).\n - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\n - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\n - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\n - If a valid semver range, it will be used as new version.\n - If unspecified, Yarn will ask you for guidance.\n\n For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\n ",examples:[["Immediately bump the version to the next major","yarn version major"],["Prepare the version to be bumped to the next major","yarn version major --deferred"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=r.get("preferDeferredVersions");this.deferred&&(n=!0),this.immediate&&(n=!1);let c=HL.default.valid(this.strategy),f=this.strategy==="decline",p;if(c)if(a.manifest.version!==null){let E=fz(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!f){if(E===null)throw new nt("Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.");if(typeof E!="string"||!HL.default.valid(E))throw new nt(`Can't bump the version (${E}) if it's not valid semver`)}p=dy(this.strategy)}if(!n){let C=(await oP(s)).get(a);if(typeof C<"u"&&p!=="decline"){let S=sP(a.manifest.version,p);if(HL.default.lt(S,C))throw new nt(`Can't bump the version to one that would be lower than the current deferred one (${C})`)}}let h=await q1(s,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run(["version","apply"])}};var gPt={configuration:{deferredVersionFolder:{description:"Folder where are stored the versioning files",type:"ABSOLUTE_PATH",default:"./.yarn/versions"},preferDeferredVersions:{description:"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set",type:"BOOLEAN",default:!1}},commands:[Y1,V1,J1]},dPt=gPt;var hz={};Vt(hz,{WorkspacesFocusCommand:()=>K1,WorkspacesForeachCommand:()=>X1,default:()=>EPt});Ge();Ge();Yt();var K1=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.production=ge.Boolean("--production",!1,{description:"Only install regular dependencies by omitting dev dependencies"});this.all=ge.Boolean("-A,--all",!1,{description:"Install the entire project"});this.workspaces=ge.Rest()}static{this.paths=[["workspaces","focus"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"install a single workspace and its dependencies",details:"\n This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\n\n Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\n\n If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);await s.restoreInstallState({restoreResolutions:!1});let c;if(this.all)c=new Set(s.workspaces);else if(this.workspaces.length===0){if(!a)throw new ar(s.cwd,this.context.cwd);c=new Set([a])}else c=new Set(this.workspaces.map(f=>s.getWorkspaceByIdent(G.parseIdent(f))));for(let f of c)for(let p of this.production?["dependencies"]:Ut.hardDependencies)for(let h of f.manifest.getForScope(p).values()){let E=s.tryWorkspaceByDescriptor(h);E!==null&&c.add(E)}for(let f of s.workspaces)c.has(f)?this.production&&f.manifest.devDependencies.clear():(f.manifest.installConfig=f.manifest.installConfig||{},f.manifest.installConfig.selfReferences=!1,f.manifest.dependencies.clear(),f.manifest.devDependencies.clear(),f.manifest.peerDependencies.clear(),f.manifest.scripts.clear());return await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};Ge();Ge();Ge();Yt();var z1=ut(Go()),gke=ut(Ld());Ul();var X1=class extends ft{constructor(){super(...arguments);this.from=ge.Array("--from",{description:"An array of glob pattern idents or paths from which to base any recursion"});this.all=ge.Boolean("-A,--all",{description:"Run the command on all workspaces of a project"});this.recursive=ge.Boolean("-R,--recursive",{description:"Run the command on the current workspace and all of its recursive dependencies"});this.worktree=ge.Boolean("-W,--worktree",{description:"Run the command on all workspaces of the current worktree"});this.verbose=ge.Counter("-v,--verbose",{description:"Increase level of logging verbosity up to 2 times"});this.parallel=ge.Boolean("-p,--parallel",!1,{description:"Run the commands in parallel"});this.interlaced=ge.Boolean("-i,--interlaced",!1,{description:"Print the output of commands in real-time instead of buffering it"});this.jobs=ge.String("-j,--jobs",{description:"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`",validator:g_([fo(["unlimited"]),$2(h_(),[m_(),d_(1)])])});this.topological=ge.Boolean("-t,--topological",!1,{description:"Run the command after all workspaces it depends on (regular) have finished"});this.topologicalDev=ge.Boolean("--topological-dev",!1,{description:"Run the command after all workspaces it depends on (regular + dev) have finished"});this.include=ge.Array("--include",[],{description:"An array of glob pattern idents or paths; only matching workspaces will be traversed"});this.exclude=ge.Array("--exclude",[],{description:"An array of glob pattern idents or paths; matching workspaces won't be traversed"});this.publicOnly=ge.Boolean("--no-private",{description:"Avoid running the command on private workspaces"});this.since=ge.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.dryRun=ge.Boolean("-n,--dry-run",{description:"Print the commands that would be run, without actually running them"});this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[["workspaces","foreach"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"run a command on all workspaces",details:"\n This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\n\n - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\n\n - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\n\n - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\n\n - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\n\n - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\n\n - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\n\n - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. You can also use the `--no-private` flag to avoid running the command in private workspaces.\n\n The `-v,--verbose` flag can be passed up to twice: once to prefix output lines with the originating workspace's name, and again to include start/finish/timing log lines. Maximum verbosity is enabled by default in terminal environments.\n\n If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\n ",examples:[["Publish all packages","yarn workspaces foreach -A --no-private npm publish --tolerate-republish"],["Run the build script on all descendant packages","yarn workspaces foreach -A run build"],["Run the build script on current and all descendant packages in parallel, building package dependencies first","yarn workspaces foreach -Apt run build"],["Run the build script on several packages and all their dependencies, building dependencies first","yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build"]]})}static{this.schema=[tB("all",qf.Forbids,["from","recursive","since","worktree"],{missingIf:"undefined"}),y_(["all","recursive","since","worktree"],{missingIf:"undefined"})]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!this.all&&!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),c=n.path.length===1&&n.path[0]==="run"&&typeof n.scriptName<"u"?n.scriptName:null;if(n.path.length===0)throw new nt("Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script");let f=Ce=>{this.dryRun&&this.context.stdout.write(`${Ce} -`)},p=()=>{let Ce=this.from.map(g=>z1.default.matcher(g));return s.workspaces.filter(g=>{let we=G.stringifyIdent(g.anchoredLocator),ye=g.relativeCwd;return Ce.some(Ae=>Ae(we)||Ae(ye))})},h=[];if(this.since?(f("Option --since is set; selecting the changed workspaces as root for workspace selection"),h=Array.from(await ka.fetchChangedWorkspaces({ref:this.since,project:s}))):this.from?(f("Option --from is set; selecting the specified workspaces"),h=[...p()]):this.worktree?(f("Option --worktree is set; selecting the current workspace"),h=[a]):this.recursive?(f("Option --recursive is set; selecting the current workspace"),h=[a]):this.all&&(f("Option --all is set; selecting all workspaces"),h=[...s.workspaces]),this.dryRun&&!this.all){for(let Ce of h)f(` -- ${Ce.relativeCwd} - ${G.prettyLocator(r,Ce.anchoredLocator)}`);h.length>0&&f("")}let E;if(this.recursive?this.since?(f("Option --recursive --since is set; recursively selecting all dependent workspaces"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceDependents()]).flat())):(f("Option --recursive is set; recursively selecting all transitive dependencies"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(f("Option --worktree is set; recursively selecting all nested workspaces"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let Ce of E)f(` -- ${Ce.relativeCwd} - ${G.prettyLocator(r,Ce.anchoredLocator)}`);let C=[],S=!1;if(c?.includes(":")){for(let Ce of s.workspaces)if(Ce.manifest.scripts.has(c)&&(S=!S,S===!1))break}for(let Ce of h){if(c&&!Ce.manifest.scripts.has(c)&&!S&&!(await In.getWorkspaceAccessibleBinaries(Ce)).has(c)){f(`Excluding ${Ce.relativeCwd} because it doesn't have a "${c}" script`);continue}if(!(c===r.env.npm_lifecycle_event&&Ce.cwd===a.cwd)){if(this.include.length>0&&!z1.default.isMatch(G.stringifyIdent(Ce.anchoredLocator),this.include)&&!z1.default.isMatch(Ce.relativeCwd,this.include)){f(`Excluding ${Ce.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(z1.default.isMatch(G.stringifyIdent(Ce.anchoredLocator),this.exclude)||z1.default.isMatch(Ce.relativeCwd,this.exclude))){f(`Excluding ${Ce.relativeCwd} because it matches the --exclude filter`);continue}if(this.publicOnly&&Ce.manifest.private===!0){f(`Excluding ${Ce.relativeCwd} because it's a private workspace and --no-private was set`);continue}C.push(Ce)}}if(this.dryRun)return 0;let P=this.verbose??(this.context.stdout.isTTY?1/0:0),I=P>0,R=P>1,N=this.parallel?this.jobs==="unlimited"?1/0:Number(this.jobs)||Math.ceil(Ui.availableParallelism()/2):1,U=N===1?!1:this.parallel,W=U?this.interlaced:!0,ee=(0,gke.default)(N),ie=new Map,ue=new Set,le=0,me=null,pe=!1,Be=await Ot.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async Ce=>{let g=async(we,{commandIndex:ye})=>{if(pe)return-1;!U&&R&&ye>1&&Ce.reportSeparator();let Ae=mPt(we,{configuration:r,label:I,commandIndex:ye}),[se,Z]=hke(Ce,{prefix:Ae,interlaced:W}),[De,Re]=hke(Ce,{prefix:Ae,interlaced:W});try{R&&Ce.reportInfo(null,`${Ae?`${Ae} `:""}Process started`);let mt=Date.now(),j=await this.cli.run([this.commandName,...this.args],{cwd:we.cwd,stdout:se,stderr:De})||0;se.end(),De.end(),await Z,await Re;let rt=Date.now();if(R){let Fe=r.get("enableTimers")?`, completed in ${he.pretty(r,rt-mt,he.Type.DURATION)}`:"";Ce.reportInfo(null,`${Ae?`${Ae} `:""}Process exited (exit code ${j})${Fe}`)}return j===130&&(pe=!0,me=j),j}catch(mt){throw se.end(),De.end(),await Z,await Re,mt}};for(let we of C)ie.set(we.anchoredLocator.locatorHash,we);for(;ie.size>0&&!Ce.hasErrors();){let we=[];for(let[Z,De]of ie){if(ue.has(De.anchoredDescriptor.descriptorHash))continue;let Re=!0;if(this.topological||this.topologicalDev){let mt=this.topologicalDev?new Map([...De.manifest.dependencies,...De.manifest.devDependencies]):De.manifest.dependencies;for(let j of mt.values()){let rt=s.tryWorkspaceByDescriptor(j);if(Re=rt===null||!ie.has(rt.anchoredLocator.locatorHash),!Re)break}}if(Re&&(ue.add(De.anchoredDescriptor.descriptorHash),we.push(ee(async()=>{let mt=await g(De,{commandIndex:++le});return ie.delete(Z),ue.delete(De.anchoredDescriptor.descriptorHash),{workspace:De,exitCode:mt}})),!U))break}if(we.length===0){let Z=Array.from(ie.values()).map(De=>G.prettyLocator(r,De.anchoredLocator)).join(", ");Ce.reportError(3,`Dependency cycle detected (${Z})`);return}let ye=await Promise.all(we);ye.forEach(({workspace:Z,exitCode:De})=>{De!==0&&Ce.reportError(0,`The command failed in workspace ${G.prettyLocator(r,Z.anchoredLocator)} with exit code ${De}`)});let se=ye.map(Z=>Z.exitCode).find(Z=>Z!==0);(this.topological||this.topologicalDev)&&typeof se<"u"&&Ce.reportError(0,"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph")}});return me!==null?me:Be.exitCode()}};function hke(t,{prefix:e,interlaced:r}){let s=t.createStreamReporter(e),a=new je.DefaultStream;a.pipe(s,{end:!1}),a.on("finish",()=>{s.end()});let n=new Promise(f=>{s.on("finish",()=>{f(a.active)})});if(r)return[a,n];let c=new je.BufferStream;return c.pipe(a,{end:!1}),c.on("finish",()=>{a.end()}),[c,n]}function mPt(t,{configuration:e,commandIndex:r,label:s}){if(!s)return null;let n=`[${G.stringifyIdent(t.anchoredLocator)}]:`,c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[r%c.length];return he.pretty(e,n,f)}var yPt={commands:[K1,X1]},EPt=yPt;var tC=()=>({modules:new Map([["@yarnpkg/cli",Gv],["@yarnpkg/core",jv],["@yarnpkg/fslib",_2],["@yarnpkg/libzip",fv],["@yarnpkg/parsers",J2],["@yarnpkg/shell",mv],["clipanion",oB],["semver",IPt],["typanion",Ea],["@yarnpkg/plugin-essentials",hq],["@yarnpkg/plugin-catalog",yq],["@yarnpkg/plugin-compat",Bq],["@yarnpkg/plugin-constraints",_q],["@yarnpkg/plugin-dlx",Hq],["@yarnpkg/plugin-exec",qq],["@yarnpkg/plugin-file",Yq],["@yarnpkg/plugin-git",pq],["@yarnpkg/plugin-github",Kq],["@yarnpkg/plugin-http",zq],["@yarnpkg/plugin-init",Xq],["@yarnpkg/plugin-interactive-tools",JW],["@yarnpkg/plugin-jsr",zW],["@yarnpkg/plugin-link",XW],["@yarnpkg/plugin-nm",FY],["@yarnpkg/plugin-npm",FK],["@yarnpkg/plugin-npm-cli",qK],["@yarnpkg/plugin-pack",bV],["@yarnpkg/plugin-patch",XK],["@yarnpkg/plugin-pnp",wY],["@yarnpkg/plugin-pnpm",ez],["@yarnpkg/plugin-stage",az],["@yarnpkg/plugin-typescript",lz],["@yarnpkg/plugin-version",pz],["@yarnpkg/plugin-workspace-tools",hz]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-catalog","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"])});function yke({cwd:t,pluginConfiguration:e}){let r=new Ca({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:fn??""});return Object.assign(r,{defaultContext:{...Ca.defaultContext,cwd:t,plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function CPt(t){if(je.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,s=">=18.12.0";if(Fr.satisfiesWithPrereleases(r,s))return!0;let a=new nt(`This tool requires a Node version compatible with ${s} (got ${r}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);return Ca.defaultContext.stdout.write(t.error(a)),!1}async function Eke({selfPath:t,pluginConfiguration:e}){return await ze.find(fe.toPortablePath(process.cwd()),e,{strict:!1,usePathCheck:t})}function wPt(t,e,{yarnPath:r}){if(!ce.existsSync(r))return t.error(new Error(`The "yarn-path" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on("SIGINT",()=>{});let s={stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1"}};try{(0,dke.execFileSync)(process.execPath,[fe.fromPortablePath(r),...e],s)}catch(a){return a.status??1}return 0}function BPt(t,e){let r=null,s=e;return e.length>=2&&e[0]==="--cwd"?(r=fe.toPortablePath(e[1]),s=e.slice(2)):e.length>=1&&e[0].startsWith("--cwd=")?(r=fe.toPortablePath(e[0].slice(6)),s=e.slice(1)):e[0]==="add"&&e[e.length-2]==="--cwd"&&(r=fe.toPortablePath(e[e.length-1]),s=e.slice(0,e.length-2)),t.defaultContext.cwd=r!==null?J.resolve(r):J.cwd(),s}function vPt(t,{configuration:e}){if(!e.get("enableTelemetry")||mke.isCI||!process.stdout.isTTY)return;ze.telemetry=new ZI(e,"puba9cdc10ec5790a2cf4969dd413a47270");let s=/^@yarnpkg\/plugin-(.*)$/;for(let a of e.plugins.keys())$I.has(a.match(s)?.[1]??"")&&ze.telemetry?.reportPluginName(a);t.binaryVersion&&ze.telemetry.reportVersion(t.binaryVersion)}function Ike(t,{configuration:e}){for(let r of e.plugins.values())for(let s of r.commands||[])t.register(s)}async function SPt(t,e,{selfPath:r,pluginConfiguration:s}){if(!CPt(t))return 1;let a=await Eke({selfPath:r,pluginConfiguration:s}),n=a.get("yarnPath"),c=a.get("ignorePath");if(n&&!c)return wPt(t,e,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let f=BPt(t,e);vPt(t,{configuration:a}),Ike(t,{configuration:a});let p=t.process(f,t.defaultContext);return p.help||ze.telemetry?.reportCommandName(p.path.join(" ")),await t.run(p,t.defaultContext)}async function bde({cwd:t=J.cwd(),pluginConfiguration:e=tC()}={}){let r=yke({cwd:t,pluginConfiguration:e}),s=await Eke({pluginConfiguration:e,selfPath:null});return Ike(r,{configuration:s}),r}async function VR(t,{cwd:e=J.cwd(),selfPath:r,pluginConfiguration:s}){let a=yke({cwd:e,pluginConfiguration:s});function n(){Ca.defaultContext.stdout.write(`ERROR: Yarn is terminating due to an unexpected empty event loop. -Please report this issue at https://github.com/yarnpkg/berry/issues.`)}process.once("beforeExit",n);try{process.exitCode=42,process.exitCode=await SPt(a,t,{selfPath:r,pluginConfiguration:s})}catch(c){Ca.defaultContext.stdout.write(a.error(c)),process.exitCode=1}finally{process.off("beforeExit",n),await ce.rmtempPromise()}}VR(process.argv.slice(2),{cwd:J.cwd(),selfPath:fe.toPortablePath(fe.resolve(process.argv[1])),pluginConfiguration:tC()});})(); -/** - @license - Copyright (c) 2015, Rebecca Turner - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - */ -/** - @license - Copyright Node.js contributors. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. -*/ -/** - @license - The MIT License (MIT) - - Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -/** - @license - Copyright Joyent, Inc. and other Node contributors. - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to permit - persons to whom the Software is furnished to do so, subject to the - following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -/*! Bundled license information: - -is-number/index.js: - (*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - *) - -to-regex-range/index.js: - (*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - *) - -fill-range/index.js: - (*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - *) - -is-extglob/index.js: - (*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - *) - -is-glob/index.js: - (*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - *) - -queue-microtask/index.js: - (*! queue-microtask. MIT License. Feross Aboukhadijeh *) - -run-parallel/index.js: - (*! run-parallel. MIT License. Feross Aboukhadijeh *) - -git-url-parse/lib/index.js: - (*! - * buildToken - * Builds OAuth token prefix (helper function) - * - * @name buildToken - * @function - * @param {GitUrl} obj The parsed Git url object. - * @return {String} token prefix - *) - -object-assign/index.js: - (* - object-assign - (c) Sindre Sorhus - @license MIT - *) - -react/cjs/react.production.min.js: - (** @license React v17.0.2 - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -scheduler/cjs/scheduler.production.min.js: - (** @license React v0.20.2 - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -react-reconciler/cjs/react-reconciler.production.min.js: - (** @license React v0.26.2 - * react-reconciler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -is-windows/index.js: - (*! - * is-windows - * - * Copyright © 2015-2018, Jon Schlinkert. - * Released under the MIT License. - *) -*/ diff --git a/.yarn/releases/yarn-4.17.1.cjs b/.yarn/releases/yarn-4.17.1.cjs new file mode 100755 index 0000000000000..17d934377b888 --- /dev/null +++ b/.yarn/releases/yarn-4.17.1.cjs @@ -0,0 +1,944 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var Oje=Object.create;var uU=Object.defineProperty;var Lje=Object.getOwnPropertyDescriptor;var Mje=Object.getOwnPropertyNames;var Uje=Object.getPrototypeOf,_je=Object.prototype.hasOwnProperty;var Ce=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Ze=(e,t)=>()=>(e&&(t=e(e=0)),t);var G=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Vt=(e,t)=>{for(var r in t)uU(e,r,{get:t[r],enumerable:!0})},Hje=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Mje(t))!_je.call(e,a)&&a!==r&&uU(e,a,{get:()=>t[a],enumerable:!(s=Lje(t,a))||s.enumerable});return e};var et=(e,t,r)=>(r=e!=null?Oje(Uje(e)):{},Hje(t||!e||!e.__esModule?uU(r,"default",{value:e,enumerable:!0}):r,e));var pi={};Vt(pi,{SAFE_TIME:()=>SX,S_IFDIR:()=>ex,S_IFLNK:()=>tx,S_IFMT:()=>Hf,S_IFREG:()=>R2});var Hf,ex,R2,tx,SX,bX=Ze(()=>{Hf=61440,ex=16384,R2=32768,tx=40960,SX=456789e3});var or={};Vt(or,{EBADF:()=>Yo,EBUSY:()=>jje,EEXIST:()=>Kje,EINVAL:()=>qje,EISDIR:()=>Vje,ENOENT:()=>Yje,ENOSYS:()=>Gje,ENOTDIR:()=>Wje,ENOTEMPTY:()=>zje,EOPNOTSUPP:()=>Zje,EROFS:()=>Jje,ERR_DIR_CLOSED:()=>fU});function vc(e,t){return Object.assign(new Error(`${e}: ${t}`),{code:e})}function jje(e){return vc("EBUSY",e)}function Gje(e,t){return vc("ENOSYS",`${e}, ${t}`)}function qje(e){return vc("EINVAL",`invalid argument, ${e}`)}function Yo(e){return vc("EBADF",`bad file descriptor, ${e}`)}function Yje(e){return vc("ENOENT",`no such file or directory, ${e}`)}function Wje(e){return vc("ENOTDIR",`not a directory, ${e}`)}function Vje(e){return vc("EISDIR",`illegal operation on a directory, ${e}`)}function Kje(e){return vc("EEXIST",`file already exists, ${e}`)}function Jje(e){return vc("EROFS",`read-only filesystem, ${e}`)}function zje(e){return vc("ENOTEMPTY",`directory not empty, ${e}`)}function Zje(e){return vc("EOPNOTSUPP",`operation not supported, ${e}`)}function fU(){return vc("ERR_DIR_CLOSED","Directory handle was closed")}var rx=Ze(()=>{});var ll={};Vt(ll,{BigIntStatsEntry:()=>uE,DEFAULT_MODE:()=>hU,DirEntry:()=>AU,StatEntry:()=>cE,areStatsEqual:()=>dU,clearStats:()=>nx,convertToBigIntStats:()=>$je,makeDefaultStats:()=>DX,makeEmptyStats:()=>Xje});function DX(){return new cE}function Xje(){return nx(DX())}function nx(e){for(let t in e)if(Object.hasOwn(e,t)){let r=e[t];typeof r=="number"?e[t]=0:typeof r=="bigint"?e[t]=BigInt(0):pU.types.isDate(r)&&(e[t]=new Date(0))}return e}function $je(e){let t=new uE;for(let r in e)if(Object.hasOwn(e,r)){let s=e[r];typeof s=="number"?t[r]=BigInt(Math.floor(s)):pU.types.isDate(s)&&(t[r]=new Date(s))}return t.atimeNs=t.atimeMs*BigInt(1e6)+BigInt(Math.floor(e.atimeMs%1*1e3))*BigInt(1e3),t.mtimeNs=t.mtimeMs*BigInt(1e6)+BigInt(Math.floor(e.mtimeMs%1*1e3))*BigInt(1e3),t.ctimeNs=t.ctimeMs*BigInt(1e6)+BigInt(Math.floor(e.ctimeMs%1*1e3))*BigInt(1e3),t.birthtimeNs=t.birthtimeMs*BigInt(1e6)+BigInt(Math.floor(e.birthtimeMs%1*1e3))*BigInt(1e3),t}function dU(e,t){if(e.atimeMs!==t.atimeMs||e.birthtimeMs!==t.birthtimeMs||e.blksize!==t.blksize||e.blocks!==t.blocks||e.ctimeMs!==t.ctimeMs||e.dev!==t.dev||e.gid!==t.gid||e.ino!==t.ino||e.isBlockDevice()!==t.isBlockDevice()||e.isCharacterDevice()!==t.isCharacterDevice()||e.isDirectory()!==t.isDirectory()||e.isFIFO()!==t.isFIFO()||e.isFile()!==t.isFile()||e.isSocket()!==t.isSocket()||e.isSymbolicLink()!==t.isSymbolicLink()||e.mode!==t.mode||e.mtimeMs!==t.mtimeMs||e.nlink!==t.nlink||e.rdev!==t.rdev||e.size!==t.size||e.uid!==t.uid)return!1;let r=e,s=t;return!(r.atimeNs!==s.atimeNs||r.mtimeNs!==s.mtimeNs||r.ctimeNs!==s.ctimeNs||r.birthtimeNs!==s.birthtimeNs)}var pU,hU,AU,cE,uE,gU=Ze(()=>{pU=et(Ce("util")),hU=33188,AU=class{constructor(){this.name="";this.path="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},cE=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=hU;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},uE=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(hU);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function i6e(e){let t,r;if(t=e.match(r6e))e=t[1];else if(r=e.match(n6e))e=`\\\\${r[1]?".\\":""}${r[2]}`;else return e;return e.replace(/\//g,"\\")}function s6e(e){e=e.replace(/\\/g,"/");let t,r;return(t=e.match(e6e))?e=`/${t[1]}`:(r=e.match(t6e))&&(e=`/unc/${r[1]?".dot/":""}${r[2]}`),e}function ix(e,t){return e===Ae?xX(t):mU(t)}var F2,wt,yr,Ae,Y,PX,e6e,t6e,r6e,n6e,mU,xX,cl=Ze(()=>{F2=et(Ce("path")),wt={root:"/",dot:".",parent:".."},yr={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml",env:".env"},Ae=Object.create(F2.default),Y=Object.create(F2.default.posix);Ae.cwd=()=>process.cwd();Y.cwd=process.platform==="win32"?()=>mU(process.cwd()):process.cwd;process.platform==="win32"&&(Y.resolve=(...e)=>e.length>0&&Y.isAbsolute(e[0])?F2.default.posix.resolve(...e):F2.default.posix.resolve(Y.cwd(),...e));PX=function(e,t,r){return t=e.normalize(t),r=e.normalize(r),t===r?".":(t.endsWith(e.sep)||(t=t+e.sep),r.startsWith(t)?r.slice(t.length):null)};Ae.contains=(e,t)=>PX(Ae,e,t);Y.contains=(e,t)=>PX(Y,e,t);e6e=/^([a-zA-Z]:.*)$/,t6e=/^\/\/(\.\/)?(.*)$/,r6e=/^\/([a-zA-Z]:.*)$/,n6e=/^\/unc\/(\.dot\/)?(.*)$/;mU=process.platform==="win32"?s6e:e=>e,xX=process.platform==="win32"?i6e:e=>e;Ae.fromPortablePath=xX;Ae.toPortablePath=mU});async function sx(e,t){let r="0123456789abcdef";await e.mkdirPromise(t.indexPath,{recursive:!0});let s=[];for(let a of r)for(let n of r)s.push(e.mkdirPromise(e.pathUtils.join(t.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(s),t.indexPath}async function kX(e,t,r,s,a){let n=e.pathUtils.normalize(t),c=r.pathUtils.normalize(s),f=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:m0,mtime:m0}:await r.lstatPromise(c);await e.mkdirpPromise(e.pathUtils.dirname(t),{utimes:[h,E]}),await yU(f,p,e,n,r,c,{...a,didParentExist:!0});for(let C of f)await C();await Promise.all(p.map(C=>C()))}async function yU(e,t,r,s,a,n,c){let f=c.didParentExist?await QX(r,s):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=c.stableTime?{atime:m0,mtime:m0}:p,C;switch(!0){case p.isDirectory():C=await a6e(e,t,r,s,f,a,n,p,c);break;case p.isFile():C=await u6e(e,t,r,s,f,a,n,p,c);break;case p.isSymbolicLink():C=await f6e(e,t,r,s,f,a,n,p,c);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(c.linkStrategy?.type!=="HardlinkFromIndex"||!p.isFile())&&((C||f?.mtime?.getTime()!==E.getTime()||f?.atime?.getTime()!==h.getTime())&&(t.push(()=>r.lutimesPromise(s,h,E)),C=!0),(f===null||(f.mode&511)!==(p.mode&511))&&(t.push(()=>r.chmodPromise(s,p.mode&511)),C=!0)),C}async function QX(e,t){try{return await e.lstatPromise(t)}catch{return null}}async function a6e(e,t,r,s,a,n,c,f,p){if(a!==null&&!a.isDirectory())if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;let h=!1;a===null&&(e.push(async()=>{try{await r.mkdirPromise(s,{mode:f.mode})}catch(S){if(S.code!=="EEXIST")throw S}}),h=!0);let E=await n.readdirPromise(c),C=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let S of E.sort())await yU(e,t,r,r.pathUtils.join(s,S),n,n.pathUtils.join(c,S),C)&&(h=!0);else(await Promise.all(E.map(async x=>{await yU(e,t,r,r.pathUtils.join(s,x),n,n.pathUtils.join(c,x),C)}))).some(x=>x)&&(h=!0);return h}async function l6e(e,t,r,s,a,n,c,f,p,h){let E=await n.checksumFilePromise(c,{algorithm:"sha1"}),C=420,S=f.mode&511,x=`${E}${S!==C?S.toString(8):""}`,I=r.pathUtils.join(h.indexPath,E.slice(0,2),`${x}.dat`),R;(le=>(le[le.Lock=0]="Lock",le[le.Rename=1]="Rename"))(R||={});let N=1,U=await QX(r,I);if(a){let ie=U&&a.dev===U.dev&&a.ino===U.ino,fe=U?.mtimeMs!==o6e;if(ie&&fe&&h.autoRepair&&(N=0,U=null),!ie)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1}let K=!U&&N===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,$=!1;return e.push(async()=>{if(!U&&(N===0&&await r.lockPromise(I,async()=>{let ie=await n.readFilePromise(c);await r.writeFilePromise(I,ie)}),N===1&&K)){let ie=await n.readFilePromise(c);await r.writeFilePromise(K,ie);try{await r.linkPromise(K,I)}catch(fe){if(fe.code==="EEXIST")$=!0,await r.unlinkPromise(K);else throw fe}}a||await r.linkPromise(I,s)}),t.push(async()=>{U||(await r.lutimesPromise(I,m0,m0),S!==C&&await r.chmodPromise(I,S)),K&&!$&&await r.unlinkPromise(K)}),!1}async function c6e(e,t,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;return e.push(async()=>{let h=await n.readFilePromise(c);await r.writeFilePromise(s,h)}),!0}async function u6e(e,t,r,s,a,n,c,f,p){return p.linkStrategy?.type==="HardlinkFromIndex"?l6e(e,t,r,s,a,n,c,f,p,p.linkStrategy):c6e(e,t,r,s,a,n,c,f,p)}async function f6e(e,t,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;return e.push(async()=>{await r.symlinkPromise(ix(r.pathUtils,await n.readlinkPromise(c)),s)}),!0}var m0,o6e,EU=Ze(()=>{cl();m0=new Date(456789e3*1e3),o6e=m0.getTime()});function ox(e,t,r,s){let a=()=>{let n=r.shift();if(typeof n>"u")return null;let c=e.pathUtils.join(t,n);return Object.assign(e.statSync(c),{name:n,path:void 0})};return new N2(t,a,s)}var N2,TX=Ze(()=>{rx();N2=class{constructor(t,r,s={}){this.path=t;this.nextDirent=r;this.opts=s;this.closed=!1}throwIfClosed(){if(this.closed)throw fU()}async*[Symbol.asyncIterator](){try{let t;for(;(t=await this.read())!==null;)yield t}finally{await this.close()}}read(t){let r=this.readSync();return typeof t<"u"?t(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(t){return this.closeSync(),typeof t<"u"?t(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function RX(e,t){if(e!==t)throw new Error(`Invalid StatWatcher status: expected '${t}', got '${e}'`)}var FX,ax,NX=Ze(()=>{FX=Ce("events");gU();ax=class e extends FX.EventEmitter{constructor(r,s,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=s,this.bigint=a,this.lastStats=this.stat()}static create(r,s,a){let n=new e(r,s,a);return n.start(),n}start(){RX(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){RX(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let r=this.bigint?new uE:new cE;return nx(r)}}makeInterval(r){let s=setInterval(()=>{let a=this.stat(),n=this.lastStats;dU(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?s:s.unref()}registerChangeListener(r,s){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(s))}unregisterChangeListener(r){this.removeListener("change",r);let s=this.changeListeners.get(r);typeof s<"u"&&clearInterval(s),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function fE(e,t,r,s){let a,n,c,f;switch(typeof r){case"function":a=!1,n=!0,c=5007,f=r;break;default:({bigint:a=!1,persistent:n=!0,interval:c=5007}=r),f=s;break}let p=lx.get(e);typeof p>"u"&&lx.set(e,p=new Map);let h=p.get(t);return typeof h>"u"&&(h=ax.create(e,t,{bigint:a}),p.set(t,h)),h.registerChangeListener(f,{persistent:n,interval:c}),h}function y0(e,t,r){let s=lx.get(e);if(typeof s>"u")return;let a=s.get(t);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),s.delete(t)))}function E0(e){let t=lx.get(e);if(!(typeof t>"u"))for(let r of t.keys())y0(e,r)}var lx,IU=Ze(()=>{NX();lx=new WeakMap});function A6e(e){let t=e.match(/\r?\n/g);if(t===null)return LX.EOL;let r=t.filter(a=>a===`\r +`).length,s=t.length-r;return r>s?`\r +`:` +`}function I0(e,t){return t.replace(/\r?\n/g,A6e(e))}var OX,LX,Ip,jf,C0=Ze(()=>{OX=Ce("crypto"),LX=Ce("os");EU();cl();Ip=class{constructor(t){this.pathUtils=t}async*genTraversePromise(t,{stableSort:r=!1}={}){let s=[t];for(;s.length>0;){let a=s.shift();if((await this.lstatPromise(a)).isDirectory()){let c=await this.readdirPromise(a);if(r)for(let f of c.sort())s.push(this.pathUtils.join(a,f));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(t,{algorithm:r="sha512"}={}){let s=await this.openPromise(t,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,OX.createHash)(r),f=0;for(;(f=await this.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await this.closePromise(s)}}async removePromise(t,{recursive:r=!0,maxRetries:s=5}={}){let a;try{a=await this.lstatPromise(t)}catch(n){if(n.code==="ENOENT")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(t);await Promise.all(n.map(c=>this.removePromise(this.pathUtils.resolve(t,c))))}for(let n=0;n<=s;n++)try{await this.rmdirPromise(t);break}catch(c){if(c.code!=="EBUSY"&&c.code!=="ENOTEMPTY")throw c;nsetTimeout(f,n*100))}}else await this.unlinkPromise(t)}removeSync(t,{recursive:r=!0}={}){let s;try{s=this.lstatSync(t)}catch(a){if(a.code==="ENOENT")return;throw a}if(s.isDirectory()){if(r)for(let a of this.readdirSync(t))this.removeSync(this.pathUtils.resolve(t,a));this.rmdirSync(t)}else this.unlinkSync(t)}async mkdirpPromise(t,{chmod:r,utimes:s}={}){if(t=this.resolve(t),t===this.pathUtils.dirname(t))return;let a=t.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{await this.mkdirPromise(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&await this.chmodPromise(f,r),s!=null)await this.utimesPromise(f,s[0],s[1]);else{let p=await this.statPromise(this.pathUtils.dirname(f));await this.utimesPromise(f,p.atime,p.mtime)}}}return n}mkdirpSync(t,{chmod:r,utimes:s}={}){if(t=this.resolve(t),t===this.pathUtils.dirname(t))return;let a=t.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{this.mkdirSync(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&this.chmodSync(f,r),s!=null)this.utimesSync(f,s[0],s[1]);else{let p=this.statSync(this.pathUtils.dirname(f));this.utimesSync(f,p.atime,p.mtime)}}}return n}async copyPromise(t,r,{baseFs:s=this,overwrite:a=!0,stableSort:n=!1,stableTime:c=!1,linkStrategy:f=null}={}){return await kX(this,t,s,r,{overwrite:a,stableSort:n,stableTime:c,linkStrategy:f})}copySync(t,r,{baseFs:s=this,overwrite:a=!0}={}){let n=s.lstatSync(r),c=this.existsSync(t);if(n.isDirectory()){this.mkdirpSync(t);let p=s.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(t,h),s.pathUtils.join(r,h),{baseFs:s,overwrite:a})}else if(n.isFile()){if(!c||a){c&&this.removeSync(t);let p=s.readFileSync(r);this.writeFileSync(t,p)}}else if(n.isSymbolicLink()){if(!c||a){c&&this.removeSync(t);let p=s.readlinkSync(r);this.symlinkSync(ix(this.pathUtils,p),t)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let f=n.mode&511;this.chmodSync(t,f)}async changeFilePromise(t,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(t,r,s):this.changeFileTextPromise(t,r,s)}async changeFileBufferPromise(t,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(t)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(t,r,{mode:s})}async changeFileTextPromise(t,r,{automaticNewlines:s,mode:a}={}){let n="";try{n=await this.readFilePromise(t,"utf8")}catch{}let c=s?I0(n,r):r;n!==c&&await this.writeFilePromise(t,c,{mode:a})}changeFileSync(t,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(t,r,s):this.changeFileTextSync(t,r,s)}changeFileBufferSync(t,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(t)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(t,r,{mode:s})}changeFileTextSync(t,r,{automaticNewlines:s=!1,mode:a}={}){let n="";try{n=this.readFileSync(t,"utf8")}catch{}let c=s?I0(n,r):r;n!==c&&this.writeFileSync(t,c,{mode:a})}async movePromise(t,r){try{await this.renamePromise(t,r)}catch(s){if(s.code==="EXDEV")await this.copyPromise(r,t),await this.removePromise(t);else throw s}}moveSync(t,r){try{this.renameSync(t,r)}catch(s){if(s.code==="EXDEV")this.copySync(r,t),this.removeSync(t);else throw s}}async lockPromise(t,r){let s=`${t}.flock`,a=1e3/60,n=Date.now(),c=null,f=async()=>{let p;try{[p]=await this.readJsonPromise(s)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;c===null;)try{c=await this.openPromise(s,"wx")}catch(p){if(p.code==="EEXIST"){if(!await f())try{await this.unlinkPromise(s);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${s})`)}else throw p}await this.writePromise(c,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(c),await this.unlinkPromise(s)}catch{}}}async readJsonPromise(t){let r=await this.readFilePromise(t,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${t})`,s}}readJsonSync(t){let r=this.readFileSync(t,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${t})`,s}}async writeJsonPromise(t,r,{compact:s=!1}={}){let a=s?0:2;return await this.writeFilePromise(t,`${JSON.stringify(r,null,a)} +`)}writeJsonSync(t,r,{compact:s=!1}={}){let a=s?0:2;return this.writeFileSync(t,`${JSON.stringify(r,null,a)} +`)}async preserveTimePromise(t,r){let s=await this.lstatPromise(t),a=await r();typeof a<"u"&&(t=a),await this.lutimesPromise(t,s.atime,s.mtime)}async preserveTimeSync(t,r){let s=this.lstatSync(t),a=r();typeof a<"u"&&(t=a),this.lutimesSync(t,s.atime,s.mtime)}},jf=class extends Ip{constructor(){super(Y)}}});var Gs,Cp=Ze(()=>{C0();Gs=class extends Ip{getExtractHint(t){return this.baseFs.getExtractHint(t)}resolve(t){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(t)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(t,r,s){return this.baseFs.openPromise(this.mapToBase(t),r,s)}openSync(t,r,s){return this.baseFs.openSync(this.mapToBase(t),r,s)}async opendirPromise(t,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(t),r),{path:t})}opendirSync(t,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(t),r),{path:t})}async readPromise(t,r,s,a,n){return await this.baseFs.readPromise(t,r,s,a,n)}readSync(t,r,s,a,n){return this.baseFs.readSync(t,r,s,a,n)}async writePromise(t,r,s,a,n){return typeof r=="string"?await this.baseFs.writePromise(t,r,s):await this.baseFs.writePromise(t,r,s,a,n)}writeSync(t,r,s,a,n){return typeof r=="string"?this.baseFs.writeSync(t,r,s):this.baseFs.writeSync(t,r,s,a,n)}async closePromise(t){return this.baseFs.closePromise(t)}closeSync(t){this.baseFs.closeSync(t)}createReadStream(t,r){return this.baseFs.createReadStream(t!==null?this.mapToBase(t):t,r)}createWriteStream(t,r){return this.baseFs.createWriteStream(t!==null?this.mapToBase(t):t,r)}async realpathPromise(t){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(t)))}realpathSync(t){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(t)))}async existsPromise(t){return this.baseFs.existsPromise(this.mapToBase(t))}existsSync(t){return this.baseFs.existsSync(this.mapToBase(t))}accessSync(t,r){return this.baseFs.accessSync(this.mapToBase(t),r)}async accessPromise(t,r){return this.baseFs.accessPromise(this.mapToBase(t),r)}async statPromise(t,r){return this.baseFs.statPromise(this.mapToBase(t),r)}statSync(t,r){return this.baseFs.statSync(this.mapToBase(t),r)}async fstatPromise(t,r){return this.baseFs.fstatPromise(t,r)}fstatSync(t,r){return this.baseFs.fstatSync(t,r)}lstatPromise(t,r){return this.baseFs.lstatPromise(this.mapToBase(t),r)}lstatSync(t,r){return this.baseFs.lstatSync(this.mapToBase(t),r)}async fchmodPromise(t,r){return this.baseFs.fchmodPromise(t,r)}fchmodSync(t,r){return this.baseFs.fchmodSync(t,r)}async chmodPromise(t,r){return this.baseFs.chmodPromise(this.mapToBase(t),r)}chmodSync(t,r){return this.baseFs.chmodSync(this.mapToBase(t),r)}async fchownPromise(t,r,s){return this.baseFs.fchownPromise(t,r,s)}fchownSync(t,r,s){return this.baseFs.fchownSync(t,r,s)}async chownPromise(t,r,s){return this.baseFs.chownPromise(this.mapToBase(t),r,s)}chownSync(t,r,s){return this.baseFs.chownSync(this.mapToBase(t),r,s)}async renamePromise(t,r){return this.baseFs.renamePromise(this.mapToBase(t),this.mapToBase(r))}renameSync(t,r){return this.baseFs.renameSync(this.mapToBase(t),this.mapToBase(r))}async copyFilePromise(t,r,s=0){return this.baseFs.copyFilePromise(this.mapToBase(t),this.mapToBase(r),s)}copyFileSync(t,r,s=0){return this.baseFs.copyFileSync(this.mapToBase(t),this.mapToBase(r),s)}async appendFilePromise(t,r,s){return this.baseFs.appendFilePromise(this.fsMapToBase(t),r,s)}appendFileSync(t,r,s){return this.baseFs.appendFileSync(this.fsMapToBase(t),r,s)}async writeFilePromise(t,r,s){return this.baseFs.writeFilePromise(this.fsMapToBase(t),r,s)}writeFileSync(t,r,s){return this.baseFs.writeFileSync(this.fsMapToBase(t),r,s)}async unlinkPromise(t){return this.baseFs.unlinkPromise(this.mapToBase(t))}unlinkSync(t){return this.baseFs.unlinkSync(this.mapToBase(t))}async utimesPromise(t,r,s){return this.baseFs.utimesPromise(this.mapToBase(t),r,s)}utimesSync(t,r,s){return this.baseFs.utimesSync(this.mapToBase(t),r,s)}async lutimesPromise(t,r,s){return this.baseFs.lutimesPromise(this.mapToBase(t),r,s)}lutimesSync(t,r,s){return this.baseFs.lutimesSync(this.mapToBase(t),r,s)}async mkdirPromise(t,r){return this.baseFs.mkdirPromise(this.mapToBase(t),r)}mkdirSync(t,r){return this.baseFs.mkdirSync(this.mapToBase(t),r)}async rmdirPromise(t,r){return this.baseFs.rmdirPromise(this.mapToBase(t),r)}rmdirSync(t,r){return this.baseFs.rmdirSync(this.mapToBase(t),r)}async rmPromise(t,r){return this.baseFs.rmPromise(this.mapToBase(t),r)}rmSync(t,r){return this.baseFs.rmSync(this.mapToBase(t),r)}async linkPromise(t,r){return this.baseFs.linkPromise(this.mapToBase(t),this.mapToBase(r))}linkSync(t,r){return this.baseFs.linkSync(this.mapToBase(t),this.mapToBase(r))}async symlinkPromise(t,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(t))return this.baseFs.symlinkPromise(this.mapToBase(t),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),t)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(c,a,s)}symlinkSync(t,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(t))return this.baseFs.symlinkSync(this.mapToBase(t),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),t)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(c,a,s)}async readFilePromise(t,r){return this.baseFs.readFilePromise(this.fsMapToBase(t),r)}readFileSync(t,r){return this.baseFs.readFileSync(this.fsMapToBase(t),r)}readdirPromise(t,r){return this.baseFs.readdirPromise(this.mapToBase(t),r)}readdirSync(t,r){return this.baseFs.readdirSync(this.mapToBase(t),r)}async readlinkPromise(t){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(t)))}readlinkSync(t){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(t)))}async truncatePromise(t,r){return this.baseFs.truncatePromise(this.mapToBase(t),r)}truncateSync(t,r){return this.baseFs.truncateSync(this.mapToBase(t),r)}async ftruncatePromise(t,r){return this.baseFs.ftruncatePromise(t,r)}ftruncateSync(t,r){return this.baseFs.ftruncateSync(t,r)}watch(t,r,s){return this.baseFs.watch(this.mapToBase(t),r,s)}watchFile(t,r,s){return this.baseFs.watchFile(this.mapToBase(t),r,s)}unwatchFile(t,r){return this.baseFs.unwatchFile(this.mapToBase(t),r)}fsMapToBase(t){return typeof t=="number"?t:this.mapToBase(t)}}});var Gf,MX=Ze(()=>{Cp();Gf=class extends Gs{constructor(t,{baseFs:r,pathUtils:s}){super(s),this.target=t,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(t){return t}mapToBase(t){return t}}});function UX(e){let t=e;return typeof e.path=="string"&&(t.path=Ae.toPortablePath(e.path)),t}var _X,Kn,w0=Ze(()=>{_X=et(Ce("fs"));C0();cl();Kn=class extends jf{constructor(t=_X.default){super(),this.realFs=t}getExtractHint(){return!1}getRealPath(){return wt.root}resolve(t){return Y.resolve(t)}async openPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.open(Ae.fromPortablePath(t),r,s,this.makeCallback(a,n))})}openSync(t,r,s){return this.realFs.openSync(Ae.fromPortablePath(t),r,s)}async opendirPromise(t,r){return await new Promise((s,a)=>{typeof r<"u"?this.realFs.opendir(Ae.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.opendir(Ae.fromPortablePath(t),this.makeCallback(s,a))}).then(s=>{let a=s;return Object.defineProperty(a,"path",{value:t,configurable:!0,writable:!0}),a})}opendirSync(t,r){let a=typeof r<"u"?this.realFs.opendirSync(Ae.fromPortablePath(t),r):this.realFs.opendirSync(Ae.fromPortablePath(t));return Object.defineProperty(a,"path",{value:t,configurable:!0,writable:!0}),a}async readPromise(t,r,s=0,a=0,n=-1){return await new Promise((c,f)=>{this.realFs.read(t,r,s,a,n,(p,h)=>{p?f(p):c(h)})})}readSync(t,r,s,a,n){return this.realFs.readSync(t,r,s,a,n)}async writePromise(t,r,s,a,n){return await new Promise((c,f)=>typeof r=="string"?this.realFs.write(t,r,s,this.makeCallback(c,f)):this.realFs.write(t,r,s,a,n,this.makeCallback(c,f)))}writeSync(t,r,s,a,n){return typeof r=="string"?this.realFs.writeSync(t,r,s):this.realFs.writeSync(t,r,s,a,n)}async closePromise(t){await new Promise((r,s)=>{this.realFs.close(t,this.makeCallback(r,s))})}closeSync(t){this.realFs.closeSync(t)}createReadStream(t,r){let s=t!==null?Ae.fromPortablePath(t):t;return this.realFs.createReadStream(s,r)}createWriteStream(t,r){let s=t!==null?Ae.fromPortablePath(t):t;return this.realFs.createWriteStream(s,r)}async realpathPromise(t){return await new Promise((r,s)=>{this.realFs.realpath(Ae.fromPortablePath(t),{},this.makeCallback(r,s))}).then(r=>Ae.toPortablePath(r))}realpathSync(t){return Ae.toPortablePath(this.realFs.realpathSync(Ae.fromPortablePath(t),{}))}async existsPromise(t){return await new Promise(r=>{this.realFs.exists(Ae.fromPortablePath(t),r)})}accessSync(t,r){return this.realFs.accessSync(Ae.fromPortablePath(t),r)}async accessPromise(t,r){return await new Promise((s,a)=>{this.realFs.access(Ae.fromPortablePath(t),r,this.makeCallback(s,a))})}existsSync(t){return this.realFs.existsSync(Ae.fromPortablePath(t))}async statPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.stat(Ae.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.stat(Ae.fromPortablePath(t),this.makeCallback(s,a))})}statSync(t,r){return r?this.realFs.statSync(Ae.fromPortablePath(t),r):this.realFs.statSync(Ae.fromPortablePath(t))}async fstatPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.fstat(t,r,this.makeCallback(s,a)):this.realFs.fstat(t,this.makeCallback(s,a))})}fstatSync(t,r){return r?this.realFs.fstatSync(t,r):this.realFs.fstatSync(t)}async lstatPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.lstat(Ae.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.lstat(Ae.fromPortablePath(t),this.makeCallback(s,a))})}lstatSync(t,r){return r?this.realFs.lstatSync(Ae.fromPortablePath(t),r):this.realFs.lstatSync(Ae.fromPortablePath(t))}async fchmodPromise(t,r){return await new Promise((s,a)=>{this.realFs.fchmod(t,r,this.makeCallback(s,a))})}fchmodSync(t,r){return this.realFs.fchmodSync(t,r)}async chmodPromise(t,r){return await new Promise((s,a)=>{this.realFs.chmod(Ae.fromPortablePath(t),r,this.makeCallback(s,a))})}chmodSync(t,r){return this.realFs.chmodSync(Ae.fromPortablePath(t),r)}async fchownPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.fchown(t,r,s,this.makeCallback(a,n))})}fchownSync(t,r,s){return this.realFs.fchownSync(t,r,s)}async chownPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.chown(Ae.fromPortablePath(t),r,s,this.makeCallback(a,n))})}chownSync(t,r,s){return this.realFs.chownSync(Ae.fromPortablePath(t),r,s)}async renamePromise(t,r){return await new Promise((s,a)=>{this.realFs.rename(Ae.fromPortablePath(t),Ae.fromPortablePath(r),this.makeCallback(s,a))})}renameSync(t,r){return this.realFs.renameSync(Ae.fromPortablePath(t),Ae.fromPortablePath(r))}async copyFilePromise(t,r,s=0){return await new Promise((a,n)=>{this.realFs.copyFile(Ae.fromPortablePath(t),Ae.fromPortablePath(r),s,this.makeCallback(a,n))})}copyFileSync(t,r,s=0){return this.realFs.copyFileSync(Ae.fromPortablePath(t),Ae.fromPortablePath(r),s)}async appendFilePromise(t,r,s){return await new Promise((a,n)=>{let c=typeof t=="string"?Ae.fromPortablePath(t):t;s?this.realFs.appendFile(c,r,s,this.makeCallback(a,n)):this.realFs.appendFile(c,r,this.makeCallback(a,n))})}appendFileSync(t,r,s){let a=typeof t=="string"?Ae.fromPortablePath(t):t;s?this.realFs.appendFileSync(a,r,s):this.realFs.appendFileSync(a,r)}async writeFilePromise(t,r,s){return await new Promise((a,n)=>{let c=typeof t=="string"?Ae.fromPortablePath(t):t;s?this.realFs.writeFile(c,r,s,this.makeCallback(a,n)):this.realFs.writeFile(c,r,this.makeCallback(a,n))})}writeFileSync(t,r,s){let a=typeof t=="string"?Ae.fromPortablePath(t):t;s?this.realFs.writeFileSync(a,r,s):this.realFs.writeFileSync(a,r)}async unlinkPromise(t){return await new Promise((r,s)=>{this.realFs.unlink(Ae.fromPortablePath(t),this.makeCallback(r,s))})}unlinkSync(t){return this.realFs.unlinkSync(Ae.fromPortablePath(t))}async utimesPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.utimes(Ae.fromPortablePath(t),r,s,this.makeCallback(a,n))})}utimesSync(t,r,s){this.realFs.utimesSync(Ae.fromPortablePath(t),r,s)}async lutimesPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.lutimes(Ae.fromPortablePath(t),r,s,this.makeCallback(a,n))})}lutimesSync(t,r,s){this.realFs.lutimesSync(Ae.fromPortablePath(t),r,s)}async mkdirPromise(t,r){return await new Promise((s,a)=>{this.realFs.mkdir(Ae.fromPortablePath(t),r,this.makeCallback(s,a))})}mkdirSync(t,r){return this.realFs.mkdirSync(Ae.fromPortablePath(t),r)}async rmdirPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.rmdir(Ae.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.rmdir(Ae.fromPortablePath(t),this.makeCallback(s,a))})}rmdirSync(t,r){return this.realFs.rmdirSync(Ae.fromPortablePath(t),r)}async rmPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.rm(Ae.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.rm(Ae.fromPortablePath(t),this.makeCallback(s,a))})}rmSync(t,r){return this.realFs.rmSync(Ae.fromPortablePath(t),r)}async linkPromise(t,r){return await new Promise((s,a)=>{this.realFs.link(Ae.fromPortablePath(t),Ae.fromPortablePath(r),this.makeCallback(s,a))})}linkSync(t,r){return this.realFs.linkSync(Ae.fromPortablePath(t),Ae.fromPortablePath(r))}async symlinkPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.symlink(Ae.fromPortablePath(t.replace(/\/+$/,"")),Ae.fromPortablePath(r),s,this.makeCallback(a,n))})}symlinkSync(t,r,s){return this.realFs.symlinkSync(Ae.fromPortablePath(t.replace(/\/+$/,"")),Ae.fromPortablePath(r),s)}async readFilePromise(t,r){return await new Promise((s,a)=>{let n=typeof t=="string"?Ae.fromPortablePath(t):t;this.realFs.readFile(n,r,this.makeCallback(s,a))})}readFileSync(t,r){let s=typeof t=="string"?Ae.fromPortablePath(t):t;return this.realFs.readFileSync(s,r)}async readdirPromise(t,r){return await new Promise((s,a)=>{r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdir(Ae.fromPortablePath(t),r,this.makeCallback(n=>s(n.map(UX)),a)):this.realFs.readdir(Ae.fromPortablePath(t),r,this.makeCallback(n=>s(n.map(Ae.toPortablePath)),a)):this.realFs.readdir(Ae.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.readdir(Ae.fromPortablePath(t),this.makeCallback(s,a))})}readdirSync(t,r){return r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdirSync(Ae.fromPortablePath(t),r).map(UX):this.realFs.readdirSync(Ae.fromPortablePath(t),r).map(Ae.toPortablePath):this.realFs.readdirSync(Ae.fromPortablePath(t),r):this.realFs.readdirSync(Ae.fromPortablePath(t))}async readlinkPromise(t){return await new Promise((r,s)=>{this.realFs.readlink(Ae.fromPortablePath(t),this.makeCallback(r,s))}).then(r=>Ae.toPortablePath(r))}readlinkSync(t){return Ae.toPortablePath(this.realFs.readlinkSync(Ae.fromPortablePath(t)))}async truncatePromise(t,r){return await new Promise((s,a)=>{this.realFs.truncate(Ae.fromPortablePath(t),r,this.makeCallback(s,a))})}truncateSync(t,r){return this.realFs.truncateSync(Ae.fromPortablePath(t),r)}async ftruncatePromise(t,r){return await new Promise((s,a)=>{this.realFs.ftruncate(t,r,this.makeCallback(s,a))})}ftruncateSync(t,r){return this.realFs.ftruncateSync(t,r)}watch(t,r,s){return this.realFs.watch(Ae.fromPortablePath(t),r,s)}watchFile(t,r,s){return this.realFs.watchFile(Ae.fromPortablePath(t),r,s)}unwatchFile(t,r){return this.realFs.unwatchFile(Ae.fromPortablePath(t),r)}makeCallback(t,r){return(s,a)=>{s?r(s):t(a)}}}});var Pn,HX=Ze(()=>{w0();Cp();cl();Pn=class extends Gs{constructor(t,{baseFs:r=new Kn}={}){super(Y),this.target=this.pathUtils.normalize(t),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(t){return this.pathUtils.isAbsolute(t)?Y.normalize(t):this.baseFs.resolve(Y.join(this.target,t))}mapFromBase(t){return t}mapToBase(t){return this.pathUtils.isAbsolute(t)?t:this.pathUtils.join(this.target,t)}}});var jX,qf,GX=Ze(()=>{w0();Cp();cl();jX=wt.root,qf=class extends Gs{constructor(t,{baseFs:r=new Kn}={}){super(Y),this.target=this.pathUtils.resolve(wt.root,t),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(wt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(t){let r=this.pathUtils.normalize(t);if(this.pathUtils.isAbsolute(t))return this.pathUtils.resolve(this.target,this.pathUtils.relative(jX,t));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${t}) would escape the jail`);return this.pathUtils.resolve(this.target,t)}mapFromBase(t){return this.pathUtils.resolve(jX,this.pathUtils.relative(this.target,t))}}});var AE,qX=Ze(()=>{Cp();AE=class extends Gs{constructor(r,s){super(s);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var B0,ul,td,YX=Ze(()=>{B0=Ce("fs");C0();w0();IU();rx();cl();ul=4278190080,td=class extends jf{constructor({baseFs:r=new Kn,filter:s=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:c=!0,maxAge:f=5e3,typeCheck:p=B0.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:C}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error("The magic byte must be set to a round value between 1 and 127 included");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=c?new Map:null,this.factoryPromise=E,this.factorySync=C,this.filter=s,this.getMountPoint=h,this.magic=a<<24,this.maxAge=f,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(E0(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(E0(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,s){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,s]),a}async openPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,s,a),async(n,{subPath:c})=>this.remapFd(n,await n.openPromise(c,s,a)))}openSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,s,a),(n,{subPath:c})=>this.remapFd(n,n.openSync(c,s,a)))}async opendirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,s),async(a,{subPath:n})=>await a.opendirPromise(n,s),{requireSubpath:!1})}opendirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,s),(a,{subPath:n})=>a.opendirSync(n,s),{requireSubpath:!1})}async readPromise(r,s,a,n,c){if((r&ul)!==this.magic)return await this.baseFs.readPromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Yo("read");let[p,h]=f;return await p.readPromise(h,s,a,n,c)}readSync(r,s,a,n,c){if((r&ul)!==this.magic)return this.baseFs.readSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Yo("readSync");let[p,h]=f;return p.readSync(h,s,a,n,c)}async writePromise(r,s,a,n,c){if((r&ul)!==this.magic)return typeof s=="string"?await this.baseFs.writePromise(r,s,a):await this.baseFs.writePromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Yo("write");let[p,h]=f;return typeof s=="string"?await p.writePromise(h,s,a):await p.writePromise(h,s,a,n,c)}writeSync(r,s,a,n,c){if((r&ul)!==this.magic)return typeof s=="string"?this.baseFs.writeSync(r,s,a):this.baseFs.writeSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Yo("writeSync");let[p,h]=f;return typeof s=="string"?p.writeSync(h,s,a):p.writeSync(h,s,a,n,c)}async closePromise(r){if((r&ul)!==this.magic)return await this.baseFs.closePromise(r);let s=this.fdMap.get(r);if(typeof s>"u")throw Yo("close");this.fdMap.delete(r);let[a,n]=s;return await a.closePromise(n)}closeSync(r){if((r&ul)!==this.magic)return this.baseFs.closeSync(r);let s=this.fdMap.get(r);if(typeof s>"u")throw Yo("closeSync");this.fdMap.delete(r);let[a,n]=s;return a.closeSync(n)}createReadStream(r,s){return r===null?this.baseFs.createReadStream(r,s):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,s),(a,{archivePath:n,subPath:c})=>{let f=a.createReadStream(c,s);return f.path=Ae.fromPortablePath(this.pathUtils.join(n,c)),f})}createWriteStream(r,s){return r===null?this.baseFs.createWriteStream(r,s):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,s),(a,{subPath:n})=>a.createWriteStream(n,s))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=await this.baseFs.realpathPromise(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(wt.root,await s.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=this.baseFs.realpathSync(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(wt.root,s.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(s,{subPath:a})=>await s.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(s,{subPath:a})=>s.existsSync(a))}async accessPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,s),async(a,{subPath:n})=>await a.accessPromise(n,s))}accessSync(r,s){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,s),(a,{subPath:n})=>a.accessSync(n,s))}async statPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,s),async(a,{subPath:n})=>await a.statPromise(n,s))}statSync(r,s){return this.makeCallSync(r,()=>this.baseFs.statSync(r,s),(a,{subPath:n})=>a.statSync(n,s))}async fstatPromise(r,s){if((r&ul)!==this.magic)return this.baseFs.fstatPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Yo("fstat");let[n,c]=a;return n.fstatPromise(c,s)}fstatSync(r,s){if((r&ul)!==this.magic)return this.baseFs.fstatSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Yo("fstatSync");let[n,c]=a;return n.fstatSync(c,s)}async lstatPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,s),async(a,{subPath:n})=>await a.lstatPromise(n,s))}lstatSync(r,s){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,s),(a,{subPath:n})=>a.lstatSync(n,s))}async fchmodPromise(r,s){if((r&ul)!==this.magic)return this.baseFs.fchmodPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Yo("fchmod");let[n,c]=a;return n.fchmodPromise(c,s)}fchmodSync(r,s){if((r&ul)!==this.magic)return this.baseFs.fchmodSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Yo("fchmodSync");let[n,c]=a;return n.fchmodSync(c,s)}async chmodPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,s),async(a,{subPath:n})=>await a.chmodPromise(n,s))}chmodSync(r,s){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,s),(a,{subPath:n})=>a.chmodSync(n,s))}async fchownPromise(r,s,a){if((r&ul)!==this.magic)return this.baseFs.fchownPromise(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Yo("fchown");let[c,f]=n;return c.fchownPromise(f,s,a)}fchownSync(r,s,a){if((r&ul)!==this.magic)return this.baseFs.fchownSync(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Yo("fchownSync");let[c,f]=n;return c.fchownSync(f,s,a)}async chownPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,s,a),async(n,{subPath:c})=>await n.chownPromise(c,s,a))}chownSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,s,a),(n,{subPath:c})=>n.chownSync(c,s,a))}async renamePromise(r,s){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.renamePromise(r,s),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(a,{subPath:n})=>await this.makeCallPromise(s,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await a.renamePromise(n,f)}))}renameSync(r,s){return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.renameSync(r,s),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(a,{subPath:n})=>this.makeCallSync(s,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return a.renameSync(n,f)}))}async copyFilePromise(r,s,a=0){let n=async(c,f,p,h)=>{if(a&B0.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&B0.constants.COPYFILE_EXCL&&await this.existsPromise(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=await c.readFilePromise(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.copyFilePromise(r,s,a),async(c,{subPath:f})=>await n(this.baseFs,r,c,f)),async(c,{subPath:f})=>await this.makeCallPromise(s,async()=>await n(c,f,this.baseFs,s),async(p,{subPath:h})=>c!==p?await n(c,f,p,h):await c.copyFilePromise(f,h,a)))}copyFileSync(r,s,a=0){let n=(c,f,p,h)=>{if(a&B0.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&B0.constants.COPYFILE_EXCL&&this.existsSync(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=c.readFileSync(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.copyFileSync(r,s,a),(c,{subPath:f})=>n(this.baseFs,r,c,f)),(c,{subPath:f})=>this.makeCallSync(s,()=>n(c,f,this.baseFs,s),(p,{subPath:h})=>c!==p?n(c,f,p,h):c.copyFileSync(f,h,a)))}async appendFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,s,a),async(n,{subPath:c})=>await n.appendFilePromise(c,s,a))}appendFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,s,a),(n,{subPath:c})=>n.appendFileSync(c,s,a))}async writeFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,s,a),async(n,{subPath:c})=>await n.writeFilePromise(c,s,a))}writeFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,s,a),(n,{subPath:c})=>n.writeFileSync(c,s,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(s,{subPath:a})=>await s.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(s,{subPath:a})=>s.unlinkSync(a))}async utimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,s,a),async(n,{subPath:c})=>await n.utimesPromise(c,s,a))}utimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,s,a),(n,{subPath:c})=>n.utimesSync(c,s,a))}async lutimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,s,a),async(n,{subPath:c})=>await n.lutimesPromise(c,s,a))}lutimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,s,a),(n,{subPath:c})=>n.lutimesSync(c,s,a))}async mkdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,s),async(a,{subPath:n})=>await a.mkdirPromise(n,s))}mkdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,s),(a,{subPath:n})=>a.mkdirSync(n,s))}async rmdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,s),async(a,{subPath:n})=>await a.rmdirPromise(n,s))}rmdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,s),(a,{subPath:n})=>a.rmdirSync(n,s))}async rmPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmPromise(r,s),async(a,{subPath:n})=>await a.rmPromise(n,s))}rmSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmSync(r,s),(a,{subPath:n})=>a.rmSync(n,s))}async linkPromise(r,s){return await this.makeCallPromise(s,async()=>await this.baseFs.linkPromise(r,s),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,s){return this.makeCallSync(s,()=>this.baseFs.linkSync(r,s),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,s,a){return await this.makeCallPromise(s,async()=>await this.baseFs.symlinkPromise(r,s,a),async(n,{subPath:c})=>await n.symlinkPromise(r,c))}symlinkSync(r,s,a){return this.makeCallSync(s,()=>this.baseFs.symlinkSync(r,s,a),(n,{subPath:c})=>n.symlinkSync(r,c))}async readFilePromise(r,s){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,s),async(a,{subPath:n})=>await a.readFilePromise(n,s))}readFileSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,s),(a,{subPath:n})=>a.readFileSync(n,s))}async readdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,s),async(a,{subPath:n})=>await a.readdirPromise(n,s),{requireSubpath:!1})}readdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,s),(a,{subPath:n})=>a.readdirSync(n,s),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(s,{subPath:a})=>await s.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(s,{subPath:a})=>s.readlinkSync(a))}async truncatePromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,s),async(a,{subPath:n})=>await a.truncatePromise(n,s))}truncateSync(r,s){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,s),(a,{subPath:n})=>a.truncateSync(n,s))}async ftruncatePromise(r,s){if((r&ul)!==this.magic)return this.baseFs.ftruncatePromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Yo("ftruncate");let[n,c]=a;return n.ftruncatePromise(c,s)}ftruncateSync(r,s){if((r&ul)!==this.magic)return this.baseFs.ftruncateSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Yo("ftruncateSync");let[n,c]=a;return n.ftruncateSync(c,s)}watch(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,s,a),(n,{subPath:c})=>n.watch(c,s,a))}watchFile(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,s,a),()=>fE(this,r,s,a))}unwatchFile(r,s){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,s),()=>y0(this,r,s))}async makeCallPromise(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return await s();let c=this.resolve(r),f=this.findMount(c);return f?n&&f.subPath==="/"?await s():await this.getMountPromise(f.archivePath,async p=>await a(p,f)):await s()}makeCallSync(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return s();let c=this.resolve(r),f=this.findMount(c);return!f||n&&f.subPath==="/"?s():this.getMountSync(f.archivePath,p=>a(p,f))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let s="";for(;;){let a=r.substring(s.length),n=this.getMountPoint(a,s);if(!n)return null;if(s=this.pathUtils.join(s,n),!this.isMount.has(s)){if(this.notMount.has(s))continue;try{if(this.typeCheck!==null&&(this.baseFs.statSync(s).mode&B0.constants.S_IFMT)!==this.typeCheck){this.notMount.add(s);continue}}catch{return null}this.isMount.add(s)}return{archivePath:s,subPath:this.pathUtils.join(wt.root,r.substring(s.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let s=Date.now(),a=s+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[c,{childFs:f,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||f.hasOpenFileHandles?.())){if(s>=p){f.saveAndClose?.(),this.mountInstances.delete(c),n-=1;continue}else if(r===null||n<=0){a=p;break}f.saveAndClose?.(),this.mountInstances.delete(c),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-s).unref())}async getMountPromise(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await s(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await s(a)}finally{a.saveAndClose?.()}}}getMountSync(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,s(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return s(a)}finally{a.saveAndClose?.()}}}}});var er,cx,WX=Ze(()=>{C0();cl();er=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),cx=class e extends Ip{static{this.instance=new e}constructor(){super(Y)}getExtractHint(){throw er()}getRealPath(){throw er()}resolve(){throw er()}async openPromise(){throw er()}openSync(){throw er()}async opendirPromise(){throw er()}opendirSync(){throw er()}async readPromise(){throw er()}readSync(){throw er()}async writePromise(){throw er()}writeSync(){throw er()}async closePromise(){throw er()}closeSync(){throw er()}createWriteStream(){throw er()}createReadStream(){throw er()}async realpathPromise(){throw er()}realpathSync(){throw er()}async readdirPromise(){throw er()}readdirSync(){throw er()}async existsPromise(t){throw er()}existsSync(t){throw er()}async accessPromise(){throw er()}accessSync(){throw er()}async statPromise(){throw er()}statSync(){throw er()}async fstatPromise(t){throw er()}fstatSync(t){throw er()}async lstatPromise(t){throw er()}lstatSync(t){throw er()}async fchmodPromise(){throw er()}fchmodSync(){throw er()}async chmodPromise(){throw er()}chmodSync(){throw er()}async fchownPromise(){throw er()}fchownSync(){throw er()}async chownPromise(){throw er()}chownSync(){throw er()}async mkdirPromise(){throw er()}mkdirSync(){throw er()}async rmdirPromise(){throw er()}rmdirSync(){throw er()}async rmPromise(){throw er()}rmSync(){throw er()}async linkPromise(){throw er()}linkSync(){throw er()}async symlinkPromise(){throw er()}symlinkSync(){throw er()}async renamePromise(){throw er()}renameSync(){throw er()}async copyFilePromise(){throw er()}copyFileSync(){throw er()}async appendFilePromise(){throw er()}appendFileSync(){throw er()}async writeFilePromise(){throw er()}writeFileSync(){throw er()}async unlinkPromise(){throw er()}unlinkSync(){throw er()}async utimesPromise(){throw er()}utimesSync(){throw er()}async lutimesPromise(){throw er()}lutimesSync(){throw er()}async readFilePromise(){throw er()}readFileSync(){throw er()}async readlinkPromise(){throw er()}readlinkSync(){throw er()}async truncatePromise(){throw er()}truncateSync(){throw er()}async ftruncatePromise(t,r){throw er()}ftruncateSync(t,r){throw er()}watch(){throw er()}watchFile(){throw er()}unwatchFile(){throw er()}}});var rd,VX=Ze(()=>{Cp();cl();rd=class extends Gs{constructor(t){super(Ae),this.baseFs=t}mapFromBase(t){return Ae.fromPortablePath(t)}mapToBase(t){return Ae.toPortablePath(t)}}});var p6e,CU,h6e,Eo,KX=Ze(()=>{w0();Cp();cl();p6e=/^[0-9]+$/,CU=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,h6e=/^([^/]+-)?[a-f0-9]+$/,Eo=class e extends Gs{static makeVirtualPath(t,r,s){if(Y.basename(t)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!Y.basename(r).match(h6e))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let n=Y.relative(Y.dirname(t),s).split("/"),c=0;for(;c{wU=et(Ce("buffer")),JX=Ce("url"),zX=Ce("util");Cp();cl();ux=class extends Gs{constructor(t){super(Ae),this.baseFs=t}mapFromBase(t){return t}mapToBase(t){if(typeof t=="string")return t;if(t instanceof URL)return(0,JX.fileURLToPath)(t);if(Buffer.isBuffer(t)){let r=t.toString();if(!d6e(t,r))throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return r}throw new Error(`Unsupported path type: ${(0,zX.inspect)(t)}`)}}});var r$,Wo,wp,nd,fx,Ax,pE,Tu,Ru,XX,$X,e$,t$,O2,n$=Ze(()=>{r$=Ce("readline"),Wo=Symbol("kBaseFs"),wp=Symbol("kFd"),nd=Symbol("kClosePromise"),fx=Symbol("kCloseResolve"),Ax=Symbol("kCloseReject"),pE=Symbol("kRefs"),Tu=Symbol("kRef"),Ru=Symbol("kUnref"),O2=class{constructor(t,r){this[t$]=1;this[e$]=void 0;this[$X]=void 0;this[XX]=void 0;this[Wo]=r,this[wp]=t}get fd(){return this[wp]}async appendFile(t,r){try{this[Tu](this.appendFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;return await this[Wo].appendFilePromise(this.fd,t,s?{encoding:s}:void 0)}finally{this[Ru]()}}async chown(t,r){try{return this[Tu](this.chown),await this[Wo].fchownPromise(this.fd,t,r)}finally{this[Ru]()}}async chmod(t){try{return this[Tu](this.chmod),await this[Wo].fchmodPromise(this.fd,t)}finally{this[Ru]()}}createReadStream(t){return this[Wo].createReadStream(null,{...t,fd:this.fd})}createWriteStream(t){return this[Wo].createWriteStream(null,{...t,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(t,r,s,a){try{this[Tu](this.read);let n,c;return ArrayBuffer.isView(t)?typeof r=="object"&&r!==null?(n=t,c=r?.offset??0,s=r?.length??n.byteLength-c,a=r?.position??null):(n=t,c=r??0,s??=0):(n=t?.buffer??Buffer.alloc(16384),c=t?.offset??0,s=t?.length??n.byteLength-c,a=t?.position??null),s===0?{bytesRead:s,buffer:n}:{bytesRead:await this[Wo].readPromise(this.fd,Buffer.isBuffer(n)?n:Buffer.from(n.buffer,n.byteOffset,n.byteLength),c,s,a),buffer:n}}finally{this[Ru]()}}async readFile(t){try{this[Tu](this.readFile);let r=(typeof t=="string"?t:t?.encoding)??void 0;return await this[Wo].readFilePromise(this.fd,r)}finally{this[Ru]()}}readLines(t){return(0,r$.createInterface)({input:this.createReadStream(t),crlfDelay:1/0})}async stat(t){try{return this[Tu](this.stat),await this[Wo].fstatPromise(this.fd,t)}finally{this[Ru]()}}async truncate(t){try{return this[Tu](this.truncate),await this[Wo].ftruncatePromise(this.fd,t)}finally{this[Ru]()}}utimes(t,r){throw new Error("Method not implemented.")}async writeFile(t,r){try{this[Tu](this.writeFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;await this[Wo].writeFilePromise(this.fd,t,s)}finally{this[Ru]()}}async write(...t){try{if(this[Tu](this.write),ArrayBuffer.isView(t[0])){let[r,s,a,n]=t;return{bytesWritten:await this[Wo].writePromise(this.fd,r,s??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,s,a]=t;return{bytesWritten:await this[Wo].writePromise(this.fd,r,s,a),buffer:r}}}finally{this[Ru]()}}async writev(t,r){try{this[Tu](this.writev);let s=0;if(typeof r<"u")for(let a of t){let n=await this.write(a,void 0,void 0,r);s+=n.bytesWritten,r+=n.bytesWritten}else for(let a of t){let n=await this.write(a);s+=n.bytesWritten}return{buffers:t,bytesWritten:s}}finally{this[Ru]()}}readv(t,r){throw new Error("Method not implemented.")}close(){if(this[wp]===-1)return Promise.resolve();if(this[nd])return this[nd];if(this[pE]--,this[pE]===0){let t=this[wp];this[wp]=-1,this[nd]=this[Wo].closePromise(t).finally(()=>{this[nd]=void 0})}else this[nd]=new Promise((t,r)=>{this[fx]=t,this[Ax]=r}).finally(()=>{this[nd]=void 0,this[Ax]=void 0,this[fx]=void 0});return this[nd]}[(Wo,wp,t$=pE,e$=nd,$X=fx,XX=Ax,Tu)](t){if(this[wp]===-1){let r=new Error("file closed");throw r.code="EBADF",r.syscall=t.name,r}this[pE]++}[Ru](){if(this[pE]--,this[pE]===0){let t=this[wp];this[wp]=-1,this[Wo].closePromise(t).then(this[fx],this[Ax])}}}});function L2(e,t){t=new ux(t);let r=(s,a,n)=>{let c=s[a];s[a]=n,typeof c?.[hE.promisify.custom]<"u"&&(n[hE.promisify.custom]=c[hE.promisify.custom])};{r(e,"exists",(s,...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{t.existsPromise(s).then(f=>{c(f)},()=>{c(!1)})})}),r(e,"read",(...s)=>{let[a,n,c,f,p,h]=s;if(s.length<=3){let E={};s.length<3?h=s[1]:(E=s[1],h=s[2]),{buffer:n=Buffer.alloc(16384),offset:c=0,length:f=n.byteLength,position:p}=E}if(c==null&&(c=0),f|=0,f===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{t.readPromise(a,n,c,f,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let s of i$){let a=s.replace(/Promise$/,"");if(typeof e[a]>"u")continue;let n=t[s];if(typeof n>"u")continue;r(e,a,(...f)=>{let h=typeof f[f.length-1]=="function"?f.pop():()=>{};process.nextTick(()=>{n.apply(t,f).then(E=>{h(null,E)},E=>{h(E)})})})}e.realpath.native=e.realpath}{r(e,"existsSync",s=>{try{return t.existsSync(s)}catch{return!1}}),r(e,"readSync",(...s)=>{let[a,n,c,f,p]=s;return s.length<=3&&({offset:c=0,length:f=n.byteLength,position:p}=s[2]||{}),c==null&&(c=0),f|=0,f===0?0:(p==null&&(p=-1),t.readSync(a,n,c,f,p))});for(let s of g6e){let a=s;if(typeof e[a]>"u")continue;let n=t[s];typeof n>"u"||r(e,a,n.bind(t))}e.realpathSync.native=e.realpathSync}{let s=e.promises;for(let a of i$){let n=a.replace(/Promise$/,"");if(typeof s[n]>"u")continue;let c=t[a];typeof c>"u"||a!=="open"&&r(s,n,(f,...p)=>f instanceof O2?f[n].apply(f,p):c.call(t,f,...p))}r(s,"open",async(...a)=>{let n=await t.openPromise(...a);return new O2(n,t)})}e.read[hE.promisify.custom]=async(s,a,...n)=>({bytesRead:await t.readPromise(s,a,...n),buffer:a}),e.write[hE.promisify.custom]=async(s,a,...n)=>({bytesWritten:await t.writePromise(s,a,...n),buffer:a})}function px(e,t){let r=Object.create(e);return L2(r,t),r}var hE,g6e,i$,s$=Ze(()=>{hE=Ce("util");ZX();n$();g6e=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),i$=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","rmPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"])});function o$(e){let t=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${e}${t}`}function a$(){if(BU)return BU;let e=Ae.toPortablePath(l$.default.tmpdir()),t=ae.realpathSync(e);return process.once("exit",()=>{ae.rmtempSync()}),BU={tmpdir:e,realTmpdir:t}}var l$,Fu,BU,ae,c$=Ze(()=>{l$=et(Ce("os"));w0();cl();Fu=new Set,BU=null;ae=Object.assign(new Kn,{detachTemp(e){Fu.delete(e)},mktempSync(e){let{tmpdir:t,realTmpdir:r}=a$();for(;;){let s=o$("xfs-");try{this.mkdirSync(Y.join(t,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=Y.join(r,s);if(Fu.add(a),typeof e>"u")return a;try{return e(a)}finally{if(Fu.has(a)){Fu.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(e){let{tmpdir:t,realTmpdir:r}=a$();for(;;){let s=o$("xfs-");try{await this.mkdirPromise(Y.join(t,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=Y.join(r,s);if(Fu.add(a),typeof e>"u")return a;try{return await e(a)}finally{if(Fu.has(a)){Fu.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Fu.values()).map(async e=>{try{await ae.removePromise(e,{maxRetries:0}),Fu.delete(e)}catch{}}))},rmtempSync(){for(let e of Fu)try{ae.removeSync(e),Fu.delete(e)}catch{}}})});var M2={};Vt(M2,{AliasFS:()=>Gf,BasePortableFakeFS:()=>jf,CustomDir:()=>N2,CwdFS:()=>Pn,FakeFS:()=>Ip,Filename:()=>yr,JailFS:()=>qf,LazyFS:()=>AE,MountFS:()=>td,NoFS:()=>cx,NodeFS:()=>Kn,PortablePath:()=>wt,PosixFS:()=>rd,ProxiedFS:()=>Gs,VirtualFS:()=>Eo,constants:()=>pi,errors:()=>or,extendFs:()=>px,normalizeLineEndings:()=>I0,npath:()=>Ae,opendir:()=>ox,patchFs:()=>L2,ppath:()=>Y,setupCopyIndex:()=>sx,statUtils:()=>ll,unwatchAllFiles:()=>E0,unwatchFile:()=>y0,watchFile:()=>fE,xfs:()=>ae});var bt=Ze(()=>{bX();rx();gU();EU();TX();IU();C0();cl();cl();MX();C0();HX();GX();qX();YX();WX();w0();VX();Cp();KX();s$();c$()});var h$=G((BPt,p$)=>{p$.exports=A$;A$.sync=y6e;var u$=Ce("fs");function m6e(e,t){var r=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var s=0;s{y$.exports=g$;g$.sync=E6e;var d$=Ce("fs");function g$(e,t,r){d$.stat(e,function(s,a){r(s,s?!1:m$(a,t))})}function E6e(e,t){return m$(d$.statSync(e),t)}function m$(e,t){return e.isFile()&&I6e(e,t)}function I6e(e,t){var r=e.mode,s=e.uid,a=e.gid,n=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),c=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),f=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),E=f|p,C=r&h||r&p&&a===c||r&f&&s===n||r&E&&n===0;return C}});var C$=G((bPt,I$)=>{var SPt=Ce("fs"),hx;process.platform==="win32"||global.TESTING_WINDOWS?hx=h$():hx=E$();I$.exports=vU;vU.sync=C6e;function vU(e,t,r){if(typeof t=="function"&&(r=t,t={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(s,a){vU(e,t||{},function(n,c){n?a(n):s(c)})})}hx(e,t||{},function(s,a){s&&(s.code==="EACCES"||t&&t.ignoreErrors)&&(s=null,a=!1),r(s,a)})}function C6e(e,t){try{return hx.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var P$=G((DPt,D$)=>{var dE=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",w$=Ce("path"),w6e=dE?";":":",B$=C$(),v$=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),S$=(e,t)=>{let r=t.colon||w6e,s=e.match(/\//)||dE&&e.match(/\\/)?[""]:[...dE?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],a=dE?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=dE?a.split(r):[""];return dE&&e.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:s,pathExt:n,pathExtExe:a}},b$=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});let{pathEnv:s,pathExt:a,pathExtExe:n}=S$(e,t),c=[],f=h=>new Promise((E,C)=>{if(h===s.length)return t.all&&c.length?E(c):C(v$(e));let S=s[h],x=/^".*"$/.test(S)?S.slice(1,-1):S,I=w$.join(x,e),R=!x&&/^\.[\\\/]/.test(e)?e.slice(0,2)+I:I;E(p(R,h,0))}),p=(h,E,C)=>new Promise((S,x)=>{if(C===a.length)return S(f(E+1));let I=a[C];B$(h+I,{pathExt:n},(R,N)=>{if(!R&&N)if(t.all)c.push(h+I);else return S(h+I);return S(p(h,E,C+1))})});return r?f(0).then(h=>r(null,h),r):f(0)},B6e=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:s,pathExtExe:a}=S$(e,t),n=[];for(let c=0;c{"use strict";var x$=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(s=>s.toUpperCase()==="PATH")||"Path"};SU.exports=x$;SU.exports.default=x$});var F$=G((xPt,R$)=>{"use strict";var Q$=Ce("path"),v6e=P$(),S6e=k$();function T$(e,t){let r=e.options.env||process.env,s=process.cwd(),a=e.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(e.options.cwd)}catch{}let c;try{c=v6e.sync(e.command,{path:r[S6e({env:r})],pathExt:t?Q$.delimiter:void 0})}catch{}finally{n&&process.chdir(s)}return c&&(c=Q$.resolve(a?e.options.cwd:"",c)),c}function b6e(e){return T$(e)||T$(e,!0)}R$.exports=b6e});var N$=G((kPt,DU)=>{"use strict";var bU=/([()\][%!^"`<>&|;, *?])/g;function D6e(e){return e=e.replace(bU,"^$1"),e}function P6e(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),e=e.replace(/(?=(\\+?)?)\1$/,"$1$1"),e=`"${e}"`,e=e.replace(bU,"^$1"),t&&(e=e.replace(bU,"^$1")),e}DU.exports.command=D6e;DU.exports.argument=P6e});var L$=G((QPt,O$)=>{"use strict";O$.exports=/^#!(.*)/});var U$=G((TPt,M$)=>{"use strict";var x6e=L$();M$.exports=(e="")=>{let t=e.match(x6e);if(!t)return null;let[r,s]=t[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?s:s?`${a} ${s}`:a}});var H$=G((RPt,_$)=>{"use strict";var PU=Ce("fs"),k6e=U$();function Q6e(e){let r=Buffer.alloc(150),s;try{s=PU.openSync(e,"r"),PU.readSync(s,r,0,150,0),PU.closeSync(s)}catch{}return k6e(r.toString())}_$.exports=Q6e});var Y$=G((FPt,q$)=>{"use strict";var T6e=Ce("path"),j$=F$(),G$=N$(),R6e=H$(),F6e=process.platform==="win32",N6e=/\.(?:com|exe)$/i,O6e=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function L6e(e){e.file=j$(e);let t=e.file&&R6e(e.file);return t?(e.args.unshift(e.file),e.command=t,j$(e)):e.file}function M6e(e){if(!F6e)return e;let t=L6e(e),r=!N6e.test(t);if(e.options.forceShell||r){let s=O6e.test(t);e.command=T6e.normalize(e.command),e.command=G$.command(e.command),e.args=e.args.map(n=>G$.argument(n,s));let a=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${a}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function U6e(e,t,r){t&&!Array.isArray(t)&&(r=t,t=null),t=t?t.slice(0):[],r=Object.assign({},r);let s={command:e,args:t,options:r,file:void 0,original:{command:e,args:t}};return r.shell?s:M6e(s)}q$.exports=U6e});var K$=G((NPt,V$)=>{"use strict";var xU=process.platform==="win32";function kU(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function _6e(e,t){if(!xU)return;let r=e.emit;e.emit=function(s,a){if(s==="exit"){let n=W$(a,t);if(n)return r.call(e,"error",n)}return r.apply(e,arguments)}}function W$(e,t){return xU&&e===1&&!t.file?kU(t.original,"spawn"):null}function H6e(e,t){return xU&&e===1&&!t.file?kU(t.original,"spawnSync"):null}V$.exports={hookChildProcess:_6e,verifyENOENT:W$,verifyENOENTSync:H6e,notFoundError:kU}});var RU=G((OPt,gE)=>{"use strict";var J$=Ce("child_process"),QU=Y$(),TU=K$();function z$(e,t,r){let s=QU(e,t,r),a=J$.spawn(s.command,s.args,s.options);return TU.hookChildProcess(a,s),a}function j6e(e,t,r){let s=QU(e,t,r),a=J$.spawnSync(s.command,s.args,s.options);return a.error=a.error||TU.verifyENOENTSync(a.status,s),a}gE.exports=z$;gE.exports.spawn=z$;gE.exports.sync=j6e;gE.exports._parse=QU;gE.exports._enoent=TU});var X$=G((LPt,Z$)=>{"use strict";function G6e(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function v0(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,v0)}G6e(v0,Error);v0.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C>",D=ur(">>",!1),y=">&",F=ur(">&",!1),z=">",Z=ur(">",!1),ee="<<<",se=ur("<<<",!1),xe="<&",Ne=ur("<&",!1),ut="<",Ct=ur("<",!1),Yt=function(O){return{type:"argument",segments:[].concat(...O)}},ir=function(O){return O},Pt="$'",mn=ur("$'",!1),Pr="'",Cr=ur("'",!1),Lr=function(O){return[{type:"text",text:O}]},on='""',ci=ur('""',!1),Do=function(){return{type:"text",text:""}},is='"',ao=ur('"',!1),Po=function(O){return O},ji=function(O){return{type:"arithmetic",arithmetic:O,quoted:!0}},lo=function(O){return{type:"shell",shell:O,quoted:!0}},xo=function(O){return{type:"variable",...O,quoted:!0}},FA=function(O){return{type:"text",text:O}},df=function(O){return{type:"arithmetic",arithmetic:O,quoted:!1}},mh=function(O){return{type:"shell",shell:O,quoted:!1}},yh=function(O){return{type:"variable",...O,quoted:!1}},co=function(O){return{type:"glob",pattern:O}},qn=/^[^']/,Ns=zi(["'"],!0,!1),uo=function(O){return O.join("")},ou=/^[^$"]/,au=zi(["$",'"'],!0,!1),lu=`\\ +`,NA=ur(`\\ +`,!1),OA=function(){return""},Aa="\\",pa=ur("\\",!1),LA=/^[\\$"`]/,gr=zi(["\\","$",'"',"`"],!1,!1),ko=function(O){return O},qa="\\a",Ue=ur("\\a",!1),wr=function(){return"a"},gf="\\b",MA=ur("\\b",!1),UA=function(){return"\b"},cu=/^[Ee]/,uu=zi(["E","e"],!1,!1),cc=function(){return"\x1B"},we="\\f",Ot=ur("\\f",!1),uc=function(){return"\f"},Oi="\\n",fo=ur("\\n",!1),Rt=function(){return` +`},Tn="\\r",ha=ur("\\r",!1),Gi=function(){return"\r"},Li="\\t",Ya=ur("\\t",!1),yn=function(){return" "},Xn="\\v",fu=ur("\\v",!1),Eh=function(){return"\v"},Wa=/^[\\'"?]/,Va=zi(["\\","'",'"',"?"],!1,!1),Ka=function(O){return String.fromCharCode(parseInt(O,16))},$e="\\x",Ja=ur("\\x",!1),mf="\\u",fc=ur("\\u",!1),Sn="\\U",da=ur("\\U",!1),_A=function(O){return String.fromCodePoint(parseInt(O,16))},HA=/^[0-7]/,ga=zi([["0","7"]],!1,!1),Ql=/^[0-9a-fA-f]/,Ut=zi([["0","9"],["a","f"],["A","f"]],!1,!1),Rn=Cf(),ma="{}",za=ur("{}",!1),ss=function(){return"{}"},Ac="-",Au=ur("-",!1),pc="+",Za=ur("+",!1),Mi=".",vs=ur(".",!1),Tl=function(O,J,re){return{type:"number",value:(O==="-"?-1:1)*parseFloat(J.join("")+"."+re.join(""))}},yf=function(O,J){return{type:"number",value:(O==="-"?-1:1)*parseInt(J.join(""))}},hc=function(O){return{type:"variable",...O}},vi=function(O){return{type:"variable",name:O}},Fn=function(O){return O},dc="*",ze=ur("*",!1),at="/",St=ur("/",!1),lr=function(O,J,re){return{type:J==="*"?"multiplication":"division",right:re}},te=function(O,J){return J.reduce((re,de)=>({left:re,...de}),O)},Ee=function(O,J,re){return{type:J==="+"?"addition":"subtraction",right:re}},Oe="$((",mt=ur("$((",!1),Et="))",Dt=ur("))",!1),tr=function(O){return O},pn="$(",ui=ur("$(",!1),qi=function(O){return O},Nn="${",Xa=ur("${",!1),By=":-",z1=ur(":-",!1),Qo=function(O,J){return{name:O,defaultValue:J}},vy=":-}",Ih=ur(":-}",!1),Z1=function(O){return{name:O,defaultValue:[]}},To=":+",Ch=ur(":+",!1),wh=function(O,J){return{name:O,alternativeValue:J}},pu=":+}",Bh=ur(":+}",!1),Ng=function(O){return{name:O,alternativeValue:[]}},Og=function(O){return{name:O}},Lg="$",Sy=ur("$",!1),Ef=function(O){return t.isGlobPattern(O)},Ro=function(O){return O},Rl=/^[a-zA-Z0-9_]/,vh=zi([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Mg=function(){return xy()},Fl=/^[$@*?#a-zA-Z0-9_\-]/,Nl=zi(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),by=/^[()}<>$|&; \t"']/,jA=zi(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),Dy=/^[<>&; \t"']/,Py=zi(["<",">","&",";"," "," ",'"',"'"],!1,!1),GA=/^[ \t]/,qA=zi([" "," "],!1,!1),W=0,xt=0,YA=[{line:1,column:1}],Fo=0,If=[],yt=0,hu;if("startRule"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');a=s[t.startRule]}function xy(){return e.substring(xt,W)}function Ug(){return wf(xt,W)}function X1(O,J){throw J=J!==void 0?J:wf(xt,W),WA([_g(O)],e.substring(xt,W),J)}function Sh(O,J){throw J=J!==void 0?J:wf(xt,W),mi(O,J)}function ur(O,J){return{type:"literal",text:O,ignoreCase:J}}function zi(O,J,re){return{type:"class",parts:O,inverted:J,ignoreCase:re}}function Cf(){return{type:"any"}}function $a(){return{type:"end"}}function _g(O){return{type:"other",description:O}}function du(O){var J=YA[O],re;if(J)return J;for(re=O-1;!YA[re];)re--;for(J=YA[re],J={line:J.line,column:J.column};reFo&&(Fo=W,If=[]),If.push(O))}function mi(O,J){return new v0(O,null,null,J)}function WA(O,J,re){return new v0(v0.buildMessage(O,J),O,J,re)}function el(){var O,J,re;for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(re=ya(),re===r&&(re=null),re!==r?(xt=O,J=n(re),O=J):(W=O,O=r)):(W=O,O=r),O}function ya(){var O,J,re,de,Ke;if(O=W,J=bh(),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=Hg(),de!==r?(Ke=tl(),Ke===r&&(Ke=null),Ke!==r?(xt=O,J=c(J,de,Ke),O=J):(W=O,O=r)):(W=O,O=r)):(W=O,O=r)}else W=O,O=r;if(O===r)if(O=W,J=bh(),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=Hg(),de===r&&(de=null),de!==r?(xt=O,J=f(J,de),O=J):(W=O,O=r)):(W=O,O=r)}else W=O,O=r;return O}function tl(){var O,J,re,de,Ke;for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=ya(),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=p(re),O=J):(W=O,O=r)}else W=O,O=r;else W=O,O=r;return O}function Hg(){var O;return e.charCodeAt(W)===59?(O=h,W++):(O=r,yt===0&&Bt(E)),O===r&&(e.charCodeAt(W)===38?(O=C,W++):(O=r,yt===0&&Bt(S))),O}function bh(){var O,J,re;return O=W,J=VA(),J!==r?(re=jg(),re===r&&(re=null),re!==r?(xt=O,J=x(J,re),O=J):(W=O,O=r)):(W=O,O=r),O}function jg(){var O,J,re,de,Ke,pt,mr;for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=ky(),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=bh(),Ke!==r){for(pt=[],mr=kt();mr!==r;)pt.push(mr),mr=kt();pt!==r?(xt=O,J=I(re,Ke),O=J):(W=O,O=r)}else W=O,O=r;else W=O,O=r}else W=O,O=r;else W=O,O=r;return O}function ky(){var O;return e.substr(W,2)===R?(O=R,W+=2):(O=r,yt===0&&Bt(N)),O===r&&(e.substr(W,2)===U?(O=U,W+=2):(O=r,yt===0&&Bt(K))),O}function VA(){var O,J,re;return O=W,J=Bf(),J!==r?(re=Gg(),re===r&&(re=null),re!==r?(xt=O,J=$(J,re),O=J):(W=O,O=r)):(W=O,O=r),O}function Gg(){var O,J,re,de,Ke,pt,mr;for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=gu(),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=VA(),Ke!==r){for(pt=[],mr=kt();mr!==r;)pt.push(mr),mr=kt();pt!==r?(xt=O,J=ie(re,Ke),O=J):(W=O,O=r)}else W=O,O=r;else W=O,O=r}else W=O,O=r;else W=O,O=r;return O}function gu(){var O;return e.substr(W,2)===fe?(O=fe,W+=2):(O=r,yt===0&&Bt(le)),O===r&&(e.charCodeAt(W)===124?(O=ge,W++):(O=r,yt===0&&Bt(pe))),O}function mu(){var O,J,re,de,Ke,pt;if(O=W,J=xh(),J!==r)if(e.charCodeAt(W)===61?(re=De,W++):(re=r,yt===0&&Bt(ye)),re!==r)if(de=KA(),de!==r){for(Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();Ke!==r?(xt=O,J=d(J,de),O=J):(W=O,O=r)}else W=O,O=r;else W=O,O=r;else W=O,O=r;if(O===r)if(O=W,J=xh(),J!==r)if(e.charCodeAt(W)===61?(re=De,W++):(re=r,yt===0&&Bt(ye)),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=ve(J),O=J):(W=O,O=r)}else W=O,O=r;else W=O,O=r;return O}function Bf(){var O,J,re,de,Ke,pt,mr,vr,Hn,yi,Ss;for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(e.charCodeAt(W)===40?(re=Ie,W++):(re=r,yt===0&&Bt(me)),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=ya(),Ke!==r){for(pt=[],mr=kt();mr!==r;)pt.push(mr),mr=kt();if(pt!==r)if(e.charCodeAt(W)===41?(mr=ce,W++):(mr=r,yt===0&&Bt(X)),mr!==r){for(vr=[],Hn=kt();Hn!==r;)vr.push(Hn),Hn=kt();if(vr!==r){for(Hn=[],yi=Yn();yi!==r;)Hn.push(yi),yi=Yn();if(Hn!==r){for(yi=[],Ss=kt();Ss!==r;)yi.push(Ss),Ss=kt();yi!==r?(xt=O,J=be(Ke,Hn),O=J):(W=O,O=r)}else W=O,O=r}else W=O,O=r}else W=O,O=r;else W=O,O=r}else W=O,O=r;else W=O,O=r}else W=O,O=r;else W=O,O=r;if(O===r){for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(e.charCodeAt(W)===123?(re=ke,W++):(re=r,yt===0&&Bt(it)),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=ya(),Ke!==r){for(pt=[],mr=kt();mr!==r;)pt.push(mr),mr=kt();if(pt!==r)if(e.charCodeAt(W)===125?(mr=_,W++):(mr=r,yt===0&&Bt(tt)),mr!==r){for(vr=[],Hn=kt();Hn!==r;)vr.push(Hn),Hn=kt();if(vr!==r){for(Hn=[],yi=Yn();yi!==r;)Hn.push(yi),yi=Yn();if(Hn!==r){for(yi=[],Ss=kt();Ss!==r;)yi.push(Ss),Ss=kt();yi!==r?(xt=O,J=Fe(Ke,Hn),O=J):(W=O,O=r)}else W=O,O=r}else W=O,O=r}else W=O,O=r;else W=O,O=r}else W=O,O=r;else W=O,O=r}else W=O,O=r;else W=O,O=r;if(O===r){for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){for(re=[],de=mu();de!==r;)re.push(de),de=mu();if(re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r){if(Ke=[],pt=yu(),pt!==r)for(;pt!==r;)Ke.push(pt),pt=yu();else Ke=r;if(Ke!==r){for(pt=[],mr=kt();mr!==r;)pt.push(mr),mr=kt();pt!==r?(xt=O,J=Qe(re,Ke),O=J):(W=O,O=r)}else W=O,O=r}else W=O,O=r}else W=O,O=r}else W=O,O=r;if(O===r){for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){if(re=[],de=mu(),de!==r)for(;de!==r;)re.push(de),de=mu();else re=r;if(re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=Se(re),O=J):(W=O,O=r)}else W=O,O=r}else W=O,O=r}}}return O}function Os(){var O,J,re,de,Ke;for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){if(re=[],de=xi(),de!==r)for(;de!==r;)re.push(de),de=xi();else re=r;if(re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=je(re),O=J):(W=O,O=r)}else W=O,O=r}else W=O,O=r;return O}function yu(){var O,J,re;for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r?(re=Yn(),re!==r?(xt=O,J=Te(re),O=J):(W=O,O=r)):(W=O,O=r),O===r){for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();J!==r?(re=xi(),re!==r?(xt=O,J=Te(re),O=J):(W=O,O=r)):(W=O,O=r)}return O}function Yn(){var O,J,re,de,Ke;for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(ct.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(Me)),re===r&&(re=null),re!==r?(de=os(),de!==r?(Ke=xi(),Ke!==r?(xt=O,J=P(re,de,Ke),O=J):(W=O,O=r)):(W=O,O=r)):(W=O,O=r)):(W=O,O=r),O}function os(){var O;return e.substr(W,2)===w?(O=w,W+=2):(O=r,yt===0&&Bt(D)),O===r&&(e.substr(W,2)===y?(O=y,W+=2):(O=r,yt===0&&Bt(F)),O===r&&(e.charCodeAt(W)===62?(O=z,W++):(O=r,yt===0&&Bt(Z)),O===r&&(e.substr(W,3)===ee?(O=ee,W+=3):(O=r,yt===0&&Bt(se)),O===r&&(e.substr(W,2)===xe?(O=xe,W+=2):(O=r,yt===0&&Bt(Ne)),O===r&&(e.charCodeAt(W)===60?(O=ut,W++):(O=r,yt===0&&Bt(Ct))))))),O}function xi(){var O,J,re;for(O=W,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(re=KA(),re!==r?(xt=O,J=Te(re),O=J):(W=O,O=r)):(W=O,O=r),O}function KA(){var O,J,re;if(O=W,J=[],re=vf(),re!==r)for(;re!==r;)J.push(re),re=vf();else J=r;return J!==r&&(xt=O,J=Yt(J)),O=J,O}function vf(){var O,J;return O=W,J=En(),J!==r&&(xt=O,J=ir(J)),O=J,O===r&&(O=W,J=qg(),J!==r&&(xt=O,J=ir(J)),O=J,O===r&&(O=W,J=Yg(),J!==r&&(xt=O,J=ir(J)),O=J,O===r&&(O=W,J=as(),J!==r&&(xt=O,J=ir(J)),O=J))),O}function En(){var O,J,re,de;return O=W,e.substr(W,2)===Pt?(J=Pt,W+=2):(J=r,yt===0&&Bt(mn)),J!==r?(re=In(),re!==r?(e.charCodeAt(W)===39?(de=Pr,W++):(de=r,yt===0&&Bt(Cr)),de!==r?(xt=O,J=Lr(re),O=J):(W=O,O=r)):(W=O,O=r)):(W=O,O=r),O}function qg(){var O,J,re,de;return O=W,e.charCodeAt(W)===39?(J=Pr,W++):(J=r,yt===0&&Bt(Cr)),J!==r?(re=Sf(),re!==r?(e.charCodeAt(W)===39?(de=Pr,W++):(de=r,yt===0&&Bt(Cr)),de!==r?(xt=O,J=Lr(re),O=J):(W=O,O=r)):(W=O,O=r)):(W=O,O=r),O}function Yg(){var O,J,re,de;if(O=W,e.substr(W,2)===on?(J=on,W+=2):(J=r,yt===0&&Bt(ci)),J!==r&&(xt=O,J=Do()),O=J,O===r)if(O=W,e.charCodeAt(W)===34?(J=is,W++):(J=r,yt===0&&Bt(ao)),J!==r){for(re=[],de=Ol();de!==r;)re.push(de),de=Ol();re!==r?(e.charCodeAt(W)===34?(de=is,W++):(de=r,yt===0&&Bt(ao)),de!==r?(xt=O,J=Po(re),O=J):(W=O,O=r)):(W=O,O=r)}else W=O,O=r;return O}function as(){var O,J,re;if(O=W,J=[],re=No(),re!==r)for(;re!==r;)J.push(re),re=No();else J=r;return J!==r&&(xt=O,J=Po(J)),O=J,O}function Ol(){var O,J;return O=W,J=$r(),J!==r&&(xt=O,J=ji(J)),O=J,O===r&&(O=W,J=Ph(),J!==r&&(xt=O,J=lo(J)),O=J,O===r&&(O=W,J=zA(),J!==r&&(xt=O,J=xo(J)),O=J,O===r&&(O=W,J=bf(),J!==r&&(xt=O,J=FA(J)),O=J))),O}function No(){var O,J;return O=W,J=$r(),J!==r&&(xt=O,J=df(J)),O=J,O===r&&(O=W,J=Ph(),J!==r&&(xt=O,J=mh(J)),O=J,O===r&&(O=W,J=zA(),J!==r&&(xt=O,J=yh(J)),O=J,O===r&&(O=W,J=Qy(),J!==r&&(xt=O,J=co(J)),O=J,O===r&&(O=W,J=Dh(),J!==r&&(xt=O,J=FA(J)),O=J)))),O}function Sf(){var O,J,re;for(O=W,J=[],qn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(Ns));re!==r;)J.push(re),qn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(Ns));return J!==r&&(xt=O,J=uo(J)),O=J,O}function bf(){var O,J,re;if(O=W,J=[],re=Ll(),re===r&&(ou.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(au))),re!==r)for(;re!==r;)J.push(re),re=Ll(),re===r&&(ou.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(au)));else J=r;return J!==r&&(xt=O,J=uo(J)),O=J,O}function Ll(){var O,J,re;return O=W,e.substr(W,2)===lu?(J=lu,W+=2):(J=r,yt===0&&Bt(NA)),J!==r&&(xt=O,J=OA()),O=J,O===r&&(O=W,e.charCodeAt(W)===92?(J=Aa,W++):(J=r,yt===0&&Bt(pa)),J!==r?(LA.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(gr)),re!==r?(xt=O,J=ko(re),O=J):(W=O,O=r)):(W=O,O=r)),O}function In(){var O,J,re;for(O=W,J=[],re=Oo(),re===r&&(qn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(Ns)));re!==r;)J.push(re),re=Oo(),re===r&&(qn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(Ns)));return J!==r&&(xt=O,J=uo(J)),O=J,O}function Oo(){var O,J,re;return O=W,e.substr(W,2)===qa?(J=qa,W+=2):(J=r,yt===0&&Bt(Ue)),J!==r&&(xt=O,J=wr()),O=J,O===r&&(O=W,e.substr(W,2)===gf?(J=gf,W+=2):(J=r,yt===0&&Bt(MA)),J!==r&&(xt=O,J=UA()),O=J,O===r&&(O=W,e.charCodeAt(W)===92?(J=Aa,W++):(J=r,yt===0&&Bt(pa)),J!==r?(cu.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(uu)),re!==r?(xt=O,J=cc(),O=J):(W=O,O=r)):(W=O,O=r),O===r&&(O=W,e.substr(W,2)===we?(J=we,W+=2):(J=r,yt===0&&Bt(Ot)),J!==r&&(xt=O,J=uc()),O=J,O===r&&(O=W,e.substr(W,2)===Oi?(J=Oi,W+=2):(J=r,yt===0&&Bt(fo)),J!==r&&(xt=O,J=Rt()),O=J,O===r&&(O=W,e.substr(W,2)===Tn?(J=Tn,W+=2):(J=r,yt===0&&Bt(ha)),J!==r&&(xt=O,J=Gi()),O=J,O===r&&(O=W,e.substr(W,2)===Li?(J=Li,W+=2):(J=r,yt===0&&Bt(Ya)),J!==r&&(xt=O,J=yn()),O=J,O===r&&(O=W,e.substr(W,2)===Xn?(J=Xn,W+=2):(J=r,yt===0&&Bt(fu)),J!==r&&(xt=O,J=Eh()),O=J,O===r&&(O=W,e.charCodeAt(W)===92?(J=Aa,W++):(J=r,yt===0&&Bt(pa)),J!==r?(Wa.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(Va)),re!==r?(xt=O,J=ko(re),O=J):(W=O,O=r)):(W=O,O=r),O===r&&(O=Eu()))))))))),O}function Eu(){var O,J,re,de,Ke,pt,mr,vr,Hn,yi,Ss,ZA;return O=W,e.charCodeAt(W)===92?(J=Aa,W++):(J=r,yt===0&&Bt(pa)),J!==r?(re=Ea(),re!==r?(xt=O,J=Ka(re),O=J):(W=O,O=r)):(W=O,O=r),O===r&&(O=W,e.substr(W,2)===$e?(J=$e,W+=2):(J=r,yt===0&&Bt(Ja)),J!==r?(re=W,de=W,Ke=Ea(),Ke!==r?(pt=Ls(),pt!==r?(Ke=[Ke,pt],de=Ke):(W=de,de=r)):(W=de,de=r),de===r&&(de=Ea()),de!==r?re=e.substring(re,W):re=de,re!==r?(xt=O,J=Ka(re),O=J):(W=O,O=r)):(W=O,O=r),O===r&&(O=W,e.substr(W,2)===mf?(J=mf,W+=2):(J=r,yt===0&&Bt(fc)),J!==r?(re=W,de=W,Ke=Ls(),Ke!==r?(pt=Ls(),pt!==r?(mr=Ls(),mr!==r?(vr=Ls(),vr!==r?(Ke=[Ke,pt,mr,vr],de=Ke):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r),de!==r?re=e.substring(re,W):re=de,re!==r?(xt=O,J=Ka(re),O=J):(W=O,O=r)):(W=O,O=r),O===r&&(O=W,e.substr(W,2)===Sn?(J=Sn,W+=2):(J=r,yt===0&&Bt(da)),J!==r?(re=W,de=W,Ke=Ls(),Ke!==r?(pt=Ls(),pt!==r?(mr=Ls(),mr!==r?(vr=Ls(),vr!==r?(Hn=Ls(),Hn!==r?(yi=Ls(),yi!==r?(Ss=Ls(),Ss!==r?(ZA=Ls(),ZA!==r?(Ke=[Ke,pt,mr,vr,Hn,yi,Ss,ZA],de=Ke):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r),de!==r?re=e.substring(re,W):re=de,re!==r?(xt=O,J=_A(re),O=J):(W=O,O=r)):(W=O,O=r)))),O}function Ea(){var O;return HA.test(e.charAt(W))?(O=e.charAt(W),W++):(O=r,yt===0&&Bt(ga)),O}function Ls(){var O;return Ql.test(e.charAt(W))?(O=e.charAt(W),W++):(O=r,yt===0&&Bt(Ut)),O}function Dh(){var O,J,re,de,Ke;if(O=W,J=[],re=W,e.charCodeAt(W)===92?(de=Aa,W++):(de=r,yt===0&&Bt(pa)),de!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&Bt(Rn)),Ke!==r?(xt=re,de=ko(Ke),re=de):(W=re,re=r)):(W=re,re=r),re===r&&(re=W,e.substr(W,2)===ma?(de=ma,W+=2):(de=r,yt===0&&Bt(za)),de!==r&&(xt=re,de=ss()),re=de,re===r&&(re=W,de=W,yt++,Ke=Ty(),yt--,Ke===r?de=void 0:(W=de,de=r),de!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&Bt(Rn)),Ke!==r?(xt=re,de=ko(Ke),re=de):(W=re,re=r)):(W=re,re=r))),re!==r)for(;re!==r;)J.push(re),re=W,e.charCodeAt(W)===92?(de=Aa,W++):(de=r,yt===0&&Bt(pa)),de!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&Bt(Rn)),Ke!==r?(xt=re,de=ko(Ke),re=de):(W=re,re=r)):(W=re,re=r),re===r&&(re=W,e.substr(W,2)===ma?(de=ma,W+=2):(de=r,yt===0&&Bt(za)),de!==r&&(xt=re,de=ss()),re=de,re===r&&(re=W,de=W,yt++,Ke=Ty(),yt--,Ke===r?de=void 0:(W=de,de=r),de!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&Bt(Rn)),Ke!==r?(xt=re,de=ko(Ke),re=de):(W=re,re=r)):(W=re,re=r)));else J=r;return J!==r&&(xt=O,J=uo(J)),O=J,O}function JA(){var O,J,re,de,Ke,pt;if(O=W,e.charCodeAt(W)===45?(J=Ac,W++):(J=r,yt===0&&Bt(Au)),J===r&&(e.charCodeAt(W)===43?(J=pc,W++):(J=r,yt===0&&Bt(Za))),J===r&&(J=null),J!==r){if(re=[],ct.test(e.charAt(W))?(de=e.charAt(W),W++):(de=r,yt===0&&Bt(Me)),de!==r)for(;de!==r;)re.push(de),ct.test(e.charAt(W))?(de=e.charAt(W),W++):(de=r,yt===0&&Bt(Me));else re=r;if(re!==r)if(e.charCodeAt(W)===46?(de=Mi,W++):(de=r,yt===0&&Bt(vs)),de!==r){if(Ke=[],ct.test(e.charAt(W))?(pt=e.charAt(W),W++):(pt=r,yt===0&&Bt(Me)),pt!==r)for(;pt!==r;)Ke.push(pt),ct.test(e.charAt(W))?(pt=e.charAt(W),W++):(pt=r,yt===0&&Bt(Me));else Ke=r;Ke!==r?(xt=O,J=Tl(J,re,Ke),O=J):(W=O,O=r)}else W=O,O=r;else W=O,O=r}else W=O,O=r;if(O===r){if(O=W,e.charCodeAt(W)===45?(J=Ac,W++):(J=r,yt===0&&Bt(Au)),J===r&&(e.charCodeAt(W)===43?(J=pc,W++):(J=r,yt===0&&Bt(Za))),J===r&&(J=null),J!==r){if(re=[],ct.test(e.charAt(W))?(de=e.charAt(W),W++):(de=r,yt===0&&Bt(Me)),de!==r)for(;de!==r;)re.push(de),ct.test(e.charAt(W))?(de=e.charAt(W),W++):(de=r,yt===0&&Bt(Me));else re=r;re!==r?(xt=O,J=yf(J,re),O=J):(W=O,O=r)}else W=O,O=r;if(O===r&&(O=W,J=zA(),J!==r&&(xt=O,J=hc(J)),O=J,O===r&&(O=W,J=gc(),J!==r&&(xt=O,J=vi(J)),O=J,O===r)))if(O=W,e.charCodeAt(W)===40?(J=Ie,W++):(J=r,yt===0&&Bt(me)),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=Ao(),de!==r){for(Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();Ke!==r?(e.charCodeAt(W)===41?(pt=ce,W++):(pt=r,yt===0&&Bt(X)),pt!==r?(xt=O,J=Fn(de),O=J):(W=O,O=r)):(W=O,O=r)}else W=O,O=r;else W=O,O=r}else W=O,O=r}return O}function Df(){var O,J,re,de,Ke,pt,mr,vr;if(O=W,J=JA(),J!==r){for(re=[],de=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===42?(pt=dc,W++):(pt=r,yt===0&&Bt(ze)),pt===r&&(e.charCodeAt(W)===47?(pt=at,W++):(pt=r,yt===0&&Bt(St))),pt!==r){for(mr=[],vr=kt();vr!==r;)mr.push(vr),vr=kt();mr!==r?(vr=JA(),vr!==r?(xt=de,Ke=lr(J,pt,vr),de=Ke):(W=de,de=r)):(W=de,de=r)}else W=de,de=r;else W=de,de=r;for(;de!==r;){for(re.push(de),de=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===42?(pt=dc,W++):(pt=r,yt===0&&Bt(ze)),pt===r&&(e.charCodeAt(W)===47?(pt=at,W++):(pt=r,yt===0&&Bt(St))),pt!==r){for(mr=[],vr=kt();vr!==r;)mr.push(vr),vr=kt();mr!==r?(vr=JA(),vr!==r?(xt=de,Ke=lr(J,pt,vr),de=Ke):(W=de,de=r)):(W=de,de=r)}else W=de,de=r;else W=de,de=r}re!==r?(xt=O,J=te(J,re),O=J):(W=O,O=r)}else W=O,O=r;return O}function Ao(){var O,J,re,de,Ke,pt,mr,vr;if(O=W,J=Df(),J!==r){for(re=[],de=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===43?(pt=pc,W++):(pt=r,yt===0&&Bt(Za)),pt===r&&(e.charCodeAt(W)===45?(pt=Ac,W++):(pt=r,yt===0&&Bt(Au))),pt!==r){for(mr=[],vr=kt();vr!==r;)mr.push(vr),vr=kt();mr!==r?(vr=Df(),vr!==r?(xt=de,Ke=Ee(J,pt,vr),de=Ke):(W=de,de=r)):(W=de,de=r)}else W=de,de=r;else W=de,de=r;for(;de!==r;){for(re.push(de),de=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===43?(pt=pc,W++):(pt=r,yt===0&&Bt(Za)),pt===r&&(e.charCodeAt(W)===45?(pt=Ac,W++):(pt=r,yt===0&&Bt(Au))),pt!==r){for(mr=[],vr=kt();vr!==r;)mr.push(vr),vr=kt();mr!==r?(vr=Df(),vr!==r?(xt=de,Ke=Ee(J,pt,vr),de=Ke):(W=de,de=r)):(W=de,de=r)}else W=de,de=r;else W=de,de=r}re!==r?(xt=O,J=te(J,re),O=J):(W=O,O=r)}else W=O,O=r;return O}function $r(){var O,J,re,de,Ke,pt;if(O=W,e.substr(W,3)===Oe?(J=Oe,W+=3):(J=r,yt===0&&Bt(mt)),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=Ao(),de!==r){for(Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();Ke!==r?(e.substr(W,2)===Et?(pt=Et,W+=2):(pt=r,yt===0&&Bt(Dt)),pt!==r?(xt=O,J=tr(de),O=J):(W=O,O=r)):(W=O,O=r)}else W=O,O=r;else W=O,O=r}else W=O,O=r;return O}function Ph(){var O,J,re,de;return O=W,e.substr(W,2)===pn?(J=pn,W+=2):(J=r,yt===0&&Bt(ui)),J!==r?(re=ya(),re!==r?(e.charCodeAt(W)===41?(de=ce,W++):(de=r,yt===0&&Bt(X)),de!==r?(xt=O,J=qi(re),O=J):(W=O,O=r)):(W=O,O=r)):(W=O,O=r),O}function zA(){var O,J,re,de,Ke,pt;return O=W,e.substr(W,2)===Nn?(J=Nn,W+=2):(J=r,yt===0&&Bt(Xa)),J!==r?(re=gc(),re!==r?(e.substr(W,2)===By?(de=By,W+=2):(de=r,yt===0&&Bt(z1)),de!==r?(Ke=Os(),Ke!==r?(e.charCodeAt(W)===125?(pt=_,W++):(pt=r,yt===0&&Bt(tt)),pt!==r?(xt=O,J=Qo(re,Ke),O=J):(W=O,O=r)):(W=O,O=r)):(W=O,O=r)):(W=O,O=r)):(W=O,O=r),O===r&&(O=W,e.substr(W,2)===Nn?(J=Nn,W+=2):(J=r,yt===0&&Bt(Xa)),J!==r?(re=gc(),re!==r?(e.substr(W,3)===vy?(de=vy,W+=3):(de=r,yt===0&&Bt(Ih)),de!==r?(xt=O,J=Z1(re),O=J):(W=O,O=r)):(W=O,O=r)):(W=O,O=r),O===r&&(O=W,e.substr(W,2)===Nn?(J=Nn,W+=2):(J=r,yt===0&&Bt(Xa)),J!==r?(re=gc(),re!==r?(e.substr(W,2)===To?(de=To,W+=2):(de=r,yt===0&&Bt(Ch)),de!==r?(Ke=Os(),Ke!==r?(e.charCodeAt(W)===125?(pt=_,W++):(pt=r,yt===0&&Bt(tt)),pt!==r?(xt=O,J=wh(re,Ke),O=J):(W=O,O=r)):(W=O,O=r)):(W=O,O=r)):(W=O,O=r)):(W=O,O=r),O===r&&(O=W,e.substr(W,2)===Nn?(J=Nn,W+=2):(J=r,yt===0&&Bt(Xa)),J!==r?(re=gc(),re!==r?(e.substr(W,3)===pu?(de=pu,W+=3):(de=r,yt===0&&Bt(Bh)),de!==r?(xt=O,J=Ng(re),O=J):(W=O,O=r)):(W=O,O=r)):(W=O,O=r),O===r&&(O=W,e.substr(W,2)===Nn?(J=Nn,W+=2):(J=r,yt===0&&Bt(Xa)),J!==r?(re=gc(),re!==r?(e.charCodeAt(W)===125?(de=_,W++):(de=r,yt===0&&Bt(tt)),de!==r?(xt=O,J=Og(re),O=J):(W=O,O=r)):(W=O,O=r)):(W=O,O=r),O===r&&(O=W,e.charCodeAt(W)===36?(J=Lg,W++):(J=r,yt===0&&Bt(Sy)),J!==r?(re=gc(),re!==r?(xt=O,J=Og(re),O=J):(W=O,O=r)):(W=O,O=r)))))),O}function Qy(){var O,J,re;return O=W,J=Wg(),J!==r?(xt=W,re=Ef(J),re?re=void 0:re=r,re!==r?(xt=O,J=Ro(J),O=J):(W=O,O=r)):(W=O,O=r),O}function Wg(){var O,J,re,de,Ke;if(O=W,J=[],re=W,de=W,yt++,Ke=kh(),yt--,Ke===r?de=void 0:(W=de,de=r),de!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&Bt(Rn)),Ke!==r?(xt=re,de=ko(Ke),re=de):(W=re,re=r)):(W=re,re=r),re!==r)for(;re!==r;)J.push(re),re=W,de=W,yt++,Ke=kh(),yt--,Ke===r?de=void 0:(W=de,de=r),de!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&Bt(Rn)),Ke!==r?(xt=re,de=ko(Ke),re=de):(W=re,re=r)):(W=re,re=r);else J=r;return J!==r&&(xt=O,J=uo(J)),O=J,O}function xh(){var O,J,re;if(O=W,J=[],Rl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(vh)),re!==r)for(;re!==r;)J.push(re),Rl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(vh));else J=r;return J!==r&&(xt=O,J=Mg()),O=J,O}function gc(){var O,J,re;if(O=W,J=[],Fl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(Nl)),re!==r)for(;re!==r;)J.push(re),Fl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&Bt(Nl));else J=r;return J!==r&&(xt=O,J=Mg()),O=J,O}function Ty(){var O;return by.test(e.charAt(W))?(O=e.charAt(W),W++):(O=r,yt===0&&Bt(jA)),O}function kh(){var O;return Dy.test(e.charAt(W))?(O=e.charAt(W),W++):(O=r,yt===0&&Bt(Py)),O}function kt(){var O,J;if(O=[],GA.test(e.charAt(W))?(J=e.charAt(W),W++):(J=r,yt===0&&Bt(qA)),J!==r)for(;J!==r;)O.push(J),GA.test(e.charAt(W))?(J=e.charAt(W),W++):(J=r,yt===0&&Bt(qA));else O=r;return O}if(hu=a(),hu!==r&&W===e.length)return hu;throw hu!==r&&W!1}){try{return(0,$$.parse)(e,t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function mE(e,{endSemicolon:t=!1}={}){return e.map(({command:r,type:s},a)=>`${mx(r)}${s===";"?a!==e.length-1||t?";":"":" &"}`).join(" ")}function mx(e){return`${yE(e.chain)}${e.then?` ${FU(e.then)}`:""}`}function FU(e){return`${e.type} ${mx(e.line)}`}function yE(e){return`${OU(e)}${e.then?` ${NU(e.then)}`:""}`}function NU(e){return`${e.type} ${yE(e.chain)}`}function OU(e){switch(e.type){case"command":return`${e.envs.length>0?`${e.envs.map(t=>dx(t)).join(" ")} `:""}${e.args.map(t=>LU(t)).join(" ")}`;case"subshell":return`(${mE(e.subshell)})${e.args.length>0?` ${e.args.map(t=>U2(t)).join(" ")}`:""}`;case"group":return`{ ${mE(e.group,{endSemicolon:!0})} }${e.args.length>0?` ${e.args.map(t=>U2(t)).join(" ")}`:""}`;case"envs":return e.envs.map(t=>dx(t)).join(" ");default:throw new Error(`Unsupported command type: "${e.type}"`)}}function dx(e){return`${e.name}=${e.args[0]?S0(e.args[0]):""}`}function LU(e){switch(e.type){case"redirection":return U2(e);case"argument":return S0(e);default:throw new Error(`Unsupported argument type: "${e.type}"`)}}function U2(e){return`${e.subtype} ${e.args.map(t=>S0(t)).join(" ")}`}function S0(e){return e.segments.map(t=>MU(t)).join("")}function MU(e){let t=(s,a)=>a?`"${s}"`:s,r=s=>s===""?"''":s.match(/[()}<>$|&;"'\n\t ]/)?s.match(/['\t\p{C}]/u)?s.match(/'/)?`"${s.replace(/["$\t\p{C}]/u,W6e)}"`:`$'${s.replace(/[\t\p{C}]/u,tee)}'`:`'${s}'`:s;switch(e.type){case"text":return r(e.text);case"glob":return e.pattern;case"shell":return t(`$(${mE(e.shell)})`,e.quoted);case"variable":return t(typeof e.defaultValue>"u"?typeof e.alternativeValue>"u"?`\${${e.name}}`:e.alternativeValue.length===0?`\${${e.name}:+}`:`\${${e.name}:+${e.alternativeValue.map(s=>S0(s)).join(" ")}}`:e.defaultValue.length===0?`\${${e.name}:-}`:`\${${e.name}:-${e.defaultValue.map(s=>S0(s)).join(" ")}}`,e.quoted);case"arithmetic":return`$(( ${yx(e.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${e.type}"`)}}function yx(e){let t=a=>{switch(a){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${a}"`)}},r=(a,n)=>n?`( ${a} )`:a,s=a=>r(yx(a),!["number","variable"].includes(a.type));switch(e.type){case"number":return String(e.value);case"variable":return e.name;default:return`${s(e.left)} ${t(e.type)} ${s(e.right)}`}}var $$,eee,Y6e,tee,W6e,ree=Ze(()=>{$$=et(X$());eee=new Map([["\f","\\f"],[` +`,"\\n"],["\r","\\r"],[" ","\\t"],["\v","\\v"],["\0","\\0"]]),Y6e=new Map([["\\","\\\\"],["$","\\$"],['"','\\"'],...Array.from(eee,([e,t])=>[e,`"$'${t}'"`])]),tee=e=>eee.get(e)??`\\x${e.charCodeAt(0).toString(16).padStart(2,"0")}`,W6e=e=>Y6e.get(e)??`"$'${tee(e)}'"`});var iee=G((ZPt,nee)=>{"use strict";function V6e(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function b0(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,b0)}V6e(b0,Error);b0.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;Cfe&&(fe=K,le=[]),le.push(Me))}function tt(Me,P){return new b0(Me,null,null,P)}function Fe(Me,P,w){return new b0(b0.buildMessage(Me,P),Me,P,w)}function Qe(){var Me,P,w,D;return Me=K,P=Se(),P!==r?(e.charCodeAt(K)===47?(w=n,K++):(w=r,ge===0&&_(c)),w!==r?(D=Se(),D!==r?($=Me,P=f(P,D),Me=P):(K=Me,Me=r)):(K=Me,Me=r)):(K=Me,Me=r),Me===r&&(Me=K,P=Se(),P!==r&&($=Me,P=p(P)),Me=P),Me}function Se(){var Me,P,w,D;return Me=K,P=je(),P!==r?(e.charCodeAt(K)===64?(w=h,K++):(w=r,ge===0&&_(E)),w!==r?(D=ct(),D!==r?($=Me,P=C(P,D),Me=P):(K=Me,Me=r)):(K=Me,Me=r)):(K=Me,Me=r),Me===r&&(Me=K,P=je(),P!==r&&($=Me,P=S(P)),Me=P),Me}function je(){var Me,P,w,D,y;return Me=K,e.charCodeAt(K)===64?(P=h,K++):(P=r,ge===0&&_(E)),P!==r?(w=Te(),w!==r?(e.charCodeAt(K)===47?(D=n,K++):(D=r,ge===0&&_(c)),D!==r?(y=Te(),y!==r?($=Me,P=x(),Me=P):(K=Me,Me=r)):(K=Me,Me=r)):(K=Me,Me=r)):(K=Me,Me=r),Me===r&&(Me=K,P=Te(),P!==r&&($=Me,P=x()),Me=P),Me}function Te(){var Me,P,w;if(Me=K,P=[],I.test(e.charAt(K))?(w=e.charAt(K),K++):(w=r,ge===0&&_(R)),w!==r)for(;w!==r;)P.push(w),I.test(e.charAt(K))?(w=e.charAt(K),K++):(w=r,ge===0&&_(R));else P=r;return P!==r&&($=Me,P=x()),Me=P,Me}function ct(){var Me,P,w;if(Me=K,P=[],N.test(e.charAt(K))?(w=e.charAt(K),K++):(w=r,ge===0&&_(U)),w!==r)for(;w!==r;)P.push(w),N.test(e.charAt(K))?(w=e.charAt(K),K++):(w=r,ge===0&&_(U));else P=r;return P!==r&&($=Me,P=x()),Me=P,Me}if(pe=a(),pe!==r&&K===e.length)return pe;throw pe!==r&&K{see=et(iee())});var P0=G(($Pt,D0)=>{"use strict";function aee(e){return typeof e>"u"||e===null}function J6e(e){return typeof e=="object"&&e!==null}function z6e(e){return Array.isArray(e)?e:aee(e)?[]:[e]}function Z6e(e,t){var r,s,a,n;if(t)for(n=Object.keys(t),r=0,s=n.length;r{"use strict";function _2(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}_2.prototype=Object.create(Error.prototype);_2.prototype.constructor=_2;_2.prototype.toString=function(t){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!t&&this.mark&&(r+=" "+this.mark.toString()),r};lee.exports=_2});var fee=G((txt,uee)=>{"use strict";var cee=P0();function UU(e,t,r,s,a){this.name=e,this.buffer=t,this.position=r,this.line=s,this.column=a}UU.prototype.getSnippet=function(t,r){var s,a,n,c,f;if(!this.buffer)return null;for(t=t||4,r=r||75,s="",a=this.position;a>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){s=" ... ",a+=5;break}for(n="",c=this.position;cr/2-1){n=" ... ",c-=5;break}return f=this.buffer.slice(a,c),cee.repeat(" ",t)+s+f+n+` +`+cee.repeat(" ",t+this.position-a+s.length)+"^"};UU.prototype.toString=function(t){var r,s="";return this.name&&(s+='in "'+this.name+'" '),s+="at line "+(this.line+1)+", column "+(this.column+1),t||(r=this.getSnippet(),r&&(s+=`: +`+r)),s};uee.exports=UU});var xs=G((rxt,pee)=>{"use strict";var Aee=EE(),eGe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],tGe=["scalar","sequence","mapping"];function rGe(e){var t={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(s){t[String(s)]=r})}),t}function nGe(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if(eGe.indexOf(r)===-1)throw new Aee('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=rGe(t.styleAliases||null),tGe.indexOf(this.kind)===-1)throw new Aee('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}pee.exports=nGe});var x0=G((nxt,dee)=>{"use strict";var hee=P0(),Cx=EE(),iGe=xs();function _U(e,t,r){var s=[];return e.include.forEach(function(a){r=_U(a,t,r)}),e[t].forEach(function(a){r.forEach(function(n,c){n.tag===a.tag&&n.kind===a.kind&&s.push(c)}),r.push(a)}),r.filter(function(a,n){return s.indexOf(n)===-1})}function sGe(){var e={scalar:{},sequence:{},mapping:{},fallback:{}},t,r;function s(a){e[a.kind][a.tag]=e.fallback[a.tag]=a}for(t=0,r=arguments.length;t{"use strict";var oGe=xs();gee.exports=new oGe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}})});var Eee=G((sxt,yee)=>{"use strict";var aGe=xs();yee.exports=new aGe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}})});var Cee=G((oxt,Iee)=>{"use strict";var lGe=xs();Iee.exports=new lGe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}})});var wx=G((axt,wee)=>{"use strict";var cGe=x0();wee.exports=new cGe({explicit:[mee(),Eee(),Cee()]})});var vee=G((lxt,Bee)=>{"use strict";var uGe=xs();function fGe(e){if(e===null)return!0;var t=e.length;return t===1&&e==="~"||t===4&&(e==="null"||e==="Null"||e==="NULL")}function AGe(){return null}function pGe(e){return e===null}Bee.exports=new uGe("tag:yaml.org,2002:null",{kind:"scalar",resolve:fGe,construct:AGe,predicate:pGe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var bee=G((cxt,See)=>{"use strict";var hGe=xs();function dGe(e){if(e===null)return!1;var t=e.length;return t===4&&(e==="true"||e==="True"||e==="TRUE")||t===5&&(e==="false"||e==="False"||e==="FALSE")}function gGe(e){return e==="true"||e==="True"||e==="TRUE"}function mGe(e){return Object.prototype.toString.call(e)==="[object Boolean]"}See.exports=new hGe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:dGe,construct:gGe,predicate:mGe,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})});var Pee=G((uxt,Dee)=>{"use strict";var yGe=P0(),EGe=xs();function IGe(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function CGe(e){return 48<=e&&e<=55}function wGe(e){return 48<=e&&e<=57}function BGe(e){if(e===null)return!1;var t=e.length,r=0,s=!1,a;if(!t)return!1;if(a=e[r],(a==="-"||a==="+")&&(a=e[++r]),a==="0"){if(r+1===t)return!0;if(a=e[++r],a==="b"){for(r++;r=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0"+e.toString(8):"-0"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var Qee=G((fxt,kee)=>{"use strict";var xee=P0(),bGe=xs(),DGe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function PGe(e){return!(e===null||!DGe.test(e)||e[e.length-1]==="_")}function xGe(e){var t,r,s,a;return t=e.replace(/_/g,"").toLowerCase(),r=t[0]==="-"?-1:1,a=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:t.indexOf(":")>=0?(t.split(":").forEach(function(n){a.unshift(parseFloat(n,10))}),t=0,s=1,a.forEach(function(n){t+=n*s,s*=60}),r*t):r*parseFloat(t,10)}var kGe=/^[-+]?[0-9]+e/;function QGe(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(xee.isNegativeZero(e))return"-0.0";return r=e.toString(10),kGe.test(r)?r.replace("e",".e"):r}function TGe(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||xee.isNegativeZero(e))}kee.exports=new bGe("tag:yaml.org,2002:float",{kind:"scalar",resolve:PGe,construct:xGe,predicate:TGe,represent:QGe,defaultStyle:"lowercase"})});var HU=G((Axt,Tee)=>{"use strict";var RGe=x0();Tee.exports=new RGe({include:[wx()],implicit:[vee(),bee(),Pee(),Qee()]})});var jU=G((pxt,Ree)=>{"use strict";var FGe=x0();Ree.exports=new FGe({include:[HU()]})});var Lee=G((hxt,Oee)=>{"use strict";var NGe=xs(),Fee=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Nee=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function OGe(e){return e===null?!1:Fee.exec(e)!==null||Nee.exec(e)!==null}function LGe(e){var t,r,s,a,n,c,f,p=0,h=null,E,C,S;if(t=Fee.exec(e),t===null&&(t=Nee.exec(e)),t===null)throw new Error("Date resolve error");if(r=+t[1],s=+t[2]-1,a=+t[3],!t[4])return new Date(Date.UTC(r,s,a));if(n=+t[4],c=+t[5],f=+t[6],t[7]){for(p=t[7].slice(0,3);p.length<3;)p+="0";p=+p}return t[9]&&(E=+t[10],C=+(t[11]||0),h=(E*60+C)*6e4,t[9]==="-"&&(h=-h)),S=new Date(Date.UTC(r,s,a,n,c,f,p)),h&&S.setTime(S.getTime()-h),S}function MGe(e){return e.toISOString()}Oee.exports=new NGe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:OGe,construct:LGe,instanceOf:Date,represent:MGe})});var Uee=G((dxt,Mee)=>{"use strict";var UGe=xs();function _Ge(e){return e==="<<"||e===null}Mee.exports=new UGe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:_Ge})});var jee=G((gxt,Hee)=>{"use strict";var k0;try{_ee=Ce,k0=_ee("buffer").Buffer}catch{}var _ee,HGe=xs(),GU=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function jGe(e){if(e===null)return!1;var t,r,s=0,a=e.length,n=GU;for(r=0;r64)){if(t<0)return!1;s+=6}return s%8===0}function GGe(e){var t,r,s=e.replace(/[\r\n=]/g,""),a=s.length,n=GU,c=0,f=[];for(t=0;t>16&255),f.push(c>>8&255),f.push(c&255)),c=c<<6|n.indexOf(s.charAt(t));return r=a%4*6,r===0?(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)):r===18?(f.push(c>>10&255),f.push(c>>2&255)):r===12&&f.push(c>>4&255),k0?k0.from?k0.from(f):new k0(f):f}function qGe(e){var t="",r=0,s,a,n=e.length,c=GU;for(s=0;s>18&63],t+=c[r>>12&63],t+=c[r>>6&63],t+=c[r&63]),r=(r<<8)+e[s];return a=n%3,a===0?(t+=c[r>>18&63],t+=c[r>>12&63],t+=c[r>>6&63],t+=c[r&63]):a===2?(t+=c[r>>10&63],t+=c[r>>4&63],t+=c[r<<2&63],t+=c[64]):a===1&&(t+=c[r>>2&63],t+=c[r<<4&63],t+=c[64],t+=c[64]),t}function YGe(e){return k0&&k0.isBuffer(e)}Hee.exports=new HGe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:jGe,construct:GGe,predicate:YGe,represent:qGe})});var qee=G((yxt,Gee)=>{"use strict";var WGe=xs(),VGe=Object.prototype.hasOwnProperty,KGe=Object.prototype.toString;function JGe(e){if(e===null)return!0;var t=[],r,s,a,n,c,f=e;for(r=0,s=f.length;r{"use strict";var ZGe=xs(),XGe=Object.prototype.toString;function $Ge(e){if(e===null)return!0;var t,r,s,a,n,c=e;for(n=new Array(c.length),t=0,r=c.length;t{"use strict";var t5e=xs(),r5e=Object.prototype.hasOwnProperty;function n5e(e){if(e===null)return!0;var t,r=e;for(t in r)if(r5e.call(r,t)&&r[t]!==null)return!1;return!0}function i5e(e){return e!==null?e:{}}Vee.exports=new t5e("tag:yaml.org,2002:set",{kind:"mapping",resolve:n5e,construct:i5e})});var CE=G((Cxt,Jee)=>{"use strict";var s5e=x0();Jee.exports=new s5e({include:[jU()],implicit:[Lee(),Uee()],explicit:[jee(),qee(),Wee(),Kee()]})});var Zee=G((wxt,zee)=>{"use strict";var o5e=xs();function a5e(){return!0}function l5e(){}function c5e(){return""}function u5e(e){return typeof e>"u"}zee.exports=new o5e("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:a5e,construct:l5e,predicate:u5e,represent:c5e})});var $ee=G((Bxt,Xee)=>{"use strict";var f5e=xs();function A5e(e){if(e===null||e.length===0)return!1;var t=e,r=/\/([gim]*)$/.exec(e),s="";return!(t[0]==="/"&&(r&&(s=r[1]),s.length>3||t[t.length-s.length-1]!=="/"))}function p5e(e){var t=e,r=/\/([gim]*)$/.exec(e),s="";return t[0]==="/"&&(r&&(s=r[1]),t=t.slice(1,t.length-s.length-1)),new RegExp(t,s)}function h5e(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}function d5e(e){return Object.prototype.toString.call(e)==="[object RegExp]"}Xee.exports=new f5e("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:A5e,construct:p5e,predicate:d5e,represent:h5e})});var rte=G((vxt,tte)=>{"use strict";var Bx;try{ete=Ce,Bx=ete("esprima")}catch{typeof window<"u"&&(Bx=window.esprima)}var ete,g5e=xs();function m5e(e){if(e===null)return!1;try{var t="("+e+")",r=Bx.parse(t,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function y5e(e){var t="("+e+")",r=Bx.parse(t,{range:!0}),s=[],a;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(n){s.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(s,t.slice(a[0]+1,a[1]-1)):new Function(s,"return "+t.slice(a[0],a[1]))}function E5e(e){return e.toString()}function I5e(e){return Object.prototype.toString.call(e)==="[object Function]"}tte.exports=new g5e("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:m5e,construct:y5e,predicate:I5e,represent:E5e})});var H2=G((bxt,ite)=>{"use strict";var nte=x0();ite.exports=nte.DEFAULT=new nte({include:[CE()],explicit:[Zee(),$ee(),rte()]})});var Bte=G((Dxt,j2)=>{"use strict";var Bp=P0(),fte=EE(),C5e=fee(),Ate=CE(),w5e=H2(),sd=Object.prototype.hasOwnProperty,vx=1,pte=2,hte=3,Sx=4,qU=1,B5e=2,ste=3,v5e=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,S5e=/[\x85\u2028\u2029]/,b5e=/[,\[\]\{\}]/,dte=/^(?:!|!!|![a-z\-]+!)$/i,gte=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function ote(e){return Object.prototype.toString.call(e)}function Yf(e){return e===10||e===13}function T0(e){return e===9||e===32}function fl(e){return e===9||e===32||e===10||e===13}function wE(e){return e===44||e===91||e===93||e===123||e===125}function D5e(e){var t;return 48<=e&&e<=57?e-48:(t=e|32,97<=t&&t<=102?t-97+10:-1)}function P5e(e){return e===120?2:e===117?4:e===85?8:0}function x5e(e){return 48<=e&&e<=57?e-48:-1}function ate(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?` +`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"\x85":e===95?"\xA0":e===76?"\u2028":e===80?"\u2029":""}function k5e(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}var mte=new Array(256),yte=new Array(256);for(Q0=0;Q0<256;Q0++)mte[Q0]=ate(Q0)?1:0,yte[Q0]=ate(Q0);var Q0;function Q5e(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||w5e,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function Ete(e,t){return new fte(t,new C5e(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function Nr(e,t){throw Ete(e,t)}function bx(e,t){e.onWarning&&e.onWarning.call(null,Ete(e,t))}var lte={YAML:function(t,r,s){var a,n,c;t.version!==null&&Nr(t,"duplication of %YAML directive"),s.length!==1&&Nr(t,"YAML directive accepts exactly one argument"),a=/^([0-9]+)\.([0-9]+)$/.exec(s[0]),a===null&&Nr(t,"ill-formed argument of the YAML directive"),n=parseInt(a[1],10),c=parseInt(a[2],10),n!==1&&Nr(t,"unacceptable YAML version of the document"),t.version=s[0],t.checkLineBreaks=c<2,c!==1&&c!==2&&bx(t,"unsupported YAML version of the document")},TAG:function(t,r,s){var a,n;s.length!==2&&Nr(t,"TAG directive accepts exactly two arguments"),a=s[0],n=s[1],dte.test(a)||Nr(t,"ill-formed tag handle (first argument) of the TAG directive"),sd.call(t.tagMap,a)&&Nr(t,'there is a previously declared suffix for "'+a+'" tag handle'),gte.test(n)||Nr(t,"ill-formed tag prefix (second argument) of the TAG directive"),t.tagMap[a]=n}};function id(e,t,r,s){var a,n,c,f;if(t1&&(e.result+=Bp.repeat(` +`,t-1))}function T5e(e,t,r){var s,a,n,c,f,p,h,E,C=e.kind,S=e.result,x;if(x=e.input.charCodeAt(e.position),fl(x)||wE(x)||x===35||x===38||x===42||x===33||x===124||x===62||x===39||x===34||x===37||x===64||x===96||(x===63||x===45)&&(a=e.input.charCodeAt(e.position+1),fl(a)||r&&wE(a)))return!1;for(e.kind="scalar",e.result="",n=c=e.position,f=!1;x!==0;){if(x===58){if(a=e.input.charCodeAt(e.position+1),fl(a)||r&&wE(a))break}else if(x===35){if(s=e.input.charCodeAt(e.position-1),fl(s))break}else{if(e.position===e.lineStart&&Dx(e)||r&&wE(x))break;if(Yf(x))if(p=e.line,h=e.lineStart,E=e.lineIndent,cs(e,!1,-1),e.lineIndent>=t){f=!0,x=e.input.charCodeAt(e.position);continue}else{e.position=c,e.line=p,e.lineStart=h,e.lineIndent=E;break}}f&&(id(e,n,c,!1),WU(e,e.line-p),n=c=e.position,f=!1),T0(x)||(c=e.position+1),x=e.input.charCodeAt(++e.position)}return id(e,n,c,!1),e.result?!0:(e.kind=C,e.result=S,!1)}function R5e(e,t){var r,s,a;if(r=e.input.charCodeAt(e.position),r!==39)return!1;for(e.kind="scalar",e.result="",e.position++,s=a=e.position;(r=e.input.charCodeAt(e.position))!==0;)if(r===39)if(id(e,s,e.position,!0),r=e.input.charCodeAt(++e.position),r===39)s=e.position,e.position++,a=e.position;else return!0;else Yf(r)?(id(e,s,a,!0),WU(e,cs(e,!1,t)),s=a=e.position):e.position===e.lineStart&&Dx(e)?Nr(e,"unexpected end of the document within a single quoted scalar"):(e.position++,a=e.position);Nr(e,"unexpected end of the stream within a single quoted scalar")}function F5e(e,t){var r,s,a,n,c,f;if(f=e.input.charCodeAt(e.position),f!==34)return!1;for(e.kind="scalar",e.result="",e.position++,r=s=e.position;(f=e.input.charCodeAt(e.position))!==0;){if(f===34)return id(e,r,e.position,!0),e.position++,!0;if(f===92){if(id(e,r,e.position,!0),f=e.input.charCodeAt(++e.position),Yf(f))cs(e,!1,t);else if(f<256&&mte[f])e.result+=yte[f],e.position++;else if((c=P5e(f))>0){for(a=c,n=0;a>0;a--)f=e.input.charCodeAt(++e.position),(c=D5e(f))>=0?n=(n<<4)+c:Nr(e,"expected hexadecimal character");e.result+=k5e(n),e.position++}else Nr(e,"unknown escape sequence");r=s=e.position}else Yf(f)?(id(e,r,s,!0),WU(e,cs(e,!1,t)),r=s=e.position):e.position===e.lineStart&&Dx(e)?Nr(e,"unexpected end of the document within a double quoted scalar"):(e.position++,s=e.position)}Nr(e,"unexpected end of the stream within a double quoted scalar")}function N5e(e,t){var r=!0,s,a=e.tag,n,c=e.anchor,f,p,h,E,C,S={},x,I,R,N;if(N=e.input.charCodeAt(e.position),N===91)p=93,C=!1,n=[];else if(N===123)p=125,C=!0,n={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=n),N=e.input.charCodeAt(++e.position);N!==0;){if(cs(e,!0,t),N=e.input.charCodeAt(e.position),N===p)return e.position++,e.tag=a,e.anchor=c,e.kind=C?"mapping":"sequence",e.result=n,!0;r||Nr(e,"missed comma between flow collection entries"),I=x=R=null,h=E=!1,N===63&&(f=e.input.charCodeAt(e.position+1),fl(f)&&(h=E=!0,e.position++,cs(e,!0,t))),s=e.line,vE(e,t,vx,!1,!0),I=e.tag,x=e.result,cs(e,!0,t),N=e.input.charCodeAt(e.position),(E||e.line===s)&&N===58&&(h=!0,N=e.input.charCodeAt(++e.position),cs(e,!0,t),vE(e,t,vx,!1,!0),R=e.result),C?BE(e,n,S,I,x,R):h?n.push(BE(e,null,S,I,x,R)):n.push(x),cs(e,!0,t),N=e.input.charCodeAt(e.position),N===44?(r=!0,N=e.input.charCodeAt(++e.position)):r=!1}Nr(e,"unexpected end of the stream within a flow collection")}function O5e(e,t){var r,s,a=qU,n=!1,c=!1,f=t,p=0,h=!1,E,C;if(C=e.input.charCodeAt(e.position),C===124)s=!1;else if(C===62)s=!0;else return!1;for(e.kind="scalar",e.result="";C!==0;)if(C=e.input.charCodeAt(++e.position),C===43||C===45)qU===a?a=C===43?ste:B5e:Nr(e,"repeat of a chomping mode identifier");else if((E=x5e(C))>=0)E===0?Nr(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Nr(e,"repeat of an indentation width identifier"):(f=t+E-1,c=!0);else break;if(T0(C)){do C=e.input.charCodeAt(++e.position);while(T0(C));if(C===35)do C=e.input.charCodeAt(++e.position);while(!Yf(C)&&C!==0)}for(;C!==0;){for(YU(e),e.lineIndent=0,C=e.input.charCodeAt(e.position);(!c||e.lineIndentf&&(f=e.lineIndent),Yf(C)){p++;continue}if(e.lineIndentt)&&p!==0)Nr(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(vE(e,t,Sx,!0,a)&&(I?S=e.result:x=e.result),I||(BE(e,h,E,C,S,x,n,c),C=S=x=null),cs(e,!0,-1),N=e.input.charCodeAt(e.position)),e.lineIndent>t&&N!==0)Nr(e,"bad indentation of a mapping entry");else if(e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),C=0,S=e.implicitTypes.length;C tag; it should be "'+x.kind+'", not "'+e.kind+'"'),x.resolve(e.result)?(e.result=x.construct(e.result),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):Nr(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):Nr(e,"unknown tag !<"+e.tag+">");return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||E}function H5e(e){var t=e.position,r,s,a,n=!1,c;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};(c=e.input.charCodeAt(e.position))!==0&&(cs(e,!0,-1),c=e.input.charCodeAt(e.position),!(e.lineIndent>0||c!==37));){for(n=!0,c=e.input.charCodeAt(++e.position),r=e.position;c!==0&&!fl(c);)c=e.input.charCodeAt(++e.position);for(s=e.input.slice(r,e.position),a=[],s.length<1&&Nr(e,"directive name must not be less than one character in length");c!==0;){for(;T0(c);)c=e.input.charCodeAt(++e.position);if(c===35){do c=e.input.charCodeAt(++e.position);while(c!==0&&!Yf(c));break}if(Yf(c))break;for(r=e.position;c!==0&&!fl(c);)c=e.input.charCodeAt(++e.position);a.push(e.input.slice(r,e.position))}c!==0&&YU(e),sd.call(lte,s)?lte[s](e,s,a):bx(e,'unknown document directive "'+s+'"')}if(cs(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,cs(e,!0,-1)):n&&Nr(e,"directives end mark is expected"),vE(e,e.lineIndent-1,Sx,!1,!0),cs(e,!0,-1),e.checkLineBreaks&&S5e.test(e.input.slice(t,e.position))&&bx(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Dx(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,cs(e,!0,-1));return}if(e.position"u"&&(r=t,t=null);var s=Ite(e,r);if(typeof t!="function")return s;for(var a=0,n=s.length;a"u"&&(r=t,t=null),Cte(e,t,Bp.extend({schema:Ate},r))}function G5e(e,t){return wte(e,Bp.extend({schema:Ate},t))}j2.exports.loadAll=Cte;j2.exports.load=wte;j2.exports.safeLoadAll=j5e;j2.exports.safeLoad=G5e});var Wte=G((Pxt,zU)=>{"use strict";var q2=P0(),Y2=EE(),q5e=H2(),Y5e=CE(),Qte=Object.prototype.toString,Tte=Object.prototype.hasOwnProperty,W5e=9,G2=10,V5e=13,K5e=32,J5e=33,z5e=34,Rte=35,Z5e=37,X5e=38,$5e=39,e9e=42,Fte=44,t9e=45,Nte=58,r9e=61,n9e=62,i9e=63,s9e=64,Ote=91,Lte=93,o9e=96,Mte=123,a9e=124,Ute=125,Vo={};Vo[0]="\\0";Vo[7]="\\a";Vo[8]="\\b";Vo[9]="\\t";Vo[10]="\\n";Vo[11]="\\v";Vo[12]="\\f";Vo[13]="\\r";Vo[27]="\\e";Vo[34]='\\"';Vo[92]="\\\\";Vo[133]="\\N";Vo[160]="\\_";Vo[8232]="\\L";Vo[8233]="\\P";var l9e=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function c9e(e,t){var r,s,a,n,c,f,p;if(t===null)return{};for(r={},s=Object.keys(t),a=0,n=s.length;a0?e.charCodeAt(n-1):null,S=S&&bte(c,f)}else{for(n=0;ns&&e[C+1]!==" ",C=n);else if(!SE(c))return Px;f=n>0?e.charCodeAt(n-1):null,S=S&&bte(c,f)}h=h||E&&n-C-1>s&&e[C+1]!==" "}return!p&&!h?S&&!a(e)?Hte:jte:r>9&&_te(e)?Px:h?qte:Gte}function d9e(e,t,r,s){e.dump=function(){if(t.length===0)return"''";if(!e.noCompatMode&&l9e.indexOf(t)!==-1)return"'"+t+"'";var a=e.indent*Math.max(1,r),n=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),c=s||e.flowLevel>-1&&r>=e.flowLevel;function f(p){return f9e(e,p)}switch(h9e(t,c,e.indent,n,f)){case Hte:return t;case jte:return"'"+t.replace(/'/g,"''")+"'";case Gte:return"|"+Dte(t,e.indent)+Pte(Ste(t,a));case qte:return">"+Dte(t,e.indent)+Pte(Ste(g9e(t,n),a));case Px:return'"'+m9e(t,n)+'"';default:throw new Y2("impossible error: invalid scalar style")}}()}function Dte(e,t){var r=_te(e)?String(t):"",s=e[e.length-1]===` +`,a=s&&(e[e.length-2]===` +`||e===` +`),n=a?"+":s?"":"-";return r+n+` +`}function Pte(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function g9e(e,t){for(var r=/(\n+)([^\n]*)/g,s=function(){var h=e.indexOf(` +`);return h=h!==-1?h:e.length,r.lastIndex=h,xte(e.slice(0,h),t)}(),a=e[0]===` +`||e[0]===" ",n,c;c=r.exec(e);){var f=c[1],p=c[2];n=p[0]===" ",s+=f+(!a&&!n&&p!==""?` +`:"")+xte(p,t),a=n}return s}function xte(e,t){if(e===""||e[0]===" ")return e;for(var r=/ [^ ]/g,s,a=0,n,c=0,f=0,p="";s=r.exec(e);)f=s.index,f-a>t&&(n=c>a?c:f,p+=` +`+e.slice(a,n),a=n+1),c=f;return p+=` +`,e.length-a>t&&c>a?p+=e.slice(a,c)+` +`+e.slice(c+1):p+=e.slice(a),p.slice(1)}function m9e(e){for(var t="",r,s,a,n=0;n=55296&&r<=56319&&(s=e.charCodeAt(n+1),s>=56320&&s<=57343)){t+=vte((r-55296)*1024+s-56320+65536),n++;continue}a=Vo[r],t+=!a&&SE(r)?e[n]:a||vte(r)}return t}function y9e(e,t,r){var s="",a=e.tag,n,c;for(n=0,c=r.length;n1024&&(E+="? "),E+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),R0(e,t,h,!1,!1)&&(E+=e.dump,s+=E));e.tag=a,e.dump="{"+s+"}"}function C9e(e,t,r,s){var a="",n=e.tag,c=Object.keys(r),f,p,h,E,C,S;if(e.sortKeys===!0)c.sort();else if(typeof e.sortKeys=="function")c.sort(e.sortKeys);else if(e.sortKeys)throw new Y2("sortKeys must be a boolean or a function");for(f=0,p=c.length;f1024,C&&(e.dump&&G2===e.dump.charCodeAt(0)?S+="?":S+="? "),S+=e.dump,C&&(S+=VU(e,t)),R0(e,t+1,E,!0,C)&&(e.dump&&G2===e.dump.charCodeAt(0)?S+=":":S+=": ",S+=e.dump,a+=S));e.tag=n,e.dump=a||"{}"}function kte(e,t,r){var s,a,n,c,f,p;for(a=r?e.explicitTypes:e.implicitTypes,n=0,c=a.length;n tag resolver accepts not "'+p+'" style');e.dump=s}return!0}return!1}function R0(e,t,r,s,a,n){e.tag=null,e.dump=r,kte(e,r,!1)||kte(e,r,!0);var c=Qte.call(e.dump);s&&(s=e.flowLevel<0||e.flowLevel>t);var f=c==="[object Object]"||c==="[object Array]",p,h;if(f&&(p=e.duplicates.indexOf(r),h=p!==-1),(e.tag!==null&&e.tag!=="?"||h||e.indent!==2&&t>0)&&(a=!1),h&&e.usedDuplicates[p])e.dump="*ref_"+p;else{if(f&&h&&!e.usedDuplicates[p]&&(e.usedDuplicates[p]=!0),c==="[object Object]")s&&Object.keys(e.dump).length!==0?(C9e(e,t,e.dump,a),h&&(e.dump="&ref_"+p+e.dump)):(I9e(e,t,e.dump),h&&(e.dump="&ref_"+p+" "+e.dump));else if(c==="[object Array]"){var E=e.noArrayIndent&&t>0?t-1:t;s&&e.dump.length!==0?(E9e(e,E,e.dump,a),h&&(e.dump="&ref_"+p+e.dump)):(y9e(e,E,e.dump),h&&(e.dump="&ref_"+p+" "+e.dump))}else if(c==="[object String]")e.tag!=="?"&&d9e(e,e.dump,t,n);else{if(e.skipInvalid)return!1;throw new Y2("unacceptable kind of an object to dump "+c)}e.tag!==null&&e.tag!=="?"&&(e.dump="!<"+e.tag+"> "+e.dump)}return!0}function w9e(e,t){var r=[],s=[],a,n;for(KU(e,r,s),a=0,n=s.length;a{"use strict";var xx=Bte(),Vte=Wte();function kx(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}Yi.exports.Type=xs();Yi.exports.Schema=x0();Yi.exports.FAILSAFE_SCHEMA=wx();Yi.exports.JSON_SCHEMA=HU();Yi.exports.CORE_SCHEMA=jU();Yi.exports.DEFAULT_SAFE_SCHEMA=CE();Yi.exports.DEFAULT_FULL_SCHEMA=H2();Yi.exports.load=xx.load;Yi.exports.loadAll=xx.loadAll;Yi.exports.safeLoad=xx.safeLoad;Yi.exports.safeLoadAll=xx.safeLoadAll;Yi.exports.dump=Vte.dump;Yi.exports.safeDump=Vte.safeDump;Yi.exports.YAMLException=EE();Yi.exports.MINIMAL_SCHEMA=wx();Yi.exports.SAFE_SCHEMA=CE();Yi.exports.DEFAULT_SCHEMA=H2();Yi.exports.scan=kx("scan");Yi.exports.parse=kx("parse");Yi.exports.compose=kx("compose");Yi.exports.addConstructor=kx("addConstructor")});var zte=G((kxt,Jte)=>{"use strict";var v9e=Kte();Jte.exports=v9e});var Xte=G((Qxt,Zte)=>{"use strict";function S9e(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function F0(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,F0)}S9e(F0,Error);F0.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C({[mt]:Oe})))},fe=function(te){return te},le=function(te){return te},ge=Wa("correct indentation"),pe=" ",De=yn(" ",!1),ye=function(te){return te.length===lr*St},d=function(te){return te.length===(lr+1)*St},ve=function(){return lr++,!0},Ie=function(){return lr--,!0},me=function(){return ha()},ce=Wa("pseudostring"),X=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,be=Xn(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),ke=/^[^\r\n\t ,\][{}:#"']/,it=Xn(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),_=function(){return ha().replace(/^ *| *$/g,"")},tt="--",Fe=yn("--",!1),Qe=/^[a-zA-Z\/0-9]/,Se=Xn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),je=/^[^\r\n\t :,]/,Te=Xn(["\r",` +`," "," ",":",","],!0,!1),ct="null",Me=yn("null",!1),P=function(){return null},w="true",D=yn("true",!1),y=function(){return!0},F="false",z=yn("false",!1),Z=function(){return!1},ee=Wa("string"),se='"',xe=yn('"',!1),Ne=function(){return""},ut=function(te){return te},Ct=function(te){return te.join("")},Yt=/^[^"\\\0-\x1F\x7F]/,ir=Xn(['"',"\\",["\0",""],"\x7F"],!0,!1),Pt='\\"',mn=yn('\\"',!1),Pr=function(){return'"'},Cr="\\\\",Lr=yn("\\\\",!1),on=function(){return"\\"},ci="\\/",Do=yn("\\/",!1),is=function(){return"/"},ao="\\b",Po=yn("\\b",!1),ji=function(){return"\b"},lo="\\f",xo=yn("\\f",!1),FA=function(){return"\f"},df="\\n",mh=yn("\\n",!1),yh=function(){return` +`},co="\\r",qn=yn("\\r",!1),Ns=function(){return"\r"},uo="\\t",ou=yn("\\t",!1),au=function(){return" "},lu="\\u",NA=yn("\\u",!1),OA=function(te,Ee,Oe,mt){return String.fromCharCode(parseInt(`0x${te}${Ee}${Oe}${mt}`))},Aa=/^[0-9a-fA-F]/,pa=Xn([["0","9"],["a","f"],["A","F"]],!1,!1),LA=Wa("blank space"),gr=/^[ \t]/,ko=Xn([" "," "],!1,!1),qa=Wa("white space"),Ue=/^[ \t\n\r]/,wr=Xn([" "," ",` +`,"\r"],!1,!1),gf=`\r +`,MA=yn(`\r +`,!1),UA=` +`,cu=yn(` +`,!1),uu="\r",cc=yn("\r",!1),we=0,Ot=0,uc=[{line:1,column:1}],Oi=0,fo=[],Rt=0,Tn;if("startRule"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');a=s[t.startRule]}function ha(){return e.substring(Ot,we)}function Gi(){return Ka(Ot,we)}function Li(te,Ee){throw Ee=Ee!==void 0?Ee:Ka(Ot,we),mf([Wa(te)],e.substring(Ot,we),Ee)}function Ya(te,Ee){throw Ee=Ee!==void 0?Ee:Ka(Ot,we),Ja(te,Ee)}function yn(te,Ee){return{type:"literal",text:te,ignoreCase:Ee}}function Xn(te,Ee,Oe){return{type:"class",parts:te,inverted:Ee,ignoreCase:Oe}}function fu(){return{type:"any"}}function Eh(){return{type:"end"}}function Wa(te){return{type:"other",description:te}}function Va(te){var Ee=uc[te],Oe;if(Ee)return Ee;for(Oe=te-1;!uc[Oe];)Oe--;for(Ee=uc[Oe],Ee={line:Ee.line,column:Ee.column};OeOi&&(Oi=we,fo=[]),fo.push(te))}function Ja(te,Ee){return new F0(te,null,null,Ee)}function mf(te,Ee,Oe){return new F0(F0.buildMessage(te,Ee),te,Ee,Oe)}function fc(){var te;return te=_A(),te}function Sn(){var te,Ee,Oe;for(te=we,Ee=[],Oe=da();Oe!==r;)Ee.push(Oe),Oe=da();return Ee!==r&&(Ot=te,Ee=n(Ee)),te=Ee,te}function da(){var te,Ee,Oe,mt,Et;return te=we,Ee=Ql(),Ee!==r?(e.charCodeAt(we)===45?(Oe=c,we++):(Oe=r,Rt===0&&$e(f)),Oe!==r?(mt=Fn(),mt!==r?(Et=ga(),Et!==r?(Ot=te,Ee=p(Et),te=Ee):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r),te}function _A(){var te,Ee,Oe;for(te=we,Ee=[],Oe=HA();Oe!==r;)Ee.push(Oe),Oe=HA();return Ee!==r&&(Ot=te,Ee=h(Ee)),te=Ee,te}function HA(){var te,Ee,Oe,mt,Et,Dt,tr,pn,ui;if(te=we,Ee=Fn(),Ee===r&&(Ee=null),Ee!==r){if(Oe=we,e.charCodeAt(we)===35?(mt=E,we++):(mt=r,Rt===0&&$e(C)),mt!==r){if(Et=[],Dt=we,tr=we,Rt++,pn=at(),Rt--,pn===r?tr=void 0:(we=tr,tr=r),tr!==r?(e.length>we?(pn=e.charAt(we),we++):(pn=r,Rt===0&&$e(S)),pn!==r?(tr=[tr,pn],Dt=tr):(we=Dt,Dt=r)):(we=Dt,Dt=r),Dt!==r)for(;Dt!==r;)Et.push(Dt),Dt=we,tr=we,Rt++,pn=at(),Rt--,pn===r?tr=void 0:(we=tr,tr=r),tr!==r?(e.length>we?(pn=e.charAt(we),we++):(pn=r,Rt===0&&$e(S)),pn!==r?(tr=[tr,pn],Dt=tr):(we=Dt,Dt=r)):(we=Dt,Dt=r);else Et=r;Et!==r?(mt=[mt,Et],Oe=mt):(we=Oe,Oe=r)}else we=Oe,Oe=r;if(Oe===r&&(Oe=null),Oe!==r){if(mt=[],Et=ze(),Et!==r)for(;Et!==r;)mt.push(Et),Et=ze();else mt=r;mt!==r?(Ot=te,Ee=x(),te=Ee):(we=te,te=r)}else we=te,te=r}else we=te,te=r;if(te===r&&(te=we,Ee=Ql(),Ee!==r?(Oe=za(),Oe!==r?(mt=Fn(),mt===r&&(mt=null),mt!==r?(e.charCodeAt(we)===58?(Et=I,we++):(Et=r,Rt===0&&$e(R)),Et!==r?(Dt=Fn(),Dt===r&&(Dt=null),Dt!==r?(tr=ga(),tr!==r?(Ot=te,Ee=N(Oe,tr),te=Ee):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r),te===r&&(te=we,Ee=Ql(),Ee!==r?(Oe=ss(),Oe!==r?(mt=Fn(),mt===r&&(mt=null),mt!==r?(e.charCodeAt(we)===58?(Et=I,we++):(Et=r,Rt===0&&$e(R)),Et!==r?(Dt=Fn(),Dt===r&&(Dt=null),Dt!==r?(tr=ga(),tr!==r?(Ot=te,Ee=N(Oe,tr),te=Ee):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r),te===r))){if(te=we,Ee=Ql(),Ee!==r)if(Oe=ss(),Oe!==r)if(mt=Fn(),mt!==r)if(Et=Au(),Et!==r){if(Dt=[],tr=ze(),tr!==r)for(;tr!==r;)Dt.push(tr),tr=ze();else Dt=r;Dt!==r?(Ot=te,Ee=N(Oe,Et),te=Ee):(we=te,te=r)}else we=te,te=r;else we=te,te=r;else we=te,te=r;else we=te,te=r;if(te===r)if(te=we,Ee=Ql(),Ee!==r)if(Oe=ss(),Oe!==r){if(mt=[],Et=we,Dt=Fn(),Dt===r&&(Dt=null),Dt!==r?(e.charCodeAt(we)===44?(tr=U,we++):(tr=r,Rt===0&&$e(K)),tr!==r?(pn=Fn(),pn===r&&(pn=null),pn!==r?(ui=ss(),ui!==r?(Ot=Et,Dt=$(Oe,ui),Et=Dt):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r),Et!==r)for(;Et!==r;)mt.push(Et),Et=we,Dt=Fn(),Dt===r&&(Dt=null),Dt!==r?(e.charCodeAt(we)===44?(tr=U,we++):(tr=r,Rt===0&&$e(K)),tr!==r?(pn=Fn(),pn===r&&(pn=null),pn!==r?(ui=ss(),ui!==r?(Ot=Et,Dt=$(Oe,ui),Et=Dt):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r);else mt=r;mt!==r?(Et=Fn(),Et===r&&(Et=null),Et!==r?(e.charCodeAt(we)===58?(Dt=I,we++):(Dt=r,Rt===0&&$e(R)),Dt!==r?(tr=Fn(),tr===r&&(tr=null),tr!==r?(pn=ga(),pn!==r?(Ot=te,Ee=ie(Oe,mt,pn),te=Ee):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)}else we=te,te=r;else we=te,te=r}return te}function ga(){var te,Ee,Oe,mt,Et,Dt,tr;if(te=we,Ee=we,Rt++,Oe=we,mt=at(),mt!==r?(Et=Ut(),Et!==r?(e.charCodeAt(we)===45?(Dt=c,we++):(Dt=r,Rt===0&&$e(f)),Dt!==r?(tr=Fn(),tr!==r?(mt=[mt,Et,Dt,tr],Oe=mt):(we=Oe,Oe=r)):(we=Oe,Oe=r)):(we=Oe,Oe=r)):(we=Oe,Oe=r),Rt--,Oe!==r?(we=Ee,Ee=void 0):Ee=r,Ee!==r?(Oe=ze(),Oe!==r?(mt=Rn(),mt!==r?(Et=Sn(),Et!==r?(Dt=ma(),Dt!==r?(Ot=te,Ee=fe(Et),te=Ee):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r),te===r&&(te=we,Ee=at(),Ee!==r?(Oe=Rn(),Oe!==r?(mt=_A(),mt!==r?(Et=ma(),Et!==r?(Ot=te,Ee=fe(mt),te=Ee):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r),te===r))if(te=we,Ee=Ac(),Ee!==r){if(Oe=[],mt=ze(),mt!==r)for(;mt!==r;)Oe.push(mt),mt=ze();else Oe=r;Oe!==r?(Ot=te,Ee=le(Ee),te=Ee):(we=te,te=r)}else we=te,te=r;return te}function Ql(){var te,Ee,Oe;for(Rt++,te=we,Ee=[],e.charCodeAt(we)===32?(Oe=pe,we++):(Oe=r,Rt===0&&$e(De));Oe!==r;)Ee.push(Oe),e.charCodeAt(we)===32?(Oe=pe,we++):(Oe=r,Rt===0&&$e(De));return Ee!==r?(Ot=we,Oe=ye(Ee),Oe?Oe=void 0:Oe=r,Oe!==r?(Ee=[Ee,Oe],te=Ee):(we=te,te=r)):(we=te,te=r),Rt--,te===r&&(Ee=r,Rt===0&&$e(ge)),te}function Ut(){var te,Ee,Oe;for(te=we,Ee=[],e.charCodeAt(we)===32?(Oe=pe,we++):(Oe=r,Rt===0&&$e(De));Oe!==r;)Ee.push(Oe),e.charCodeAt(we)===32?(Oe=pe,we++):(Oe=r,Rt===0&&$e(De));return Ee!==r?(Ot=we,Oe=d(Ee),Oe?Oe=void 0:Oe=r,Oe!==r?(Ee=[Ee,Oe],te=Ee):(we=te,te=r)):(we=te,te=r),te}function Rn(){var te;return Ot=we,te=ve(),te?te=void 0:te=r,te}function ma(){var te;return Ot=we,te=Ie(),te?te=void 0:te=r,te}function za(){var te;return te=Tl(),te===r&&(te=pc()),te}function ss(){var te,Ee,Oe;if(te=Tl(),te===r){if(te=we,Ee=[],Oe=Za(),Oe!==r)for(;Oe!==r;)Ee.push(Oe),Oe=Za();else Ee=r;Ee!==r&&(Ot=te,Ee=me()),te=Ee}return te}function Ac(){var te;return te=Mi(),te===r&&(te=vs(),te===r&&(te=Tl(),te===r&&(te=pc()))),te}function Au(){var te;return te=Mi(),te===r&&(te=Tl(),te===r&&(te=Za())),te}function pc(){var te,Ee,Oe,mt,Et,Dt;if(Rt++,te=we,X.test(e.charAt(we))?(Ee=e.charAt(we),we++):(Ee=r,Rt===0&&$e(be)),Ee!==r){for(Oe=[],mt=we,Et=Fn(),Et===r&&(Et=null),Et!==r?(ke.test(e.charAt(we))?(Dt=e.charAt(we),we++):(Dt=r,Rt===0&&$e(it)),Dt!==r?(Et=[Et,Dt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);mt!==r;)Oe.push(mt),mt=we,Et=Fn(),Et===r&&(Et=null),Et!==r?(ke.test(e.charAt(we))?(Dt=e.charAt(we),we++):(Dt=r,Rt===0&&$e(it)),Dt!==r?(Et=[Et,Dt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);Oe!==r?(Ot=te,Ee=_(),te=Ee):(we=te,te=r)}else we=te,te=r;return Rt--,te===r&&(Ee=r,Rt===0&&$e(ce)),te}function Za(){var te,Ee,Oe,mt,Et;if(te=we,e.substr(we,2)===tt?(Ee=tt,we+=2):(Ee=r,Rt===0&&$e(Fe)),Ee===r&&(Ee=null),Ee!==r)if(Qe.test(e.charAt(we))?(Oe=e.charAt(we),we++):(Oe=r,Rt===0&&$e(Se)),Oe!==r){for(mt=[],je.test(e.charAt(we))?(Et=e.charAt(we),we++):(Et=r,Rt===0&&$e(Te));Et!==r;)mt.push(Et),je.test(e.charAt(we))?(Et=e.charAt(we),we++):(Et=r,Rt===0&&$e(Te));mt!==r?(Ot=te,Ee=_(),te=Ee):(we=te,te=r)}else we=te,te=r;else we=te,te=r;return te}function Mi(){var te,Ee;return te=we,e.substr(we,4)===ct?(Ee=ct,we+=4):(Ee=r,Rt===0&&$e(Me)),Ee!==r&&(Ot=te,Ee=P()),te=Ee,te}function vs(){var te,Ee;return te=we,e.substr(we,4)===w?(Ee=w,we+=4):(Ee=r,Rt===0&&$e(D)),Ee!==r&&(Ot=te,Ee=y()),te=Ee,te===r&&(te=we,e.substr(we,5)===F?(Ee=F,we+=5):(Ee=r,Rt===0&&$e(z)),Ee!==r&&(Ot=te,Ee=Z()),te=Ee),te}function Tl(){var te,Ee,Oe,mt;return Rt++,te=we,e.charCodeAt(we)===34?(Ee=se,we++):(Ee=r,Rt===0&&$e(xe)),Ee!==r?(e.charCodeAt(we)===34?(Oe=se,we++):(Oe=r,Rt===0&&$e(xe)),Oe!==r?(Ot=te,Ee=Ne(),te=Ee):(we=te,te=r)):(we=te,te=r),te===r&&(te=we,e.charCodeAt(we)===34?(Ee=se,we++):(Ee=r,Rt===0&&$e(xe)),Ee!==r?(Oe=yf(),Oe!==r?(e.charCodeAt(we)===34?(mt=se,we++):(mt=r,Rt===0&&$e(xe)),mt!==r?(Ot=te,Ee=ut(Oe),te=Ee):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)),Rt--,te===r&&(Ee=r,Rt===0&&$e(ee)),te}function yf(){var te,Ee,Oe;if(te=we,Ee=[],Oe=hc(),Oe!==r)for(;Oe!==r;)Ee.push(Oe),Oe=hc();else Ee=r;return Ee!==r&&(Ot=te,Ee=Ct(Ee)),te=Ee,te}function hc(){var te,Ee,Oe,mt,Et,Dt;return Yt.test(e.charAt(we))?(te=e.charAt(we),we++):(te=r,Rt===0&&$e(ir)),te===r&&(te=we,e.substr(we,2)===Pt?(Ee=Pt,we+=2):(Ee=r,Rt===0&&$e(mn)),Ee!==r&&(Ot=te,Ee=Pr()),te=Ee,te===r&&(te=we,e.substr(we,2)===Cr?(Ee=Cr,we+=2):(Ee=r,Rt===0&&$e(Lr)),Ee!==r&&(Ot=te,Ee=on()),te=Ee,te===r&&(te=we,e.substr(we,2)===ci?(Ee=ci,we+=2):(Ee=r,Rt===0&&$e(Do)),Ee!==r&&(Ot=te,Ee=is()),te=Ee,te===r&&(te=we,e.substr(we,2)===ao?(Ee=ao,we+=2):(Ee=r,Rt===0&&$e(Po)),Ee!==r&&(Ot=te,Ee=ji()),te=Ee,te===r&&(te=we,e.substr(we,2)===lo?(Ee=lo,we+=2):(Ee=r,Rt===0&&$e(xo)),Ee!==r&&(Ot=te,Ee=FA()),te=Ee,te===r&&(te=we,e.substr(we,2)===df?(Ee=df,we+=2):(Ee=r,Rt===0&&$e(mh)),Ee!==r&&(Ot=te,Ee=yh()),te=Ee,te===r&&(te=we,e.substr(we,2)===co?(Ee=co,we+=2):(Ee=r,Rt===0&&$e(qn)),Ee!==r&&(Ot=te,Ee=Ns()),te=Ee,te===r&&(te=we,e.substr(we,2)===uo?(Ee=uo,we+=2):(Ee=r,Rt===0&&$e(ou)),Ee!==r&&(Ot=te,Ee=au()),te=Ee,te===r&&(te=we,e.substr(we,2)===lu?(Ee=lu,we+=2):(Ee=r,Rt===0&&$e(NA)),Ee!==r?(Oe=vi(),Oe!==r?(mt=vi(),mt!==r?(Et=vi(),Et!==r?(Dt=vi(),Dt!==r?(Ot=te,Ee=OA(Oe,mt,Et,Dt),te=Ee):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)):(we=te,te=r)))))))))),te}function vi(){var te;return Aa.test(e.charAt(we))?(te=e.charAt(we),we++):(te=r,Rt===0&&$e(pa)),te}function Fn(){var te,Ee;if(Rt++,te=[],gr.test(e.charAt(we))?(Ee=e.charAt(we),we++):(Ee=r,Rt===0&&$e(ko)),Ee!==r)for(;Ee!==r;)te.push(Ee),gr.test(e.charAt(we))?(Ee=e.charAt(we),we++):(Ee=r,Rt===0&&$e(ko));else te=r;return Rt--,te===r&&(Ee=r,Rt===0&&$e(LA)),te}function dc(){var te,Ee;if(Rt++,te=[],Ue.test(e.charAt(we))?(Ee=e.charAt(we),we++):(Ee=r,Rt===0&&$e(wr)),Ee!==r)for(;Ee!==r;)te.push(Ee),Ue.test(e.charAt(we))?(Ee=e.charAt(we),we++):(Ee=r,Rt===0&&$e(wr));else te=r;return Rt--,te===r&&(Ee=r,Rt===0&&$e(qa)),te}function ze(){var te,Ee,Oe,mt,Et,Dt;if(te=we,Ee=at(),Ee!==r){for(Oe=[],mt=we,Et=Fn(),Et===r&&(Et=null),Et!==r?(Dt=at(),Dt!==r?(Et=[Et,Dt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);mt!==r;)Oe.push(mt),mt=we,Et=Fn(),Et===r&&(Et=null),Et!==r?(Dt=at(),Dt!==r?(Et=[Et,Dt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);Oe!==r?(Ee=[Ee,Oe],te=Ee):(we=te,te=r)}else we=te,te=r;return te}function at(){var te;return e.substr(we,2)===gf?(te=gf,we+=2):(te=r,Rt===0&&$e(MA)),te===r&&(e.charCodeAt(we)===10?(te=UA,we++):(te=r,Rt===0&&$e(cu)),te===r&&(e.charCodeAt(we)===13?(te=uu,we++):(te=r,Rt===0&&$e(cc)))),te}let St=2,lr=0;if(Tn=a(),Tn!==r&&we===e.length)return Tn;throw Tn!==r&&we"u"?!0:typeof e=="object"&&e!==null&&!Array.isArray(e)?Object.keys(e).every(t=>rre(e[t])):!1}function ZU(e,t,r){if(e===null)return`null +`;if(typeof e=="number"||typeof e=="boolean")return`${e.toString()} +`;if(typeof e=="string")return`${ere(e)} +`;if(Array.isArray(e)){if(e.length===0)return`[] +`;let s=" ".repeat(t);return` +${e.map(n=>`${s}- ${ZU(n,t+1,!1)}`).join("")}`}if(typeof e=="object"&&e){let[s,a]=e instanceof Qx?[e.data,!1]:[e,!0],n=" ".repeat(t),c=Object.keys(s);a&&c.sort((p,h)=>{let E=$te.indexOf(p),C=$te.indexOf(h);return E===-1&&C===-1?ph?1:0:E!==-1&&C===-1?-1:E===-1&&C!==-1?1:E-C});let f=c.filter(p=>!rre(s[p])).map((p,h)=>{let E=s[p],C=ere(p),S=ZU(E,t+1,!0),x=h>0||r?n:"",I=C.length>1024?`? ${C} +${x}:`:`${C}:`,R=S.startsWith(` +`)?S:` ${S}`;return`${x}${I}${R}`}).join(t===0?` +`:"")||` +`;return r?` +${f}`:`${f}`}throw new Error(`Unsupported value type (${e})`)}function Al(e){try{let t=ZU(e,0,!1);return t!==` +`?t:""}catch(t){throw t.location&&(t.message=t.message.replace(/(\.)?$/,` (line ${t.location.start.line}, column ${t.location.start.column})$1`)),t}}function P9e(e){return e.endsWith(` +`)||(e+=` +`),(0,tre.parse)(e)}function k9e(e){if(x9e.test(e))return P9e(e);let t=(0,Tx.safeLoad)(e,{schema:Tx.FAILSAFE_SCHEMA,json:!0});if(t==null)return{};if(typeof t!="object")throw new Error(`Expected an indexed object, got a ${typeof t} instead. Does your file follow Yaml's rules?`);if(Array.isArray(t))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return t}function us(e){return k9e(e)}var Tx,tre,D9e,$te,Qx,x9e,nre=Ze(()=>{Tx=et(zte()),tre=et(Xte()),D9e=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,$te=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],Qx=class{constructor(t){this.data=t}};Al.PreserveOrdering=Qx;x9e=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i});var W2={};Vt(W2,{parseResolution:()=>Ex,parseShell:()=>gx,parseSyml:()=>us,stringifyArgument:()=>LU,stringifyArgumentSegment:()=>MU,stringifyArithmeticExpression:()=>yx,stringifyCommand:()=>OU,stringifyCommandChain:()=>yE,stringifyCommandChainThen:()=>NU,stringifyCommandLine:()=>mx,stringifyCommandLineThen:()=>FU,stringifyEnvSegment:()=>dx,stringifyRedirectArgument:()=>U2,stringifyResolution:()=>Ix,stringifyShell:()=>mE,stringifyShellLine:()=>mE,stringifySyml:()=>Al,stringifyValueArgument:()=>S0});var Sc=Ze(()=>{ree();oee();nre()});var sre=G((Oxt,XU)=>{"use strict";var Q9e=e=>{let t=!1,r=!1,s=!1;for(let a=0;a{if(!(typeof e=="string"||Array.isArray(e)))throw new TypeError("Expected the input to be `string | string[]`");t=Object.assign({pascalCase:!1},t);let r=a=>t.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(e)?e=e.map(a=>a.trim()).filter(a=>a.length).join("-"):e=e.trim(),e.length===0?"":e.length===1?t.pascalCase?e.toUpperCase():e.toLowerCase():(e!==e.toLowerCase()&&(e=Q9e(e)),e=e.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,a=>a.toUpperCase()),r(e))};XU.exports=ire;XU.exports.default=ire});var ore=G((Lxt,T9e)=>{T9e.exports=[{name:"Agola CI",constant:"AGOLA",env:"AGOLA_GIT_REF",pr:"AGOLA_PULL_REQUEST_ID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"TF_BUILD",pr:{BUILD_REASON:"PullRequest"}},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"Earthly",constant:"EARTHLY",env:"EARTHLY_CI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"Gerrit",constant:"GERRIT",env:"GERRIT_PROJECT"},{name:"Gitea Actions",constant:"GITEA_ACTIONS",env:"GITEA_ACTIONS"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Google Cloud Build",constant:"GOOGLE_CLOUD_BUILD",env:"BUILDER_OUTPUT"},{name:"Harness CI",constant:"HARNESS",env:"HARNESS_BUILD_ID"},{name:"Heroku",constant:"HEROKU",env:{env:"NODE",includes:"/app/.heroku/node/bin/node"}},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Prow",constant:"PROW",env:"PROW_JOB_ID"},{name:"ReleaseHub",constant:"RELEASEHUB",env:"RELEASE_BUILD_ID"},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Sourcehut",constant:"SOURCEHUT",env:{CI_NAME:"sourcehut"}},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vela",constant:"VELA",env:"VELA",pr:{VELA_PULL_REQUEST:"1"}},{name:"Vercel",constant:"VERCEL",env:{any:["NOW_BUILDER","VERCEL"]},pr:"VERCEL_GIT_PULL_REQUEST_ID"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"},{name:"Woodpecker",constant:"WOODPECKER",env:{CI:"woodpecker"},pr:{CI_BUILD_EVENT:"pull_request"}},{name:"Xcode Cloud",constant:"XCODE_CLOUD",env:"CI_XCODE_PROJECT",pr:"CI_PULL_REQUEST_NUMBER"},{name:"Xcode Server",constant:"XCODE_SERVER",env:"XCS"}]});var N0=G(Wl=>{"use strict";var lre=ore(),ks=process.env;Object.defineProperty(Wl,"_vendors",{value:lre.map(function(e){return e.constant})});Wl.name=null;Wl.isPR=null;lre.forEach(function(e){let r=(Array.isArray(e.env)?e.env:[e.env]).every(function(s){return are(s)});if(Wl[e.constant]=r,!!r)switch(Wl.name=e.name,typeof e.pr){case"string":Wl.isPR=!!ks[e.pr];break;case"object":"env"in e.pr?Wl.isPR=e.pr.env in ks&&ks[e.pr.env]!==e.pr.ne:"any"in e.pr?Wl.isPR=e.pr.any.some(function(s){return!!ks[s]}):Wl.isPR=are(e.pr);break;default:Wl.isPR=null}});Wl.isCI=!!(ks.CI!=="false"&&(ks.BUILD_ID||ks.BUILD_NUMBER||ks.CI||ks.CI_APP_ID||ks.CI_BUILD_ID||ks.CI_BUILD_NUMBER||ks.CI_NAME||ks.CONTINUOUS_INTEGRATION||ks.RUN_ID||Wl.name));function are(e){return typeof e=="string"?!!ks[e]:"env"in e?ks[e.env]&&ks[e.env].includes(e.includes):"any"in e?e.any.some(function(t){return!!ks[t]}):Object.keys(e).every(function(t){return ks[t]===e[t]})}});var ii,Cn,O0,$U,Rx,cre,e_,t_,Fx=Ze(()=>{(function(e){e.StartOfInput="\0",e.EndOfInput="",e.EndOfPartialInput=""})(ii||(ii={}));(function(e){e[e.InitialNode=0]="InitialNode",e[e.SuccessNode=1]="SuccessNode",e[e.ErrorNode=2]="ErrorNode",e[e.CustomNode=3]="CustomNode"})(Cn||(Cn={}));O0=-1,$U=/^(-h|--help)(?:=([0-9]+))?$/,Rx=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,cre=/^-[a-zA-Z]{2,}$/,e_=/^([^=]+)=([\s\S]*)$/,t_=process.env.DEBUG_CLI==="1"});var ot,bE,Nx,r_,Ox=Ze(()=>{Fx();ot=class extends Error{constructor(t){super(t),this.clipanion={type:"usage"},this.name="UsageError"}},bE=class extends Error{constructor(t,r){if(super(),this.input=t,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(s=>s.reason!==null&&s.reason===r[0].reason)){let[{reason:s}]=this.candidates;this.message=`${s} + +${this.candidates.map(({usage:a})=>`$ ${a}`).join(` +`)}`}else if(this.candidates.length===1){let[{usage:s}]=this.candidates;this.message=`Command not found; did you mean: + +$ ${s} +${r_(t)}`}else this.message=`Command not found; did you mean one of: + +${this.candidates.map(({usage:s},a)=>`${`${a}.`.padStart(4)} ${s}`).join(` +`)} + +${r_(t)}`}},Nx=class extends Error{constructor(t,r){super(),this.input=t,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: + +${this.usages.map((s,a)=>`${`${a}.`.padStart(4)} ${s}`).join(` +`)} + +${r_(t)}`}},r_=e=>`While running ${e.filter(t=>t!==ii.EndOfInput&&t!==ii.EndOfPartialInput).map(t=>{let r=JSON.stringify(t);return t.match(/\s/)||t.length===0||r!==`"${t}"`?r:t}).join(" ")}`});function R9e(e){let t=e.split(` +`),r=t.filter(a=>a.match(/\S/)),s=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return t.map(a=>a.slice(s).trimRight()).join(` +`)}function Ko(e,{format:t,paragraphs:r}){return e=e.replace(/\r\n?/g,` +`),e=R9e(e),e=e.replace(/^\n+|\n+$/g,""),e=e.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 + +`),e=e.replace(/\n(\n)?\n*/g,(s,a)=>a||" "),r&&(e=e.split(/\n/).map(s=>{let a=s.match(/^\s*[*-][\t ]+(.*)/);if(!a)return s.match(/(.{1,80})(?: |$)/g).join(` +`);let n=s.length-s.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((c,f)=>" ".repeat(n)+(f===0?"- ":" ")+c).join(` +`)}).join(` + +`)),e=e.replace(/(`+)((?:.|[\n])*?)\1/g,(s,a,n)=>t.code(a+n+a)),e=e.replace(/(\*\*)((?:.|[\n])*?)\1/g,(s,a,n)=>t.bold(a+n+a)),e?`${e} +`:""}var n_,ure,fre,i_=Ze(()=>{n_=Array(80).fill("\u2501");for(let e=0;e<=24;++e)n_[n_.length-e]=`\x1B[38;5;${232+e}m\u2501`;ure={header:e=>`\x1B[1m\u2501\u2501\u2501 ${e}${e.length<75?` ${n_.slice(e.length+5).join("")}`:":"}\x1B[0m`,bold:e=>`\x1B[1m${e}\x1B[22m`,error:e=>`\x1B[31m\x1B[1m${e}\x1B[22m\x1B[39m`,code:e=>`\x1B[36m${e}\x1B[39m`},fre={header:e=>e,bold:e=>e,error:e=>e,code:e=>e}});function va(e){return{...e,[V2]:!0}}function Wf(e,t){return typeof e>"u"?[e,t]:typeof e=="object"&&e!==null&&!Array.isArray(e)?[void 0,e]:[e,t]}function Lx(e,{mergeName:t=!1}={}){let r=e.match(/^([^:]+): (.*)$/m);if(!r)return"validation failed";let[,s,a]=r;return t&&(a=a[0].toLowerCase()+a.slice(1)),a=s!=="."||!t?`${s.replace(/^\.(\[|$)/,"$1")}: ${a}`:`: ${a}`,a}function K2(e,t){return t.length===1?new ot(`${e}${Lx(t[0],{mergeName:!0})}`):new ot(`${e}: +${t.map(r=>` +- ${Lx(r)}`).join("")}`)}function L0(e,t,r){if(typeof r>"u")return t;let s=[],a=[],n=f=>{let p=t;return t=f,n.bind(null,p)};if(!r(t,{errors:s,coercions:a,coercion:n}))throw K2(`Invalid value for ${e}`,s);for(let[,f]of a)f();return t}var V2,vp=Ze(()=>{Ox();V2=Symbol("clipanion/isOption")});var qs={};Vt(qs,{KeyRelationship:()=>Vf,TypeAssertionError:()=>ad,applyCascade:()=>z2,as:()=>X9e,assert:()=>J9e,assertWithErrors:()=>z9e,cascade:()=>ld,fn:()=>$9e,hasAtLeastOneKey:()=>f_,hasExactLength:()=>gre,hasForbiddenKeys:()=>yqe,hasKeyRelationship:()=>X2,hasMaxLength:()=>tqe,hasMinLength:()=>eqe,hasMutuallyExclusiveKeys:()=>Eqe,hasRequiredKeys:()=>mqe,hasUniqueItems:()=>rqe,isArray:()=>Mx,isAtLeast:()=>c_,isAtMost:()=>sqe,isBase64:()=>pqe,isBoolean:()=>H9e,isDate:()=>G9e,isDict:()=>W9e,isEnum:()=>Qs,isHexColor:()=>Aqe,isISO8601:()=>fqe,isInExclusiveRange:()=>aqe,isInInclusiveRange:()=>oqe,isInstanceOf:()=>K9e,isInteger:()=>u_,isJSON:()=>hqe,isLiteral:()=>pre,isLowerCase:()=>lqe,isMap:()=>Y9e,isNegative:()=>nqe,isNullable:()=>gqe,isNumber:()=>a_,isObject:()=>hre,isOneOf:()=>l_,isOptional:()=>dqe,isPartial:()=>V9e,isPayload:()=>j9e,isPositive:()=>iqe,isRecord:()=>_x,isSet:()=>q9e,isString:()=>Jf,isTuple:()=>Ux,isUUID4:()=>uqe,isUnknown:()=>o_,isUpperCase:()=>cqe,makeTrait:()=>dre,makeValidator:()=>Wr,matchesRegExp:()=>Sp,softAssert:()=>Z9e});function si(e){return e===null?"null":e===void 0?"undefined":e===""?"an empty string":typeof e=="symbol"?`<${e.toString()}>`:Array.isArray(e)?"an array":JSON.stringify(e)}function DE(e,t){if(e.length===0)return"nothing";if(e.length===1)return si(e[0]);let r=e.slice(0,-1),s=e[e.length-1],a=e.length>2?`, ${t} `:` ${t} `;return`${r.map(n=>si(n)).join(", ")}${a}${si(s)}`}function od(e,t){var r,s,a;return typeof t=="number"?`${(r=e?.p)!==null&&r!==void 0?r:"."}[${t}]`:F9e.test(t)?`${(s=e?.p)!==null&&s!==void 0?s:""}.${t}`:`${(a=e?.p)!==null&&a!==void 0?a:"."}[${JSON.stringify(t)}]`}function s_(e,t,r){return e===1?t:r}function Er({errors:e,p:t}={},r){return e?.push(`${t??"."}: ${r}`),!1}function U9e(e,t){return r=>{e[t]=r}}function Kf(e,t){return r=>{let s=e[t];return e[t]=r,Kf(e,t).bind(null,s)}}function J2(e,t,r){let s=()=>(e(r()),a),a=()=>(e(t),s);return s}function o_(){return Wr({test:(e,t)=>!0})}function pre(e){return Wr({test:(t,r)=>t!==e?Er(r,`Expected ${si(e)} (got ${si(t)})`):!0})}function Jf(){return Wr({test:(e,t)=>typeof e!="string"?Er(t,`Expected a string (got ${si(e)})`):!0})}function Qs(e){let t=Array.isArray(e)?e:Object.values(e),r=t.every(a=>typeof a=="string"||typeof a=="number"),s=new Set(t);return s.size===1?pre([...s][0]):Wr({test:(a,n)=>s.has(a)?!0:r?Er(n,`Expected one of ${DE(t,"or")} (got ${si(a)})`):Er(n,`Expected a valid enumeration value (got ${si(a)})`)})}function H9e(){return Wr({test:(e,t)=>{var r;if(typeof e!="boolean"){if(typeof t?.coercions<"u"){if(typeof t?.coercion>"u")return Er(t,"Unbound coercion result");let s=_9e.get(e);if(typeof s<"u")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:".",t.coercion.bind(null,s)]),!0}return Er(t,`Expected a boolean (got ${si(e)})`)}return!0}})}function a_(){return Wr({test:(e,t)=>{var r;if(typeof e!="number"){if(typeof t?.coercions<"u"){if(typeof t?.coercion>"u")return Er(t,"Unbound coercion result");let s;if(typeof e=="string"){let a;try{a=JSON.parse(e)}catch{}if(typeof a=="number")if(JSON.stringify(a)===e)s=a;else return Er(t,`Received a number that can't be safely represented by the runtime (${e})`)}if(typeof s<"u")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:".",t.coercion.bind(null,s)]),!0}return Er(t,`Expected a number (got ${si(e)})`)}return!0}})}function j9e(e){return Wr({test:(t,r)=>{var s;if(typeof r?.coercions>"u")return Er(r,"The isPayload predicate can only be used with coercion enabled");if(typeof r.coercion>"u")return Er(r,"Unbound coercion result");if(typeof t!="string")return Er(r,`Expected a string (got ${si(t)})`);let a;try{a=JSON.parse(t)}catch{return Er(r,`Expected a JSON string (got ${si(t)})`)}let n={value:a};return e(a,Object.assign(Object.assign({},r),{coercion:Kf(n,"value")}))?(r.coercions.push([(s=r.p)!==null&&s!==void 0?s:".",r.coercion.bind(null,n.value)]),!0):!1}})}function G9e(){return Wr({test:(e,t)=>{var r;if(!(e instanceof Date)){if(typeof t?.coercions<"u"){if(typeof t?.coercion>"u")return Er(t,"Unbound coercion result");let s;if(typeof e=="string"&&Are.test(e))s=new Date(e);else{let a;if(typeof e=="string"){let n;try{n=JSON.parse(e)}catch{}typeof n=="number"&&(a=n)}else typeof e=="number"&&(a=e);if(typeof a<"u")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))s=new Date(a*1e3);else return Er(t,`Received a timestamp that can't be safely represented by the runtime (${e})`)}if(typeof s<"u")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:".",t.coercion.bind(null,s)]),!0}return Er(t,`Expected a date (got ${si(e)})`)}return!0}})}function Mx(e,{delimiter:t}={}){return Wr({test:(r,s)=>{var a;let n=r;if(typeof r=="string"&&typeof t<"u"&&typeof s?.coercions<"u"){if(typeof s?.coercion>"u")return Er(s,"Unbound coercion result");r=r.split(t)}if(!Array.isArray(r))return Er(s,`Expected an array (got ${si(r)})`);let c=!0;for(let f=0,p=r.length;f{var n,c;if(Object.getPrototypeOf(s).toString()==="[object Set]")if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return Er(a,"Unbound coercion result");let f=[...s],p=[...s];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,C)=>E!==f[C])?new Set(p):s;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",J2(a.coercion,s,h)]),!0}else{let f=!0;for(let p of s)if(f=e(p,Object.assign({},a))&&f,!f&&a?.errors==null)break;return f}if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return Er(a,"Unbound coercion result");let f={value:s};return r(s,Object.assign(Object.assign({},a),{coercion:Kf(f,"value")}))?(a.coercions.push([(c=a.p)!==null&&c!==void 0?c:".",J2(a.coercion,s,()=>new Set(f.value))]),!0):!1}return Er(a,`Expected a set (got ${si(s)})`)}})}function Y9e(e,t){let r=Mx(Ux([e,t])),s=_x(t,{keys:e});return Wr({test:(a,n)=>{var c,f,p;if(Object.getPrototypeOf(a).toString()==="[object Map]")if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return Er(n,"Unbound coercion result");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let C=()=>E.some((S,x)=>S[0]!==h[x][0]||S[1]!==h[x][1])?new Map(E):a;return n.coercions.push([(c=n.p)!==null&&c!==void 0?c:".",J2(n.coercion,a,C)]),!0}else{let h=!0;for(let[E,C]of a)if(h=e(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=t(C,Object.assign(Object.assign({},n),{p:od(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return Er(n,"Unbound coercion result");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(f=n.p)!==null&&f!==void 0?f:".",J2(n.coercion,a,()=>new Map(h.value))]),!0):!1:s(a,Object.assign(Object.assign({},n),{coercion:Kf(h,"value")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:".",J2(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return Er(n,`Expected a map (got ${si(a)})`)}})}function Ux(e,{delimiter:t}={}){let r=gre(e.length);return Wr({test:(s,a)=>{var n;if(typeof s=="string"&&typeof t<"u"&&typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return Er(a,"Unbound coercion result");s=s.split(t),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)])}if(!Array.isArray(s))return Er(a,`Expected a tuple (got ${si(s)})`);let c=r(s,Object.assign({},a));for(let f=0,p=s.length;f{var n;if(Array.isArray(s)&&typeof a?.coercions<"u")return typeof a?.coercion>"u"?Er(a,"Unbound coercion result"):r(s,Object.assign(Object.assign({},a),{coercion:void 0}))?(s=Object.fromEntries(s),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)]),!0):!1;if(typeof s!="object"||s===null)return Er(a,`Expected an object (got ${si(s)})`);let c=Object.keys(s),f=!0;for(let p=0,h=c.length;p{if(typeof a!="object"||a===null)return Er(n,`Expected an object (got ${si(a)})`);let c=new Set([...r,...Object.keys(a)]),f={},p=!0;for(let h of c){if(h==="constructor"||h==="__proto__")p=Er(Object.assign(Object.assign({},n),{p:od(n,h)}),"Unsafe property name");else{let E=Object.prototype.hasOwnProperty.call(e,h)?e[h]:void 0,C=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<"u"?p=E(C,Object.assign(Object.assign({},n),{p:od(n,h),coercion:Kf(a,h)}))&&p:t===null?p=Er(Object.assign(Object.assign({},n),{p:od(n,h)}),`Extraneous property (got ${si(C)})`):Object.defineProperty(f,h,{enumerable:!0,get:()=>C,set:U9e(a,h)})}if(!p&&n?.errors==null)break}return t!==null&&(p||n?.errors!=null)&&(p=t(f,n)&&p),p}});return Object.assign(s,{properties:e})}function V9e(e){return hre(e,{extra:_x(o_())})}function dre(e){return()=>e}function Wr({test:e}){return dre(e)()}function J9e(e,t){if(!t(e))throw new ad}function z9e(e,t){let r=[];if(!t(e,{errors:r}))throw new ad({errors:r})}function Z9e(e,t){}function X9e(e,t,{coerce:r=!1,errors:s,throw:a}={}){let n=s?[]:void 0;if(!r){if(t(e,{errors:n}))return a?e:{value:e,errors:void 0};if(a)throw new ad({errors:n});return{value:void 0,errors:n??!0}}let c={value:e},f=Kf(c,"value"),p=[];if(!t(e,{errors:n,coercion:f,coercions:p})){if(a)throw new ad({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?c.value:{value:c.value,errors:void 0}}function $9e(e,t){let r=Ux(e);return(...s)=>{if(!r(s))throw new ad;return t(...s)}}function eqe(e){return Wr({test:(t,r)=>t.length>=e?!0:Er(r,`Expected to have a length of at least ${e} elements (got ${t.length})`)})}function tqe(e){return Wr({test:(t,r)=>t.length<=e?!0:Er(r,`Expected to have a length of at most ${e} elements (got ${t.length})`)})}function gre(e){return Wr({test:(t,r)=>t.length!==e?Er(r,`Expected to have a length of exactly ${e} elements (got ${t.length})`):!0})}function rqe({map:e}={}){return Wr({test:(t,r)=>{let s=new Set,a=new Set;for(let n=0,c=t.length;ne<=0?!0:Er(t,`Expected to be negative (got ${e})`)})}function iqe(){return Wr({test:(e,t)=>e>=0?!0:Er(t,`Expected to be positive (got ${e})`)})}function c_(e){return Wr({test:(t,r)=>t>=e?!0:Er(r,`Expected to be at least ${e} (got ${t})`)})}function sqe(e){return Wr({test:(t,r)=>t<=e?!0:Er(r,`Expected to be at most ${e} (got ${t})`)})}function oqe(e,t){return Wr({test:(r,s)=>r>=e&&r<=t?!0:Er(s,`Expected to be in the [${e}; ${t}] range (got ${r})`)})}function aqe(e,t){return Wr({test:(r,s)=>r>=e&&rt!==Math.round(t)?Er(r,`Expected to be an integer (got ${t})`):!e&&!Number.isSafeInteger(t)?Er(r,`Expected to be a safe integer (got ${t})`):!0})}function Sp(e){return Wr({test:(t,r)=>e.test(t)?!0:Er(r,`Expected to match the pattern ${e.toString()} (got ${si(t)})`)})}function lqe(){return Wr({test:(e,t)=>e!==e.toLowerCase()?Er(t,`Expected to be all-lowercase (got ${e})`):!0})}function cqe(){return Wr({test:(e,t)=>e!==e.toUpperCase()?Er(t,`Expected to be all-uppercase (got ${e})`):!0})}function uqe(){return Wr({test:(e,t)=>M9e.test(e)?!0:Er(t,`Expected to be a valid UUID v4 (got ${si(e)})`)})}function fqe(){return Wr({test:(e,t)=>Are.test(e)?!0:Er(t,`Expected to be a valid ISO 8601 date string (got ${si(e)})`)})}function Aqe({alpha:e=!1}){return Wr({test:(t,r)=>(e?N9e.test(t):O9e.test(t))?!0:Er(r,`Expected to be a valid hexadecimal color string (got ${si(t)})`)})}function pqe(){return Wr({test:(e,t)=>L9e.test(e)?!0:Er(t,`Expected to be a valid base 64 string (got ${si(e)})`)})}function hqe(e=o_()){return Wr({test:(t,r)=>{let s;try{s=JSON.parse(t)}catch{return Er(r,`Expected to be a valid JSON string (got ${si(t)})`)}return e(s,r)}})}function ld(e,...t){let r=Array.isArray(t[0])?t[0]:t;return Wr({test:(s,a)=>{var n,c;let f={value:s},p=typeof a?.coercions<"u"?Kf(f,"value"):void 0,h=typeof a?.coercions<"u"?[]:void 0;if(!e(s,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<"u")for(let[,C]of h)E.push(C());try{if(typeof a?.coercions<"u"){if(f.value!==s){if(typeof a?.coercion>"u")return Er(a,"Unbound coercion result");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,f.value)])}(c=a?.coercions)===null||c===void 0||c.push(...h)}return r.every(C=>C(f.value,a))}finally{for(let C of E)C()}}})}function z2(e,...t){let r=Array.isArray(t[0])?t[0]:t;return ld(e,r)}function dqe(e){return Wr({test:(t,r)=>typeof t>"u"?!0:e(t,r)})}function gqe(e){return Wr({test:(t,r)=>t===null?!0:e(t,r)})}function mqe(e,t){var r;let s=new Set(e),a=Z2[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)||p.push(h);return p.length>0?Er(c,`Missing required ${s_(p.length,"property","properties")} ${DE(p,"and")}`):!0}})}function f_(e,t){var r;let s=new Set(e),a=Z2[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>Object.keys(n).some(h=>a(s,h,n))?!0:Er(c,`Missing at least one property from ${DE(Array.from(s),"or")}`)})}function yqe(e,t){var r;let s=new Set(e),a=Z2[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>0?Er(c,`Forbidden ${s_(p.length,"property","properties")} ${DE(p,"and")}`):!0}})}function Eqe(e,t){var r;let s=new Set(e),a=Z2[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>1?Er(c,`Mutually exclusive properties ${DE(p,"and")}`):!0}})}function X2(e,t,r,s){var a,n;let c=new Set((a=s?.ignore)!==null&&a!==void 0?a:[]),f=Z2[(n=s?.missingIf)!==null&&n!==void 0?n:"missing"],p=new Set(r),h=Iqe[t],E=t===Vf.Forbids?"or":"and";return Wr({test:(C,S)=>{let x=new Set(Object.keys(C));if(!f(x,e,C)||c.has(C[e]))return!0;let I=[];for(let R of p)(f(x,R,C)&&!c.has(C[R]))!==h.expect&&I.push(R);return I.length>=1?Er(S,`Property "${e}" ${h.message} ${s_(I.length,"property","properties")} ${DE(I,E)}`):!0}})}var F9e,N9e,O9e,L9e,M9e,Are,_9e,K9e,l_,ad,Z2,Vf,Iqe,Jo=Ze(()=>{F9e=/^[a-zA-Z_][a-zA-Z0-9_]*$/;N9e=/^#[0-9a-f]{6}$/i,O9e=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,L9e=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,M9e=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Are=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/;_9e=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]);K9e=e=>Wr({test:(t,r)=>t instanceof e?!0:Er(r,`Expected an instance of ${e.name} (got ${si(t)})`)}),l_=(e,{exclusive:t=!1}={})=>Wr({test:(r,s)=>{var a,n,c;let f=[],p=typeof s?.errors<"u"?[]:void 0;for(let h=0,E=e.length;h1?Er(s,`Expected to match exactly a single predicate (matched ${f.join(", ")})`):(c=s?.errors)===null||c===void 0||c.push(...p),!1}});ad=class extends Error{constructor({errors:t}={}){let r="Type mismatch";if(t&&t.length>0){r+=` +`;for(let s of t)r+=` +- ${s}`}super(r)}};Z2={missing:(e,t)=>e.has(t),undefined:(e,t,r)=>e.has(t)&&typeof r[t]<"u",nil:(e,t,r)=>e.has(t)&&r[t]!=null,falsy:(e,t,r)=>e.has(t)&&!!r[t]};(function(e){e.Forbids="Forbids",e.Requires="Requires"})(Vf||(Vf={}));Iqe={[Vf.Forbids]:{expect:!1,message:"forbids using"},[Vf.Requires]:{expect:!0,message:"requires using"}}});var st,cd=Ze(()=>{vp();st=class{constructor(){this.help=!1}static Usage(t){return t}async catch(t){throw t}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:c}=await Promise.resolve().then(()=>(Jo(),qs)),f=c(a(n()),r),p=[],h=[];if(!f(this,{errors:p,coercions:h}))throw K2("Invalid option schema",p);for(let[,C]of h)C()}else if(r!=null)throw new Error("Invalid command schema");let s=await this.execute();return typeof s<"u"?s:0}};st.isOption=V2;st.Default=[]});function pl(e){t_&&console.log(e)}function yre(){let e={nodes:[]};for(let t=0;t{if(t.has(s))return;t.add(s);let a=e.nodes[s];for(let c of Object.values(a.statics))for(let{to:f}of c)r(f);for(let[,{to:c}]of a.dynamics)r(c);for(let{to:c}of a.shortcuts)r(c);let n=new Set(a.shortcuts.map(({to:c})=>c));for(;a.shortcuts.length>0;){let{to:c}=a.shortcuts.shift(),f=e.nodes[c];for(let[p,h]of Object.entries(f.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let C of h)E.some(({to:S})=>C.to===S)||E.push(C)}for(let[p,h]of f.dynamics)a.dynamics.some(([E,{to:C}])=>p===E&&h.to===C)||a.dynamics.push([p,h]);for(let p of f.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(Cn.InitialNode)}function Bqe(e,{prefix:t=""}={}){if(t_){pl(`${t}Nodes are:`);for(let r=0;rE!==Cn.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===Cn.ErrorNode))throw new bE(t,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));s=bqe(h)}if(s.length>0){pl(" Results:");for(let n of s)pl(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else pl(" No results");return s}function Sqe(e,t,{endToken:r=ii.EndOfInput}={}){let s=vqe(e,[...t,r]);return Dqe(t,s.map(({state:a})=>a))}function bqe(e){let t=0;for(let{state:r}of e)r.path.length>t&&(t=r.path.length);return e.filter(({state:r})=>r.path.length===t)}function Dqe(e,t){let r=t.filter(S=>S.selectedIndex!==null),s=r.filter(S=>!S.partial);if(s.length>0&&(r=s),r.length===0)throw new Error;let a=r.filter(S=>S.selectedIndex===O0||S.requiredOptions.every(x=>x.some(I=>S.options.find(R=>R.name===I))));if(a.length===0)throw new bE(e,r.map(S=>({usage:S.candidateUsage,reason:null})));let n=0;for(let S of a)S.path.length>n&&(n=S.path.length);let c=a.filter(S=>S.path.length===n),f=S=>S.positionals.filter(({extra:x})=>!x).length+S.options.length,p=c.map(S=>({state:S,positionalCount:f(S)})),h=0;for(let{positionalCount:S}of p)S>h&&(h=S);let E=p.filter(({positionalCount:S})=>S===h).map(({state:S})=>S),C=Pqe(E);if(C.length>1)throw new Nx(e,C.map(S=>S.candidateUsage));return C[0]}function Pqe(e){let t=[],r=[];for(let s of e)s.selectedIndex===O0?r.push(s):t.push(s);return r.length>0&&t.push({...mre,path:Ere(...r.map(s=>s.path)),options:r.reduce((s,a)=>s.concat(a.options),[])}),t}function Ere(e,t,...r){return t===void 0?Array.from(e):Ere(e.filter((s,a)=>s===t[a]),...r)}function Vl(){return{dynamics:[],shortcuts:[],statics:{}}}function Ire(e){return e===Cn.SuccessNode||e===Cn.ErrorNode}function A_(e,t=0){return{to:Ire(e.to)?e.to:e.to>=Cn.CustomNode?e.to+t-Cn.CustomNode+1:e.to+t,reducer:e.reducer}}function xqe(e,t=0){let r=Vl();for(let[s,a]of e.dynamics)r.dynamics.push([s,A_(a,t)]);for(let s of e.shortcuts)r.shortcuts.push(A_(s,t));for(let[s,a]of Object.entries(e.statics))r.statics[s]=a.map(n=>A_(n,t));return r}function Ys(e,t,r,s,a){e.nodes[t].dynamics.push([r,{to:s,reducer:a}])}function PE(e,t,r,s){e.nodes[t].shortcuts.push({to:r,reducer:s})}function Sa(e,t,r,s,a){(Object.prototype.hasOwnProperty.call(e.nodes[t].statics,r)?e.nodes[t].statics[r]:e.nodes[t].statics[r]=[]).push({to:s,reducer:a})}function Hx(e,t,r,s,a){if(Array.isArray(t)){let[n,...c]=t;return e[n](r,s,a,...c)}else return e[t](r,s,a)}var mre,kqe,p_,Kl,h_,jx,Gx=Ze(()=>{Fx();Ox();mre={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:O0,partial:!1,tokens:[]};kqe={always:()=>!0,isOptionLike:(e,t)=>!e.ignoreOptions&&t!=="-"&&t.startsWith("-"),isNotOptionLike:(e,t)=>e.ignoreOptions||t==="-"||!t.startsWith("-"),isOption:(e,t,r,s)=>!e.ignoreOptions&&t===s,isBatchOption:(e,t,r,s)=>!e.ignoreOptions&&cre.test(t)&&[...t.slice(1)].every(a=>s.has(`-${a}`)),isBoundOption:(e,t,r,s,a)=>{let n=t.match(e_);return!e.ignoreOptions&&!!n&&Rx.test(n[1])&&s.has(n[1])&&a.filter(c=>c.nameSet.includes(n[1])).every(c=>c.allowBinding)},isNegatedOption:(e,t,r,s)=>!e.ignoreOptions&&t===`--no-${s.slice(2)}`,isHelp:(e,t)=>!e.ignoreOptions&&$U.test(t),isUnsupportedOption:(e,t,r,s)=>!e.ignoreOptions&&t.startsWith("-")&&Rx.test(t)&&!s.has(t),isInvalidOption:(e,t)=>!e.ignoreOptions&&t.startsWith("-")&&!Rx.test(t)},p_={setCandidateState:(e,t,r,s)=>({...e,...s}),setSelectedIndex:(e,t,r,s)=>({...e,selectedIndex:s}),setPartialIndex:(e,t,r,s)=>({...e,selectedIndex:s,partial:!0}),pushBatch:(e,t,r,s)=>{let a=e.options.slice(),n=e.tokens.slice();for(let c=1;c{let[,s,a]=t.match(e_),n=e.options.concat({name:s,value:a}),c=e.tokens.concat([{segmentIndex:r,type:"option",slice:[0,s.length],option:s},{segmentIndex:r,type:"assign",slice:[s.length,s.length+1]},{segmentIndex:r,type:"value",slice:[s.length+1,s.length+a.length+1]}]);return{...e,options:n,tokens:c}},pushPath:(e,t,r)=>{let s=e.path.concat(t),a=e.tokens.concat({segmentIndex:r,type:"path"});return{...e,path:s,tokens:a}},pushPositional:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:!1}),a=e.tokens.concat({segmentIndex:r,type:"positional"});return{...e,positionals:s,tokens:a}},pushExtra:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:!0}),a=e.tokens.concat({segmentIndex:r,type:"positional"});return{...e,positionals:s,tokens:a}},pushExtraNoLimits:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:Kl}),a=e.tokens.concat({segmentIndex:r,type:"positional"});return{...e,positionals:s,tokens:a}},pushTrue:(e,t,r,s)=>{let a=e.options.concat({name:s,value:!0}),n=e.tokens.concat({segmentIndex:r,type:"option",option:s});return{...e,options:a,tokens:n}},pushFalse:(e,t,r,s)=>{let a=e.options.concat({name:s,value:!1}),n=e.tokens.concat({segmentIndex:r,type:"option",option:s});return{...e,options:a,tokens:n}},pushUndefined:(e,t,r,s)=>{let a=e.options.concat({name:t,value:void 0}),n=e.tokens.concat({segmentIndex:r,type:"option",option:t});return{...e,options:a,tokens:n}},pushStringValue:(e,t,r)=>{var s;let a=e.options[e.options.length-1],n=e.options.slice(),c=e.tokens.concat({segmentIndex:r,type:"value"});return a.value=((s=a.value)!==null&&s!==void 0?s:[]).concat([t]),{...e,options:n,tokens:c}},setStringValue:(e,t,r)=>{let s=e.options[e.options.length-1],a=e.options.slice(),n=e.tokens.concat({segmentIndex:r,type:"value"});return s.value=t,{...e,options:a,tokens:n}},inhibateOptions:e=>({...e,ignoreOptions:!0}),useHelp:(e,t,r,s)=>{let[,,a]=t.match($U);return typeof a<"u"?{...e,options:[{name:"-c",value:String(s)},{name:"-i",value:a}]}:{...e,options:[{name:"-c",value:String(s)}]}},setError:(e,t,r,s)=>t===ii.EndOfInput||t===ii.EndOfPartialInput?{...e,errorMessage:`${s}.`}:{...e,errorMessage:`${s} ("${t}").`},setOptionArityError:(e,t)=>{let r=e.options[e.options.length-1];return{...e,errorMessage:`Not enough arguments to option ${r.name}.`}}},Kl=Symbol(),h_=class{constructor(t,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=t,this.cliOpts=r}addPath(t){this.paths.push(t)}setArity({leading:t=this.arity.leading,trailing:r=this.arity.trailing,extra:s=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:t,trailing:r,extra:s,proxy:a})}addPositional({name:t="arg",required:r=!0}={}){if(!r&&this.arity.extra===Kl)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Kl?this.arity.extra.push(t):this.arity.extra!==Kl&&this.arity.extra.length===0?this.arity.leading.push(t):this.arity.trailing.push(t)}addRest({name:t="arg",required:r=0}={}){if(this.arity.extra===Kl)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let s=0;s1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(s))throw new Error(`The arity must be an integer, got ${s}`);if(s<0)throw new Error(`The arity must be positive, got ${s}`);let f=t.reduce((p,h)=>h.length>p.length?h:p,"");for(let p of t)this.allOptionNames.set(p,f);this.options.push({preferredName:f,nameSet:t,description:r,arity:s,hidden:a,required:n,allowBinding:c})}setContext(t){this.context=t}usage({detailed:t=!0,inlineOptions:r=!0}={}){let s=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&s.push(...this.paths[0]),t){for(let{preferredName:c,nameSet:f,arity:p,hidden:h,description:E,required:C}of this.options){if(h)continue;let S=[];for(let I=0;I`:`[${x}]`)}s.push(...this.arity.leading.map(c=>`<${c}>`)),this.arity.extra===Kl?s.push("..."):s.push(...this.arity.extra.map(c=>`[${c}]`)),s.push(...this.arity.trailing.map(c=>`<${c}>`))}return{usage:s.join(" "),options:a}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let t=yre(),r=Cn.InitialNode,s=this.usage().usage,a=this.options.filter(f=>f.required).map(f=>f.nameSet);r=Nu(t,Vl()),Sa(t,Cn.InitialNode,ii.StartOfInput,r,["setCandidateState",{candidateUsage:s,requiredOptions:a}]);let n=this.arity.proxy?"always":"isNotOptionLike",c=this.paths.length>0?this.paths:[[]];for(let f of c){let p=r;if(f.length>0){let S=Nu(t,Vl());PE(t,p,S),this.registerOptions(t,S),p=S}for(let S=0;S0||!this.arity.proxy){let S=Nu(t,Vl());Ys(t,p,"isHelp",S,["useHelp",this.cliIndex]),Ys(t,S,"always",S,"pushExtra"),Sa(t,S,ii.EndOfInput,Cn.SuccessNode,["setSelectedIndex",O0]),this.registerOptions(t,p)}this.arity.leading.length>0&&(Sa(t,p,ii.EndOfInput,Cn.ErrorNode,["setError","Not enough positional arguments"]),Sa(t,p,ii.EndOfPartialInput,Cn.SuccessNode,["setPartialIndex",this.cliIndex]));let h=p;for(let S=0;S0||S+1!==this.arity.leading.length)&&(Sa(t,x,ii.EndOfInput,Cn.ErrorNode,["setError","Not enough positional arguments"]),Sa(t,x,ii.EndOfPartialInput,Cn.SuccessNode,["setPartialIndex",this.cliIndex])),Ys(t,h,"isNotOptionLike",x,"pushPositional"),h=x}let E=h;if(this.arity.extra===Kl||this.arity.extra.length>0){let S=Nu(t,Vl());if(PE(t,h,S),this.arity.extra===Kl){let x=Nu(t,Vl());this.arity.proxy||this.registerOptions(t,x),Ys(t,h,n,x,"pushExtraNoLimits"),Ys(t,x,n,x,"pushExtraNoLimits"),PE(t,x,S)}else for(let x=0;x0)&&this.registerOptions(t,I),Ys(t,E,n,I,"pushExtra"),PE(t,I,S),E=I}E=S}this.arity.trailing.length>0&&(Sa(t,E,ii.EndOfInput,Cn.ErrorNode,["setError","Not enough positional arguments"]),Sa(t,E,ii.EndOfPartialInput,Cn.SuccessNode,["setPartialIndex",this.cliIndex]));let C=E;for(let S=0;S=0&&t{let c=n?ii.EndOfPartialInput:ii.EndOfInput;return Sqe(s,a,{endToken:c})}}}}});function wre(){return qx.default&&"getColorDepth"in qx.default.WriteStream.prototype?qx.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}function Bre(e){let t=Cre;if(typeof t>"u"){if(e.stdout===process.stdout&&e.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=Ce("async_hooks");t=Cre=new r;let s=process.stdout._write;process.stdout._write=function(n,c,f){let p=t.getStore();return typeof p>"u"?s.call(this,n,c,f):p.stdout.write(n,c,f)};let a=process.stderr._write;process.stderr._write=function(n,c,f){let p=t.getStore();return typeof p>"u"?a.call(this,n,c,f):p.stderr.write(n,c,f)}}return r=>t.run(e,r)}var qx,Cre,vre=Ze(()=>{qx=et(Ce("tty"),1)});var Yx,Sre=Ze(()=>{cd();Yx=class e extends st{constructor(t){super(),this.contexts=t,this.commands=[]}static from(t,r){let s=new e(r);s.path=t.path;for(let a of t.options)switch(a.name){case"-c":s.commands.push(Number(a.value));break;case"-i":s.index=Number(a.value);break}return s}async execute(){let t=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: +`),this.context.stdout.write(` +`);let r=0;for(let s of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[s].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` +`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. +`)}}}});async function Pre(...e){let{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=kre(e);return ba.from(r,t).runExit(s,a)}async function xre(...e){let{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=kre(e);return ba.from(r,t).run(s,a)}function kre(e){let t,r,s,a;switch(typeof process<"u"&&typeof process.argv<"u"&&(s=process.argv.slice(2)),e.length){case 1:r=e[0];break;case 2:e[0]&&e[0].prototype instanceof st||Array.isArray(e[0])?(r=e[0],Array.isArray(e[1])?s=e[1]:a=e[1]):(t=e[0],r=e[1]);break;case 3:Array.isArray(e[2])?(t=e[0],r=e[1],s=e[2]):e[0]&&e[0].prototype instanceof st||Array.isArray(e[0])?(r=e[0],s=e[1],a=e[2]):(t=e[0],r=e[1],a=e[2]);break;default:t=e[0],r=e[1],s=e[2],a=e[3];break}if(typeof s>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}}function Dre(e){return e()}var bre,ba,Qre=Ze(()=>{Fx();Gx();i_();vre();cd();Sre();bre=Symbol("clipanion/errorCommand");ba=class e{constructor({binaryLabel:t,binaryName:r="...",binaryVersion:s,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new jx({binaryName:r}),this.binaryLabel=t,this.binaryName=r,this.binaryVersion=s,this.enableCapture=a,this.enableColors=n}static from(t,r={}){let s=new e(r),a=Array.isArray(t)?t:[t];for(let n of a)s.register(n);return s}register(t){var r;let s=new Map,a=new t;for(let p in a){let h=a[p];typeof h=="object"&&h!==null&&h[st.isOption]&&s.set(p,h)}let n=this.builder.command(),c=n.cliIndex,f=(r=t.paths)!==null&&r!==void 0?r:a.paths;if(typeof f<"u")for(let p of f)n.addPath(p);this.registrations.set(t,{specs:s,builder:n,index:c});for(let[p,{definition:h}]of s.entries())h(n,p);n.setContext({commandClass:t})}process(t,r){let{input:s,context:a,partial:n}=typeof t=="object"&&Array.isArray(t)?{input:t,context:r}:t,{contexts:c,process:f}=this.builder.compile(),p=f(s,{partial:n}),h={...e.defaultContext,...a};switch(p.selectedIndex){case O0:{let E=Yx.from(p,c);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=c[p.selectedIndex],C=this.registrations.get(E);if(typeof C>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let S=new E;S.context=h,S.tokens=p.tokens,S.path=p.path;try{for(let[x,{transformer:I}]of C.specs.entries())S[x]=I(C.builder,x,p,h);return S}catch(x){throw x[bre]=S,x}}break}}async run(t,r){var s,a;let n,c={...e.defaultContext,...r},f=(s=this.enableColors)!==null&&s!==void 0?s:c.colorDepth>1;if(!Array.isArray(t))n=t;else try{n=this.process(t,c)}catch(E){return c.stdout.write(this.error(E,{colored:f})),1}if(n.help)return c.stdout.write(this.usage(n,{colored:f,detailed:!0})),0;n.context=c,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,C)=>this.error(E,C),format:E=>this.format(E),process:(E,C)=>this.process(E,{...c,...C}),run:(E,C)=>this.run(E,{...c,...C}),usage:(E,C)=>this.usage(E,C)};let p=this.enableCapture&&(a=Bre(c))!==null&&a!==void 0?a:Dre,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return c.stdout.write(this.error(E,{colored:f,command:n})),1}return h}async runExit(t,r){process.exitCode=await this.run(t,r)}definition(t,{colored:r=!1}={}){if(!t.usage)return null;let{usage:s}=this.getUsageByRegistration(t,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(t,{detailed:!0,inlineOptions:!1}),c=typeof t.usage.category<"u"?Ko(t.usage.category,{format:this.format(r),paragraphs:!1}):void 0,f=typeof t.usage.description<"u"?Ko(t.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof t.usage.details<"u"?Ko(t.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof t.usage.examples<"u"?t.usage.examples.map(([E,C])=>[Ko(E,{format:this.format(r),paragraphs:!1}),C.replace(/\$0/g,this.binaryName)]):void 0;return{path:s,usage:a,category:c,description:f,details:p,examples:h,options:n}}definitions({colored:t=!1}={}){let r=[];for(let s of this.registrations.keys()){let a=this.definition(s,{colored:t});a&&r.push(a)}return r}usage(t=null,{colored:r,detailed:s=!1,prefix:a="$ "}={}){var n;if(t===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<"u";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(x=>x.length===0))!==null&&n!==void 0?n:!1))if(t){t=null;break}else t=p;else if(E){t=null;continue}}t&&(s=!0)}let c=t!==null&&t instanceof st?t.constructor:t,f="";if(c)if(s){let{description:p="",details:h="",examples:E=[]}=c.usage||{};p!==""&&(f+=Ko(p,{format:this.format(r),paragraphs:!1}).replace(/^./,x=>x.toUpperCase()),f+=` +`),(h!==""||E.length>0)&&(f+=`${this.format(r).header("Usage")} +`,f+=` +`);let{usage:C,options:S}=this.getUsageByRegistration(c,{inlineOptions:!1});if(f+=`${this.format(r).bold(a)}${C} +`,S.length>0){f+=` +`,f+=`${this.format(r).header("Options")} +`;let x=S.reduce((I,R)=>Math.max(I,R.definition.length),0);f+=` +`;for(let{definition:I,description:R}of S)f+=` ${this.format(r).bold(I.padEnd(x))} ${Ko(R,{format:this.format(r),paragraphs:!1})}`}if(h!==""&&(f+=` +`,f+=`${this.format(r).header("Details")} +`,f+=` +`,f+=Ko(h,{format:this.format(r),paragraphs:!0})),E.length>0){f+=` +`,f+=`${this.format(r).header("Examples")} +`;for(let[x,I]of E)f+=` +`,f+=Ko(x,{format:this.format(r),paragraphs:!1}),f+=`${I.replace(/^/m,` ${this.format(r).bold(a)}`).replace(/\$0/g,this.binaryName)} +`}}else{let{usage:p}=this.getUsageByRegistration(c);f+=`${this.format(r).bold(a)}${p} +`}else{let p=new Map;for(let[S,{index:x}]of this.registrations.entries()){if(typeof S.usage>"u")continue;let I=typeof S.usage.category<"u"?Ko(S.usage.category,{format:this.format(r),paragraphs:!1}):null,R=p.get(I);typeof R>"u"&&p.set(I,R=[]);let{usage:N}=this.getUsageByIndex(x);R.push({commandClass:S,usage:N})}let h=Array.from(p.keys()).sort((S,x)=>S===null?-1:x===null?1:S.localeCompare(x,"en",{usage:"sort",caseFirst:"upper"})),E=typeof this.binaryLabel<"u",C=typeof this.binaryVersion<"u";E||C?(E&&C?f+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} + +`:E?f+=`${this.format(r).header(`${this.binaryLabel}`)} +`:f+=`${this.format(r).header(`${this.binaryVersion}`)} +`,f+=` ${this.format(r).bold(a)}${this.binaryName} +`):f+=`${this.format(r).bold(a)}${this.binaryName} +`;for(let S of h){let x=p.get(S).slice().sort((R,N)=>R.usage.localeCompare(N.usage,"en",{usage:"sort",caseFirst:"upper"})),I=S!==null?S.trim():"General commands";f+=` +`,f+=`${this.format(r).header(`${I}`)} +`;for(let{commandClass:R,usage:N}of x){let U=R.usage.description||"undocumented";f+=` +`,f+=` ${this.format(r).bold(N)} +`,f+=` ${Ko(U,{format:this.format(r),paragraphs:!1})}`}}f+=` +`,f+=Ko("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return f}error(t,r){var s,{colored:a,command:n=(s=t[bre])!==null&&s!==void 0?s:null}=r===void 0?{}:r;(!t||typeof t!="object"||!("stack"in t))&&(t=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(t)})`));let c="",f=t.name.replace(/([a-z])([A-Z])/g,"$1 $2");f==="Error"&&(f="Internal Error"),c+=`${this.format(a).error(f)}: ${t.message} +`;let p=t.clipanion;return typeof p<"u"?p.type==="usage"&&(c+=` +`,c+=this.usage(n)):t.stack&&(c+=`${t.stack.replace(/^.*\n/,"")} +`),c}format(t){var r;return((r=t??this.enableColors)!==null&&r!==void 0?r:e.defaultContext.colorDepth>1)?ure:fre}getUsageByRegistration(t,r){let s=this.registrations.get(t);if(typeof s>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(s.index,r)}getUsageByIndex(t,r){return this.builder.getBuilderByIndex(t).usage(r)}};ba.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:wre()}});var $2,Tre=Ze(()=>{cd();$2=class extends st{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} +`)}};$2.paths=[["--clipanion=definitions"]]});var eB,Rre=Ze(()=>{cd();eB=class extends st{async execute(){this.context.stdout.write(this.cli.usage())}};eB.paths=[["-h"],["--help"]]});function Wx(e={}){return va({definition(t,r){var s;t.addProxy({name:(s=e.name)!==null&&s!==void 0?s:r,required:e.required})},transformer(t,r,s){return s.positionals.map(({value:a})=>a)}})}var d_=Ze(()=>{vp()});var tB,Fre=Ze(()=>{cd();d_();tB=class extends st{constructor(){super(...arguments),this.args=Wx()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)} +`)}};tB.paths=[["--clipanion=tokens"]]});var rB,Nre=Ze(()=>{cd();rB=class extends st{async execute(){var t;this.context.stdout.write(`${(t=this.cli.binaryVersion)!==null&&t!==void 0?t:""} +`)}};rB.paths=[["-v"],["--version"]]});var g_={};Vt(g_,{DefinitionsCommand:()=>$2,HelpCommand:()=>eB,TokensCommand:()=>tB,VersionCommand:()=>rB});var Ore=Ze(()=>{Tre();Rre();Fre();Nre()});function Lre(e,t,r){let[s,a]=Wf(t,r??{}),{arity:n=1}=a,c=e.split(","),f=new Set(c);return va({definition(p){p.addOption({names:c,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let C,S=typeof s<"u"?[...s]:void 0;for(let{name:x,value:I}of E.options)f.has(x)&&(C=x,S=S??[],S.push(I));return typeof S<"u"?L0(C??h,S,a.validator):S}})}var Mre=Ze(()=>{vp()});function Ure(e,t,r){let[s,a]=Wf(t,r??{}),n=e.split(","),c=new Set(n);return va({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E=S);return E}})}var _re=Ze(()=>{vp()});function Hre(e,t,r){let[s,a]=Wf(t,r??{}),n=e.split(","),c=new Set(n);return va({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E??(E=0),S?E+=1:E=0);return E}})}var jre=Ze(()=>{vp()});function Gre(e={}){return va({definition(t,r){var s;t.addRest({name:(s=e.name)!==null&&s!==void 0?s:r,required:e.required})},transformer(t,r,s){let a=c=>{let f=s.positionals[c];return f.extra===Kl||f.extra===!1&&cc)}})}var qre=Ze(()=>{Gx();vp()});function Qqe(e,t,r){let[s,a]=Wf(t,r??{}),{arity:n=1}=a,c=e.split(","),f=new Set(c);return va({definition(p){p.addOption({names:c,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,C){let S,x=s;typeof a.env<"u"&&C.env[a.env]&&(S=a.env,x=C.env[a.env]);for(let{name:I,value:R}of E.options)f.has(I)&&(S=I,x=R);return typeof x=="string"?L0(S??h,x,a.validator):x}})}function Tqe(e={}){let{required:t=!0}=e;return va({definition(r,s){var a;r.addPositional({name:(a=e.name)!==null&&a!==void 0?a:s,required:e.required})},transformer(r,s,a){var n;for(let c=0;c{Gx();vp()});var he={};Vt(he,{Array:()=>Lre,Boolean:()=>Ure,Counter:()=>Hre,Proxy:()=>Wx,Rest:()=>Gre,String:()=>Yre,applyValidator:()=>L0,cleanValidationError:()=>Lx,formatError:()=>K2,isOptionSymbol:()=>V2,makeCommandOption:()=>va,rerouteArguments:()=>Wf});var Vre=Ze(()=>{vp();d_();Mre();_re();jre();qre();Wre()});var nB={};Vt(nB,{Builtins:()=>g_,Cli:()=>ba,Command:()=>st,Option:()=>he,UsageError:()=>ot,formatMarkdownish:()=>Ko,run:()=>xre,runExit:()=>Pre});var jt=Ze(()=>{Ox();i_();cd();Qre();Ore();Vre()});var Kre=G((qkt,Rqe)=>{Rqe.exports={name:"dotenv",version:"16.3.1",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard","lint-readme":"standard-markdown",pretest:"npm run lint && npm run dts-check",test:"tap tests/*.js --100 -Rspec",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},funding:"https://github.com/motdotla/dotenv?sponsor=1",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@definitelytyped/dtslint":"^0.0.133","@types/node":"^18.11.3",decache:"^4.6.1",sinon:"^14.0.1",standard:"^17.0.0","standard-markdown":"^7.1.0","standard-version":"^9.5.0",tap:"^16.3.0",tar:"^6.1.11",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var Xre=G((Ykt,bp)=>{var Jre=Ce("fs"),y_=Ce("path"),Fqe=Ce("os"),Nqe=Ce("crypto"),Oqe=Kre(),E_=Oqe.version,Lqe=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function Mqe(e){let t={},r=e.toString();r=r.replace(/\r\n?/mg,` +`);let s;for(;(s=Lqe.exec(r))!=null;){let a=s[1],n=s[2]||"";n=n.trim();let c=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),c==='"'&&(n=n.replace(/\\n/g,` +`),n=n.replace(/\\r/g,"\r")),t[a]=n}return t}function Uqe(e){let t=Zre(e),r=Ws.configDotenv({path:t});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${t} for an unknown reason`);let s=zre(e).split(","),a=s.length,n;for(let c=0;c=a)throw f}return Ws.parse(n)}function _qe(e){console.log(`[dotenv@${E_}][INFO] ${e}`)}function Hqe(e){console.log(`[dotenv@${E_}][WARN] ${e}`)}function m_(e){console.log(`[dotenv@${E_}][DEBUG] ${e}`)}function zre(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function jqe(e,t){let r;try{r=new URL(t)}catch(f){throw f.code==="ERR_INVALID_URL"?new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development"):f}let s=r.password;if(!s)throw new Error("INVALID_DOTENV_KEY: Missing key part");let a=r.searchParams.get("environment");if(!a)throw new Error("INVALID_DOTENV_KEY: Missing environment part");let n=`DOTENV_VAULT_${a.toUpperCase()}`,c=e.parsed[n];if(!c)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:c,key:s}}function Zre(e){let t=y_.resolve(process.cwd(),".env");return e&&e.path&&e.path.length>0&&(t=e.path),t.endsWith(".vault")?t:`${t}.vault`}function Gqe(e){return e[0]==="~"?y_.join(Fqe.homedir(),e.slice(1)):e}function qqe(e){_qe("Loading env from encrypted .env.vault");let t=Ws._parseVault(e),r=process.env;return e&&e.processEnv!=null&&(r=e.processEnv),Ws.populate(r,t,e),{parsed:t}}function Yqe(e){let t=y_.resolve(process.cwd(),".env"),r="utf8",s=!!(e&&e.debug);e&&(e.path!=null&&(t=Gqe(e.path)),e.encoding!=null&&(r=e.encoding));try{let a=Ws.parse(Jre.readFileSync(t,{encoding:r})),n=process.env;return e&&e.processEnv!=null&&(n=e.processEnv),Ws.populate(n,a,e),{parsed:a}}catch(a){return s&&m_(`Failed to load ${t} ${a.message}`),{error:a}}}function Wqe(e){let t=Zre(e);return zre(e).length===0?Ws.configDotenv(e):Jre.existsSync(t)?Ws._configVault(e):(Hqe(`You set DOTENV_KEY but you are missing a .env.vault file at ${t}. Did you forget to build it?`),Ws.configDotenv(e))}function Vqe(e,t){let r=Buffer.from(t.slice(-64),"hex"),s=Buffer.from(e,"base64"),a=s.slice(0,12),n=s.slice(-16);s=s.slice(12,-16);try{let c=Nqe.createDecipheriv("aes-256-gcm",r,a);return c.setAuthTag(n),`${c.update(s)}${c.final()}`}catch(c){let f=c instanceof RangeError,p=c.message==="Invalid key length",h=c.message==="Unsupported state or unable to authenticate data";if(f||p){let E="INVALID_DOTENV_KEY: It must be 64 characters long (or more)";throw new Error(E)}else if(h){let E="DECRYPTION_FAILED: Please check your DOTENV_KEY";throw new Error(E)}else throw console.error("Error: ",c.code),console.error("Error: ",c.message),c}}function Kqe(e,t,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeof t!="object")throw new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");for(let n of Object.keys(t))Object.prototype.hasOwnProperty.call(e,n)?(a===!0&&(e[n]=t[n]),s&&m_(a===!0?`"${n}" is already defined and WAS overwritten`:`"${n}" is already defined and was NOT overwritten`)):e[n]=t[n]}var Ws={configDotenv:Yqe,_configVault:qqe,_parseVault:Uqe,config:Wqe,decrypt:Vqe,parse:Mqe,populate:Kqe};bp.exports.configDotenv=Ws.configDotenv;bp.exports._configVault=Ws._configVault;bp.exports._parseVault=Ws._parseVault;bp.exports.config=Ws.config;bp.exports.decrypt=Ws.decrypt;bp.exports.parse=Ws.parse;bp.exports.populate=Ws.populate;bp.exports=Ws});var ene=G((Wkt,$re)=>{"use strict";$re.exports=(e,...t)=>new Promise(r=>{r(e(...t))})});var M0=G((Vkt,I_)=>{"use strict";var Jqe=ene(),tne=e=>{if(e<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let t=[],r=0,s=()=>{r--,t.length>0&&t.shift()()},a=(f,p,...h)=>{r++;let E=Jqe(f,...h);p(E),E.then(s,s)},n=(f,p,...h)=>{rnew Promise(h=>n(f,h,...p));return Object.defineProperties(c,{activeCount:{get:()=>r},pendingCount:{get:()=>t.length}}),c};I_.exports=tne;I_.exports.default=tne});function zf(e){return`YN${e.toString(10).padStart(4,"0")}`}function Vx(e){let t=Number(e.slice(2));if(typeof pr[t]>"u")throw new Error(`Unknown message name: "${e}"`);return t}var pr,Kx=Ze(()=>{pr=(Ue=>(Ue[Ue.UNNAMED=0]="UNNAMED",Ue[Ue.EXCEPTION=1]="EXCEPTION",Ue[Ue.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",Ue[Ue.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",Ue[Ue.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",Ue[Ue.BUILD_DISABLED=5]="BUILD_DISABLED",Ue[Ue.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",Ue[Ue.MUST_BUILD=7]="MUST_BUILD",Ue[Ue.MUST_REBUILD=8]="MUST_REBUILD",Ue[Ue.BUILD_FAILED=9]="BUILD_FAILED",Ue[Ue.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",Ue[Ue.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",Ue[Ue.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",Ue[Ue.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",Ue[Ue.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",Ue[Ue.REMOTE_INVALID=15]="REMOTE_INVALID",Ue[Ue.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",Ue[Ue.RESOLUTION_PACK=17]="RESOLUTION_PACK",Ue[Ue.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",Ue[Ue.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",Ue[Ue.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",Ue[Ue.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",Ue[Ue.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",Ue[Ue.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",Ue[Ue.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",Ue[Ue.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",Ue[Ue.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",Ue[Ue.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",Ue[Ue.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",Ue[Ue.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",Ue[Ue.FETCH_FAILED=30]="FETCH_FAILED",Ue[Ue.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",Ue[Ue.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",Ue[Ue.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",Ue[Ue.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",Ue[Ue.NETWORK_ERROR=35]="NETWORK_ERROR",Ue[Ue.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",Ue[Ue.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",Ue[Ue.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",Ue[Ue.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",Ue[Ue.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",Ue[Ue.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",Ue[Ue.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",Ue[Ue.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",Ue[Ue.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",Ue[Ue.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",Ue[Ue.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",Ue[Ue.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",Ue[Ue.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",Ue[Ue.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",Ue[Ue.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",Ue[Ue.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",Ue[Ue.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",Ue[Ue.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",Ue[Ue.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",Ue[Ue.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",Ue[Ue.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",Ue[Ue.INVALID_MANIFEST=57]="INVALID_MANIFEST",Ue[Ue.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",Ue[Ue.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",Ue[Ue.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",Ue[Ue.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",Ue[Ue.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",Ue[Ue.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",Ue[Ue.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",Ue[Ue.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",Ue[Ue.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",Ue[Ue.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",Ue[Ue.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",Ue[Ue.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",Ue[Ue.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",Ue[Ue.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",Ue[Ue.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",Ue[Ue.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",Ue[Ue.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",Ue[Ue.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",Ue[Ue.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",Ue[Ue.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",Ue[Ue.RESOLUTION_MISMATCH=78]="RESOLUTION_MISMATCH",Ue[Ue.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",Ue[Ue.NETWORK_DISABLED=80]="NETWORK_DISABLED",Ue[Ue.NETWORK_UNSAFE_HTTP=81]="NETWORK_UNSAFE_HTTP",Ue[Ue.RESOLUTION_FAILED=82]="RESOLUTION_FAILED",Ue[Ue.AUTOMERGE_GIT_ERROR=83]="AUTOMERGE_GIT_ERROR",Ue[Ue.CONSTRAINTS_CHECK_FAILED=84]="CONSTRAINTS_CHECK_FAILED",Ue[Ue.UPDATED_RESOLUTION_RECORD=85]="UPDATED_RESOLUTION_RECORD",Ue[Ue.EXPLAIN_PEER_DEPENDENCIES_CTA=86]="EXPLAIN_PEER_DEPENDENCIES_CTA",Ue[Ue.MIGRATION_SUCCESS=87]="MIGRATION_SUCCESS",Ue[Ue.VERSION_NOTICE=88]="VERSION_NOTICE",Ue[Ue.TIPS_NOTICE=89]="TIPS_NOTICE",Ue[Ue.OFFLINE_MODE_ENABLED=90]="OFFLINE_MODE_ENABLED",Ue[Ue.INVALID_PROVENANCE_ENVIRONMENT=91]="INVALID_PROVENANCE_ENVIRONMENT",Ue[Ue.EXPERIMENTAL=92]="EXPERIMENTAL",Ue))(pr||{})});var iB=G((Jkt,rne)=>{var zqe="2.0.0",Zqe=Number.MAX_SAFE_INTEGER||9007199254740991,Xqe=16,$qe=250,eYe=["major","premajor","minor","preminor","patch","prepatch","prerelease"];rne.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Xqe,MAX_SAFE_BUILD_LENGTH:$qe,MAX_SAFE_INTEGER:Zqe,RELEASE_TYPES:eYe,SEMVER_SPEC_VERSION:zqe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var sB=G((zkt,nne)=>{var tYe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};nne.exports=tYe});var xE=G((Dp,ine)=>{var{MAX_SAFE_COMPONENT_LENGTH:C_,MAX_SAFE_BUILD_LENGTH:rYe,MAX_LENGTH:nYe}=iB(),iYe=sB();Dp=ine.exports={};var sYe=Dp.re=[],oYe=Dp.safeRe=[],rr=Dp.src=[],nr=Dp.t={},aYe=0,w_="[a-zA-Z0-9-]",lYe=[["\\s",1],["\\d",nYe],[w_,rYe]],cYe=e=>{for(let[t,r]of lYe)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},Jr=(e,t,r)=>{let s=cYe(t),a=aYe++;iYe(e,a,t),nr[e]=a,rr[a]=t,sYe[a]=new RegExp(t,r?"g":void 0),oYe[a]=new RegExp(s,r?"g":void 0)};Jr("NUMERICIDENTIFIER","0|[1-9]\\d*");Jr("NUMERICIDENTIFIERLOOSE","\\d+");Jr("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${w_}*`);Jr("MAINVERSION",`(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})`);Jr("MAINVERSIONLOOSE",`(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})`);Jr("PRERELEASEIDENTIFIER",`(?:${rr[nr.NUMERICIDENTIFIER]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Jr("PRERELEASEIDENTIFIERLOOSE",`(?:${rr[nr.NUMERICIDENTIFIERLOOSE]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Jr("PRERELEASE",`(?:-(${rr[nr.PRERELEASEIDENTIFIER]}(?:\\.${rr[nr.PRERELEASEIDENTIFIER]})*))`);Jr("PRERELEASELOOSE",`(?:-?(${rr[nr.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${rr[nr.PRERELEASEIDENTIFIERLOOSE]})*))`);Jr("BUILDIDENTIFIER",`${w_}+`);Jr("BUILD",`(?:\\+(${rr[nr.BUILDIDENTIFIER]}(?:\\.${rr[nr.BUILDIDENTIFIER]})*))`);Jr("FULLPLAIN",`v?${rr[nr.MAINVERSION]}${rr[nr.PRERELEASE]}?${rr[nr.BUILD]}?`);Jr("FULL",`^${rr[nr.FULLPLAIN]}$`);Jr("LOOSEPLAIN",`[v=\\s]*${rr[nr.MAINVERSIONLOOSE]}${rr[nr.PRERELEASELOOSE]}?${rr[nr.BUILD]}?`);Jr("LOOSE",`^${rr[nr.LOOSEPLAIN]}$`);Jr("GTLT","((?:<|>)?=?)");Jr("XRANGEIDENTIFIERLOOSE",`${rr[nr.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Jr("XRANGEIDENTIFIER",`${rr[nr.NUMERICIDENTIFIER]}|x|X|\\*`);Jr("XRANGEPLAIN",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:${rr[nr.PRERELEASE]})?${rr[nr.BUILD]}?)?)?`);Jr("XRANGEPLAINLOOSE",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:${rr[nr.PRERELEASELOOSE]})?${rr[nr.BUILD]}?)?)?`);Jr("XRANGE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAIN]}$`);Jr("XRANGELOOSE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("COERCEPLAIN",`(^|[^\\d])(\\d{1,${C_}})(?:\\.(\\d{1,${C_}}))?(?:\\.(\\d{1,${C_}}))?`);Jr("COERCE",`${rr[nr.COERCEPLAIN]}(?:$|[^\\d])`);Jr("COERCEFULL",rr[nr.COERCEPLAIN]+`(?:${rr[nr.PRERELEASE]})?(?:${rr[nr.BUILD]})?(?:$|[^\\d])`);Jr("COERCERTL",rr[nr.COERCE],!0);Jr("COERCERTLFULL",rr[nr.COERCEFULL],!0);Jr("LONETILDE","(?:~>?)");Jr("TILDETRIM",`(\\s*)${rr[nr.LONETILDE]}\\s+`,!0);Dp.tildeTrimReplace="$1~";Jr("TILDE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAIN]}$`);Jr("TILDELOOSE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("LONECARET","(?:\\^)");Jr("CARETTRIM",`(\\s*)${rr[nr.LONECARET]}\\s+`,!0);Dp.caretTrimReplace="$1^";Jr("CARET",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAIN]}$`);Jr("CARETLOOSE",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("COMPARATORLOOSE",`^${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]})$|^$`);Jr("COMPARATOR",`^${rr[nr.GTLT]}\\s*(${rr[nr.FULLPLAIN]})$|^$`);Jr("COMPARATORTRIM",`(\\s*)${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]}|${rr[nr.XRANGEPLAIN]})`,!0);Dp.comparatorTrimReplace="$1$2$3";Jr("HYPHENRANGE",`^\\s*(${rr[nr.XRANGEPLAIN]})\\s+-\\s+(${rr[nr.XRANGEPLAIN]})\\s*$`);Jr("HYPHENRANGELOOSE",`^\\s*(${rr[nr.XRANGEPLAINLOOSE]})\\s+-\\s+(${rr[nr.XRANGEPLAINLOOSE]})\\s*$`);Jr("STAR","(<|>)?=?\\s*\\*");Jr("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Jr("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var Jx=G((Zkt,sne)=>{var uYe=Object.freeze({loose:!0}),fYe=Object.freeze({}),AYe=e=>e?typeof e!="object"?uYe:e:fYe;sne.exports=AYe});var B_=G((Xkt,lne)=>{var one=/^[0-9]+$/,ane=(e,t)=>{let r=one.test(e),s=one.test(t);return r&&s&&(e=+e,t=+t),e===t?0:r&&!s?-1:s&&!r?1:eane(t,e);lne.exports={compareIdentifiers:ane,rcompareIdentifiers:pYe}});var zo=G(($kt,Ane)=>{var zx=sB(),{MAX_LENGTH:cne,MAX_SAFE_INTEGER:Zx}=iB(),{safeRe:une,t:fne}=xE(),hYe=Jx(),{compareIdentifiers:kE}=B_(),v_=class e{constructor(t,r){if(r=hYe(r),t instanceof e){if(t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease)return t;t=t.version}else if(typeof t!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>cne)throw new TypeError(`version is longer than ${cne} characters`);zx("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let s=t.trim().match(r.loose?une[fne.LOOSE]:une[fne.FULL]);if(!s)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>Zx||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Zx||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Zx||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(a)}}if(r){let n=[r,a];s===!1&&(n=[r]),kE(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Ane.exports=v_});var U0=G((eQt,hne)=>{var pne=zo(),dYe=(e,t,r=!1)=>{if(e instanceof pne)return e;try{return new pne(e,t)}catch(s){if(!r)return null;throw s}};hne.exports=dYe});var gne=G((tQt,dne)=>{var gYe=U0(),mYe=(e,t)=>{let r=gYe(e,t);return r?r.version:null};dne.exports=mYe});var yne=G((rQt,mne)=>{var yYe=U0(),EYe=(e,t)=>{let r=yYe(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};mne.exports=EYe});var Cne=G((nQt,Ine)=>{var Ene=zo(),IYe=(e,t,r,s,a)=>{typeof r=="string"&&(a=s,s=r,r=void 0);try{return new Ene(e instanceof Ene?e.version:e,r).inc(t,s,a).version}catch{return null}};Ine.exports=IYe});var vne=G((iQt,Bne)=>{var wne=U0(),CYe=(e,t)=>{let r=wne(e,null,!0),s=wne(t,null,!0),a=r.compare(s);if(a===0)return null;let n=a>0,c=n?r:s,f=n?s:r,p=!!c.prerelease.length;if(!!f.prerelease.length&&!p)return!f.patch&&!f.minor?"major":c.patch?"patch":c.minor?"minor":"major";let E=p?"pre":"";return r.major!==s.major?E+"major":r.minor!==s.minor?E+"minor":r.patch!==s.patch?E+"patch":"prerelease"};Bne.exports=CYe});var bne=G((sQt,Sne)=>{var wYe=zo(),BYe=(e,t)=>new wYe(e,t).major;Sne.exports=BYe});var Pne=G((oQt,Dne)=>{var vYe=zo(),SYe=(e,t)=>new vYe(e,t).minor;Dne.exports=SYe});var kne=G((aQt,xne)=>{var bYe=zo(),DYe=(e,t)=>new bYe(e,t).patch;xne.exports=DYe});var Tne=G((lQt,Qne)=>{var PYe=U0(),xYe=(e,t)=>{let r=PYe(e,t);return r&&r.prerelease.length?r.prerelease:null};Qne.exports=xYe});var bc=G((cQt,Fne)=>{var Rne=zo(),kYe=(e,t,r)=>new Rne(e,r).compare(new Rne(t,r));Fne.exports=kYe});var One=G((uQt,Nne)=>{var QYe=bc(),TYe=(e,t,r)=>QYe(t,e,r);Nne.exports=TYe});var Mne=G((fQt,Lne)=>{var RYe=bc(),FYe=(e,t)=>RYe(e,t,!0);Lne.exports=FYe});var Xx=G((AQt,_ne)=>{var Une=zo(),NYe=(e,t,r)=>{let s=new Une(e,r),a=new Une(t,r);return s.compare(a)||s.compareBuild(a)};_ne.exports=NYe});var jne=G((pQt,Hne)=>{var OYe=Xx(),LYe=(e,t)=>e.sort((r,s)=>OYe(r,s,t));Hne.exports=LYe});var qne=G((hQt,Gne)=>{var MYe=Xx(),UYe=(e,t)=>e.sort((r,s)=>MYe(s,r,t));Gne.exports=UYe});var oB=G((dQt,Yne)=>{var _Ye=bc(),HYe=(e,t,r)=>_Ye(e,t,r)>0;Yne.exports=HYe});var $x=G((gQt,Wne)=>{var jYe=bc(),GYe=(e,t,r)=>jYe(e,t,r)<0;Wne.exports=GYe});var S_=G((mQt,Vne)=>{var qYe=bc(),YYe=(e,t,r)=>qYe(e,t,r)===0;Vne.exports=YYe});var b_=G((yQt,Kne)=>{var WYe=bc(),VYe=(e,t,r)=>WYe(e,t,r)!==0;Kne.exports=VYe});var ek=G((EQt,Jne)=>{var KYe=bc(),JYe=(e,t,r)=>KYe(e,t,r)>=0;Jne.exports=JYe});var tk=G((IQt,zne)=>{var zYe=bc(),ZYe=(e,t,r)=>zYe(e,t,r)<=0;zne.exports=ZYe});var D_=G((CQt,Zne)=>{var XYe=S_(),$Ye=b_(),eWe=oB(),tWe=ek(),rWe=$x(),nWe=tk(),iWe=(e,t,r,s)=>{switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e===r;case"!==":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e!==r;case"":case"=":case"==":return XYe(e,r,s);case"!=":return $Ye(e,r,s);case">":return eWe(e,r,s);case">=":return tWe(e,r,s);case"<":return rWe(e,r,s);case"<=":return nWe(e,r,s);default:throw new TypeError(`Invalid operator: ${t}`)}};Zne.exports=iWe});var $ne=G((wQt,Xne)=>{var sWe=zo(),oWe=U0(),{safeRe:rk,t:nk}=xE(),aWe=(e,t)=>{if(e instanceof sWe)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;t=t||{};let r=null;if(!t.rtl)r=e.match(t.includePrerelease?rk[nk.COERCEFULL]:rk[nk.COERCE]);else{let p=t.includePrerelease?rk[nk.COERCERTLFULL]:rk[nk.COERCERTL],h;for(;(h=p.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||h.index+h[0].length!==r.index+r[0].length)&&(r=h),p.lastIndex=h.index+h[1].length+h[2].length;p.lastIndex=-1}if(r===null)return null;let s=r[2],a=r[3]||"0",n=r[4]||"0",c=t.includePrerelease&&r[5]?`-${r[5]}`:"",f=t.includePrerelease&&r[6]?`+${r[6]}`:"";return oWe(`${s}.${a}.${n}${c}${f}`,t)};Xne.exports=aWe});var tie=G((BQt,eie)=>{"use strict";eie.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var nie=G((vQt,rie)=>{"use strict";rie.exports=Ln;Ln.Node=_0;Ln.create=Ln;function Ln(e){var t=this;if(t instanceof Ln||(t=new Ln),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(a){t.push(a)});else if(arguments.length>0)for(var r=0,s=arguments.length;r1)r=t;else if(this.head)s=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;s!==null;a++)r=e(r,s.value,a),s=s.next;return r};Ln.prototype.reduceReverse=function(e,t){var r,s=this.tail;if(arguments.length>1)r=t;else if(this.tail)s=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=this.length-1;s!==null;a--)r=e(r,s.value,a),s=s.prev;return r};Ln.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};Ln.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};Ln.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new Ln;if(tthis.length&&(t=this.length);for(var s=0,a=this.head;a!==null&&sthis.length&&(t=this.length);for(var s=this.length,a=this.tail;a!==null&&s>t;s--)a=a.prev;for(;a!==null&&s>e;s--,a=a.prev)r.push(a.value);return r};Ln.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var s=0,a=this.head;a!==null&&s{"use strict";var fWe=nie(),H0=Symbol("max"),xp=Symbol("length"),QE=Symbol("lengthCalculator"),lB=Symbol("allowStale"),j0=Symbol("maxAge"),Pp=Symbol("dispose"),iie=Symbol("noDisposeOnSet"),Vs=Symbol("lruList"),Ou=Symbol("cache"),oie=Symbol("updateAgeOnGet"),P_=()=>1,k_=class{constructor(t){if(typeof t=="number"&&(t={max:t}),t||(t={}),t.max&&(typeof t.max!="number"||t.max<0))throw new TypeError("max must be a non-negative number");let r=this[H0]=t.max||1/0,s=t.length||P_;if(this[QE]=typeof s!="function"?P_:s,this[lB]=t.stale||!1,t.maxAge&&typeof t.maxAge!="number")throw new TypeError("maxAge must be a number");this[j0]=t.maxAge||0,this[Pp]=t.dispose,this[iie]=t.noDisposeOnSet||!1,this[oie]=t.updateAgeOnGet||!1,this.reset()}set max(t){if(typeof t!="number"||t<0)throw new TypeError("max must be a non-negative number");this[H0]=t||1/0,aB(this)}get max(){return this[H0]}set allowStale(t){this[lB]=!!t}get allowStale(){return this[lB]}set maxAge(t){if(typeof t!="number")throw new TypeError("maxAge must be a non-negative number");this[j0]=t,aB(this)}get maxAge(){return this[j0]}set lengthCalculator(t){typeof t!="function"&&(t=P_),t!==this[QE]&&(this[QE]=t,this[xp]=0,this[Vs].forEach(r=>{r.length=this[QE](r.value,r.key),this[xp]+=r.length})),aB(this)}get lengthCalculator(){return this[QE]}get length(){return this[xp]}get itemCount(){return this[Vs].length}rforEach(t,r){r=r||this;for(let s=this[Vs].tail;s!==null;){let a=s.prev;sie(this,t,s,r),s=a}}forEach(t,r){r=r||this;for(let s=this[Vs].head;s!==null;){let a=s.next;sie(this,t,s,r),s=a}}keys(){return this[Vs].toArray().map(t=>t.key)}values(){return this[Vs].toArray().map(t=>t.value)}reset(){this[Pp]&&this[Vs]&&this[Vs].length&&this[Vs].forEach(t=>this[Pp](t.key,t.value)),this[Ou]=new Map,this[Vs]=new fWe,this[xp]=0}dump(){return this[Vs].map(t=>ik(this,t)?!1:{k:t.key,v:t.value,e:t.now+(t.maxAge||0)}).toArray().filter(t=>t)}dumpLru(){return this[Vs]}set(t,r,s){if(s=s||this[j0],s&&typeof s!="number")throw new TypeError("maxAge must be a number");let a=s?Date.now():0,n=this[QE](r,t);if(this[Ou].has(t)){if(n>this[H0])return TE(this,this[Ou].get(t)),!1;let p=this[Ou].get(t).value;return this[Pp]&&(this[iie]||this[Pp](t,p.value)),p.now=a,p.maxAge=s,p.value=r,this[xp]+=n-p.length,p.length=n,this.get(t),aB(this),!0}let c=new Q_(t,r,n,a,s);return c.length>this[H0]?(this[Pp]&&this[Pp](t,r),!1):(this[xp]+=c.length,this[Vs].unshift(c),this[Ou].set(t,this[Vs].head),aB(this),!0)}has(t){if(!this[Ou].has(t))return!1;let r=this[Ou].get(t).value;return!ik(this,r)}get(t){return x_(this,t,!0)}peek(t){return x_(this,t,!1)}pop(){let t=this[Vs].tail;return t?(TE(this,t),t.value):null}del(t){TE(this,this[Ou].get(t))}load(t){this.reset();let r=Date.now();for(let s=t.length-1;s>=0;s--){let a=t[s],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let c=n-r;c>0&&this.set(a.k,a.v,c)}}}prune(){this[Ou].forEach((t,r)=>x_(this,r,!1))}},x_=(e,t,r)=>{let s=e[Ou].get(t);if(s){let a=s.value;if(ik(e,a)){if(TE(e,s),!e[lB])return}else r&&(e[oie]&&(s.value.now=Date.now()),e[Vs].unshiftNode(s));return a.value}},ik=(e,t)=>{if(!t||!t.maxAge&&!e[j0])return!1;let r=Date.now()-t.now;return t.maxAge?r>t.maxAge:e[j0]&&r>e[j0]},aB=e=>{if(e[xp]>e[H0])for(let t=e[Vs].tail;e[xp]>e[H0]&&t!==null;){let r=t.prev;TE(e,t),t=r}},TE=(e,t)=>{if(t){let r=t.value;e[Pp]&&e[Pp](r.key,r.value),e[xp]-=r.length,e[Ou].delete(r.key),e[Vs].removeNode(t)}},Q_=class{constructor(t,r,s,a,n){this.key=t,this.value=r,this.length=s,this.now=a,this.maxAge=n||0}},sie=(e,t,r,s)=>{let a=r.value;ik(e,a)&&(TE(e,r),e[lB]||(a=void 0)),a&&t.call(s,a.value,a.key,e)};aie.exports=k_});var Dc=G((bQt,Aie)=>{var T_=class e{constructor(t,r){if(r=pWe(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof R_)return this.raw=t.value,this.set=[[t]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(s=>this.parseRange(s.trim())).filter(s=>s.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let s=this.set[0];if(this.set=this.set.filter(a=>!uie(a[0])),this.set.length===0)this.set=[s];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&IWe(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(t=>t.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(t){let s=((this.options.includePrerelease&&yWe)|(this.options.loose&&EWe))+":"+t,a=cie.get(s);if(a)return a;let n=this.options.loose,c=n?hl[Da.HYPHENRANGELOOSE]:hl[Da.HYPHENRANGE];t=t.replace(c,kWe(this.options.includePrerelease)),bi("hyphen replace",t),t=t.replace(hl[Da.COMPARATORTRIM],dWe),bi("comparator trim",t),t=t.replace(hl[Da.TILDETRIM],gWe),bi("tilde trim",t),t=t.replace(hl[Da.CARETTRIM],mWe),bi("caret trim",t);let f=t.split(" ").map(C=>CWe(C,this.options)).join(" ").split(/\s+/).map(C=>xWe(C,this.options));n&&(f=f.filter(C=>(bi("loose invalid filter",C,this.options),!!C.match(hl[Da.COMPARATORLOOSE])))),bi("range list",f);let p=new Map,h=f.map(C=>new R_(C,this.options));for(let C of h){if(uie(C))return[C];p.set(C.value,C)}p.size>1&&p.has("")&&p.delete("");let E=[...p.values()];return cie.set(s,E),E}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(s=>fie(s,r)&&t.set.some(a=>fie(a,r)&&s.every(n=>a.every(c=>n.intersects(c,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new hWe(t,this.options)}catch{return!1}for(let r=0;re.value==="<0.0.0-0",IWe=e=>e.value==="",fie=(e,t)=>{let r=!0,s=e.slice(),a=s.pop();for(;r&&s.length;)r=s.every(n=>a.intersects(n,t)),a=s.pop();return r},CWe=(e,t)=>(bi("comp",e,t),e=vWe(e,t),bi("caret",e),e=wWe(e,t),bi("tildes",e),e=bWe(e,t),bi("xrange",e),e=PWe(e,t),bi("stars",e),e),Pa=e=>!e||e.toLowerCase()==="x"||e==="*",wWe=(e,t)=>e.trim().split(/\s+/).map(r=>BWe(r,t)).join(" "),BWe=(e,t)=>{let r=t.loose?hl[Da.TILDELOOSE]:hl[Da.TILDE];return e.replace(r,(s,a,n,c,f)=>{bi("tilde",e,s,a,n,c,f);let p;return Pa(a)?p="":Pa(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Pa(c)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:f?(bi("replaceTilde pr",f),p=`>=${a}.${n}.${c}-${f} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${c} <${a}.${+n+1}.0-0`,bi("tilde return",p),p})},vWe=(e,t)=>e.trim().split(/\s+/).map(r=>SWe(r,t)).join(" "),SWe=(e,t)=>{bi("caret",e,t);let r=t.loose?hl[Da.CARETLOOSE]:hl[Da.CARET],s=t.includePrerelease?"-0":"";return e.replace(r,(a,n,c,f,p)=>{bi("caret",e,a,n,c,f,p);let h;return Pa(n)?h="":Pa(c)?h=`>=${n}.0.0${s} <${+n+1}.0.0-0`:Pa(f)?n==="0"?h=`>=${n}.${c}.0${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.0${s} <${+n+1}.0.0-0`:p?(bi("replaceCaret pr",p),n==="0"?c==="0"?h=`>=${n}.${c}.${f}-${p} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}-${p} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f}-${p} <${+n+1}.0.0-0`):(bi("no pr"),n==="0"?c==="0"?h=`>=${n}.${c}.${f}${s} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f} <${+n+1}.0.0-0`),bi("caret return",h),h})},bWe=(e,t)=>(bi("replaceXRanges",e,t),e.split(/\s+/).map(r=>DWe(r,t)).join(" ")),DWe=(e,t)=>{e=e.trim();let r=t.loose?hl[Da.XRANGELOOSE]:hl[Da.XRANGE];return e.replace(r,(s,a,n,c,f,p)=>{bi("xRange",e,s,a,n,c,f,p);let h=Pa(n),E=h||Pa(c),C=E||Pa(f),S=C;return a==="="&&S&&(a=""),p=t.includePrerelease?"-0":"",h?a===">"||a==="<"?s="<0.0.0-0":s="*":a&&S?(E&&(c=0),f=0,a===">"?(a=">=",E?(n=+n+1,c=0,f=0):(c=+c+1,f=0)):a==="<="&&(a="<",E?n=+n+1:c=+c+1),a==="<"&&(p="-0"),s=`${a+n}.${c}.${f}${p}`):E?s=`>=${n}.0.0${p} <${+n+1}.0.0-0`:C&&(s=`>=${n}.${c}.0${p} <${n}.${+c+1}.0-0`),bi("xRange return",s),s})},PWe=(e,t)=>(bi("replaceStars",e,t),e.trim().replace(hl[Da.STAR],"")),xWe=(e,t)=>(bi("replaceGTE0",e,t),e.trim().replace(hl[t.includePrerelease?Da.GTE0PRE:Da.GTE0],"")),kWe=e=>(t,r,s,a,n,c,f,p,h,E,C,S,x)=>(Pa(s)?r="":Pa(a)?r=`>=${s}.0.0${e?"-0":""}`:Pa(n)?r=`>=${s}.${a}.0${e?"-0":""}`:c?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,Pa(h)?p="":Pa(E)?p=`<${+h+1}.0.0-0`:Pa(C)?p=`<${h}.${+E+1}.0-0`:S?p=`<=${h}.${E}.${C}-${S}`:e?p=`<${h}.${E}.${+C+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),QWe=(e,t,r)=>{for(let s=0;s0){let a=e[s].semver;if(a.major===t.major&&a.minor===t.minor&&a.patch===t.patch)return!0}return!1}return!0}});var cB=G((DQt,yie)=>{var uB=Symbol("SemVer ANY"),O_=class e{static get ANY(){return uB}constructor(t,r){if(r=pie(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),N_("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===uB?this.value="":this.value=this.operator+this.semver.version,N_("comp",this)}parse(t){let r=this.options.loose?hie[die.COMPARATORLOOSE]:hie[die.COMPARATOR],s=t.match(r);if(!s)throw new TypeError(`Invalid comparator: ${t}`);this.operator=s[1]!==void 0?s[1]:"",this.operator==="="&&(this.operator=""),s[2]?this.semver=new gie(s[2],this.options.loose):this.semver=uB}toString(){return this.value}test(t){if(N_("Comparator.test",t,this.options.loose),this.semver===uB||t===uB)return!0;if(typeof t=="string")try{t=new gie(t,this.options)}catch{return!1}return F_(t,this.operator,this.semver,this.options)}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new mie(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new mie(this.value,r).test(t.semver):(r=pie(r),r.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||F_(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||F_(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};yie.exports=O_;var pie=Jx(),{safeRe:hie,t:die}=xE(),F_=D_(),N_=sB(),gie=zo(),mie=Dc()});var fB=G((PQt,Eie)=>{var TWe=Dc(),RWe=(e,t,r)=>{try{t=new TWe(t,r)}catch{return!1}return t.test(e)};Eie.exports=RWe});var Cie=G((xQt,Iie)=>{var FWe=Dc(),NWe=(e,t)=>new FWe(e,t).set.map(r=>r.map(s=>s.value).join(" ").trim().split(" "));Iie.exports=NWe});var Bie=G((kQt,wie)=>{var OWe=zo(),LWe=Dc(),MWe=(e,t,r)=>{let s=null,a=null,n=null;try{n=new LWe(t,r)}catch{return null}return e.forEach(c=>{n.test(c)&&(!s||a.compare(c)===-1)&&(s=c,a=new OWe(s,r))}),s};wie.exports=MWe});var Sie=G((QQt,vie)=>{var UWe=zo(),_We=Dc(),HWe=(e,t,r)=>{let s=null,a=null,n=null;try{n=new _We(t,r)}catch{return null}return e.forEach(c=>{n.test(c)&&(!s||a.compare(c)===1)&&(s=c,a=new UWe(s,r))}),s};vie.exports=HWe});var Pie=G((TQt,Die)=>{var L_=zo(),jWe=Dc(),bie=oB(),GWe=(e,t)=>{e=new jWe(e,t);let r=new L_("0.0.0");if(e.test(r)||(r=new L_("0.0.0-0"),e.test(r)))return r;r=null;for(let s=0;s{let f=new L_(c.semver.version);switch(c.operator){case">":f.prerelease.length===0?f.patch++:f.prerelease.push(0),f.raw=f.format();case"":case">=":(!n||bie(f,n))&&(n=f);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),n&&(!r||bie(r,n))&&(r=n)}return r&&e.test(r)?r:null};Die.exports=GWe});var kie=G((RQt,xie)=>{var qWe=Dc(),YWe=(e,t)=>{try{return new qWe(e,t).range||"*"}catch{return null}};xie.exports=YWe});var sk=G((FQt,Fie)=>{var WWe=zo(),Rie=cB(),{ANY:VWe}=Rie,KWe=Dc(),JWe=fB(),Qie=oB(),Tie=$x(),zWe=tk(),ZWe=ek(),XWe=(e,t,r,s)=>{e=new WWe(e,s),t=new KWe(t,s);let a,n,c,f,p;switch(r){case">":a=Qie,n=zWe,c=Tie,f=">",p=">=";break;case"<":a=Tie,n=ZWe,c=Qie,f="<",p="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(JWe(e,t,s))return!1;for(let h=0;h{x.semver===VWe&&(x=new Rie(">=0.0.0")),C=C||x,S=S||x,a(x.semver,C.semver,s)?C=x:c(x.semver,S.semver,s)&&(S=x)}),C.operator===f||C.operator===p||(!S.operator||S.operator===f)&&n(e,S.semver))return!1;if(S.operator===p&&c(e,S.semver))return!1}return!0};Fie.exports=XWe});var Oie=G((NQt,Nie)=>{var $We=sk(),eVe=(e,t,r)=>$We(e,t,">",r);Nie.exports=eVe});var Mie=G((OQt,Lie)=>{var tVe=sk(),rVe=(e,t,r)=>tVe(e,t,"<",r);Lie.exports=rVe});var Hie=G((LQt,_ie)=>{var Uie=Dc(),nVe=(e,t,r)=>(e=new Uie(e,r),t=new Uie(t,r),e.intersects(t,r));_ie.exports=nVe});var Gie=G((MQt,jie)=>{var iVe=fB(),sVe=bc();jie.exports=(e,t,r)=>{let s=[],a=null,n=null,c=e.sort((E,C)=>sVe(E,C,r));for(let E of c)iVe(E,t,r)?(n=E,a||(a=E)):(n&&s.push([a,n]),n=null,a=null);a&&s.push([a,null]);let f=[];for(let[E,C]of s)E===C?f.push(E):!C&&E===c[0]?f.push("*"):C?E===c[0]?f.push(`<=${C}`):f.push(`${E} - ${C}`):f.push(`>=${E}`);let p=f.join(" || "),h=typeof t.raw=="string"?t.raw:String(t);return p.length{var qie=Dc(),U_=cB(),{ANY:M_}=U_,AB=fB(),__=bc(),oVe=(e,t,r={})=>{if(e===t)return!0;e=new qie(e,r),t=new qie(t,r);let s=!1;e:for(let a of e.set){for(let n of t.set){let c=lVe(a,n,r);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},aVe=[new U_(">=0.0.0-0")],Yie=[new U_(">=0.0.0")],lVe=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===M_){if(t.length===1&&t[0].semver===M_)return!0;r.includePrerelease?e=aVe:e=Yie}if(t.length===1&&t[0].semver===M_){if(r.includePrerelease)return!0;t=Yie}let s=new Set,a,n;for(let x of e)x.operator===">"||x.operator===">="?a=Wie(a,x,r):x.operator==="<"||x.operator==="<="?n=Vie(n,x,r):s.add(x.semver);if(s.size>1)return null;let c;if(a&&n){if(c=__(a.semver,n.semver,r),c>0)return null;if(c===0&&(a.operator!==">="||n.operator!=="<="))return null}for(let x of s){if(a&&!AB(x,String(a),r)||n&&!AB(x,String(n),r))return null;for(let I of t)if(!AB(x,String(I),r))return!1;return!0}let f,p,h,E,C=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,S=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;C&&C.prerelease.length===1&&n.operator==="<"&&C.prerelease[0]===0&&(C=!1);for(let x of t){if(E=E||x.operator===">"||x.operator===">=",h=h||x.operator==="<"||x.operator==="<=",a){if(S&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===S.major&&x.semver.minor===S.minor&&x.semver.patch===S.patch&&(S=!1),x.operator===">"||x.operator===">="){if(f=Wie(a,x,r),f===x&&f!==a)return!1}else if(a.operator===">="&&!AB(a.semver,String(x),r))return!1}if(n){if(C&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===C.major&&x.semver.minor===C.minor&&x.semver.patch===C.patch&&(C=!1),x.operator==="<"||x.operator==="<="){if(p=Vie(n,x,r),p===x&&p!==n)return!1}else if(n.operator==="<="&&!AB(n.semver,String(x),r))return!1}if(!x.operator&&(n||a)&&c!==0)return!1}return!(a&&h&&!n&&c!==0||n&&E&&!a&&c!==0||S||C)},Wie=(e,t,r)=>{if(!e)return t;let s=__(e.semver,t.semver,r);return s>0?e:s<0||t.operator===">"&&e.operator===">="?t:e},Vie=(e,t,r)=>{if(!e)return t;let s=__(e.semver,t.semver,r);return s<0?e:s>0||t.operator==="<"&&e.operator==="<="?t:e};Kie.exports=oVe});var hi=G((_Qt,Xie)=>{var H_=xE(),zie=iB(),cVe=zo(),Zie=B_(),uVe=U0(),fVe=gne(),AVe=yne(),pVe=Cne(),hVe=vne(),dVe=bne(),gVe=Pne(),mVe=kne(),yVe=Tne(),EVe=bc(),IVe=One(),CVe=Mne(),wVe=Xx(),BVe=jne(),vVe=qne(),SVe=oB(),bVe=$x(),DVe=S_(),PVe=b_(),xVe=ek(),kVe=tk(),QVe=D_(),TVe=$ne(),RVe=cB(),FVe=Dc(),NVe=fB(),OVe=Cie(),LVe=Bie(),MVe=Sie(),UVe=Pie(),_Ve=kie(),HVe=sk(),jVe=Oie(),GVe=Mie(),qVe=Hie(),YVe=Gie(),WVe=Jie();Xie.exports={parse:uVe,valid:fVe,clean:AVe,inc:pVe,diff:hVe,major:dVe,minor:gVe,patch:mVe,prerelease:yVe,compare:EVe,rcompare:IVe,compareLoose:CVe,compareBuild:wVe,sort:BVe,rsort:vVe,gt:SVe,lt:bVe,eq:DVe,neq:PVe,gte:xVe,lte:kVe,cmp:QVe,coerce:TVe,Comparator:RVe,Range:FVe,satisfies:NVe,toComparators:OVe,maxSatisfying:LVe,minSatisfying:MVe,minVersion:UVe,validRange:_Ve,outside:HVe,gtr:jVe,ltr:GVe,intersects:qVe,simplifyRange:YVe,subset:WVe,SemVer:cVe,re:H_.re,src:H_.src,tokens:H_.t,SEMVER_SPEC_VERSION:zie.SEMVER_SPEC_VERSION,RELEASE_TYPES:zie.RELEASE_TYPES,compareIdentifiers:Zie.compareIdentifiers,rcompareIdentifiers:Zie.rcompareIdentifiers}});var ese=G((HQt,$ie)=>{"use strict";function VVe(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function G0(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,G0)}VVe(G0,Error);G0.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C{switch(Ne[1]){case"|":return xe|Ne[3];case"&":return xe&Ne[3];case"^":return xe^Ne[3]}},ee)},S="!",x=Fe("!",!1),I=function(ee){return!ee},R="(",N=Fe("(",!1),U=")",K=Fe(")",!1),$=function(ee){return ee},ie=/^[^ \t\n\r()!|&\^]/,fe=Qe([" "," ",` +`,"\r","(",")","!","|","&","^"],!0,!1),le=function(ee){return t.queryPattern.test(ee)},ge=function(ee){return t.checkFn(ee)},pe=Te("whitespace"),De=/^[ \t\n\r]/,ye=Qe([" "," ",` +`,"\r"],!1,!1),d=0,ve=0,Ie=[{line:1,column:1}],me=0,ce=[],X=0,be;if("startRule"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');a=s[t.startRule]}function ke(){return e.substring(ve,d)}function it(){return Me(ve,d)}function _(ee,se){throw se=se!==void 0?se:Me(ve,d),D([Te(ee)],e.substring(ve,d),se)}function tt(ee,se){throw se=se!==void 0?se:Me(ve,d),w(ee,se)}function Fe(ee,se){return{type:"literal",text:ee,ignoreCase:se}}function Qe(ee,se,xe){return{type:"class",parts:ee,inverted:se,ignoreCase:xe}}function Se(){return{type:"any"}}function je(){return{type:"end"}}function Te(ee){return{type:"other",description:ee}}function ct(ee){var se=Ie[ee],xe;if(se)return se;for(xe=ee-1;!Ie[xe];)xe--;for(se=Ie[xe],se={line:se.line,column:se.column};xeme&&(me=d,ce=[]),ce.push(ee))}function w(ee,se){return new G0(ee,null,null,se)}function D(ee,se,xe){return new G0(G0.buildMessage(ee,se),ee,se,xe)}function y(){var ee,se,xe,Ne,ut,Ct,Yt,ir;if(ee=d,se=F(),se!==r){for(xe=[],Ne=d,ut=Z(),ut!==r?(e.charCodeAt(d)===124?(Ct=n,d++):(Ct=r,X===0&&P(c)),Ct===r&&(e.charCodeAt(d)===38?(Ct=f,d++):(Ct=r,X===0&&P(p)),Ct===r&&(e.charCodeAt(d)===94?(Ct=h,d++):(Ct=r,X===0&&P(E)))),Ct!==r?(Yt=Z(),Yt!==r?(ir=F(),ir!==r?(ut=[ut,Ct,Yt,ir],Ne=ut):(d=Ne,Ne=r)):(d=Ne,Ne=r)):(d=Ne,Ne=r)):(d=Ne,Ne=r);Ne!==r;)xe.push(Ne),Ne=d,ut=Z(),ut!==r?(e.charCodeAt(d)===124?(Ct=n,d++):(Ct=r,X===0&&P(c)),Ct===r&&(e.charCodeAt(d)===38?(Ct=f,d++):(Ct=r,X===0&&P(p)),Ct===r&&(e.charCodeAt(d)===94?(Ct=h,d++):(Ct=r,X===0&&P(E)))),Ct!==r?(Yt=Z(),Yt!==r?(ir=F(),ir!==r?(ut=[ut,Ct,Yt,ir],Ne=ut):(d=Ne,Ne=r)):(d=Ne,Ne=r)):(d=Ne,Ne=r)):(d=Ne,Ne=r);xe!==r?(ve=ee,se=C(se,xe),ee=se):(d=ee,ee=r)}else d=ee,ee=r;return ee}function F(){var ee,se,xe,Ne,ut,Ct;return ee=d,e.charCodeAt(d)===33?(se=S,d++):(se=r,X===0&&P(x)),se!==r?(xe=F(),xe!==r?(ve=ee,se=I(xe),ee=se):(d=ee,ee=r)):(d=ee,ee=r),ee===r&&(ee=d,e.charCodeAt(d)===40?(se=R,d++):(se=r,X===0&&P(N)),se!==r?(xe=Z(),xe!==r?(Ne=y(),Ne!==r?(ut=Z(),ut!==r?(e.charCodeAt(d)===41?(Ct=U,d++):(Ct=r,X===0&&P(K)),Ct!==r?(ve=ee,se=$(Ne),ee=se):(d=ee,ee=r)):(d=ee,ee=r)):(d=ee,ee=r)):(d=ee,ee=r)):(d=ee,ee=r),ee===r&&(ee=z())),ee}function z(){var ee,se,xe,Ne,ut;if(ee=d,se=Z(),se!==r){if(xe=d,Ne=[],ie.test(e.charAt(d))?(ut=e.charAt(d),d++):(ut=r,X===0&&P(fe)),ut!==r)for(;ut!==r;)Ne.push(ut),ie.test(e.charAt(d))?(ut=e.charAt(d),d++):(ut=r,X===0&&P(fe));else Ne=r;Ne!==r?xe=e.substring(xe,d):xe=Ne,xe!==r?(ve=d,Ne=le(xe),Ne?Ne=void 0:Ne=r,Ne!==r?(ve=ee,se=ge(xe),ee=se):(d=ee,ee=r)):(d=ee,ee=r)}else d=ee,ee=r;return ee}function Z(){var ee,se;for(X++,ee=[],De.test(e.charAt(d))?(se=e.charAt(d),d++):(se=r,X===0&&P(ye));se!==r;)ee.push(se),De.test(e.charAt(d))?(se=e.charAt(d),d++):(se=r,X===0&&P(ye));return X--,ee===r&&(se=r,X===0&&P(pe)),ee}if(be=a(),be!==r&&d===e.length)return be;throw be!==r&&d{var{parse:JVe}=ese();ok.makeParser=(e=/[a-z]+/)=>(t,r)=>JVe(t,{queryPattern:e,checkFn:r});ok.parse=ok.makeParser()});var nse=G((GQt,rse)=>{"use strict";rse.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var j_=G((qQt,sse)=>{var pB=nse(),ise={};for(let e of Object.keys(pB))ise[pB[e]]=e;var dr={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};sse.exports=dr;for(let e of Object.keys(dr)){if(!("channels"in dr[e]))throw new Error("missing channels property: "+e);if(!("labels"in dr[e]))throw new Error("missing channel labels property: "+e);if(dr[e].labels.length!==dr[e].channels)throw new Error("channel and label counts mismatch: "+e);let{channels:t,labels:r}=dr[e];delete dr[e].channels,delete dr[e].labels,Object.defineProperty(dr[e],"channels",{value:t}),Object.defineProperty(dr[e],"labels",{value:r})}dr.rgb.hsl=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.min(t,r,s),n=Math.max(t,r,s),c=n-a,f,p;n===a?f=0:t===n?f=(r-s)/c:r===n?f=2+(s-t)/c:s===n&&(f=4+(t-r)/c),f=Math.min(f*60,360),f<0&&(f+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=c/(n+a):p=c/(2-n-a),[f,p*100,h*100]};dr.rgb.hsv=function(e){let t,r,s,a,n,c=e[0]/255,f=e[1]/255,p=e[2]/255,h=Math.max(c,f,p),E=h-Math.min(c,f,p),C=function(S){return(h-S)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,t=C(c),r=C(f),s=C(p),c===h?a=s-r:f===h?a=1/3+t-s:p===h&&(a=2/3+r-t),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};dr.rgb.hwb=function(e){let t=e[0],r=e[1],s=e[2],a=dr.rgb.hsl(e)[0],n=1/255*Math.min(t,Math.min(r,s));return s=1-1/255*Math.max(t,Math.max(r,s)),[a,n*100,s*100]};dr.rgb.cmyk=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.min(1-t,1-r,1-s),n=(1-t-a)/(1-a)||0,c=(1-r-a)/(1-a)||0,f=(1-s-a)/(1-a)||0;return[n*100,c*100,f*100,a*100]};function zVe(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}dr.rgb.keyword=function(e){let t=ise[e];if(t)return t;let r=1/0,s;for(let a of Object.keys(pB)){let n=pB[a],c=zVe(e,n);c.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92;let a=t*.4124+r*.3576+s*.1805,n=t*.2126+r*.7152+s*.0722,c=t*.0193+r*.1192+s*.9505;return[a*100,n*100,c*100]};dr.rgb.lab=function(e){let t=dr.rgb.xyz(e),r=t[0],s=t[1],a=t[2];r/=95.047,s/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*s-16,c=500*(r-s),f=200*(s-a);return[n,c,f]};dr.hsl.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100,a,n,c;if(r===0)return c=s*255,[c,c,c];s<.5?a=s*(1+r):a=s+r-s*r;let f=2*s-a,p=[0,0,0];for(let h=0;h<3;h++)n=t+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?c=f+(a-f)*6*n:2*n<1?c=a:3*n<2?c=f+(a-f)*(2/3-n)*6:c=f,p[h]=c*255;return p};dr.hsl.hsv=function(e){let t=e[0],r=e[1]/100,s=e[2]/100,a=r,n=Math.max(s,.01);s*=2,r*=s<=1?s:2-s,a*=n<=1?n:2-n;let c=(s+r)/2,f=s===0?2*a/(n+a):2*r/(s+r);return[t,f*100,c*100]};dr.hsv.rgb=function(e){let t=e[0]/60,r=e[1]/100,s=e[2]/100,a=Math.floor(t)%6,n=t-Math.floor(t),c=255*s*(1-r),f=255*s*(1-r*n),p=255*s*(1-r*(1-n));switch(s*=255,a){case 0:return[s,p,c];case 1:return[f,s,c];case 2:return[c,s,p];case 3:return[c,f,s];case 4:return[p,c,s];case 5:return[s,c,f]}};dr.hsv.hsl=function(e){let t=e[0],r=e[1]/100,s=e[2]/100,a=Math.max(s,.01),n,c;c=(2-r)*s;let f=(2-r)*a;return n=r*a,n/=f<=1?f:2-f,n=n||0,c/=2,[t,n*100,c*100]};dr.hwb.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100,a=r+s,n;a>1&&(r/=a,s/=a);let c=Math.floor(6*t),f=1-s;n=6*t-c,c&1&&(n=1-n);let p=r+n*(f-r),h,E,C;switch(c){default:case 6:case 0:h=f,E=p,C=r;break;case 1:h=p,E=f,C=r;break;case 2:h=r,E=f,C=p;break;case 3:h=r,E=p,C=f;break;case 4:h=p,E=r,C=f;break;case 5:h=f,E=r,C=p;break}return[h*255,E*255,C*255]};dr.cmyk.rgb=function(e){let t=e[0]/100,r=e[1]/100,s=e[2]/100,a=e[3]/100,n=1-Math.min(1,t*(1-a)+a),c=1-Math.min(1,r*(1-a)+a),f=1-Math.min(1,s*(1-a)+a);return[n*255,c*255,f*255]};dr.xyz.rgb=function(e){let t=e[0]/100,r=e[1]/100,s=e[2]/100,a,n,c;return a=t*3.2406+r*-1.5372+s*-.4986,n=t*-.9689+r*1.8758+s*.0415,c=t*.0557+r*-.204+s*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),c=Math.min(Math.max(0,c),1),[a*255,n*255,c*255]};dr.xyz.lab=function(e){let t=e[0],r=e[1],s=e[2];t/=95.047,r/=100,s/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;let a=116*r-16,n=500*(t-r),c=200*(r-s);return[a,n,c]};dr.lab.xyz=function(e){let t=e[0],r=e[1],s=e[2],a,n,c;n=(t+16)/116,a=r/500+n,c=n-s/200;let f=n**3,p=a**3,h=c**3;return n=f>.008856?f:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,c=h>.008856?h:(c-16/116)/7.787,a*=95.047,n*=100,c*=108.883,[a,n,c]};dr.lab.lch=function(e){let t=e[0],r=e[1],s=e[2],a;a=Math.atan2(s,r)*360/2/Math.PI,a<0&&(a+=360);let c=Math.sqrt(r*r+s*s);return[t,c,a]};dr.lch.lab=function(e){let t=e[0],r=e[1],a=e[2]/360*2*Math.PI,n=r*Math.cos(a),c=r*Math.sin(a);return[t,n,c]};dr.rgb.ansi16=function(e,t=null){let[r,s,a]=e,n=t===null?dr.rgb.hsv(e)[2]:t;if(n=Math.round(n/50),n===0)return 30;let c=30+(Math.round(a/255)<<2|Math.round(s/255)<<1|Math.round(r/255));return n===2&&(c+=60),c};dr.hsv.ansi16=function(e){return dr.rgb.ansi16(dr.hsv.rgb(e),e[2])};dr.rgb.ansi256=function(e){let t=e[0],r=e[1],s=e[2];return t===r&&r===s?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(s/255*5)};dr.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let r=(~~(e>50)+1)*.5,s=(t&1)*r*255,a=(t>>1&1)*r*255,n=(t>>2&1)*r*255;return[s,a,n]};dr.ansi256.rgb=function(e){if(e>=232){let n=(e-232)*10+8;return[n,n,n]}e-=16;let t,r=Math.floor(e/36)/5*255,s=Math.floor((t=e%36)/6)/5*255,a=t%6/5*255;return[r,s,a]};dr.rgb.hex=function(e){let r=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};dr.hex.rgb=function(e){let t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let r=t[0];t[0].length===3&&(r=r.split("").map(f=>f+f).join(""));let s=parseInt(r,16),a=s>>16&255,n=s>>8&255,c=s&255;return[a,n,c]};dr.rgb.hcg=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.max(Math.max(t,r),s),n=Math.min(Math.min(t,r),s),c=a-n,f,p;return c<1?f=n/(1-c):f=0,c<=0?p=0:a===t?p=(r-s)/c%6:a===r?p=2+(s-t)/c:p=4+(t-r)/c,p/=6,p%=1,[p*360,c*100,f*100]};dr.hsl.hcg=function(e){let t=e[1]/100,r=e[2]/100,s=r<.5?2*t*r:2*t*(1-r),a=0;return s<1&&(a=(r-.5*s)/(1-s)),[e[0],s*100,a*100]};dr.hsv.hcg=function(e){let t=e[1]/100,r=e[2]/100,s=t*r,a=0;return s<1&&(a=(r-s)/(1-s)),[e[0],s*100,a*100]};dr.hcg.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100;if(r===0)return[s*255,s*255,s*255];let a=[0,0,0],n=t%1*6,c=n%1,f=1-c,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=c,a[2]=0;break;case 1:a[0]=f,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=c;break;case 3:a[0]=0,a[1]=f,a[2]=1;break;case 4:a[0]=c,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=f}return p=(1-r)*s,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};dr.hcg.hsv=function(e){let t=e[1]/100,r=e[2]/100,s=t+r*(1-t),a=0;return s>0&&(a=t/s),[e[0],a*100,s*100]};dr.hcg.hsl=function(e){let t=e[1]/100,s=e[2]/100*(1-t)+.5*t,a=0;return s>0&&s<.5?a=t/(2*s):s>=.5&&s<1&&(a=t/(2*(1-s))),[e[0],a*100,s*100]};dr.hcg.hwb=function(e){let t=e[1]/100,r=e[2]/100,s=t+r*(1-t);return[e[0],(s-t)*100,(1-s)*100]};dr.hwb.hcg=function(e){let t=e[1]/100,s=1-e[2]/100,a=s-t,n=0;return a<1&&(n=(s-a)/(1-a)),[e[0],a*100,n*100]};dr.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};dr.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};dr.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};dr.gray.hsl=function(e){return[0,0,e[0]]};dr.gray.hsv=dr.gray.hsl;dr.gray.hwb=function(e){return[0,100,e[0]]};dr.gray.cmyk=function(e){return[0,0,0,e[0]]};dr.gray.lab=function(e){return[e[0],0,0]};dr.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,s=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(s.length)+s};dr.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}});var ase=G((YQt,ose)=>{var ak=j_();function ZVe(){let e={},t=Object.keys(ak);for(let r=t.length,s=0;s{var G_=j_(),t7e=ase(),RE={},r7e=Object.keys(G_);function n7e(e){let t=function(...r){let s=r[0];return s==null?s:(s.length>1&&(r=s),e(r))};return"conversion"in e&&(t.conversion=e.conversion),t}function i7e(e){let t=function(...r){let s=r[0];if(s==null)return s;s.length>1&&(r=s);let a=e(r);if(typeof a=="object")for(let n=a.length,c=0;c{RE[e]={},Object.defineProperty(RE[e],"channels",{value:G_[e].channels}),Object.defineProperty(RE[e],"labels",{value:G_[e].labels});let t=t7e(e);Object.keys(t).forEach(s=>{let a=t[s];RE[e][s]=i7e(a),RE[e][s].raw=n7e(a)})});lse.exports=RE});var ck=G((VQt,hse)=>{"use strict";var use=(e,t)=>(...r)=>`\x1B[${e(...r)+t}m`,fse=(e,t)=>(...r)=>{let s=e(...r);return`\x1B[${38+t};5;${s}m`},Ase=(e,t)=>(...r)=>{let s=e(...r);return`\x1B[${38+t};2;${s[0]};${s[1]};${s[2]}m`},lk=e=>e,pse=(e,t,r)=>[e,t,r],FE=(e,t,r)=>{Object.defineProperty(e,t,{get:()=>{let s=r();return Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0}),s},enumerable:!0,configurable:!0})},q_,NE=(e,t,r,s)=>{q_===void 0&&(q_=cse());let a=s?10:0,n={};for(let[c,f]of Object.entries(q_)){let p=c==="ansi16"?"ansi":c;c===t?n[p]=e(r,a):typeof f=="object"&&(n[p]=e(f[t],a))}return n};function s7e(){let e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,s]of Object.entries(t)){for(let[a,n]of Object.entries(s))t[a]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},s[a]=t[a],e.set(n[0],n[1]);Object.defineProperty(t,r,{value:s,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="\x1B[39m",t.bgColor.close="\x1B[49m",FE(t.color,"ansi",()=>NE(use,"ansi16",lk,!1)),FE(t.color,"ansi256",()=>NE(fse,"ansi256",lk,!1)),FE(t.color,"ansi16m",()=>NE(Ase,"rgb",pse,!1)),FE(t.bgColor,"ansi",()=>NE(use,"ansi16",lk,!0)),FE(t.bgColor,"ansi256",()=>NE(fse,"ansi256",lk,!0)),FE(t.bgColor,"ansi16m",()=>NE(Ase,"rgb",pse,!0)),t}Object.defineProperty(hse,"exports",{enumerable:!0,get:s7e})});var gse=G((KQt,dse)=>{"use strict";dse.exports=(e,t=process.argv)=>{let r=e.startsWith("-")?"":e.length===1?"-":"--",s=t.indexOf(r+e),a=t.indexOf("--");return s!==-1&&(a===-1||s{"use strict";var o7e=Ce("os"),mse=Ce("tty"),Pc=gse(),{env:Ts}=process,ud;Pc("no-color")||Pc("no-colors")||Pc("color=false")||Pc("color=never")?ud=0:(Pc("color")||Pc("colors")||Pc("color=true")||Pc("color=always"))&&(ud=1);"FORCE_COLOR"in Ts&&(Ts.FORCE_COLOR==="true"?ud=1:Ts.FORCE_COLOR==="false"?ud=0:ud=Ts.FORCE_COLOR.length===0?1:Math.min(parseInt(Ts.FORCE_COLOR,10),3));function Y_(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function W_(e,t){if(ud===0)return 0;if(Pc("color=16m")||Pc("color=full")||Pc("color=truecolor"))return 3;if(Pc("color=256"))return 2;if(e&&!t&&ud===void 0)return 0;let r=ud||0;if(Ts.TERM==="dumb")return r;if(process.platform==="win32"){let s=o7e.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in Ts)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(s=>s in Ts)||Ts.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Ts)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ts.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Ts)return 1;if(Ts.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ts){let s=parseInt((Ts.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ts.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ts.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ts.TERM)||"COLORTERM"in Ts?1:r}function a7e(e){let t=W_(e,e&&e.isTTY);return Y_(t)}yse.exports={supportsColor:a7e,stdout:Y_(W_(!0,mse.isatty(1))),stderr:Y_(W_(!0,mse.isatty(2)))}});var Cse=G((zQt,Ise)=>{"use strict";var l7e=(e,t,r)=>{let s=e.indexOf(t);if(s===-1)return e;let a=t.length,n=0,c="";do c+=e.substr(n,s-n)+t+r,n=s+a,s=e.indexOf(t,n);while(s!==-1);return c+=e.substr(n),c},c7e=(e,t,r,s)=>{let a=0,n="";do{let c=e[s-1]==="\r";n+=e.substr(a,(c?s-1:s)-a)+t+(c?`\r +`:` +`)+r,a=s+1,s=e.indexOf(` +`,a)}while(s!==-1);return n+=e.substr(a),n};Ise.exports={stringReplaceAll:l7e,stringEncaseCRLFWithFirstIndex:c7e}});var bse=G((ZQt,Sse)=>{"use strict";var u7e=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,wse=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,f7e=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,A7e=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,p7e=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function vse(e){let t=e[0]==="u",r=e[1]==="{";return t&&!r&&e.length===5||e[0]==="x"&&e.length===3?String.fromCharCode(parseInt(e.slice(1),16)):t&&r?String.fromCodePoint(parseInt(e.slice(2,-1),16)):p7e.get(e)||e}function h7e(e,t){let r=[],s=t.trim().split(/\s*,\s*/g),a;for(let n of s){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(f7e))r.push(a[2].replace(A7e,(f,p,h)=>p?vse(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${e}')`)}return r}function d7e(e){wse.lastIndex=0;let t=[],r;for(;(r=wse.exec(e))!==null;){let s=r[1];if(r[2]){let a=h7e(s,r[2]);t.push([s].concat(a))}else t.push([s])}return t}function Bse(e,t){let r={};for(let a of t)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=e;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}Sse.exports=(e,t)=>{let r=[],s=[],a=[];if(t.replace(u7e,(n,c,f,p,h,E)=>{if(c)a.push(vse(c));else if(p){let C=a.join("");a=[],s.push(r.length===0?C:Bse(e,r)(C)),r.push({inverse:f,styles:d7e(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");s.push(Bse(e,r)(a.join(""))),a=[],r.pop()}else a.push(E)}),s.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return s.join("")}});var LE=G((XQt,Tse)=>{"use strict";var hB=ck(),{stdout:K_,stderr:J_}=Ese(),{stringReplaceAll:g7e,stringEncaseCRLFWithFirstIndex:m7e}=Cse(),{isArray:uk}=Array,Pse=["ansi","ansi","ansi256","ansi16m"],OE=Object.create(null),y7e=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=K_?K_.level:0;e.level=t.level===void 0?r:t.level},z_=class{constructor(t){return xse(t)}},xse=e=>{let t={};return y7e(t,e),t.template=(...r)=>Qse(t.template,...r),Object.setPrototypeOf(t,fk.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=z_,t.template};function fk(e){return xse(e)}for(let[e,t]of Object.entries(hB))OE[e]={get(){let r=Ak(this,Z_(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};OE.visible={get(){let e=Ak(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};var kse=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let e of kse)OE[e]={get(){let{level:t}=this;return function(...r){let s=Z_(hB.color[Pse[t]][e](...r),hB.color.close,this._styler);return Ak(this,s,this._isEmpty)}}};for(let e of kse){let t="bg"+e[0].toUpperCase()+e.slice(1);OE[t]={get(){let{level:r}=this;return function(...s){let a=Z_(hB.bgColor[Pse[r]][e](...s),hB.bgColor.close,this._styler);return Ak(this,a,this._isEmpty)}}}}var E7e=Object.defineProperties(()=>{},{...OE,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),Z_=(e,t,r)=>{let s,a;return r===void 0?(s=e,a=t):(s=r.openAll+e,a=t+r.closeAll),{open:e,close:t,openAll:s,closeAll:a,parent:r}},Ak=(e,t,r)=>{let s=(...a)=>uk(a[0])&&uk(a[0].raw)?Dse(s,Qse(s,...a)):Dse(s,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(s,E7e),s._generator=e,s._styler=t,s._isEmpty=r,s},Dse=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let r=e._styler;if(r===void 0)return t;let{openAll:s,closeAll:a}=r;if(t.indexOf("\x1B")!==-1)for(;r!==void 0;)t=g7e(t,r.close,r.open),r=r.parent;let n=t.indexOf(` +`);return n!==-1&&(t=m7e(t,a,s,n)),s+t+a},V_,Qse=(e,...t)=>{let[r]=t;if(!uk(r)||!uk(r.raw))return t.join(" ");let s=t.slice(1),a=[r.raw[0]];for(let n=1;n{"use strict";xc.isInteger=e=>typeof e=="number"?Number.isInteger(e):typeof e=="string"&&e.trim()!==""?Number.isInteger(Number(e)):!1;xc.find=(e,t)=>e.nodes.find(r=>r.type===t);xc.exceedsLimit=(e,t,r=1,s)=>s===!1||!xc.isInteger(e)||!xc.isInteger(t)?!1:(Number(t)-Number(e))/Number(r)>=s;xc.escapeNode=(e,t=0,r)=>{let s=e.nodes[t];s&&(r&&s.type===r||s.type==="open"||s.type==="close")&&s.escaped!==!0&&(s.value="\\"+s.value,s.escaped=!0)};xc.encloseBrace=e=>e.type!=="brace"||e.commas>>0+e.ranges>>0?!1:(e.invalid=!0,!0);xc.isInvalidBrace=e=>e.type!=="brace"?!1:e.invalid===!0||e.dollar?!0:!(e.commas>>0+e.ranges>>0)||e.open!==!0||e.close!==!0?(e.invalid=!0,!0):!1;xc.isOpenOrClose=e=>e.type==="open"||e.type==="close"?!0:e.open===!0||e.close===!0;xc.reduce=e=>e.reduce((t,r)=>(r.type==="text"&&t.push(r.value),r.type==="range"&&(r.type="text"),t),[]);xc.flatten=(...e)=>{let t=[],r=s=>{for(let a=0;a{"use strict";var Rse=hk();Fse.exports=(e,t={})=>{let r=(s,a={})=>{let n=t.escapeInvalid&&Rse.isInvalidBrace(a),c=s.invalid===!0&&t.escapeInvalid===!0,f="";if(s.value)return(n||c)&&Rse.isOpenOrClose(s)?"\\"+s.value:s.value;if(s.value)return s.value;if(s.nodes)for(let p of s.nodes)f+=r(p);return f};return r(e)}});var Ose=G((tTt,Nse)=>{"use strict";Nse.exports=function(e){return typeof e=="number"?e-e===0:typeof e=="string"&&e.trim()!==""?Number.isFinite?Number.isFinite(+e):isFinite(+e):!1}});var Yse=G((rTt,qse)=>{"use strict";var Lse=Ose(),q0=(e,t,r)=>{if(Lse(e)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(t===void 0||e===t)return String(e);if(Lse(t)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let s={relaxZeros:!0,...r};typeof s.strictZeros=="boolean"&&(s.relaxZeros=s.strictZeros===!1);let a=String(s.relaxZeros),n=String(s.shorthand),c=String(s.capture),f=String(s.wrap),p=e+":"+t+"="+a+n+c+f;if(q0.cache.hasOwnProperty(p))return q0.cache[p].result;let h=Math.min(e,t),E=Math.max(e,t);if(Math.abs(h-E)===1){let R=e+"|"+t;return s.capture?`(${R})`:s.wrap===!1?R:`(?:${R})`}let C=Gse(e)||Gse(t),S={min:e,max:t,a:h,b:E},x=[],I=[];if(C&&(S.isPadded=C,S.maxLen=String(S.max).length),h<0){let R=E<0?Math.abs(E):1;I=Mse(R,Math.abs(h),S,s),h=S.a=0}return E>=0&&(x=Mse(h,E,S,s)),S.negatives=I,S.positives=x,S.result=I7e(I,x,s),s.capture===!0?S.result=`(${S.result})`:s.wrap!==!1&&x.length+I.length>1&&(S.result=`(?:${S.result})`),q0.cache[p]=S,S.result};function I7e(e,t,r){let s=X_(e,t,"-",!1,r)||[],a=X_(t,e,"",!1,r)||[],n=X_(e,t,"-?",!0,r)||[];return s.concat(n).concat(a).join("|")}function C7e(e,t){let r=1,s=1,a=_se(e,r),n=new Set([t]);for(;e<=a&&a<=t;)n.add(a),r+=1,a=_se(e,r);for(a=Hse(t+1,s)-1;e1&&f.count.pop(),f.count.push(E.count[0]),f.string=f.pattern+jse(f.count),c=h+1;continue}r.isPadded&&(C=b7e(h,r,s)),E.string=C+E.pattern+jse(E.count),n.push(E),c=h+1,f=E}return n}function X_(e,t,r,s,a){let n=[];for(let c of e){let{string:f}=c;!s&&!Use(t,"string",f)&&n.push(r+f),s&&Use(t,"string",f)&&n.push(r+f)}return n}function B7e(e,t){let r=[];for(let s=0;st?1:t>e?-1:0}function Use(e,t,r){return e.some(s=>s[t]===r)}function _se(e,t){return Number(String(e).slice(0,-t)+"9".repeat(t))}function Hse(e,t){return e-e%Math.pow(10,t)}function jse(e){let[t=0,r=""]=e;return r||t>1?`{${t+(r?","+r:"")}}`:""}function S7e(e,t,r){return`[${e}${t-e===1?"":"-"}${t}]`}function Gse(e){return/^-?(0+)\d/.test(e)}function b7e(e,t,r){if(!t.isPadded)return e;let s=Math.abs(t.maxLen-String(e).length),a=r.relaxZeros!==!1;switch(s){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${s}}`:`0{${s}}`}}q0.cache={};q0.clearCache=()=>q0.cache={};qse.exports=q0});var t4=G((nTt,$se)=>{"use strict";var D7e=Ce("util"),Kse=Yse(),Wse=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),P7e=e=>t=>e===!0?Number(t):String(t),$_=e=>typeof e=="number"||typeof e=="string"&&e!=="",dB=e=>Number.isInteger(+e),e4=e=>{let t=`${e}`,r=-1;if(t[0]==="-"&&(t=t.slice(1)),t==="0")return!1;for(;t[++r]==="0";);return r>0},x7e=(e,t,r)=>typeof e=="string"||typeof t=="string"?!0:r.stringify===!0,k7e=(e,t,r)=>{if(t>0){let s=e[0]==="-"?"-":"";s&&(e=e.slice(1)),e=s+e.padStart(s?t-1:t,"0")}return r===!1?String(e):e},Vse=(e,t)=>{let r=e[0]==="-"?"-":"";for(r&&(e=e.slice(1),t--);e.length{e.negatives.sort((c,f)=>cf?1:0),e.positives.sort((c,f)=>cf?1:0);let r=t.capture?"":"?:",s="",a="",n;return e.positives.length&&(s=e.positives.join("|")),e.negatives.length&&(a=`-(${r}${e.negatives.join("|")})`),s&&a?n=`${s}|${a}`:n=s||a,t.wrap?`(${r}${n})`:n},Jse=(e,t,r,s)=>{if(r)return Kse(e,t,{wrap:!1,...s});let a=String.fromCharCode(e);if(e===t)return a;let n=String.fromCharCode(t);return`[${a}-${n}]`},zse=(e,t,r)=>{if(Array.isArray(e)){let s=r.wrap===!0,a=r.capture?"":"?:";return s?`(${a}${e.join("|")})`:e.join("|")}return Kse(e,t,r)},Zse=(...e)=>new RangeError("Invalid range arguments: "+D7e.inspect(...e)),Xse=(e,t,r)=>{if(r.strictRanges===!0)throw Zse([e,t]);return[]},T7e=(e,t)=>{if(t.strictRanges===!0)throw new TypeError(`Expected step "${e}" to be a number`);return[]},R7e=(e,t,r=1,s={})=>{let a=Number(e),n=Number(t);if(!Number.isInteger(a)||!Number.isInteger(n)){if(s.strictRanges===!0)throw Zse([e,t]);return[]}a===0&&(a=0),n===0&&(n=0);let c=a>n,f=String(e),p=String(t),h=String(r);r=Math.max(Math.abs(r),1);let E=e4(f)||e4(p)||e4(h),C=E?Math.max(f.length,p.length,h.length):0,S=E===!1&&x7e(e,t,s)===!1,x=s.transform||P7e(S);if(s.toRegex&&r===1)return Jse(Vse(e,C),Vse(t,C),!0,s);let I={negatives:[],positives:[]},R=K=>I[K<0?"negatives":"positives"].push(Math.abs(K)),N=[],U=0;for(;c?a>=n:a<=n;)s.toRegex===!0&&r>1?R(a):N.push(k7e(x(a,U),C,S)),a=c?a-r:a+r,U++;return s.toRegex===!0?r>1?Q7e(I,s):zse(N,null,{wrap:!1,...s}):N},F7e=(e,t,r=1,s={})=>{if(!dB(e)&&e.length>1||!dB(t)&&t.length>1)return Xse(e,t,s);let a=s.transform||(S=>String.fromCharCode(S)),n=`${e}`.charCodeAt(0),c=`${t}`.charCodeAt(0),f=n>c,p=Math.min(n,c),h=Math.max(n,c);if(s.toRegex&&r===1)return Jse(p,h,!1,s);let E=[],C=0;for(;f?n>=c:n<=c;)E.push(a(n,C)),n=f?n-r:n+r,C++;return s.toRegex===!0?zse(E,null,{wrap:!1,options:s}):E},gk=(e,t,r,s={})=>{if(t==null&&$_(e))return[e];if(!$_(e)||!$_(t))return Xse(e,t,s);if(typeof r=="function")return gk(e,t,1,{transform:r});if(Wse(r))return gk(e,t,0,r);let a={...s};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,dB(r)?dB(e)&&dB(t)?R7e(e,t,r,a):F7e(e,t,Math.max(Math.abs(r),1),a):r!=null&&!Wse(r)?T7e(r,a):gk(e,t,1,r)};$se.exports=gk});var roe=G((iTt,toe)=>{"use strict";var N7e=t4(),eoe=hk(),O7e=(e,t={})=>{let r=(s,a={})=>{let n=eoe.isInvalidBrace(a),c=s.invalid===!0&&t.escapeInvalid===!0,f=n===!0||c===!0,p=t.escapeInvalid===!0?"\\":"",h="";if(s.isOpen===!0||s.isClose===!0)return p+s.value;if(s.type==="open")return f?p+s.value:"(";if(s.type==="close")return f?p+s.value:")";if(s.type==="comma")return s.prev.type==="comma"?"":f?s.value:"|";if(s.value)return s.value;if(s.nodes&&s.ranges>0){let E=eoe.reduce(s.nodes),C=N7e(...E,{...t,wrap:!1,toRegex:!0});if(C.length!==0)return E.length>1&&C.length>1?`(${C})`:C}if(s.nodes)for(let E of s.nodes)h+=r(E,s);return h};return r(e)};toe.exports=O7e});var soe=G((sTt,ioe)=>{"use strict";var L7e=t4(),noe=dk(),ME=hk(),Y0=(e="",t="",r=!1)=>{let s=[];if(e=[].concat(e),t=[].concat(t),!t.length)return e;if(!e.length)return r?ME.flatten(t).map(a=>`{${a}}`):t;for(let a of e)if(Array.isArray(a))for(let n of a)s.push(Y0(n,t,r));else for(let n of t)r===!0&&typeof n=="string"&&(n=`{${n}}`),s.push(Array.isArray(n)?Y0(a,n,r):a+n);return ME.flatten(s)},M7e=(e,t={})=>{let r=t.rangeLimit===void 0?1e3:t.rangeLimit,s=(a,n={})=>{a.queue=[];let c=n,f=n.queue;for(;c.type!=="brace"&&c.type!=="root"&&c.parent;)c=c.parent,f=c.queue;if(a.invalid||a.dollar){f.push(Y0(f.pop(),noe(a,t)));return}if(a.type==="brace"&&a.invalid!==!0&&a.nodes.length===2){f.push(Y0(f.pop(),["{}"]));return}if(a.nodes&&a.ranges>0){let C=ME.reduce(a.nodes);if(ME.exceedsLimit(...C,t.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let S=L7e(...C,t);S.length===0&&(S=noe(a,t)),f.push(Y0(f.pop(),S)),a.nodes=[];return}let p=ME.encloseBrace(a),h=a.queue,E=a;for(;E.type!=="brace"&&E.type!=="root"&&E.parent;)E=E.parent,h=E.queue;for(let C=0;C{"use strict";ooe.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` +`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var Aoe=G((aTt,foe)=>{"use strict";var U7e=dk(),{MAX_LENGTH:loe,CHAR_BACKSLASH:r4,CHAR_BACKTICK:_7e,CHAR_COMMA:H7e,CHAR_DOT:j7e,CHAR_LEFT_PARENTHESES:G7e,CHAR_RIGHT_PARENTHESES:q7e,CHAR_LEFT_CURLY_BRACE:Y7e,CHAR_RIGHT_CURLY_BRACE:W7e,CHAR_LEFT_SQUARE_BRACKET:coe,CHAR_RIGHT_SQUARE_BRACKET:uoe,CHAR_DOUBLE_QUOTE:V7e,CHAR_SINGLE_QUOTE:K7e,CHAR_NO_BREAK_SPACE:J7e,CHAR_ZERO_WIDTH_NOBREAK_SPACE:z7e}=aoe(),Z7e=(e,t={})=>{if(typeof e!="string")throw new TypeError("Expected a string");let r=t||{},s=typeof r.maxLength=="number"?Math.min(loe,r.maxLength):loe;if(e.length>s)throw new SyntaxError(`Input length (${e.length}), exceeds max characters (${s})`);let a={type:"root",input:e,nodes:[]},n=[a],c=a,f=a,p=0,h=e.length,E=0,C=0,S,x={},I=()=>e[E++],R=N=>{if(N.type==="text"&&f.type==="dot"&&(f.type="text"),f&&f.type==="text"&&N.type==="text"){f.value+=N.value;return}return c.nodes.push(N),N.parent=c,N.prev=f,f=N,N};for(R({type:"bos"});E0){if(c.ranges>0){c.ranges=0;let N=c.nodes.shift();c.nodes=[N,{type:"text",value:U7e(c)}]}R({type:"comma",value:S}),c.commas++;continue}if(S===j7e&&C>0&&c.commas===0){let N=c.nodes;if(C===0||N.length===0){R({type:"text",value:S});continue}if(f.type==="dot"){if(c.range=[],f.value+=S,f.type="range",c.nodes.length!==3&&c.nodes.length!==5){c.invalid=!0,c.ranges=0,f.type="text";continue}c.ranges++,c.args=[];continue}if(f.type==="range"){N.pop();let U=N[N.length-1];U.value+=f.value+S,f=U,c.ranges--;continue}R({type:"dot",value:S});continue}R({type:"text",value:S})}do if(c=n.pop(),c.type!=="root"){c.nodes.forEach(K=>{K.nodes||(K.type==="open"&&(K.isOpen=!0),K.type==="close"&&(K.isClose=!0),K.nodes||(K.type="text"),K.invalid=!0)});let N=n[n.length-1],U=N.nodes.indexOf(c);N.nodes.splice(U,1,...c.nodes)}while(n.length>0);return R({type:"eos"}),a};foe.exports=Z7e});var doe=G((lTt,hoe)=>{"use strict";var poe=dk(),X7e=roe(),$7e=soe(),eKe=Aoe(),Jl=(e,t={})=>{let r=[];if(Array.isArray(e))for(let s of e){let a=Jl.create(s,t);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(Jl.create(e,t));return t&&t.expand===!0&&t.nodupes===!0&&(r=[...new Set(r)]),r};Jl.parse=(e,t={})=>eKe(e,t);Jl.stringify=(e,t={})=>poe(typeof e=="string"?Jl.parse(e,t):e,t);Jl.compile=(e,t={})=>(typeof e=="string"&&(e=Jl.parse(e,t)),X7e(e,t));Jl.expand=(e,t={})=>{typeof e=="string"&&(e=Jl.parse(e,t));let r=$7e(e,t);return t.noempty===!0&&(r=r.filter(Boolean)),t.nodupes===!0&&(r=[...new Set(r)]),r};Jl.create=(e,t={})=>e===""||e.length<3?[e]:t.expand!==!0?Jl.compile(e,t):Jl.expand(e,t);hoe.exports=Jl});var gB=G((cTt,Ioe)=>{"use strict";var tKe=Ce("path"),Zf="\\\\/",goe=`[^${Zf}]`,kp="\\.",rKe="\\+",nKe="\\?",mk="\\/",iKe="(?=.)",moe="[^/]",n4=`(?:${mk}|$)`,yoe=`(?:^|${mk})`,i4=`${kp}{1,2}${n4}`,sKe=`(?!${kp})`,oKe=`(?!${yoe}${i4})`,aKe=`(?!${kp}{0,1}${n4})`,lKe=`(?!${i4})`,cKe=`[^.${mk}]`,uKe=`${moe}*?`,Eoe={DOT_LITERAL:kp,PLUS_LITERAL:rKe,QMARK_LITERAL:nKe,SLASH_LITERAL:mk,ONE_CHAR:iKe,QMARK:moe,END_ANCHOR:n4,DOTS_SLASH:i4,NO_DOT:sKe,NO_DOTS:oKe,NO_DOT_SLASH:aKe,NO_DOTS_SLASH:lKe,QMARK_NO_DOT:cKe,STAR:uKe,START_ANCHOR:yoe},fKe={...Eoe,SLASH_LITERAL:`[${Zf}]`,QMARK:goe,STAR:`${goe}*?`,DOTS_SLASH:`${kp}{1,2}(?:[${Zf}]|$)`,NO_DOT:`(?!${kp})`,NO_DOTS:`(?!(?:^|[${Zf}])${kp}{1,2}(?:[${Zf}]|$))`,NO_DOT_SLASH:`(?!${kp}{0,1}(?:[${Zf}]|$))`,NO_DOTS_SLASH:`(?!${kp}{1,2}(?:[${Zf}]|$))`,QMARK_NO_DOT:`[^.${Zf}]`,START_ANCHOR:`(?:^|[${Zf}])`,END_ANCHOR:`(?:[${Zf}]|$)`},AKe={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};Ioe.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:AKe,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:tKe.sep,extglobChars(e){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${e.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(e){return e===!0?fKe:Eoe}}});var mB=G(dl=>{"use strict";var pKe=Ce("path"),hKe=process.platform==="win32",{REGEX_BACKSLASH:dKe,REGEX_REMOVE_BACKSLASH:gKe,REGEX_SPECIAL_CHARS:mKe,REGEX_SPECIAL_CHARS_GLOBAL:yKe}=gB();dl.isObject=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);dl.hasRegexChars=e=>mKe.test(e);dl.isRegexChar=e=>e.length===1&&dl.hasRegexChars(e);dl.escapeRegex=e=>e.replace(yKe,"\\$1");dl.toPosixSlashes=e=>e.replace(dKe,"/");dl.removeBackslashes=e=>e.replace(gKe,t=>t==="\\"?"":t);dl.supportsLookbehinds=()=>{let e=process.version.slice(1).split(".").map(Number);return e.length===3&&e[0]>=9||e[0]===8&&e[1]>=10};dl.isWindows=e=>e&&typeof e.windows=="boolean"?e.windows:hKe===!0||pKe.sep==="\\";dl.escapeLast=(e,t,r)=>{let s=e.lastIndexOf(t,r);return s===-1?e:e[s-1]==="\\"?dl.escapeLast(e,t,s-1):`${e.slice(0,s)}\\${e.slice(s)}`};dl.removePrefix=(e,t={})=>{let r=e;return r.startsWith("./")&&(r=r.slice(2),t.prefix="./"),r};dl.wrapOutput=(e,t={},r={})=>{let s=r.contains?"":"^",a=r.contains?"":"$",n=`${s}(?:${e})${a}`;return t.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var Poe=G((fTt,Doe)=>{"use strict";var Coe=mB(),{CHAR_ASTERISK:s4,CHAR_AT:EKe,CHAR_BACKWARD_SLASH:yB,CHAR_COMMA:IKe,CHAR_DOT:o4,CHAR_EXCLAMATION_MARK:a4,CHAR_FORWARD_SLASH:boe,CHAR_LEFT_CURLY_BRACE:l4,CHAR_LEFT_PARENTHESES:c4,CHAR_LEFT_SQUARE_BRACKET:CKe,CHAR_PLUS:wKe,CHAR_QUESTION_MARK:woe,CHAR_RIGHT_CURLY_BRACE:BKe,CHAR_RIGHT_PARENTHESES:Boe,CHAR_RIGHT_SQUARE_BRACKET:vKe}=gB(),voe=e=>e===boe||e===yB,Soe=e=>{e.isPrefix!==!0&&(e.depth=e.isGlobstar?1/0:1)},SKe=(e,t)=>{let r=t||{},s=e.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],c=[],f=[],p=e,h=-1,E=0,C=0,S=!1,x=!1,I=!1,R=!1,N=!1,U=!1,K=!1,$=!1,ie=!1,fe=!1,le=0,ge,pe,De={value:"",depth:0,isGlob:!1},ye=()=>h>=s,d=()=>p.charCodeAt(h+1),ve=()=>(ge=pe,p.charCodeAt(++h));for(;h0&&(me=p.slice(0,E),p=p.slice(E),C-=E),Ie&&I===!0&&C>0?(Ie=p.slice(0,C),ce=p.slice(C)):I===!0?(Ie="",ce=p):Ie=p,Ie&&Ie!==""&&Ie!=="/"&&Ie!==p&&voe(Ie.charCodeAt(Ie.length-1))&&(Ie=Ie.slice(0,-1)),r.unescape===!0&&(ce&&(ce=Coe.removeBackslashes(ce)),Ie&&K===!0&&(Ie=Coe.removeBackslashes(Ie)));let X={prefix:me,input:e,start:E,base:Ie,glob:ce,isBrace:S,isBracket:x,isGlob:I,isExtglob:R,isGlobstar:N,negated:$,negatedExtglob:ie};if(r.tokens===!0&&(X.maxDepth=0,voe(pe)||c.push(De),X.tokens=c),r.parts===!0||r.tokens===!0){let be;for(let ke=0;ke{"use strict";var yk=gB(),zl=mB(),{MAX_LENGTH:Ek,POSIX_REGEX_SOURCE:bKe,REGEX_NON_SPECIAL_CHARS:DKe,REGEX_SPECIAL_CHARS_BACKREF:PKe,REPLACEMENTS:xoe}=yk,xKe=(e,t)=>{if(typeof t.expandRange=="function")return t.expandRange(...e,t);e.sort();let r=`[${e.join("-")}]`;try{new RegExp(r)}catch{return e.map(a=>zl.escapeRegex(a)).join("..")}return r},UE=(e,t)=>`Missing ${e}: "${t}" - use "\\\\${t}" to match literal characters`,u4=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");e=xoe[e]||e;let r={...t},s=typeof r.maxLength=="number"?Math.min(Ek,r.maxLength):Ek,a=e.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);let n={type:"bos",value:"",output:r.prepend||""},c=[n],f=r.capture?"":"?:",p=zl.isWindows(t),h=yk.globChars(p),E=yk.extglobChars(h),{DOT_LITERAL:C,PLUS_LITERAL:S,SLASH_LITERAL:x,ONE_CHAR:I,DOTS_SLASH:R,NO_DOT:N,NO_DOT_SLASH:U,NO_DOTS_SLASH:K,QMARK:$,QMARK_NO_DOT:ie,STAR:fe,START_ANCHOR:le}=h,ge=P=>`(${f}(?:(?!${le}${P.dot?R:C}).)*?)`,pe=r.dot?"":N,De=r.dot?$:ie,ye=r.bash===!0?ge(r):fe;r.capture&&(ye=`(${ye})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let d={input:e,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:c};e=zl.removePrefix(e,d),a=e.length;let ve=[],Ie=[],me=[],ce=n,X,be=()=>d.index===a-1,ke=d.peek=(P=1)=>e[d.index+P],it=d.advance=()=>e[++d.index]||"",_=()=>e.slice(d.index+1),tt=(P="",w=0)=>{d.consumed+=P,d.index+=w},Fe=P=>{d.output+=P.output!=null?P.output:P.value,tt(P.value)},Qe=()=>{let P=1;for(;ke()==="!"&&(ke(2)!=="("||ke(3)==="?");)it(),d.start++,P++;return P%2===0?!1:(d.negated=!0,d.start++,!0)},Se=P=>{d[P]++,me.push(P)},je=P=>{d[P]--,me.pop()},Te=P=>{if(ce.type==="globstar"){let w=d.braces>0&&(P.type==="comma"||P.type==="brace"),D=P.extglob===!0||ve.length&&(P.type==="pipe"||P.type==="paren");P.type!=="slash"&&P.type!=="paren"&&!w&&!D&&(d.output=d.output.slice(0,-ce.output.length),ce.type="star",ce.value="*",ce.output=ye,d.output+=ce.output)}if(ve.length&&P.type!=="paren"&&(ve[ve.length-1].inner+=P.value),(P.value||P.output)&&Fe(P),ce&&ce.type==="text"&&P.type==="text"){ce.value+=P.value,ce.output=(ce.output||"")+P.value;return}P.prev=ce,c.push(P),ce=P},ct=(P,w)=>{let D={...E[w],conditions:1,inner:""};D.prev=ce,D.parens=d.parens,D.output=d.output;let y=(r.capture?"(":"")+D.open;Se("parens"),Te({type:P,value:w,output:d.output?"":I}),Te({type:"paren",extglob:!0,value:it(),output:y}),ve.push(D)},Me=P=>{let w=P.close+(r.capture?")":""),D;if(P.type==="negate"){let y=ye;if(P.inner&&P.inner.length>1&&P.inner.includes("/")&&(y=ge(r)),(y!==ye||be()||/^\)+$/.test(_()))&&(w=P.close=`)$))${y}`),P.inner.includes("*")&&(D=_())&&/^\.[^\\/.]+$/.test(D)){let F=u4(D,{...t,fastpaths:!1}).output;w=P.close=`)${F})${y})`}P.prev.type==="bos"&&(d.negatedExtglob=!0)}Te({type:"paren",extglob:!0,value:X,output:w}),je("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(e)){let P=!1,w=e.replace(PKe,(D,y,F,z,Z,ee)=>z==="\\"?(P=!0,D):z==="?"?y?y+z+(Z?$.repeat(Z.length):""):ee===0?De+(Z?$.repeat(Z.length):""):$.repeat(F.length):z==="."?C.repeat(F.length):z==="*"?y?y+z+(Z?ye:""):ye:y?D:`\\${D}`);return P===!0&&(r.unescape===!0?w=w.replace(/\\/g,""):w=w.replace(/\\+/g,D=>D.length%2===0?"\\\\":D?"\\":"")),w===e&&r.contains===!0?(d.output=e,d):(d.output=zl.wrapOutput(w,d,t),d)}for(;!be();){if(X=it(),X==="\0")continue;if(X==="\\"){let D=ke();if(D==="/"&&r.bash!==!0||D==="."||D===";")continue;if(!D){X+="\\",Te({type:"text",value:X});continue}let y=/^\\+/.exec(_()),F=0;if(y&&y[0].length>2&&(F=y[0].length,d.index+=F,F%2!==0&&(X+="\\")),r.unescape===!0?X=it():X+=it(),d.brackets===0){Te({type:"text",value:X});continue}}if(d.brackets>0&&(X!=="]"||ce.value==="["||ce.value==="[^")){if(r.posix!==!1&&X===":"){let D=ce.value.slice(1);if(D.includes("[")&&(ce.posix=!0,D.includes(":"))){let y=ce.value.lastIndexOf("["),F=ce.value.slice(0,y),z=ce.value.slice(y+2),Z=bKe[z];if(Z){ce.value=F+Z,d.backtrack=!0,it(),!n.output&&c.indexOf(ce)===1&&(n.output=I);continue}}}(X==="["&&ke()!==":"||X==="-"&&ke()==="]")&&(X=`\\${X}`),X==="]"&&(ce.value==="["||ce.value==="[^")&&(X=`\\${X}`),r.posix===!0&&X==="!"&&ce.value==="["&&(X="^"),ce.value+=X,Fe({value:X});continue}if(d.quotes===1&&X!=='"'){X=zl.escapeRegex(X),ce.value+=X,Fe({value:X});continue}if(X==='"'){d.quotes=d.quotes===1?0:1,r.keepQuotes===!0&&Te({type:"text",value:X});continue}if(X==="("){Se("parens"),Te({type:"paren",value:X});continue}if(X===")"){if(d.parens===0&&r.strictBrackets===!0)throw new SyntaxError(UE("opening","("));let D=ve[ve.length-1];if(D&&d.parens===D.parens+1){Me(ve.pop());continue}Te({type:"paren",value:X,output:d.parens?")":"\\)"}),je("parens");continue}if(X==="["){if(r.nobracket===!0||!_().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(UE("closing","]"));X=`\\${X}`}else Se("brackets");Te({type:"bracket",value:X});continue}if(X==="]"){if(r.nobracket===!0||ce&&ce.type==="bracket"&&ce.value.length===1){Te({type:"text",value:X,output:`\\${X}`});continue}if(d.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(UE("opening","["));Te({type:"text",value:X,output:`\\${X}`});continue}je("brackets");let D=ce.value.slice(1);if(ce.posix!==!0&&D[0]==="^"&&!D.includes("/")&&(X=`/${X}`),ce.value+=X,Fe({value:X}),r.literalBrackets===!1||zl.hasRegexChars(D))continue;let y=zl.escapeRegex(ce.value);if(d.output=d.output.slice(0,-ce.value.length),r.literalBrackets===!0){d.output+=y,ce.value=y;continue}ce.value=`(${f}${y}|${ce.value})`,d.output+=ce.value;continue}if(X==="{"&&r.nobrace!==!0){Se("braces");let D={type:"brace",value:X,output:"(",outputIndex:d.output.length,tokensIndex:d.tokens.length};Ie.push(D),Te(D);continue}if(X==="}"){let D=Ie[Ie.length-1];if(r.nobrace===!0||!D){Te({type:"text",value:X,output:X});continue}let y=")";if(D.dots===!0){let F=c.slice(),z=[];for(let Z=F.length-1;Z>=0&&(c.pop(),F[Z].type!=="brace");Z--)F[Z].type!=="dots"&&z.unshift(F[Z].value);y=xKe(z,r),d.backtrack=!0}if(D.comma!==!0&&D.dots!==!0){let F=d.output.slice(0,D.outputIndex),z=d.tokens.slice(D.tokensIndex);D.value=D.output="\\{",X=y="\\}",d.output=F;for(let Z of z)d.output+=Z.output||Z.value}Te({type:"brace",value:X,output:y}),je("braces"),Ie.pop();continue}if(X==="|"){ve.length>0&&ve[ve.length-1].conditions++,Te({type:"text",value:X});continue}if(X===","){let D=X,y=Ie[Ie.length-1];y&&me[me.length-1]==="braces"&&(y.comma=!0,D="|"),Te({type:"comma",value:X,output:D});continue}if(X==="/"){if(ce.type==="dot"&&d.index===d.start+1){d.start=d.index+1,d.consumed="",d.output="",c.pop(),ce=n;continue}Te({type:"slash",value:X,output:x});continue}if(X==="."){if(d.braces>0&&ce.type==="dot"){ce.value==="."&&(ce.output=C);let D=Ie[Ie.length-1];ce.type="dots",ce.output+=X,ce.value+=X,D.dots=!0;continue}if(d.braces+d.parens===0&&ce.type!=="bos"&&ce.type!=="slash"){Te({type:"text",value:X,output:C});continue}Te({type:"dot",value:X,output:C});continue}if(X==="?"){if(!(ce&&ce.value==="(")&&r.noextglob!==!0&&ke()==="("&&ke(2)!=="?"){ct("qmark",X);continue}if(ce&&ce.type==="paren"){let y=ke(),F=X;if(y==="<"&&!zl.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(ce.value==="("&&!/[!=<:]/.test(y)||y==="<"&&!/<([!=]|\w+>)/.test(_()))&&(F=`\\${X}`),Te({type:"text",value:X,output:F});continue}if(r.dot!==!0&&(ce.type==="slash"||ce.type==="bos")){Te({type:"qmark",value:X,output:ie});continue}Te({type:"qmark",value:X,output:$});continue}if(X==="!"){if(r.noextglob!==!0&&ke()==="("&&(ke(2)!=="?"||!/[!=<:]/.test(ke(3)))){ct("negate",X);continue}if(r.nonegate!==!0&&d.index===0){Qe();continue}}if(X==="+"){if(r.noextglob!==!0&&ke()==="("&&ke(2)!=="?"){ct("plus",X);continue}if(ce&&ce.value==="("||r.regex===!1){Te({type:"plus",value:X,output:S});continue}if(ce&&(ce.type==="bracket"||ce.type==="paren"||ce.type==="brace")||d.parens>0){Te({type:"plus",value:X});continue}Te({type:"plus",value:S});continue}if(X==="@"){if(r.noextglob!==!0&&ke()==="("&&ke(2)!=="?"){Te({type:"at",extglob:!0,value:X,output:""});continue}Te({type:"text",value:X});continue}if(X!=="*"){(X==="$"||X==="^")&&(X=`\\${X}`);let D=DKe.exec(_());D&&(X+=D[0],d.index+=D[0].length),Te({type:"text",value:X});continue}if(ce&&(ce.type==="globstar"||ce.star===!0)){ce.type="star",ce.star=!0,ce.value+=X,ce.output=ye,d.backtrack=!0,d.globstar=!0,tt(X);continue}let P=_();if(r.noextglob!==!0&&/^\([^?]/.test(P)){ct("star",X);continue}if(ce.type==="star"){if(r.noglobstar===!0){tt(X);continue}let D=ce.prev,y=D.prev,F=D.type==="slash"||D.type==="bos",z=y&&(y.type==="star"||y.type==="globstar");if(r.bash===!0&&(!F||P[0]&&P[0]!=="/")){Te({type:"star",value:X,output:""});continue}let Z=d.braces>0&&(D.type==="comma"||D.type==="brace"),ee=ve.length&&(D.type==="pipe"||D.type==="paren");if(!F&&D.type!=="paren"&&!Z&&!ee){Te({type:"star",value:X,output:""});continue}for(;P.slice(0,3)==="/**";){let se=e[d.index+4];if(se&&se!=="/")break;P=P.slice(3),tt("/**",3)}if(D.type==="bos"&&be()){ce.type="globstar",ce.value+=X,ce.output=ge(r),d.output=ce.output,d.globstar=!0,tt(X);continue}if(D.type==="slash"&&D.prev.type!=="bos"&&!z&&be()){d.output=d.output.slice(0,-(D.output+ce.output).length),D.output=`(?:${D.output}`,ce.type="globstar",ce.output=ge(r)+(r.strictSlashes?")":"|$)"),ce.value+=X,d.globstar=!0,d.output+=D.output+ce.output,tt(X);continue}if(D.type==="slash"&&D.prev.type!=="bos"&&P[0]==="/"){let se=P[1]!==void 0?"|$":"";d.output=d.output.slice(0,-(D.output+ce.output).length),D.output=`(?:${D.output}`,ce.type="globstar",ce.output=`${ge(r)}${x}|${x}${se})`,ce.value+=X,d.output+=D.output+ce.output,d.globstar=!0,tt(X+it()),Te({type:"slash",value:"/",output:""});continue}if(D.type==="bos"&&P[0]==="/"){ce.type="globstar",ce.value+=X,ce.output=`(?:^|${x}|${ge(r)}${x})`,d.output=ce.output,d.globstar=!0,tt(X+it()),Te({type:"slash",value:"/",output:""});continue}d.output=d.output.slice(0,-ce.output.length),ce.type="globstar",ce.output=ge(r),ce.value+=X,d.output+=ce.output,d.globstar=!0,tt(X);continue}let w={type:"star",value:X,output:ye};if(r.bash===!0){w.output=".*?",(ce.type==="bos"||ce.type==="slash")&&(w.output=pe+w.output),Te(w);continue}if(ce&&(ce.type==="bracket"||ce.type==="paren")&&r.regex===!0){w.output=X,Te(w);continue}(d.index===d.start||ce.type==="slash"||ce.type==="dot")&&(ce.type==="dot"?(d.output+=U,ce.output+=U):r.dot===!0?(d.output+=K,ce.output+=K):(d.output+=pe,ce.output+=pe),ke()!=="*"&&(d.output+=I,ce.output+=I)),Te(w)}for(;d.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(UE("closing","]"));d.output=zl.escapeLast(d.output,"["),je("brackets")}for(;d.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(UE("closing",")"));d.output=zl.escapeLast(d.output,"("),je("parens")}for(;d.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(UE("closing","}"));d.output=zl.escapeLast(d.output,"{"),je("braces")}if(r.strictSlashes!==!0&&(ce.type==="star"||ce.type==="bracket")&&Te({type:"maybe_slash",value:"",output:`${x}?`}),d.backtrack===!0){d.output="";for(let P of d.tokens)d.output+=P.output!=null?P.output:P.value,P.suffix&&(d.output+=P.suffix)}return d};u4.fastpaths=(e,t)=>{let r={...t},s=typeof r.maxLength=="number"?Math.min(Ek,r.maxLength):Ek,a=e.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);e=xoe[e]||e;let n=zl.isWindows(t),{DOT_LITERAL:c,SLASH_LITERAL:f,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:C,NO_DOTS_SLASH:S,STAR:x,START_ANCHOR:I}=yk.globChars(n),R=r.dot?C:E,N=r.dot?S:E,U=r.capture?"":"?:",K={negated:!1,prefix:""},$=r.bash===!0?".*?":x;r.capture&&($=`(${$})`);let ie=pe=>pe.noglobstar===!0?$:`(${U}(?:(?!${I}${pe.dot?h:c}).)*?)`,fe=pe=>{switch(pe){case"*":return`${R}${p}${$}`;case".*":return`${c}${p}${$}`;case"*.*":return`${R}${$}${c}${p}${$}`;case"*/*":return`${R}${$}${f}${p}${N}${$}`;case"**":return R+ie(r);case"**/*":return`(?:${R}${ie(r)}${f})?${N}${p}${$}`;case"**/*.*":return`(?:${R}${ie(r)}${f})?${N}${$}${c}${p}${$}`;case"**/.*":return`(?:${R}${ie(r)}${f})?${c}${p}${$}`;default:{let De=/^(.*?)\.(\w+)$/.exec(pe);if(!De)return;let ye=fe(De[1]);return ye?ye+c+De[2]:void 0}}},le=zl.removePrefix(e,K),ge=fe(le);return ge&&r.strictSlashes!==!0&&(ge+=`${f}?`),ge};koe.exports=u4});var Roe=G((pTt,Toe)=>{"use strict";var kKe=Ce("path"),QKe=Poe(),f4=Qoe(),A4=mB(),TKe=gB(),RKe=e=>e&&typeof e=="object"&&!Array.isArray(e),Xi=(e,t,r=!1)=>{if(Array.isArray(e)){let E=e.map(S=>Xi(S,t,r));return S=>{for(let x of E){let I=x(S);if(I)return I}return!1}}let s=RKe(e)&&e.tokens&&e.input;if(e===""||typeof e!="string"&&!s)throw new TypeError("Expected pattern to be a non-empty string");let a=t||{},n=A4.isWindows(t),c=s?Xi.compileRe(e,t):Xi.makeRe(e,t,!1,!0),f=c.state;delete c.state;let p=()=>!1;if(a.ignore){let E={...t,ignore:null,onMatch:null,onResult:null};p=Xi(a.ignore,E,r)}let h=(E,C=!1)=>{let{isMatch:S,match:x,output:I}=Xi.test(E,c,t,{glob:e,posix:n}),R={glob:e,state:f,regex:c,posix:n,input:E,output:I,match:x,isMatch:S};return typeof a.onResult=="function"&&a.onResult(R),S===!1?(R.isMatch=!1,C?R:!1):p(E)?(typeof a.onIgnore=="function"&&a.onIgnore(R),R.isMatch=!1,C?R:!1):(typeof a.onMatch=="function"&&a.onMatch(R),C?R:!0)};return r&&(h.state=f),h};Xi.test=(e,t,r,{glob:s,posix:a}={})=>{if(typeof e!="string")throw new TypeError("Expected input to be a string");if(e==="")return{isMatch:!1,output:""};let n=r||{},c=n.format||(a?A4.toPosixSlashes:null),f=e===s,p=f&&c?c(e):e;return f===!1&&(p=c?c(e):e,f=p===s),(f===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?f=Xi.matchBase(e,t,r,a):f=t.exec(p)),{isMatch:!!f,match:f,output:p}};Xi.matchBase=(e,t,r,s=A4.isWindows(r))=>(t instanceof RegExp?t:Xi.makeRe(t,r)).test(kKe.basename(e));Xi.isMatch=(e,t,r)=>Xi(t,r)(e);Xi.parse=(e,t)=>Array.isArray(e)?e.map(r=>Xi.parse(r,t)):f4(e,{...t,fastpaths:!1});Xi.scan=(e,t)=>QKe(e,t);Xi.compileRe=(e,t,r=!1,s=!1)=>{if(r===!0)return e.output;let a=t||{},n=a.contains?"":"^",c=a.contains?"":"$",f=`${n}(?:${e.output})${c}`;e&&e.negated===!0&&(f=`^(?!${f}).*$`);let p=Xi.toRegex(f,t);return s===!0&&(p.state=e),p};Xi.makeRe=(e,t={},r=!1,s=!1)=>{if(!e||typeof e!="string")throw new TypeError("Expected a non-empty string");let a={negated:!1,fastpaths:!0};return t.fastpaths!==!1&&(e[0]==="."||e[0]==="*")&&(a.output=f4.fastpaths(e,t)),a.output||(a=f4(e,t)),Xi.compileRe(a,t,r,s)};Xi.toRegex=(e,t)=>{try{let r=t||{};return new RegExp(e,r.flags||(r.nocase?"i":""))}catch(r){if(t&&t.debug===!0)throw r;return/$^/}};Xi.constants=TKe;Toe.exports=Xi});var Noe=G((hTt,Foe)=>{"use strict";Foe.exports=Roe()});var Zo=G((dTt,Uoe)=>{"use strict";var Loe=Ce("util"),Moe=doe(),Xf=Noe(),p4=mB(),Ooe=e=>e===""||e==="./",ki=(e,t,r)=>{t=[].concat(t),e=[].concat(e);let s=new Set,a=new Set,n=new Set,c=0,f=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E!s.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${t.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?t.map(E=>E.replace(/\\/g,"")):t}return h};ki.match=ki;ki.matcher=(e,t)=>Xf(e,t);ki.isMatch=(e,t,r)=>Xf(t,r)(e);ki.any=ki.isMatch;ki.not=(e,t,r={})=>{t=[].concat(t).map(String);let s=new Set,a=[],n=f=>{r.onResult&&r.onResult(f),a.push(f.output)},c=new Set(ki(e,t,{...r,onResult:n}));for(let f of a)c.has(f)||s.add(f);return[...s]};ki.contains=(e,t,r)=>{if(typeof e!="string")throw new TypeError(`Expected a string: "${Loe.inspect(e)}"`);if(Array.isArray(t))return t.some(s=>ki.contains(e,s,r));if(typeof t=="string"){if(Ooe(e)||Ooe(t))return!1;if(e.includes(t)||e.startsWith("./")&&e.slice(2).includes(t))return!0}return ki.isMatch(e,t,{...r,contains:!0})};ki.matchKeys=(e,t,r)=>{if(!p4.isObject(e))throw new TypeError("Expected the first argument to be an object");let s=ki(Object.keys(e),t,r),a={};for(let n of s)a[n]=e[n];return a};ki.some=(e,t,r)=>{let s=[].concat(e);for(let a of[].concat(t)){let n=Xf(String(a),r);if(s.some(c=>n(c)))return!0}return!1};ki.every=(e,t,r)=>{let s=[].concat(e);for(let a of[].concat(t)){let n=Xf(String(a),r);if(!s.every(c=>n(c)))return!1}return!0};ki.all=(e,t,r)=>{if(typeof e!="string")throw new TypeError(`Expected a string: "${Loe.inspect(e)}"`);return[].concat(t).every(s=>Xf(s,r)(e))};ki.capture=(e,t,r)=>{let s=p4.isWindows(r),n=Xf.makeRe(String(e),{...r,capture:!0}).exec(s?p4.toPosixSlashes(t):t);if(n)return n.slice(1).map(c=>c===void 0?"":c)};ki.makeRe=(...e)=>Xf.makeRe(...e);ki.scan=(...e)=>Xf.scan(...e);ki.parse=(e,t)=>{let r=[];for(let s of[].concat(e||[]))for(let a of Moe(String(s),t))r.push(Xf.parse(a,t));return r};ki.braces=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");return t&&t.nobrace===!0||!/\{.*\}/.test(e)?[e]:Moe(e,t)};ki.braceExpand=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");return ki.braces(e,{...t,expand:!0})};Uoe.exports=ki});var Hoe=G((gTt,_oe)=>{"use strict";_oe.exports=({onlyFirst:e=!1}={})=>{let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}});var Ik=G((mTt,joe)=>{"use strict";var FKe=Hoe();joe.exports=e=>typeof e=="string"?e.replace(FKe(),""):e});function Goe(e){return Number.isSafeInteger(e)&&e>=0}var qoe=Ze(()=>{});function Yoe(e){return e!=null&&typeof e!="function"&&Goe(e.length)}var Woe=Ze(()=>{qoe()});function kc(e){return e==="__proto__"}var EB=Ze(()=>{});function _E(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e.includes(".")||e.includes("[")||e.includes("]")}}var Ck=Ze(()=>{});function HE(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}var wk=Ze(()=>{});function Lu(e){let t=[],r=e.length;if(r===0)return t;let s=0,a="",n="",c=!1;for(e.charCodeAt(0)===46&&(t.push(""),s++);s{});function xa(e,t,r){if(e==null)return r;switch(typeof t){case"string":{if(kc(t))return r;let s=e[t];return s===void 0?_E(t)?xa(e,Lu(t),r):r:s}case"number":case"symbol":{typeof t=="number"&&(t=HE(t));let s=e[t];return s===void 0?r:s}default:{if(Array.isArray(t))return NKe(e,t,r);if(Object.is(t?.valueOf(),-0)?t="-0":t=String(t),kc(t))return r;let s=e[t];return s===void 0?r:s}}}function NKe(e,t,r){if(t.length===0)return r;let s=e;for(let a=0;a{EB();Ck();wk();jE()});function h4(e){return e!==null&&(typeof e=="object"||typeof e=="function")}var Voe=Ze(()=>{});function GE(e){return e==null||typeof e!="object"&&typeof e!="function"}var vk=Ze(()=>{});function Sk(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}var d4=Ze(()=>{});function W0(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var bk=Ze(()=>{});function V0(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var Dk=Ze(()=>{});var Pk,qE,YE,WE,K0,xk,kk,Qk,Tk,Rk,Koe,Fk,VE,Joe,Nk,Ok,Lk,Mk,Uk,zoe,_k,Hk,jk,Zoe,Gk,qk,Yk=Ze(()=>{Pk="[object RegExp]",qE="[object String]",YE="[object Number]",WE="[object Boolean]",K0="[object Arguments]",xk="[object Symbol]",kk="[object Date]",Qk="[object Map]",Tk="[object Set]",Rk="[object Array]",Koe="[object Function]",Fk="[object ArrayBuffer]",VE="[object Object]",Joe="[object Error]",Nk="[object DataView]",Ok="[object Uint8Array]",Lk="[object Uint8ClampedArray]",Mk="[object Uint16Array]",Uk="[object Uint32Array]",zoe="[object BigUint64Array]",_k="[object Int8Array]",Hk="[object Int16Array]",jk="[object Int32Array]",Zoe="[object BigInt64Array]",Gk="[object Float32Array]",qk="[object Float64Array]"});function KE(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}var Wk=Ze(()=>{});function Xoe(e,t){return Ad(e,void 0,e,new Map,t)}function Ad(e,t,r,s=new Map,a=void 0){let n=a?.(e,t,r,s);if(n!=null)return n;if(GE(e))return e;if(s.has(e))return s.get(e);if(Array.isArray(e)){let c=new Array(e.length);s.set(e,c);for(let f=0;f{bk();Dk();Yk();vk();Wk()});function $oe(e){return Ad(e,void 0,e,new Map,void 0)}var eae=Ze(()=>{g4()});function tae(e,t){return Xoe(e,(r,s,a,n)=>{let c=t?.(r,s,a,n);if(c!=null)return c;if(typeof e=="object")switch(Object.prototype.toString.call(e)){case YE:case qE:case WE:{let f=new e.constructor(e?.valueOf());return fd(f,e),f}case K0:{let f={};return fd(f,e),f.length=e.length,f[Symbol.iterator]=e[Symbol.iterator],f}default:return}})}var rae=Ze(()=>{g4();Yk()});function pd(e){return tae(e)}var m4=Ze(()=>{rae()});function Vk(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e{LKe=/^(?:0|[1-9]\d*)$/});function IB(e){return e!==null&&typeof e=="object"&&V0(e)==="[object Arguments]"}var E4=Ze(()=>{Dk()});function CB(e,t){let r;if(Array.isArray(t)?r=t:typeof t=="string"&&_E(t)&&e?.[t]==null?r=Lu(t):r=[t],r.length===0)return!1;let s=e;for(let a=0;a{Ck();y4();E4();jE()});function C4(e){return typeof e=="object"&&e!==null}var nae=Ze(()=>{});function iae(e){return typeof e=="symbol"||e instanceof Symbol}var sae=Ze(()=>{});function oae(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||iae(e)?!0:typeof e=="string"&&(UKe.test(e)||!MKe.test(e))||t!=null&&Object.hasOwn(t,e)}var MKe,UKe,aae=Ze(()=>{sae();MKe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,UKe=/^\w*$/});function hd(e,t){if(e==null)return!0;switch(typeof t){case"symbol":case"number":case"object":{if(Array.isArray(t))return lae(e,t);if(typeof t=="number"?t=HE(t):typeof t=="object"&&(Object.is(t?.valueOf(),-0)?t="-0":t=String(t)),kc(t))return!1;if(e?.[t]===void 0)return!0;try{return delete e[t],!0}catch{return!1}}case"string":{if(e?.[t]===void 0&&_E(t))return lae(e,Lu(t));if(kc(t))return!1;try{return delete e[t],!0}catch{return!1}}}}function lae(e,t){let r=xa(e,t.slice(0,-1),e),s=t[t.length-1];if(r?.[s]===void 0)return!0;if(kc(s))return!1;try{return delete r[s],!0}catch{return!1}}var w4=Ze(()=>{Bk();EB();Ck();wk();jE()});function cae(e){return e==null}var uae=Ze(()=>{});var fae,Aae=Ze(()=>{d4();fae=(e,t,r)=>{let s=e[t];(!(Object.hasOwn(e,t)&&Sk(s,r))||r===void 0&&!(t in e))&&(e[t]=r)}});function pae(e,t,r,s){if(e==null&&!h4(e))return e;let a=oae(t,e)?[t]:Array.isArray(t)?t:typeof t=="string"?Lu(t):[t],n=e;for(let c=0;c{EB();Aae();y4();aae();wk();Voe();jE()});function J0(e,t,r){return pae(e,t,()=>r,()=>{})}var B4=Ze(()=>{hae()});function dae(e,t=0,r={}){typeof r!="object"&&(r={});let s=null,a=null,n=null,c=0,f=null,p,{leading:h=!1,trailing:E=!0,maxWait:C}=r,S="maxWait"in r,x=S?Math.max(Number(C)||0,t):0,I=fe=>(s!==null&&(p=e.apply(a,s)),s=a=null,c=fe,p),R=fe=>(c=fe,f=setTimeout($,t),h&&s!==null?I(fe):p),N=fe=>(f=null,E&&s!==null?I(fe):p),U=fe=>{if(n===null)return!0;let le=fe-n,ge=le>=t||le<0,pe=S&&fe-c>=x;return ge||pe},K=fe=>{let le=n===null?0:fe-n,ge=t-le,pe=x-(fe-c);return S?Math.min(ge,pe):ge},$=()=>{let fe=Date.now();if(U(fe))return N(fe);f=setTimeout($,K(fe))},ie=function(...fe){let le=Date.now(),ge=U(le);if(s=fe,a=this,n=le,ge){if(f===null)return R(le);if(S)return clearTimeout(f),f=setTimeout($,t),I(le)}return f===null&&(f=setTimeout($,t)),p};return ie.cancel=()=>{f!==null&&clearTimeout(f),c=0,n=s=a=f=null},ie.flush=()=>f===null?p:N(Date.now()),ie}var gae=Ze(()=>{});function v4(e,t=0,r={}){let{leading:s=!0,trailing:a=!0}=r;return dae(e,t,{leading:s,maxWait:t,trailing:a})}var mae=Ze(()=>{gae()});function S4(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(S4).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}var yae=Ze(()=>{});function b4(e){if(!e||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null?Object.prototype.toString.call(e)==="[object Object]":!1}var Eae=Ze(()=>{});function Iae(e,t,r){return wB(e,t,void 0,void 0,void 0,void 0,r)}function wB(e,t,r,s,a,n,c){let f=c(e,t,r,s,a,n);if(f!==void 0)return f;if(typeof e==typeof t)switch(typeof e){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return e===t;case"number":return e===t||Object.is(e,t);case"function":return e===t;case"object":return BB(e,t,n,c)}return BB(e,t,n,c)}function BB(e,t,r,s){if(Object.is(e,t))return!0;let a=V0(e),n=V0(t);if(a===K0&&(a=VE),n===K0&&(n=VE),a!==n)return!1;switch(a){case qE:return e.toString()===t.toString();case YE:{let p=e.valueOf(),h=t.valueOf();return Sk(p,h)}case WE:case kk:case xk:return Object.is(e.valueOf(),t.valueOf());case Pk:return e.source===t.source&&e.flags===t.flags;case Koe:return e===t}r=r??new Map;let c=r.get(e),f=r.get(t);if(c!=null&&f!=null)return c===t;r.set(e,t),r.set(t,e);try{switch(a){case Qk:{if(e.size!==t.size)return!1;for(let[p,h]of e.entries())if(!t.has(p)||!wB(h,t.get(p),p,e,t,r,s))return!1;return!0}case Tk:{if(e.size!==t.size)return!1;let p=Array.from(e.values()),h=Array.from(t.values());for(let E=0;EwB(C,x,void 0,e,t,r,s));if(S===-1)return!1;h.splice(S,1)}return!0}case Rk:case Ok:case Lk:case Mk:case Uk:case zoe:case _k:case Hk:case jk:case Zoe:case Gk:case qk:{if(typeof Buffer<"u"&&Buffer.isBuffer(e)!==Buffer.isBuffer(t)||e.length!==t.length)return!1;for(let p=0;p{Eae();bk();Dk();Yk();d4()});function wae(){}var Bae=Ze(()=>{});function D4(e,t){return Iae(e,t,wae)}var vae=Ze(()=>{Cae();Bae()});function Sae(e){return KE(e)}var bae=Ze(()=>{Wk()});function Dae(e){if(typeof e!="object"||e==null)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!=="[object Object]"){let r=e[Symbol.toStringTag];return r==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${r}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}var Pae=Ze(()=>{});function xae(e){if(GE(e))return e;if(Array.isArray(e)||KE(e)||e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);let t=Object.getPrototypeOf(e),r=t.constructor;if(e instanceof Date||e instanceof Map||e instanceof Set)return new r(e);if(e instanceof RegExp){let s=new r(e);return s.lastIndex=e.lastIndex,s}if(e instanceof DataView)return new r(e.buffer.slice(0));if(e instanceof Error){let s=new r(e.message);return s.stack=e.stack,s.name=e.name,s.cause=e.cause,s}if(typeof File<"u"&&e instanceof File)return new r([e],e.name,{type:e.type,lastModified:e.lastModified});if(typeof e=="object"){let s=Object.create(t);return Object.assign(s,e)}return e}var kae=Ze(()=>{vk();Wk()});function P4(e,...t){let r=t.slice(0,-1),s=t[t.length-1],a=e;for(let n=0;n{m4();EB();kae();vk();bk();E4();nae();Pae();bae()});function x4(e,...t){if(e==null)return{};let r=$oe(e);for(let s=0;s{w4();eae()});function z0(e,...t){if(cae(e))return{};let r={};for(let s=0;s{Bk();I4();B4();Woe();uae()});function Fae(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}var Nae=Ze(()=>{});function vB(e){return Fae(S4(e))}var Oae=Ze(()=>{Nae();yae()});var Zl=Ze(()=>{mae();vae();m4();Bk();I4();Qae();Tae();Rae();B4();w4();Oae();jE()});var qe={};Vt(qe,{AsyncActions:()=>T4,BufferStream:()=>Q4,CachingStrategy:()=>Wae,DefaultStream:()=>R4,allSettledSafe:()=>Mu,assertNever:()=>O4,bufferStream:()=>zE,buildIgnorePattern:()=>WKe,convertMapsToIndexableObjects:()=>zk,dynamicRequire:()=>Tp,escapeRegExp:()=>HKe,getArrayWithDefault:()=>bB,getFactoryWithDefault:()=>$l,getMapWithDefault:()=>L4,getSetWithDefault:()=>Qp,groupBy:()=>JKe,isIndexableObject:()=>k4,isPathLike:()=>VKe,isTaggedYarnVersion:()=>_Ke,makeDeferred:()=>Gae,mapAndFilter:()=>Xl,mapAndFind:()=>dd,mergeIntoTarget:()=>Kae,overrideType:()=>jKe,parseBoolean:()=>DB,parseDuration:()=>Xk,parseInt:()=>ZE,parseOptionalBoolean:()=>Vae,plural:()=>Jk,prettifyAsyncErrors:()=>JE,prettifySyncErrors:()=>M4,releaseAfterUseAsync:()=>qKe,replaceEnvVariables:()=>Zk,sortMap:()=>Ks,toMerged:()=>KKe,tryParseOptionalBoolean:()=>U4,validateEnum:()=>GKe});function _Ke(e){return!!(_ae.default.valid(e)&&e.match(/^[^-]+(-rc\.[0-9]+)?$/))}function Jk(e,{one:t,more:r,zero:s=r}){return e===0?s:e===1?t:r}function HKe(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function jKe(e){}function O4(e){throw new Error(`Assertion failed: Unexpected object '${e}'`)}function GKe(e,t){let r=Object.values(e);if(!r.includes(t))throw new ot(`Invalid value for enumeration: ${JSON.stringify(t)} (expected one of ${r.map(s=>JSON.stringify(s)).join(", ")})`);return t}function Xl(e,t){let r=[];for(let s of e){let a=t(s);a!==Hae&&r.push(a)}return r}function dd(e,t){for(let r of e){let s=t(r);if(s!==jae)return s}}function k4(e){return typeof e=="object"&&e!==null}async function Mu(e){let t=await Promise.allSettled(e),r=[];for(let s of t){if(s.status==="rejected")throw s.reason;r.push(s.value)}return r}function zk(e){if(e instanceof Map&&(e=Object.fromEntries(e)),k4(e))for(let t of Object.keys(e)){let r=e[t];k4(r)&&(e[t]=zk(r))}return e}function $l(e,t,r){let s=e.get(t);return typeof s>"u"&&e.set(t,s=r()),s}function bB(e,t){let r=e.get(t);return typeof r>"u"&&e.set(t,r=[]),r}function Qp(e,t){let r=e.get(t);return typeof r>"u"&&e.set(t,r=new Set),r}function L4(e,t){let r=e.get(t);return typeof r>"u"&&e.set(t,r=new Map),r}async function qKe(e,t){if(t==null)return await e();try{return await e()}finally{await t()}}async function JE(e,t){try{return await e()}catch(r){throw r.message=t(r.message),r}}function M4(e,t){try{return e()}catch(r){throw r.message=t(r.message),r}}async function zE(e){return await new Promise((t,r)=>{let s=[];e.on("error",a=>{r(a)}),e.on("data",a=>{s.push(a)}),e.on("end",()=>{t(Buffer.concat(s))})})}function Gae(){let e,t;return{promise:new Promise((s,a)=>{e=s,t=a}),resolve:e,reject:t}}function qae(e){return SB(Ae.fromPortablePath(e))}function Yae(path){let physicalPath=Ae.fromPortablePath(path),currentCacheEntry=SB.cache[physicalPath];delete SB.cache[physicalPath];let result;try{result=qae(physicalPath);let freshCacheEntry=SB.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{SB.cache[physicalPath]=currentCacheEntry}return result}function YKe(e){let t=Lae.get(e),r=ae.statSync(e);if(t?.mtime===r.mtimeMs)return t.instance;let s=Yae(e);return Lae.set(e,{mtime:r.mtimeMs,instance:s}),s}function Tp(e,{cachingStrategy:t=2}={}){switch(t){case 0:return Yae(e);case 1:return YKe(e);case 2:return qae(e);default:throw new Error("Unsupported caching strategy")}}function Ks(e,t){let r=Array.from(e);Array.isArray(t)||(t=[t]);let s=[];for(let n of t)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function WKe(e){return e.length===0?null:e.map(t=>`(${Mae.default.makeRe(t,{windows:!1,dot:!0}).source})`).join("|")}function Zk(e,{env:t}){let r="",s=0,a=0,n=e.matchAll(/\\(?[\\$}])|\$\{(?[a-zA-Z]\w*)(?:-|-|(?=\}))|(?\$\{)|\}/g),c=()=>{let f=a;for(let{0:p,index:h,groups:{variable:E}={}}of n)if(E)a++;else if(p==="}"&&--a0)throw new ot(`Incomplete variable substitution in input: ${e}`);return r+e.slice(s)}function DB(e){switch(e){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${e}" as a boolean`)}}function Vae(e){return typeof e>"u"?e:DB(e)}function U4(e){try{return Vae(e)}catch{return null}}function VKe(e){return!!(Ae.isAbsolute(e)||e.match(/^(\.{1,2}|~)\//))}function Kae(e,...t){let r=c=>({value:c}),s=r(e),a=t.map(c=>r(c)),{value:n}=P4(s,...a,(c,f)=>{if(Array.isArray(c)&&Array.isArray(f)){for(let p of f)c.find(h=>D4(h,p))||c.push(p);return c}});return n}function KKe(...e){return Kae({},...e)}function JKe(e,t){let r=Object.create(null);for(let s of e){let a=s[t];r[a]??=[],r[a].push(s)}return r}function ZE(e){return typeof e=="string"?Number.parseInt(e,10):e}function Xk(e,t){let r=zKe.exec(e)?.groups;if(!r)throw new Error(`Couldn't parse "${e}" as a duration`);if(r.unit===void 0)return parseFloat(r.num);let s=F4[r.unit];if(!s)throw new Error(`Invalid duration unit "${r.unit}"`);return parseFloat(r.num)*s/F4[t]}var Mae,Uae,_ae,N4,Hae,jae,Q4,T4,R4,SB,Lae,Wae,F4,zKe,Qc=Ze(()=>{bt();jt();Zl();Mae=et(Zo()),Uae=et(M0()),_ae=et(hi()),N4=Ce("stream");Hae=Symbol();Xl.skip=Hae;jae=Symbol();dd.skip=jae;Q4=class extends N4.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};T4=class{constructor(t){this.deferred=new Map;this.promises=new Map;this.limit=(0,Uae.default)(t)}set(t,r){let s=this.deferred.get(t);typeof s>"u"&&this.deferred.set(t,s=Gae());let a=this.limit(()=>r());return this.promises.set(t,a),a.then(()=>{this.promises.get(t)===a&&s.resolve()},n=>{this.promises.get(t)===a&&s.reject(n)}),s.promise}reduce(t,r){let s=this.promises.get(t)??Promise.resolve();this.set(t,()=>r(s))}async wait(){await Promise.all(this.promises.values())}},R4=class extends N4.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},SB=eval("require");Lae=new Map;Wae=(s=>(s[s.NoCache=0]="NoCache",s[s.FsTime=1]="FsTime",s[s.Node=2]="Node",s))(Wae||{});F4={ms:1,s:1e3,m:60*1e3,h:60*60*1e3,d:24*60*60*1e3,w:7*24*60*60*1e3},zKe=new RegExp(`^(?\\d*\\.?\\d+)(?${Object.keys(F4).join("|")})?$`)});var XE,_4,H4,Jae=Ze(()=>{XE=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(XE||{}),_4=(s=>(s.Dependency="Dependency",s.PeerDependency="PeerDependency",s.PeerDependencyMeta="PeerDependencyMeta",s))(_4||{}),H4=(s=>(s.Inactive="inactive",s.Redundant="redundant",s.Active="active",s))(H4||{})});var ue={};Vt(ue,{LogLevel:()=>iQ,Style:()=>tQ,Type:()=>dt,addLogFilterSupport:()=>kB,applyColor:()=>oi,applyHyperlink:()=>eI,applyStyle:()=>Z0,json:()=>X0,jsonOrPretty:()=>$Ke,mark:()=>W4,pretty:()=>Gt,prettyField:()=>$f,prettyList:()=>Y4,prettyTruncatedLocatorList:()=>nQ,stripAnsi:()=>$E.default,supportsColor:()=>rQ,supportsHyperlinks:()=>q4,tuple:()=>Uu});function zae(e){let t=["KiB","MiB","GiB","TiB"],r=t.length;for(;r>1&&e<1024**r;)r-=1;let s=1024**r;return`${Math.floor(e*100/s)/100} ${t[r-1]}`}function $k(e,t){if(Array.isArray(t))return t.length===0?oi(e,"[]",dt.CODE):oi(e,"[ ",dt.CODE)+t.map(r=>$k(e,r)).join(", ")+oi(e," ]",dt.CODE);if(typeof t=="string")return oi(e,JSON.stringify(t),dt.STRING);if(typeof t=="number")return oi(e,JSON.stringify(t),dt.NUMBER);if(typeof t=="boolean")return oi(e,JSON.stringify(t),dt.BOOLEAN);if(t===null)return oi(e,"null",dt.NULL);if(typeof t=="object"&&Object.getPrototypeOf(t)===Object.prototype){let r=Object.entries(t);return r.length===0?oi(e,"{}",dt.CODE):oi(e,"{ ",dt.CODE)+r.map(([s,a])=>`${$k(e,s)}: ${$k(e,a)}`).join(", ")+oi(e," }",dt.CODE)}if(typeof t>"u")return oi(e,"undefined",dt.NULL);throw new Error("Assertion failed: The value doesn't seem to be a valid JSON object")}function Uu(e,t){return[t,e]}function Z0(e,t,r){return e.get("enableColors")&&r&2&&(t=xB.default.bold(t)),t}function oi(e,t,r){if(!e.get("enableColors"))return t;let s=ZKe.get(r);if(s===null)return t;let a=typeof s>"u"?r:G4.level>=3?s[0]:s[1],n=typeof a=="number"?j4.ansi256(a):a.startsWith("#")?j4.hex(a):j4[a];if(typeof n!="function")throw new Error(`Invalid format type ${a}`);return n(t)}function eI(e,t,r){return e.get("enableHyperlinks")?XKe?`\x1B]8;;${r}\x1B\\${t}\x1B]8;;\x1B\\`:`\x1B]8;;${r}\x07${t}\x1B]8;;\x07`:t}function Gt(e,t,r){if(t===null)return oi(e,"null",dt.NULL);if(Object.hasOwn(eQ,r))return eQ[r].pretty(e,t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return oi(e,t,r)}function Y4(e,t,r,{separator:s=", "}={}){return[...t].map(a=>Gt(e,a,r)).join(s)}function X0(e,t){if(e===null)return null;if(Object.hasOwn(eQ,t))return eQ[t].json(e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return e}function $Ke(e,t,[r,s]){return e?X0(r,s):Gt(t,r,s)}function W4(e){return{Check:oi(e,"\u2713","green"),Cross:oi(e,"\u2718","red"),Question:oi(e,"?","cyan")}}function $f(e,{label:t,value:[r,s]}){return`${Gt(e,t,dt.CODE)}: ${Gt(e,r,s)}`}function nQ(e,t,r){let s=[],a=[...t],n=r;for(;a.length>0;){let h=a[0],E=`${Vr(e,h)}, `,C=V4(h).length+2;if(s.length>0&&nh).join("").slice(0,-2);let c="X".repeat(a.length.toString().length),f=`and ${c} more.`,p=a.length;for(;s.length>1&&nh).join(""),f.replace(c,Gt(e,p,dt.NUMBER))].join("")}function kB(e,{configuration:t}){let r=t.get("logFilters"),s=new Map,a=new Map,n=[];for(let C of r){let S=C.get("level");if(typeof S>"u")continue;let x=C.get("code");typeof x<"u"&&s.set(x,S);let I=C.get("text");typeof I<"u"&&a.set(I,S);let R=C.get("pattern");typeof R<"u"&&n.push([Zae.default.matcher(R,{contains:!0}),S])}n.reverse();let c=(C,S,x)=>{if(C===null||C===0)return x;let I=a.size>0||n.length>0?(0,$E.default)(S):S;if(a.size>0){let R=a.get(I);if(typeof R<"u")return R??x}if(n.length>0){for(let[R,N]of n)if(R(I))return N??x}if(s.size>0){let R=s.get(zf(C));if(typeof R<"u")return R??x}return x},f=e.reportInfo,p=e.reportWarning,h=e.reportError,E=function(C,S,x,I){switch(c(S,x,I)){case"info":f.call(C,S,x);break;case"warning":p.call(C,S??0,x);break;case"error":h.call(C,S??0,x);break}};e.reportInfo=function(...C){return E(this,...C,"info")},e.reportWarning=function(...C){return E(this,...C,"warning")},e.reportError=function(...C){return E(this,...C,"error")}}var xB,PB,Zae,$E,dt,tQ,G4,rQ,q4,j4,ZKe,Xo,eQ,XKe,iQ,Tc=Ze(()=>{bt();xB=et(LE()),PB=et(N0());jt();Zae=et(Zo()),$E=et(Ik());Kx();$o();dt={NO_HINT:"NO_HINT",ID:"ID",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",STRING:"STRING",BOOLEAN:"BOOLEAN",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",INSPECT:"INSPECT",DURATION:"DURATION",SIZE:"SIZE",SIZE_DIFF:"SIZE_DIFF",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN",MARKDOWN_INLINE:"MARKDOWN_INLINE"},tQ=(t=>(t[t.BOLD=2]="BOLD",t))(tQ||{}),G4=PB.default.GITHUB_ACTIONS?{level:2}:xB.default.supportsColor?{level:xB.default.supportsColor.level}:{level:0},rQ=G4.level!==0,q4=rQ&&!PB.default.GITHUB_ACTIONS&&!PB.default.CIRCLE&&!PB.default.GITLAB,j4=new xB.default.Instance(G4),ZKe=new Map([[dt.NO_HINT,null],[dt.NULL,["#a853b5",129]],[dt.SCOPE,["#d75f00",166]],[dt.NAME,["#d7875f",173]],[dt.RANGE,["#00afaf",37]],[dt.REFERENCE,["#87afff",111]],[dt.NUMBER,["#ffd700",220]],[dt.STRING,["#b4bd68",32]],[dt.BOOLEAN,["#faa023",209]],[dt.PATH,["#d75fd7",170]],[dt.URL,["#d75fd7",170]],[dt.ADDED,["#5faf00",70]],[dt.REMOVED,["#ff3131",160]],[dt.CODE,["#87afff",111]],[dt.SIZE,["#ffd700",220]]]),Xo=e=>e;eQ={[dt.ID]:Xo({pretty:(e,t)=>typeof t=="number"?oi(e,`${t}`,dt.NUMBER):oi(e,t,dt.CODE),json:e=>e}),[dt.INSPECT]:Xo({pretty:(e,t)=>$k(e,t),json:e=>e}),[dt.NUMBER]:Xo({pretty:(e,t)=>oi(e,`${t}`,dt.NUMBER),json:e=>e}),[dt.IDENT]:Xo({pretty:(e,t)=>$i(e,t),json:e=>fn(e)}),[dt.LOCATOR]:Xo({pretty:(e,t)=>Vr(e,t),json:e=>ml(e)}),[dt.DESCRIPTOR]:Xo({pretty:(e,t)=>ai(e,t),json:e=>gl(e)}),[dt.RESOLUTION]:Xo({pretty:(e,{descriptor:t,locator:r})=>QB(e,t,r),json:({descriptor:e,locator:t})=>({descriptor:gl(e),locator:t!==null?ml(t):null})}),[dt.DEPENDENT]:Xo({pretty:(e,{locator:t,descriptor:r})=>K4(e,t,r),json:({locator:e,descriptor:t})=>({locator:ml(e),descriptor:gl(t)})}),[dt.PACKAGE_EXTENSION]:Xo({pretty:(e,t)=>{switch(t.type){case"Dependency":return`${$i(e,t.parentDescriptor)} \u27A4 ${oi(e,"dependencies",dt.CODE)} \u27A4 ${$i(e,t.descriptor)}`;case"PeerDependency":return`${$i(e,t.parentDescriptor)} \u27A4 ${oi(e,"peerDependencies",dt.CODE)} \u27A4 ${$i(e,t.descriptor)}`;case"PeerDependencyMeta":return`${$i(e,t.parentDescriptor)} \u27A4 ${oi(e,"peerDependenciesMeta",dt.CODE)} \u27A4 ${$i(e,ka(t.selector))} \u27A4 ${oi(e,t.key,dt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}},json:e=>{switch(e.type){case"Dependency":return`${fn(e.parentDescriptor)} > ${fn(e.descriptor)}`;case"PeerDependency":return`${fn(e.parentDescriptor)} >> ${fn(e.descriptor)}`;case"PeerDependencyMeta":return`${fn(e.parentDescriptor)} >> ${e.selector} / ${e.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}}}),[dt.SETTING]:Xo({pretty:(e,t)=>(e.get(t),eI(e,oi(e,t,dt.CODE),`https://yarnpkg.com/configuration/yarnrc#${t}`)),json:e=>e}),[dt.DURATION]:Xo({pretty:(e,t)=>{if(t>1e3*60){let r=Math.floor(t/1e3/60),s=Math.ceil((t-r*60*1e3)/1e3);return s===0?`${r}m`:`${r}m ${s}s`}else{let r=Math.floor(t/1e3),s=t-r*1e3;return s===0?`${r}s`:`${r}s ${s}ms`}},json:e=>e}),[dt.SIZE]:Xo({pretty:(e,t)=>oi(e,zae(t),dt.NUMBER),json:e=>e}),[dt.SIZE_DIFF]:Xo({pretty:(e,t)=>{let r=t>=0?"+":"-",s=r==="+"?dt.REMOVED:dt.ADDED;return oi(e,`${r} ${zae(Math.max(Math.abs(t),1))}`,s)},json:e=>e}),[dt.PATH]:Xo({pretty:(e,t)=>oi(e,Ae.fromPortablePath(t),dt.PATH),json:e=>Ae.fromPortablePath(e)}),[dt.MARKDOWN]:Xo({pretty:(e,{text:t,format:r,paragraphs:s})=>Ko(t,{format:r,paragraphs:s}),json:({text:e})=>e}),[dt.MARKDOWN_INLINE]:Xo({pretty:(e,t)=>(t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(r,s,a)=>Gt(e,s+a+s,dt.CODE)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(r,s,a)=>Z0(e,a,2)),t),json:e=>e})};XKe=!!process.env.KONSOLE_VERSION;iQ=(a=>(a.Error="error",a.Warning="warning",a.Info="info",a.Discard="discard",a))(iQ||{})});var Xae=G(tI=>{"use strict";Object.defineProperty(tI,"__esModule",{value:!0});tI.splitWhen=tI.flatten=void 0;function eJe(e){return e.reduce((t,r)=>[].concat(t,r),[])}tI.flatten=eJe;function tJe(e,t){let r=[[]],s=0;for(let a of e)t(a)?(s++,r[s]=[]):r[s].push(a);return r}tI.splitWhen=tJe});var $ae=G(sQ=>{"use strict";Object.defineProperty(sQ,"__esModule",{value:!0});sQ.isEnoentCodeError=void 0;function rJe(e){return e.code==="ENOENT"}sQ.isEnoentCodeError=rJe});var ele=G(oQ=>{"use strict";Object.defineProperty(oQ,"__esModule",{value:!0});oQ.createDirentFromStats=void 0;var J4=class{constructor(t,r){this.name=t,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function nJe(e,t){return new J4(e,t)}oQ.createDirentFromStats=nJe});var ile=G(fs=>{"use strict";Object.defineProperty(fs,"__esModule",{value:!0});fs.convertPosixPathToPattern=fs.convertWindowsPathToPattern=fs.convertPathToPattern=fs.escapePosixPath=fs.escapeWindowsPath=fs.escape=fs.removeLeadingDotSegment=fs.makeAbsolute=fs.unixify=void 0;var iJe=Ce("os"),sJe=Ce("path"),tle=iJe.platform()==="win32",oJe=2,aJe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,lJe=/(\\?)([()[\]{}]|^!|[!+@](?=\())/g,cJe=/^\\\\([.?])/,uJe=/\\(?![!()+@[\]{}])/g;function fJe(e){return e.replace(/\\/g,"/")}fs.unixify=fJe;function AJe(e,t){return sJe.resolve(e,t)}fs.makeAbsolute=AJe;function pJe(e){if(e.charAt(0)==="."){let t=e.charAt(1);if(t==="/"||t==="\\")return e.slice(oJe)}return e}fs.removeLeadingDotSegment=pJe;fs.escape=tle?z4:Z4;function z4(e){return e.replace(lJe,"\\$2")}fs.escapeWindowsPath=z4;function Z4(e){return e.replace(aJe,"\\$2")}fs.escapePosixPath=Z4;fs.convertPathToPattern=tle?rle:nle;function rle(e){return z4(e).replace(cJe,"//$1").replace(uJe,"/")}fs.convertWindowsPathToPattern=rle;function nle(e){return Z4(e)}fs.convertPosixPathToPattern=nle});var ole=G((YFt,sle)=>{sle.exports=function(t){if(typeof t!="string"||t==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(t);){if(r[2])return!0;t=t.slice(r.index+r[0].length)}return!1}});var cle=G((WFt,lle)=>{var hJe=ole(),ale={"{":"}","(":")","[":"]"},dJe=function(e){if(e[0]==="!")return!0;for(var t=0,r=-2,s=-2,a=-2,n=-2,c=-2;tt&&(c===-1||c>s||(c=e.indexOf("\\",t),c===-1||c>s)))||a!==-1&&e[t]==="{"&&e[t+1]!=="}"&&(a=e.indexOf("}",t),a>t&&(c=e.indexOf("\\",t),c===-1||c>a))||n!==-1&&e[t]==="("&&e[t+1]==="?"&&/[:!=]/.test(e[t+2])&&e[t+3]!==")"&&(n=e.indexOf(")",t),n>t&&(c=e.indexOf("\\",t),c===-1||c>n))||r!==-1&&e[t]==="("&&e[t+1]!=="|"&&(rr&&(c=e.indexOf("\\",r),c===-1||c>n))))return!0;if(e[t]==="\\"){var f=e[t+1];t+=2;var p=ale[f];if(p){var h=e.indexOf(p,t);h!==-1&&(t=h+1)}if(e[t]==="!")return!0}else t++}return!1},gJe=function(e){if(e[0]==="!")return!0;for(var t=0;t{"use strict";var mJe=cle(),yJe=Ce("path").posix.dirname,EJe=Ce("os").platform()==="win32",X4="/",IJe=/\\/g,CJe=/[\{\[].*[\}\]]$/,wJe=/(^|[^\\])([\{\[]|\([^\)]+$)/,BJe=/\\([\!\*\?\|\[\]\(\)\{\}])/g;ule.exports=function(t,r){var s=Object.assign({flipBackslashes:!0},r);s.flipBackslashes&&EJe&&t.indexOf(X4)<0&&(t=t.replace(IJe,X4)),CJe.test(t)&&(t+=X4),t+="a";do t=yJe(t);while(mJe(t)||wJe.test(t));return t.replace(BJe,"$1")}});var Ele=G(Gr=>{"use strict";Object.defineProperty(Gr,"__esModule",{value:!0});Gr.removeDuplicateSlashes=Gr.matchAny=Gr.convertPatternsToRe=Gr.makeRe=Gr.getPatternParts=Gr.expandBraceExpansion=Gr.expandPatternsWithBraceExpansion=Gr.isAffectDepthOfReadingPattern=Gr.endsWithSlashGlobStar=Gr.hasGlobStar=Gr.getBaseDirectory=Gr.isPatternRelatedToParentDirectory=Gr.getPatternsOutsideCurrentDirectory=Gr.getPatternsInsideCurrentDirectory=Gr.getPositivePatterns=Gr.getNegativePatterns=Gr.isPositivePattern=Gr.isNegativePattern=Gr.convertToNegativePattern=Gr.convertToPositivePattern=Gr.isDynamicPattern=Gr.isStaticPattern=void 0;var vJe=Ce("path"),SJe=fle(),$4=Zo(),Ale="**",bJe="\\",DJe=/[*?]|^!/,PJe=/\[[^[]*]/,xJe=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,kJe=/[!*+?@]\([^(]*\)/,QJe=/,|\.\./,TJe=/(?!^)\/{2,}/g;function ple(e,t={}){return!hle(e,t)}Gr.isStaticPattern=ple;function hle(e,t={}){return e===""?!1:!!(t.caseSensitiveMatch===!1||e.includes(bJe)||DJe.test(e)||PJe.test(e)||xJe.test(e)||t.extglob!==!1&&kJe.test(e)||t.braceExpansion!==!1&&RJe(e))}Gr.isDynamicPattern=hle;function RJe(e){let t=e.indexOf("{");if(t===-1)return!1;let r=e.indexOf("}",t+1);if(r===-1)return!1;let s=e.slice(t,r);return QJe.test(s)}function FJe(e){return aQ(e)?e.slice(1):e}Gr.convertToPositivePattern=FJe;function NJe(e){return"!"+e}Gr.convertToNegativePattern=NJe;function aQ(e){return e.startsWith("!")&&e[1]!=="("}Gr.isNegativePattern=aQ;function dle(e){return!aQ(e)}Gr.isPositivePattern=dle;function OJe(e){return e.filter(aQ)}Gr.getNegativePatterns=OJe;function LJe(e){return e.filter(dle)}Gr.getPositivePatterns=LJe;function MJe(e){return e.filter(t=>!e3(t))}Gr.getPatternsInsideCurrentDirectory=MJe;function UJe(e){return e.filter(e3)}Gr.getPatternsOutsideCurrentDirectory=UJe;function e3(e){return e.startsWith("..")||e.startsWith("./..")}Gr.isPatternRelatedToParentDirectory=e3;function _Je(e){return SJe(e,{flipBackslashes:!1})}Gr.getBaseDirectory=_Je;function HJe(e){return e.includes(Ale)}Gr.hasGlobStar=HJe;function gle(e){return e.endsWith("/"+Ale)}Gr.endsWithSlashGlobStar=gle;function jJe(e){let t=vJe.basename(e);return gle(e)||ple(t)}Gr.isAffectDepthOfReadingPattern=jJe;function GJe(e){return e.reduce((t,r)=>t.concat(mle(r)),[])}Gr.expandPatternsWithBraceExpansion=GJe;function mle(e){let t=$4.braces(e,{expand:!0,nodupes:!0,keepEscaping:!0});return t.sort((r,s)=>r.length-s.length),t.filter(r=>r!=="")}Gr.expandBraceExpansion=mle;function qJe(e,t){let{parts:r}=$4.scan(e,Object.assign(Object.assign({},t),{parts:!0}));return r.length===0&&(r=[e]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r}Gr.getPatternParts=qJe;function yle(e,t){return $4.makeRe(e,t)}Gr.makeRe=yle;function YJe(e,t){return e.map(r=>yle(r,t))}Gr.convertPatternsToRe=YJe;function WJe(e,t){return t.some(r=>r.test(e))}Gr.matchAny=WJe;function VJe(e){return e.replace(TJe,"/")}Gr.removeDuplicateSlashes=VJe});var Ble=G((JFt,wle)=>{"use strict";var KJe=Ce("stream"),Ile=KJe.PassThrough,JJe=Array.prototype.slice;wle.exports=zJe;function zJe(){let e=[],t=JJe.call(arguments),r=!1,s=t[t.length-1];s&&!Array.isArray(s)&&s.pipe==null?t.pop():s={};let a=s.end!==!1,n=s.pipeError===!0;s.objectMode==null&&(s.objectMode=!0),s.highWaterMark==null&&(s.highWaterMark=64*1024);let c=Ile(s);function f(){for(let E=0,C=arguments.length;E0||(r=!1,p())}function x(I){function R(){I.removeListener("merge2UnpipeEnd",R),I.removeListener("end",R),n&&I.removeListener("error",N),S()}function N(U){c.emit("error",U)}if(I._readableState.endEmitted)return S();I.on("merge2UnpipeEnd",R),I.on("end",R),n&&I.on("error",N),I.pipe(c,{end:!1}),I.resume()}for(let I=0;I{"use strict";Object.defineProperty(lQ,"__esModule",{value:!0});lQ.merge=void 0;var ZJe=Ble();function XJe(e){let t=ZJe(e);return e.forEach(r=>{r.once("error",s=>t.emit("error",s))}),t.once("close",()=>vle(e)),t.once("end",()=>vle(e)),t}lQ.merge=XJe;function vle(e){e.forEach(t=>t.emit("close"))}});var ble=G(rI=>{"use strict";Object.defineProperty(rI,"__esModule",{value:!0});rI.isEmpty=rI.isString=void 0;function $Je(e){return typeof e=="string"}rI.isString=$Je;function eze(e){return e===""}rI.isEmpty=eze});var Rp=G(ea=>{"use strict";Object.defineProperty(ea,"__esModule",{value:!0});ea.string=ea.stream=ea.pattern=ea.path=ea.fs=ea.errno=ea.array=void 0;var tze=Xae();ea.array=tze;var rze=$ae();ea.errno=rze;var nze=ele();ea.fs=nze;var ize=ile();ea.path=ize;var sze=Ele();ea.pattern=sze;var oze=Sle();ea.stream=oze;var aze=ble();ea.string=aze});var kle=G(ta=>{"use strict";Object.defineProperty(ta,"__esModule",{value:!0});ta.convertPatternGroupToTask=ta.convertPatternGroupsToTasks=ta.groupPatternsByBaseDirectory=ta.getNegativePatternsAsPositive=ta.getPositivePatterns=ta.convertPatternsToTasks=ta.generate=void 0;var _u=Rp();function lze(e,t){let r=Dle(e,t),s=Dle(t.ignore,t),a=Ple(r),n=xle(r,s),c=a.filter(E=>_u.pattern.isStaticPattern(E,t)),f=a.filter(E=>_u.pattern.isDynamicPattern(E,t)),p=t3(c,n,!1),h=t3(f,n,!0);return p.concat(h)}ta.generate=lze;function Dle(e,t){let r=e;return t.braceExpansion&&(r=_u.pattern.expandPatternsWithBraceExpansion(r)),t.baseNameMatch&&(r=r.map(s=>s.includes("/")?s:`**/${s}`)),r.map(s=>_u.pattern.removeDuplicateSlashes(s))}function t3(e,t,r){let s=[],a=_u.pattern.getPatternsOutsideCurrentDirectory(e),n=_u.pattern.getPatternsInsideCurrentDirectory(e),c=r3(a),f=r3(n);return s.push(...n3(c,t,r)),"."in f?s.push(i3(".",n,t,r)):s.push(...n3(f,t,r)),s}ta.convertPatternsToTasks=t3;function Ple(e){return _u.pattern.getPositivePatterns(e)}ta.getPositivePatterns=Ple;function xle(e,t){return _u.pattern.getNegativePatterns(e).concat(t).map(_u.pattern.convertToPositivePattern)}ta.getNegativePatternsAsPositive=xle;function r3(e){let t={};return e.reduce((r,s)=>{let a=_u.pattern.getBaseDirectory(s);return a in r?r[a].push(s):r[a]=[s],r},t)}ta.groupPatternsByBaseDirectory=r3;function n3(e,t,r){return Object.keys(e).map(s=>i3(s,e[s],t,r))}ta.convertPatternGroupsToTasks=n3;function i3(e,t,r,s){return{dynamic:s,positive:t,negative:r,base:e,patterns:[].concat(t,r.map(_u.pattern.convertToNegativePattern))}}ta.convertPatternGroupToTask=i3});var Tle=G(cQ=>{"use strict";Object.defineProperty(cQ,"__esModule",{value:!0});cQ.read=void 0;function cze(e,t,r){t.fs.lstat(e,(s,a)=>{if(s!==null){Qle(r,s);return}if(!a.isSymbolicLink()||!t.followSymbolicLink){s3(r,a);return}t.fs.stat(e,(n,c)=>{if(n!==null){if(t.throwErrorOnBrokenSymbolicLink){Qle(r,n);return}s3(r,a);return}t.markSymbolicLink&&(c.isSymbolicLink=()=>!0),s3(r,c)})})}cQ.read=cze;function Qle(e,t){e(t)}function s3(e,t){e(null,t)}});var Rle=G(uQ=>{"use strict";Object.defineProperty(uQ,"__esModule",{value:!0});uQ.read=void 0;function uze(e,t){let r=t.fs.lstatSync(e);if(!r.isSymbolicLink()||!t.followSymbolicLink)return r;try{let s=t.fs.statSync(e);return t.markSymbolicLink&&(s.isSymbolicLink=()=>!0),s}catch(s){if(!t.throwErrorOnBrokenSymbolicLink)return r;throw s}}uQ.read=uze});var Fle=G(gd=>{"use strict";Object.defineProperty(gd,"__esModule",{value:!0});gd.createFileSystemAdapter=gd.FILE_SYSTEM_ADAPTER=void 0;var fQ=Ce("fs");gd.FILE_SYSTEM_ADAPTER={lstat:fQ.lstat,stat:fQ.stat,lstatSync:fQ.lstatSync,statSync:fQ.statSync};function fze(e){return e===void 0?gd.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},gd.FILE_SYSTEM_ADAPTER),e)}gd.createFileSystemAdapter=fze});var Nle=G(a3=>{"use strict";Object.defineProperty(a3,"__esModule",{value:!0});var Aze=Fle(),o3=class{constructor(t={}){this._options=t,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Aze.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(t,r){return t??r}};a3.default=o3});var $0=G(md=>{"use strict";Object.defineProperty(md,"__esModule",{value:!0});md.statSync=md.stat=md.Settings=void 0;var Ole=Tle(),pze=Rle(),l3=Nle();md.Settings=l3.default;function hze(e,t,r){if(typeof t=="function"){Ole.read(e,c3(),t);return}Ole.read(e,c3(t),r)}md.stat=hze;function dze(e,t){let r=c3(t);return pze.read(e,r)}md.statSync=dze;function c3(e={}){return e instanceof l3.default?e:new l3.default(e)}});var Ule=G((sNt,Mle)=>{var Lle;Mle.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:global):e=>(Lle||(Lle=Promise.resolve())).then(e).catch(t=>setTimeout(()=>{throw t},0))});var Hle=G((oNt,_le)=>{_le.exports=mze;var gze=Ule();function mze(e,t){let r,s,a,n=!0;Array.isArray(e)?(r=[],s=e.length):(a=Object.keys(e),r={},s=a.length);function c(p){function h(){t&&t(p,r),t=null}n?gze(h):h()}function f(p,h,E){r[p]=E,(--s===0||h)&&c(h)}s?a?a.forEach(function(p){e[p](function(h,E){f(p,h,E)})}):e.forEach(function(p,h){p(function(E,C){f(h,E,C)})}):c(null),n=!1}});var u3=G(pQ=>{"use strict";Object.defineProperty(pQ,"__esModule",{value:!0});pQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var AQ=process.versions.node.split(".");if(AQ[0]===void 0||AQ[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var jle=Number.parseInt(AQ[0],10),yze=Number.parseInt(AQ[1],10),Gle=10,Eze=10,Ize=jle>Gle,Cze=jle===Gle&&yze>=Eze;pQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Ize||Cze});var qle=G(hQ=>{"use strict";Object.defineProperty(hQ,"__esModule",{value:!0});hQ.createDirentFromStats=void 0;var f3=class{constructor(t,r){this.name=t,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function wze(e,t){return new f3(e,t)}hQ.createDirentFromStats=wze});var A3=G(dQ=>{"use strict";Object.defineProperty(dQ,"__esModule",{value:!0});dQ.fs=void 0;var Bze=qle();dQ.fs=Bze});var p3=G(gQ=>{"use strict";Object.defineProperty(gQ,"__esModule",{value:!0});gQ.joinPathSegments=void 0;function vze(e,t,r){return e.endsWith(r)?e+t:e+r+t}gQ.joinPathSegments=vze});var zle=G(yd=>{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});yd.readdir=yd.readdirWithFileTypes=yd.read=void 0;var Sze=$0(),Yle=Hle(),bze=u3(),Wle=A3(),Vle=p3();function Dze(e,t,r){if(!t.stats&&bze.IS_SUPPORT_READDIR_WITH_FILE_TYPES){Kle(e,t,r);return}Jle(e,t,r)}yd.read=Dze;function Kle(e,t,r){t.fs.readdir(e,{withFileTypes:!0},(s,a)=>{if(s!==null){mQ(r,s);return}let n=a.map(f=>({dirent:f,name:f.name,path:Vle.joinPathSegments(e,f.name,t.pathSegmentSeparator)}));if(!t.followSymbolicLinks){h3(r,n);return}let c=n.map(f=>Pze(f,t));Yle(c,(f,p)=>{if(f!==null){mQ(r,f);return}h3(r,p)})})}yd.readdirWithFileTypes=Kle;function Pze(e,t){return r=>{if(!e.dirent.isSymbolicLink()){r(null,e);return}t.fs.stat(e.path,(s,a)=>{if(s!==null){if(t.throwErrorOnBrokenSymbolicLink){r(s);return}r(null,e);return}e.dirent=Wle.fs.createDirentFromStats(e.name,a),r(null,e)})}}function Jle(e,t,r){t.fs.readdir(e,(s,a)=>{if(s!==null){mQ(r,s);return}let n=a.map(c=>{let f=Vle.joinPathSegments(e,c,t.pathSegmentSeparator);return p=>{Sze.stat(f,t.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let C={name:c,path:f,dirent:Wle.fs.createDirentFromStats(c,E)};t.stats&&(C.stats=E),p(null,C)})}});Yle(n,(c,f)=>{if(c!==null){mQ(r,c);return}h3(r,f)})})}yd.readdir=Jle;function mQ(e,t){e(t)}function h3(e,t){e(null,t)}});var tce=G(Ed=>{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});Ed.readdir=Ed.readdirWithFileTypes=Ed.read=void 0;var xze=$0(),kze=u3(),Zle=A3(),Xle=p3();function Qze(e,t){return!t.stats&&kze.IS_SUPPORT_READDIR_WITH_FILE_TYPES?$le(e,t):ece(e,t)}Ed.read=Qze;function $le(e,t){return t.fs.readdirSync(e,{withFileTypes:!0}).map(s=>{let a={dirent:s,name:s.name,path:Xle.joinPathSegments(e,s.name,t.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&t.followSymbolicLinks)try{let n=t.fs.statSync(a.path);a.dirent=Zle.fs.createDirentFromStats(a.name,n)}catch(n){if(t.throwErrorOnBrokenSymbolicLink)throw n}return a})}Ed.readdirWithFileTypes=$le;function ece(e,t){return t.fs.readdirSync(e).map(s=>{let a=Xle.joinPathSegments(e,s,t.pathSegmentSeparator),n=xze.statSync(a,t.fsStatSettings),c={name:s,path:a,dirent:Zle.fs.createDirentFromStats(s,n)};return t.stats&&(c.stats=n),c})}Ed.readdir=ece});var rce=G(Id=>{"use strict";Object.defineProperty(Id,"__esModule",{value:!0});Id.createFileSystemAdapter=Id.FILE_SYSTEM_ADAPTER=void 0;var nI=Ce("fs");Id.FILE_SYSTEM_ADAPTER={lstat:nI.lstat,stat:nI.stat,lstatSync:nI.lstatSync,statSync:nI.statSync,readdir:nI.readdir,readdirSync:nI.readdirSync};function Tze(e){return e===void 0?Id.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Id.FILE_SYSTEM_ADAPTER),e)}Id.createFileSystemAdapter=Tze});var nce=G(g3=>{"use strict";Object.defineProperty(g3,"__esModule",{value:!0});var Rze=Ce("path"),Fze=$0(),Nze=rce(),d3=class{constructor(t={}){this._options=t,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=Nze.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Rze.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new Fze.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(t,r){return t??r}};g3.default=d3});var yQ=G(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});Cd.Settings=Cd.scandirSync=Cd.scandir=void 0;var ice=zle(),Oze=tce(),m3=nce();Cd.Settings=m3.default;function Lze(e,t,r){if(typeof t=="function"){ice.read(e,y3(),t);return}ice.read(e,y3(t),r)}Cd.scandir=Lze;function Mze(e,t){let r=y3(t);return Oze.read(e,r)}Cd.scandirSync=Mze;function y3(e={}){return e instanceof m3.default?e:new m3.default(e)}});var oce=G((gNt,sce)=>{"use strict";function Uze(e){var t=new e,r=t;function s(){var n=t;return n.next?t=n.next:(t=new e,r=t),n.next=null,n}function a(n){r.next=n,r=n}return{get:s,release:a}}sce.exports=Uze});var lce=G((mNt,E3)=>{"use strict";var _ze=oce();function ace(e,t,r){if(typeof e=="function"&&(r=t,t=e,e=null),!(r>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");var s=_ze(Hze),a=null,n=null,c=0,f=null,p={push:R,drain:Rc,saturated:Rc,pause:E,paused:!1,get concurrency(){return r},set concurrency(fe){if(!(fe>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");if(r=fe,!p.paused)for(;a&&c=r||p.paused?n?(n.next=ge,n=ge):(a=ge,n=ge,p.saturated()):(c++,t.call(e,ge.value,ge.worked))}function N(fe,le){var ge=s.get();ge.context=e,ge.release=U,ge.value=fe,ge.callback=le||Rc,ge.errorHandler=f,c>=r||p.paused?a?(ge.next=a,a=ge):(a=ge,n=ge,p.saturated()):(c++,t.call(e,ge.value,ge.worked))}function U(fe){fe&&s.release(fe);var le=a;le&&c<=r?p.paused?c--:(n===a&&(n=null),a=le.next,le.next=null,t.call(e,le.value,le.worked),n===null&&p.empty()):--c===0&&p.drain()}function K(){a=null,n=null,p.drain=Rc}function $(){a=null,n=null,p.drain(),p.drain=Rc}function ie(fe){f=fe}}function Rc(){}function Hze(){this.value=null,this.callback=Rc,this.next=null,this.release=Rc,this.context=null,this.errorHandler=null;var e=this;this.worked=function(r,s){var a=e.callback,n=e.errorHandler,c=e.value;e.value=null,e.callback=Rc,e.errorHandler&&n(r,c),a.call(e.context,r,s),e.release(e)}}function jze(e,t,r){typeof e=="function"&&(r=t,t=e,e=null);function s(E,C){t.call(this,E).then(function(S){C(null,S)},C)}var a=ace(e,s,r),n=a.push,c=a.unshift;return a.push=f,a.unshift=p,a.drained=h,a;function f(E){var C=new Promise(function(S,x){n(E,function(I,R){if(I){x(I);return}S(R)})});return C.catch(Rc),C}function p(E){var C=new Promise(function(S,x){c(E,function(I,R){if(I){x(I);return}S(R)})});return C.catch(Rc),C}function h(){if(a.idle())return new Promise(function(S){S()});var E=a.drain,C=new Promise(function(S){a.drain=function(){E(),S()}});return C}}E3.exports=ace;E3.exports.promise=jze});var EQ=G(eA=>{"use strict";Object.defineProperty(eA,"__esModule",{value:!0});eA.joinPathSegments=eA.replacePathSegmentSeparator=eA.isAppliedFilter=eA.isFatalError=void 0;function Gze(e,t){return e.errorFilter===null?!0:!e.errorFilter(t)}eA.isFatalError=Gze;function qze(e,t){return e===null||e(t)}eA.isAppliedFilter=qze;function Yze(e,t){return e.split(/[/\\]/).join(t)}eA.replacePathSegmentSeparator=Yze;function Wze(e,t,r){return e===""?t:e.endsWith(r)?e+t:e+r+t}eA.joinPathSegments=Wze});var w3=G(C3=>{"use strict";Object.defineProperty(C3,"__esModule",{value:!0});var Vze=EQ(),I3=class{constructor(t,r){this._root=t,this._settings=r,this._root=Vze.replacePathSegmentSeparator(t,r.pathSegmentSeparator)}};C3.default=I3});var S3=G(v3=>{"use strict";Object.defineProperty(v3,"__esModule",{value:!0});var Kze=Ce("events"),Jze=yQ(),zze=lce(),IQ=EQ(),Zze=w3(),B3=class extends Zze.default{constructor(t,r){super(t,r),this._settings=r,this._scandir=Jze.scandir,this._emitter=new Kze.EventEmitter,this._queue=zze(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(t){this._emitter.on("entry",t)}onError(t){this._emitter.once("error",t)}onEnd(t){this._emitter.once("end",t)}_pushToQueue(t,r){let s={directory:t,base:r};this._queue.push(s,a=>{a!==null&&this._handleError(a)})}_worker(t,r){this._scandir(t.directory,this._settings.fsScandirSettings,(s,a)=>{if(s!==null){r(s,void 0);return}for(let n of a)this._handleEntry(n,t.base);r(null,void 0)})}_handleError(t){this._isDestroyed||!IQ.isFatalError(this._settings,t)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",t))}_handleEntry(t,r){if(this._isDestroyed||this._isFatalError)return;let s=t.path;r!==void 0&&(t.path=IQ.joinPathSegments(r,t.name,this._settings.pathSegmentSeparator)),IQ.isAppliedFilter(this._settings.entryFilter,t)&&this._emitEntry(t),t.dirent.isDirectory()&&IQ.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(s,r===void 0?void 0:t.path)}_emitEntry(t){this._emitter.emit("entry",t)}};v3.default=B3});var cce=G(D3=>{"use strict";Object.defineProperty(D3,"__esModule",{value:!0});var Xze=S3(),b3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new Xze.default(this._root,this._settings),this._storage=[]}read(t){this._reader.onError(r=>{$ze(t,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{eZe(t,this._storage)}),this._reader.read()}};D3.default=b3;function $ze(e,t){e(t)}function eZe(e,t){e(null,t)}});var uce=G(x3=>{"use strict";Object.defineProperty(x3,"__esModule",{value:!0});var tZe=Ce("stream"),rZe=S3(),P3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new rZe.default(this._root,this._settings),this._stream=new tZe.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(t=>{this._stream.emit("error",t)}),this._reader.onEntry(t=>{this._stream.push(t)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};x3.default=P3});var fce=G(Q3=>{"use strict";Object.defineProperty(Q3,"__esModule",{value:!0});var nZe=yQ(),CQ=EQ(),iZe=w3(),k3=class extends iZe.default{constructor(){super(...arguments),this._scandir=nZe.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(t,r){this._queue.add({directory:t,base:r})}_handleQueue(){for(let t of this._queue.values())this._handleDirectory(t.directory,t.base)}_handleDirectory(t,r){try{let s=this._scandir(t,this._settings.fsScandirSettings);for(let a of s)this._handleEntry(a,r)}catch(s){this._handleError(s)}}_handleError(t){if(CQ.isFatalError(this._settings,t))throw t}_handleEntry(t,r){let s=t.path;r!==void 0&&(t.path=CQ.joinPathSegments(r,t.name,this._settings.pathSegmentSeparator)),CQ.isAppliedFilter(this._settings.entryFilter,t)&&this._pushToStorage(t),t.dirent.isDirectory()&&CQ.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(s,r===void 0?void 0:t.path)}_pushToStorage(t){this._storage.push(t)}};Q3.default=k3});var Ace=G(R3=>{"use strict";Object.defineProperty(R3,"__esModule",{value:!0});var sZe=fce(),T3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new sZe.default(this._root,this._settings)}read(){return this._reader.read()}};R3.default=T3});var pce=G(N3=>{"use strict";Object.defineProperty(N3,"__esModule",{value:!0});var oZe=Ce("path"),aZe=yQ(),F3=class{constructor(t={}){this._options=t,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,oZe.sep),this.fsScandirSettings=new aZe.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(t,r){return t??r}};N3.default=F3});var BQ=G(tA=>{"use strict";Object.defineProperty(tA,"__esModule",{value:!0});tA.Settings=tA.walkStream=tA.walkSync=tA.walk=void 0;var hce=cce(),lZe=uce(),cZe=Ace(),O3=pce();tA.Settings=O3.default;function uZe(e,t,r){if(typeof t=="function"){new hce.default(e,wQ()).read(t);return}new hce.default(e,wQ(t)).read(r)}tA.walk=uZe;function fZe(e,t){let r=wQ(t);return new cZe.default(e,r).read()}tA.walkSync=fZe;function AZe(e,t){let r=wQ(t);return new lZe.default(e,r).read()}tA.walkStream=AZe;function wQ(e={}){return e instanceof O3.default?e:new O3.default(e)}});var vQ=G(M3=>{"use strict";Object.defineProperty(M3,"__esModule",{value:!0});var pZe=Ce("path"),hZe=$0(),dce=Rp(),L3=class{constructor(t){this._settings=t,this._fsStatSettings=new hZe.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(t){return pZe.resolve(this._settings.cwd,t)}_makeEntry(t,r){let s={name:r,path:r,dirent:dce.fs.createDirentFromStats(r,t)};return this._settings.stats&&(s.stats=t),s}_isFatalError(t){return!dce.errno.isEnoentCodeError(t)&&!this._settings.suppressErrors}};M3.default=L3});var H3=G(_3=>{"use strict";Object.defineProperty(_3,"__esModule",{value:!0});var dZe=Ce("stream"),gZe=$0(),mZe=BQ(),yZe=vQ(),U3=class extends yZe.default{constructor(){super(...arguments),this._walkStream=mZe.walkStream,this._stat=gZe.stat}dynamic(t,r){return this._walkStream(t,r)}static(t,r){let s=t.map(this._getFullEntryPath,this),a=new dZe.PassThrough({objectMode:!0});a._write=(n,c,f)=>this._getEntry(s[n],t[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===s.length-1&&a.end(),f()}).catch(f);for(let n=0;nthis._makeEntry(a,r)).catch(a=>{if(s.errorFilter(a))return null;throw a})}_getStat(t){return new Promise((r,s)=>{this._stat(t,this._fsStatSettings,(a,n)=>a===null?r(n):s(a))})}};_3.default=U3});var gce=G(G3=>{"use strict";Object.defineProperty(G3,"__esModule",{value:!0});var EZe=BQ(),IZe=vQ(),CZe=H3(),j3=class extends IZe.default{constructor(){super(...arguments),this._walkAsync=EZe.walk,this._readerStream=new CZe.default(this._settings)}dynamic(t,r){return new Promise((s,a)=>{this._walkAsync(t,r,(n,c)=>{n===null?s(c):a(n)})})}async static(t,r){let s=[],a=this._readerStream.static(t,r);return new Promise((n,c)=>{a.once("error",c),a.on("data",f=>s.push(f)),a.once("end",()=>n(s))})}};G3.default=j3});var mce=G(Y3=>{"use strict";Object.defineProperty(Y3,"__esModule",{value:!0});var TB=Rp(),q3=class{constructor(t,r,s){this._patterns=t,this._settings=r,this._micromatchOptions=s,this._storage=[],this._fillStorage()}_fillStorage(){for(let t of this._patterns){let r=this._getPatternSegments(t),s=this._splitSegmentsIntoSections(r);this._storage.push({complete:s.length<=1,pattern:t,segments:r,sections:s})}}_getPatternSegments(t){return TB.pattern.getPatternParts(t,this._micromatchOptions).map(s=>TB.pattern.isDynamicPattern(s,this._settings)?{dynamic:!0,pattern:s,patternRe:TB.pattern.makeRe(s,this._micromatchOptions)}:{dynamic:!1,pattern:s})}_splitSegmentsIntoSections(t){return TB.array.splitWhen(t,r=>r.dynamic&&TB.pattern.hasGlobStar(r.pattern))}};Y3.default=q3});var yce=G(V3=>{"use strict";Object.defineProperty(V3,"__esModule",{value:!0});var wZe=mce(),W3=class extends wZe.default{match(t){let r=t.split("/"),s=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>s);for(let n of a){let c=n.sections[0];if(!n.complete&&s>c.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};V3.default=W3});var Ece=G(J3=>{"use strict";Object.defineProperty(J3,"__esModule",{value:!0});var SQ=Rp(),BZe=yce(),K3=class{constructor(t,r){this._settings=t,this._micromatchOptions=r}getFilter(t,r,s){let a=this._getMatcher(r),n=this._getNegativePatternsRe(s);return c=>this._filter(t,c,a,n)}_getMatcher(t){return new BZe.default(t,this._settings,this._micromatchOptions)}_getNegativePatternsRe(t){let r=t.filter(SQ.pattern.isAffectDepthOfReadingPattern);return SQ.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(t,r,s,a){if(this._isSkippedByDeep(t,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=SQ.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,s)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(t,r){return this._settings.deep===1/0?!1:this._getEntryLevel(t,r)>=this._settings.deep}_getEntryLevel(t,r){let s=r.split("/").length;if(t==="")return s;let a=t.split("/").length;return s-a}_isSkippedSymbolicLink(t){return!this._settings.followSymbolicLinks&&t.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(t,r){return!this._settings.baseNameMatch&&!r.match(t)}_isSkippedByNegativePatterns(t,r){return!SQ.pattern.matchAny(t,r)}};J3.default=K3});var Ice=G(Z3=>{"use strict";Object.defineProperty(Z3,"__esModule",{value:!0});var em=Rp(),z3=class{constructor(t,r){this._settings=t,this._micromatchOptions=r,this.index=new Map}getFilter(t,r){let s=em.pattern.convertPatternsToRe(t,this._micromatchOptions),a=em.pattern.convertPatternsToRe(r,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return n=>this._filter(n,s,a)}_filter(t,r,s){let a=em.path.removeLeadingDotSegment(t.path);if(this._settings.unique&&this._isDuplicateEntry(a)||this._onlyFileFilter(t)||this._onlyDirectoryFilter(t)||this._isSkippedByAbsoluteNegativePatterns(a,s))return!1;let n=t.dirent.isDirectory(),c=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(a,s,n);return this._settings.unique&&c&&this._createIndexRecord(a),c}_isDuplicateEntry(t){return this.index.has(t)}_createIndexRecord(t){this.index.set(t,void 0)}_onlyFileFilter(t){return this._settings.onlyFiles&&!t.dirent.isFile()}_onlyDirectoryFilter(t){return this._settings.onlyDirectories&&!t.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(t,r){if(!this._settings.absolute)return!1;let s=em.path.makeAbsolute(this._settings.cwd,t);return em.pattern.matchAny(s,r)}_isMatchToPatterns(t,r,s){let a=em.pattern.matchAny(t,r);return!a&&s?em.pattern.matchAny(t+"/",r):a}};Z3.default=z3});var Cce=G($3=>{"use strict";Object.defineProperty($3,"__esModule",{value:!0});var vZe=Rp(),X3=class{constructor(t){this._settings=t}getFilter(){return t=>this._isNonFatalError(t)}_isNonFatalError(t){return vZe.errno.isEnoentCodeError(t)||this._settings.suppressErrors}};$3.default=X3});var Bce=G(t8=>{"use strict";Object.defineProperty(t8,"__esModule",{value:!0});var wce=Rp(),e8=class{constructor(t){this._settings=t}getTransformer(){return t=>this._transform(t)}_transform(t){let r=t.path;return this._settings.absolute&&(r=wce.path.makeAbsolute(this._settings.cwd,r),r=wce.path.unixify(r)),this._settings.markDirectories&&t.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},t),{path:r}):r}};t8.default=e8});var bQ=G(n8=>{"use strict";Object.defineProperty(n8,"__esModule",{value:!0});var SZe=Ce("path"),bZe=Ece(),DZe=Ice(),PZe=Cce(),xZe=Bce(),r8=class{constructor(t){this._settings=t,this.errorFilter=new PZe.default(this._settings),this.entryFilter=new DZe.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new bZe.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new xZe.default(this._settings)}_getRootDirectory(t){return SZe.resolve(this._settings.cwd,t.base)}_getReaderOptions(t){let r=t.base==="."?"":t.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,t.positive,t.negative),entryFilter:this.entryFilter.getFilter(t.positive,t.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};n8.default=r8});var vce=G(s8=>{"use strict";Object.defineProperty(s8,"__esModule",{value:!0});var kZe=gce(),QZe=bQ(),i8=class extends QZe.default{constructor(){super(...arguments),this._reader=new kZe.default(this._settings)}async read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t);return(await this.api(r,t,s)).map(n=>s.transform(n))}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};s8.default=i8});var Sce=G(a8=>{"use strict";Object.defineProperty(a8,"__esModule",{value:!0});var TZe=Ce("stream"),RZe=H3(),FZe=bQ(),o8=class extends FZe.default{constructor(){super(...arguments),this._reader=new RZe.default(this._settings)}read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t),a=this.api(r,t,s),n=new TZe.Readable({objectMode:!0,read:()=>{}});return a.once("error",c=>n.emit("error",c)).on("data",c=>n.emit("data",s.transform(c))).once("end",()=>n.emit("end")),n.once("close",()=>a.destroy()),n}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};a8.default=o8});var bce=G(c8=>{"use strict";Object.defineProperty(c8,"__esModule",{value:!0});var NZe=$0(),OZe=BQ(),LZe=vQ(),l8=class extends LZe.default{constructor(){super(...arguments),this._walkSync=OZe.walkSync,this._statSync=NZe.statSync}dynamic(t,r){return this._walkSync(t,r)}static(t,r){let s=[];for(let a of t){let n=this._getFullEntryPath(a),c=this._getEntry(n,a,r);c===null||!r.entryFilter(c)||s.push(c)}return s}_getEntry(t,r,s){try{let a=this._getStat(t);return this._makeEntry(a,r)}catch(a){if(s.errorFilter(a))return null;throw a}}_getStat(t){return this._statSync(t,this._fsStatSettings)}};c8.default=l8});var Dce=G(f8=>{"use strict";Object.defineProperty(f8,"__esModule",{value:!0});var MZe=bce(),UZe=bQ(),u8=class extends UZe.default{constructor(){super(...arguments),this._reader=new MZe.default(this._settings)}read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t);return this.api(r,t,s).map(s.transform)}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};f8.default=u8});var Pce=G(sI=>{"use strict";Object.defineProperty(sI,"__esModule",{value:!0});sI.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var iI=Ce("fs"),_Ze=Ce("os"),HZe=Math.max(_Ze.cpus().length,1);sI.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:iI.lstat,lstatSync:iI.lstatSync,stat:iI.stat,statSync:iI.statSync,readdir:iI.readdir,readdirSync:iI.readdirSync};var A8=class{constructor(t={}){this._options=t,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,HZe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(t,r){return t===void 0?r:t}_getFileSystemMethods(t={}){return Object.assign(Object.assign({},sI.DEFAULT_FILE_SYSTEM_ADAPTER),t)}};sI.default=A8});var DQ=G((jNt,kce)=>{"use strict";var xce=kle(),jZe=vce(),GZe=Sce(),qZe=Dce(),p8=Pce(),Fc=Rp();async function h8(e,t){Hu(e);let r=d8(e,jZe.default,t),s=await Promise.all(r);return Fc.array.flatten(s)}(function(e){e.glob=e,e.globSync=t,e.globStream=r,e.async=e;function t(h,E){Hu(h);let C=d8(h,qZe.default,E);return Fc.array.flatten(C)}e.sync=t;function r(h,E){Hu(h);let C=d8(h,GZe.default,E);return Fc.stream.merge(C)}e.stream=r;function s(h,E){Hu(h);let C=[].concat(h),S=new p8.default(E);return xce.generate(C,S)}e.generateTasks=s;function a(h,E){Hu(h);let C=new p8.default(E);return Fc.pattern.isDynamicPattern(h,C)}e.isDynamicPattern=a;function n(h){return Hu(h),Fc.path.escape(h)}e.escapePath=n;function c(h){return Hu(h),Fc.path.convertPathToPattern(h)}e.convertPathToPattern=c;let f;(function(h){function E(S){return Hu(S),Fc.path.escapePosixPath(S)}h.escapePath=E;function C(S){return Hu(S),Fc.path.convertPosixPathToPattern(S)}h.convertPathToPattern=C})(f=e.posix||(e.posix={}));let p;(function(h){function E(S){return Hu(S),Fc.path.escapeWindowsPath(S)}h.escapePath=E;function C(S){return Hu(S),Fc.path.convertWindowsPathToPattern(S)}h.convertPathToPattern=C})(p=e.win32||(e.win32={}))})(h8||(h8={}));function d8(e,t,r){let s=[].concat(e),a=new p8.default(r),n=xce.generate(s,a),c=new t(a);return n.map(c.read,c)}function Hu(e){if(![].concat(e).every(s=>Fc.string.isString(s)&&!Fc.string.isEmpty(s)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}kce.exports=h8});var Mn={};Vt(Mn,{checksumFile:()=>xQ,checksumPattern:()=>kQ,makeHash:()=>As});function As(...e){let t=(0,PQ.createHash)("sha512"),r="";for(let s of e)typeof s=="string"?r+=s:s&&(r&&(t.update(r),r=""),t.update(s));return r&&t.update(r),t.digest("hex")}async function xQ(e,{baseFs:t,algorithm:r}={baseFs:ae,algorithm:"sha512"}){let s=await t.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,PQ.createHash)(r),f=0;for(;(f=await t.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await t.closePromise(s)}}async function kQ(e,{cwd:t}){let s=(await(0,g8.default)(e,{cwd:Ae.fromPortablePath(t),onlyDirectories:!0})).map(f=>`${f}/**/*`),a=await(0,g8.default)([e,...s],{cwd:Ae.fromPortablePath(t),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async f=>{let p=[Buffer.from(f)],h=Y.join(t,Ae.toPortablePath(f)),E=await ae.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await ae.readlinkPromise(h))):E.isFile()&&p.push(await ae.readFilePromise(h)),p.join("\0")})),c=(0,PQ.createHash)("sha512");for(let f of n)c.update(f);return c.digest("hex")}var PQ,g8,wd=Ze(()=>{bt();PQ=Ce("crypto"),g8=et(DQ())});var H={};Vt(H,{allPeerRequests:()=>HB,areDescriptorsEqual:()=>Fce,areIdentsEqual:()=>OB,areLocatorsEqual:()=>LB,areVirtualPackagesEquivalent:()=>$Ze,bindDescriptor:()=>ZZe,bindLocator:()=>XZe,convertDescriptorToLocator:()=>QQ,convertLocatorToDescriptor:()=>I8,convertPackageToLocator:()=>KZe,convertToIdent:()=>VZe,convertToManifestRange:()=>cXe,copyPackage:()=>FB,devirtualizeDescriptor:()=>NB,devirtualizeLocator:()=>aI,ensureDevirtualizedDescriptor:()=>JZe,ensureDevirtualizedLocator:()=>zZe,getIdentVendorPath:()=>v8,isPackageCompatible:()=>OQ,isPackageInRange:()=>hXe,isVirtualDescriptor:()=>Fp,isVirtualLocator:()=>ju,makeDescriptor:()=>Un,makeIdent:()=>Qa,makeLocator:()=>Js,makeRange:()=>FQ,parseDescriptor:()=>Bd,parseFileStyleRange:()=>aXe,parseIdent:()=>ka,parseLocator:()=>Np,parseRange:()=>tm,prettyDependent:()=>K4,prettyDescriptor:()=>ai,prettyIdent:()=>$i,prettyLocator:()=>Vr,prettyLocatorNoColors:()=>V4,prettyRange:()=>cI,prettyReference:()=>UB,prettyResolution:()=>QB,prettyWorkspace:()=>_B,renamePackage:()=>C8,slugifyIdent:()=>y8,slugifyLocator:()=>lI,sortDescriptors:()=>uI,stringifyDescriptor:()=>gl,stringifyIdent:()=>fn,stringifyLocator:()=>ml,tryParseDescriptor:()=>MB,tryParseIdent:()=>Nce,tryParseLocator:()=>RQ,tryParseRange:()=>oXe,unwrapIdentFromScope:()=>fXe,virtualizeDescriptor:()=>w8,virtualizePackage:()=>B8,wrapIdentIntoScope:()=>uXe});function Qa(e,t){if(e?.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:As(e,t),scope:e,name:t}}function Un(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,descriptorHash:As(e.identHash,t),range:t}}function Js(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:As(e.identHash,t),reference:t}}function VZe(e){return{identHash:e.identHash,scope:e.scope,name:e.name}}function QQ(e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.descriptorHash,reference:e.range}}function I8(e){return{identHash:e.identHash,scope:e.scope,name:e.name,descriptorHash:e.locatorHash,range:e.reference}}function KZe(e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference}}function C8(e,t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference,version:e.version,languageName:e.languageName,linkType:e.linkType,conditions:e.conditions,dependencies:new Map(e.dependencies),peerDependencies:new Map(e.peerDependencies),dependenciesMeta:new Map(e.dependenciesMeta),peerDependenciesMeta:new Map(e.peerDependenciesMeta),bin:new Map(e.bin)}}function FB(e){return C8(e,e)}function w8(e,t){if(t.includes("#"))throw new Error("Invalid entropy");return Un(e,`virtual:${t}#${e.range}`)}function B8(e,t){if(t.includes("#"))throw new Error("Invalid entropy");return C8(e,Js(e,`virtual:${t}#${e.reference}`))}function Fp(e){return e.range.startsWith(RB)}function ju(e){return e.reference.startsWith(RB)}function NB(e){if(!Fp(e))throw new Error("Not a virtual descriptor");return Un(e,e.range.replace(TQ,""))}function aI(e){if(!ju(e))throw new Error("Not a virtual descriptor");return Js(e,e.reference.replace(TQ,""))}function JZe(e){return Fp(e)?Un(e,e.range.replace(TQ,"")):e}function zZe(e){return ju(e)?Js(e,e.reference.replace(TQ,"")):e}function ZZe(e,t){return e.range.includes("::")?e:Un(e,`${e.range}::${oI.default.stringify(t)}`)}function XZe(e,t){return e.reference.includes("::")?e:Js(e,`${e.reference}::${oI.default.stringify(t)}`)}function OB(e,t){return e.identHash===t.identHash}function Fce(e,t){return e.descriptorHash===t.descriptorHash}function LB(e,t){return e.locatorHash===t.locatorHash}function $Ze(e,t){if(!ju(e))throw new Error("Invalid package type");if(!ju(t))throw new Error("Invalid package type");if(!OB(e,t)||e.dependencies.size!==t.dependencies.size)return!1;for(let r of e.dependencies.values()){let s=t.dependencies.get(r.identHash);if(!s||!Fce(r,s))return!1}return!0}function ka(e){let t=Nce(e);if(!t)throw new Error(`Invalid ident (${e})`);return t}function Nce(e){let t=e.match(eXe);if(!t)return null;let[,r,s]=t;return Qa(typeof r<"u"?r:null,s)}function Bd(e,t=!1){let r=MB(e,t);if(!r)throw new Error(`Invalid descriptor (${e})`);return r}function MB(e,t=!1){let r=t?e.match(tXe):e.match(rXe);if(!r)return null;let[,s,a,n]=r;if(n===m8)throw new Error(`Invalid range (${e})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:m8;return Un(Qa(c,a),f)}function Np(e,t=!1){let r=RQ(e,t);if(!r)throw new Error(`Invalid locator (${e})`);return r}function RQ(e,t=!1){let r=t?e.match(nXe):e.match(iXe);if(!r)return null;let[,s,a,n]=r;if(n==="unknown")throw new Error(`Invalid reference (${e})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:"unknown";return Js(Qa(c,a),f)}function tm(e,t){let r=e.match(sXe);if(r===null)throw new Error(`Invalid range (${e})`);let s=typeof r[1]<"u"?r[1]:null;if(typeof t?.requireProtocol=="string"&&s!==t.requireProtocol)throw new Error(`Invalid protocol (${s})`);if(t?.requireProtocol&&s===null)throw new Error(`Missing protocol (${s})`);let a=typeof r[3]<"u"?decodeURIComponent(r[2]):null;if(t?.requireSource&&a===null)throw new Error(`Missing source (${e})`);let n=typeof r[3]<"u"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),c=t?.parseSelector?oI.default.parse(n):n,f=typeof r[4]<"u"?oI.default.parse(r[4]):null;return{protocol:s,source:a,selector:c,params:f}}function oXe(e,t){try{return tm(e,t)}catch{return null}}function aXe(e,{protocol:t}){let{selector:r,params:s}=tm(e,{requireProtocol:t,requireBindings:!0});if(typeof s.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${e}`);return{parentLocator:Np(s.locator,!0),path:r}}function Qce(e){return e=e.replaceAll("%","%25"),e=e.replaceAll(":","%3A"),e=e.replaceAll("#","%23"),e}function lXe(e){return e===null?!1:Object.entries(e).length>0}function FQ({protocol:e,source:t,selector:r,params:s}){let a="";return e!==null&&(a+=`${e}`),t!==null&&(a+=`${Qce(t)}#`),a+=Qce(r),lXe(s)&&(a+=`::${oI.default.stringify(s)}`),a}function cXe(e){let{params:t,protocol:r,source:s,selector:a}=tm(e);for(let n in t)n.startsWith("__")&&delete t[n];return FQ({protocol:r,source:s,params:t,selector:a})}function fn(e){return e.scope?`@${e.scope}/${e.name}`:`${e.name}`}function uXe(e,t){return e.scope?Qa(t,`${e.scope}__${e.name}`):Qa(t,e.name)}function fXe(e,t){if(e.scope!==t)return e;let r=e.name.indexOf("__");if(r===-1)return Qa(null,e.name);let s=e.name.slice(0,r),a=e.name.slice(r+2);return Qa(s,a)}function gl(e){return e.scope?`@${e.scope}/${e.name}@${e.range}`:`${e.name}@${e.range}`}function ml(e){return e.scope?`@${e.scope}/${e.name}@${e.reference}`:`${e.name}@${e.reference}`}function y8(e){return e.scope!==null?`@${e.scope}-${e.name}`:e.name}function lI(e){let{protocol:t,selector:r}=tm(e.reference),s=t!==null?t.replace(AXe,""):"exotic",a=E8.default.valid(r),n=a!==null?`${s}-${a}`:`${s}`,c=10;return e.scope?`${y8(e)}-${n}-${e.locatorHash.slice(0,c)}`:`${y8(e)}-${n}-${e.locatorHash.slice(0,c)}`}function $i(e,t){return t.scope?`${Gt(e,`@${t.scope}/`,dt.SCOPE)}${Gt(e,t.name,dt.NAME)}`:`${Gt(e,t.name,dt.NAME)}`}function NQ(e){if(e.startsWith(RB)){let t=NQ(e.substring(e.indexOf("#")+1)),r=e.substring(RB.length,RB.length+YZe);return`${t} [${r}]`}else return e.replace(pXe,"?[...]")}function cI(e,t){return`${Gt(e,NQ(t),dt.RANGE)}`}function ai(e,t){return`${$i(e,t)}${Gt(e,"@",dt.RANGE)}${cI(e,t.range)}`}function UB(e,t){return`${Gt(e,NQ(t),dt.REFERENCE)}`}function Vr(e,t){return`${$i(e,t)}${Gt(e,"@",dt.REFERENCE)}${UB(e,t.reference)}`}function V4(e){return`${fn(e)}@${NQ(e.reference)}`}function uI(e){return Ks(e,[t=>fn(t),t=>t.range])}function _B(e,t){return $i(e,t.anchoredLocator)}function QB(e,t,r){let s=Fp(t)?NB(t):t;return r===null?`${ai(e,s)} \u2192 ${W4(e).Cross}`:s.identHash===r.identHash?`${ai(e,s)} \u2192 ${UB(e,r.reference)}`:`${ai(e,s)} \u2192 ${Vr(e,r)}`}function K4(e,t,r){return r===null?`${Vr(e,t)}`:`${Vr(e,t)} (via ${cI(e,r.range)})`}function v8(e){return`node_modules/${fn(e)}`}function hXe(e,t){return t===m8||!e.version?!0:E8.default.satisfies(e.version??"",t)}function OQ(e,t){return e.conditions?WZe(e.conditions,r=>{let[,s,a]=r.match(Rce),n=t[s];return n?n.includes(a):!0}):!0}function HB(e){let t=new Set;if("children"in e)t.add(e);else for(let r of e.requests.values())t.add(r);for(let r of t)for(let s of r.children.values())t.add(s);return t}var oI,E8,Tce,RB,YZe,Rce,WZe,TQ,eXe,tXe,rXe,m8,nXe,iXe,sXe,AXe,pXe,$o=Ze(()=>{oI=et(Ce("querystring")),E8=et(hi()),Tce=et(tse());Tc();wd();Qc();$o();RB="virtual:",YZe=5,Rce=/(os|cpu|libc)=([a-z0-9_-]+)/,WZe=(0,Tce.makeParser)(Rce);TQ=/^[^#]*#/;eXe=/^(?:@([^/]+?)\/)?([^@/]+)$/;tXe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,rXe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/,m8="unknown";nXe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,iXe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;sXe=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;AXe=/:$/;pXe=/\?.*/});var Oce,Lce=Ze(()=>{$o();Oce={hooks:{reduceDependency:(e,t,r,s,{resolver:a,resolveOptions:n})=>{for(let{pattern:c,reference:f}of t.topLevelWorkspace.manifest.resolutions){if(c.from&&(c.from.fullName!==fn(r)||t.configuration.normalizeLocator(Js(ka(c.from.fullName),c.from.description??r.reference)).locatorHash!==r.locatorHash)||c.descriptor.fullName!==fn(e)||t.configuration.normalizeDependency(Un(Np(c.descriptor.fullName),c.descriptor.description??e.range)).descriptorHash!==e.descriptorHash)continue;return a.bindDescriptor(t.configuration.normalizeDependency(Un(e,f)),t.topLevelWorkspace.anchoredLocator,n)}return e},validateProject:async(e,t)=>{for(let r of e.workspaces){let s=_B(e.configuration,r);await e.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>t.reportWarning(a,`${s}: ${n}`),reportError:(a,n)=>t.reportError(a,`${s}: ${n}`)})}},validateWorkspace:async(e,t)=>{let{manifest:r}=e;r.resolutions.length&&e.cwd!==e.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let s of r.errors)t.reportWarning(57,s.message)}}}});var Ii,rm=Ze(()=>{Ii=class e{static{this.protocol="workspace:"}supportsDescriptor(t,r){return!!(t.range.startsWith(e.protocol)||r.project.tryWorkspaceByDescriptor(t)!==null)}supportsLocator(t,r){return!!t.reference.startsWith(e.protocol)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){return[s.project.getWorkspaceByDescriptor(t).anchoredLocator]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let s=r.project.getWorkspaceByCwd(t.reference.slice(e.protocol.length));return{...t,version:s.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...s.manifest.dependencies,...s.manifest.devDependencies])),peerDependencies:new Map([...s.manifest.peerDependencies]),dependenciesMeta:s.manifest.dependenciesMeta,peerDependenciesMeta:s.manifest.peerDependenciesMeta,bin:s.manifest.bin}}}});var kr={};Vt(kr,{SemVer:()=>jce.SemVer,clean:()=>gXe,getComparator:()=>_ce,mergeComparators:()=>S8,satisfiesWithPrereleases:()=>rA,simplifyRanges:()=>b8,stringifyComparator:()=>Hce,validRange:()=>yl});function rA(e,t,r=!1){if(!e)return!1;let s=`${t}${r}`,a=Mce.get(s);if(typeof a>"u")try{a=new Op.default.Range(t,{includePrerelease:!0,loose:r})}catch{return!1}finally{Mce.set(s,a||null)}else if(a===null)return!1;let n;try{n=new Op.default.SemVer(e,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(c=>{for(let f of c)f.semver.prerelease&&(f.semver.prerelease=[]);return c.every(f=>f.test(n))}))}function yl(e){if(e.indexOf(":")!==-1)return null;let t=Uce.get(e);if(typeof t<"u")return t;try{t=new Op.default.Range(e)}catch{t=null}return Uce.set(e,t),t}function gXe(e){let t=dXe.exec(e);return t?t[1]:null}function _ce(e){if(e.semver===Op.default.Comparator.ANY)return{gt:null,lt:null};switch(e.operator){case"":return{gt:[">=",e.semver],lt:["<=",e.semver]};case">":case">=":return{gt:[e.operator,e.semver],lt:null};case"<":case"<=":return{gt:null,lt:[e.operator,e.semver]};default:throw new Error(`Assertion failed: Unexpected comparator operator (${e.operator})`)}}function S8(e){if(e.length===0)return null;let t=null,r=null;for(let s of e){if(s.gt){let a=t!==null?Op.default.compare(s.gt[1],t[1]):null;(a===null||a>0||a===0&&s.gt[0]===">")&&(t=s.gt)}if(s.lt){let a=r!==null?Op.default.compare(s.lt[1],r[1]):null;(a===null||a<0||a===0&&s.lt[0]==="<")&&(r=s.lt)}}if(t&&r){let s=Op.default.compare(t[1],r[1]);if(s===0&&(t[0]===">"||r[0]==="<")||s>0)return null}return{gt:t,lt:r}}function Hce(e){if(e.gt&&e.lt){if(e.gt[0]===">="&&e.lt[0]==="<="&&e.gt[1].version===e.lt[1].version)return e.gt[1].version;if(e.gt[0]===">="&&e.lt[0]==="<"){if(e.lt[1].version===`${e.gt[1].major+1}.0.0-0`)return`^${e.gt[1].version}`;if(e.lt[1].version===`${e.gt[1].major}.${e.gt[1].minor+1}.0-0`)return`~${e.gt[1].version}`}}let t=[];return e.gt&&t.push(e.gt[0]+e.gt[1].version),e.lt&&t.push(e.lt[0]+e.lt[1].version),t.length?t.join(" "):"*"}function b8(e){let t=e.map(mXe).map(s=>yl(s).set.map(a=>a.map(n=>_ce(n)))),r=t.shift().map(s=>S8(s)).filter(s=>s!==null);for(let s of t){let a=[];for(let n of r)for(let c of s){let f=S8([n,...c]);f!==null&&a.push(f)}r=a}return r.length===0?null:r.map(s=>Hce(s)).join(" || ")}function mXe(e){let t=e.split("||");if(t.length>1){let r=new Set;for(let s of t)t.some(a=>a!==s&&Op.default.subset(s,a))||r.add(s);if(r.size{Op=et(hi()),jce=et(hi()),Mce=new Map;Uce=new Map;dXe=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/});function Gce(e){let t=e.match(/^[ \t]+/m);return t?t[0]:" "}function qce(e){return e.charCodeAt(0)===65279?e.slice(1):e}function Ta(e){return e.replace(/\\/g,"/")}function LQ(e,{yamlCompatibilityMode:t}){return t?U4(e):typeof e>"u"||typeof e=="boolean"?e:null}function Yce(e,t){let r=t.search(/[^!]/);if(r===-1)return"invalid";let s=r%2===0?"":"!",a=t.slice(r);return`${s}${e}=${a}`}function D8(e,t){return t.length===1?Yce(e,t[0]):`(${t.map(r=>Yce(e,r)).join(" | ")})`}var Wce,_t,fI=Ze(()=>{bt();Sc();Wce=et(hi());rm();Qc();Lp();$o();_t=class e{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static{this.fileName="package.json"}static{this.allDependencies=["dependencies","devDependencies","peerDependencies"]}static{this.hardDependencies=["dependencies","devDependencies"]}static async tryFind(t,{baseFs:r=new Kn}={}){let s=Y.join(t,"package.json");try{return await e.fromFile(s,{baseFs:r})}catch(a){if(a.code==="ENOENT")return null;throw a}}static async find(t,{baseFs:r}={}){let s=await e.tryFind(t,{baseFs:r});if(s===null)throw new Error("Manifest not found");return s}static async fromFile(t,{baseFs:r=new Kn}={}){let s=new e;return await s.loadFile(t,{baseFs:r}),s}static fromText(t){let r=new e;return r.loadFromText(t),r}loadFromText(t){let r;try{r=JSON.parse(qce(t)||"{}")}catch(s){throw s.message+=` (when parsing ${t})`,s}this.load(r),this.indent=Gce(t)}async loadFile(t,{baseFs:r=new Kn}){let s=await r.readFilePromise(t,"utf8"),a;try{a=JSON.parse(qce(s)||"{}")}catch(n){throw n.message+=` (when parsing ${t})`,n}this.load(a),this.indent=Gce(s)}load(t,{yamlCompatibilityMode:r=!1}={}){if(typeof t!="object"||t===null)throw new Error(`Utterly invalid manifest data (${t})`);this.raw=t;let s=[];if(this.name=null,typeof t.name=="string")try{this.name=ka(t.name)}catch{s.push(new Error("Parsing failed for the 'name' field"))}if(typeof t.version=="string"?this.version=t.version:this.version=null,Array.isArray(t.os)){let n=[];this.os=n;for(let c of t.os)typeof c!="string"?s.push(new Error("Parsing failed for the 'os' field")):n.push(c)}else this.os=null;if(Array.isArray(t.cpu)){let n=[];this.cpu=n;for(let c of t.cpu)typeof c!="string"?s.push(new Error("Parsing failed for the 'cpu' field")):n.push(c)}else this.cpu=null;if(Array.isArray(t.libc)){let n=[];this.libc=n;for(let c of t.libc)typeof c!="string"?s.push(new Error("Parsing failed for the 'libc' field")):n.push(c)}else this.libc=null;if(typeof t.type=="string"?this.type=t.type:this.type=null,typeof t.packageManager=="string"?this.packageManager=t.packageManager:this.packageManager=null,typeof t.private=="boolean"?this.private=t.private:this.private=!1,typeof t.license=="string"?this.license=t.license:this.license=null,typeof t.languageName=="string"?this.languageName=t.languageName:this.languageName=null,typeof t.main=="string"?this.main=Ta(t.main):this.main=null,typeof t.module=="string"?this.module=Ta(t.module):this.module=null,t.browser!=null)if(typeof t.browser=="string")this.browser=Ta(t.browser);else{this.browser=new Map;for(let[n,c]of Object.entries(t.browser))this.browser.set(Ta(n),typeof c=="string"?Ta(c):c)}else this.browser=null;if(this.bin=new Map,typeof t.bin=="string")t.bin.trim()===""?s.push(new Error("Invalid bin field")):this.name!==null?this.bin.set(this.name.name,Ta(t.bin)):s.push(new Error("String bin field, but no attached package name"));else if(typeof t.bin=="object"&&t.bin!==null)for(let[n,c]of Object.entries(t.bin)){if(typeof c!="string"||c.trim()===""){s.push(new Error(`Invalid bin definition for '${n}'`));continue}let f=ka(n);this.bin.set(f.name,Ta(c))}if(this.scripts=new Map,typeof t.scripts=="object"&&t.scripts!==null)for(let[n,c]of Object.entries(t.scripts)){if(typeof c!="string"){s.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,c)}if(this.dependencies=new Map,typeof t.dependencies=="object"&&t.dependencies!==null)for(let[n,c]of Object.entries(t.dependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=ka(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Un(f,c);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof t.devDependencies=="object"&&t.devDependencies!==null)for(let[n,c]of Object.entries(t.devDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=ka(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Un(f,c);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof t.peerDependencies=="object"&&t.peerDependencies!==null)for(let[n,c]of Object.entries(t.peerDependencies)){let f;try{f=ka(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof c!="string"||!c.startsWith(Ii.protocol)&&!yl(c))&&(s.push(new Error(`Invalid dependency range for '${n}'`)),c="*");let p=Un(f,c);this.peerDependencies.set(p.identHash,p)}typeof t.workspaces=="object"&&t.workspaces!==null&&t.workspaces.nohoist&&s.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let a=Array.isArray(t.workspaces)?t.workspaces:typeof t.workspaces=="object"&&t.workspaces!==null&&Array.isArray(t.workspaces.packages)?t.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!="string"){s.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof t.dependenciesMeta=="object"&&t.dependenciesMeta!==null)for(let[n,c]of Object.entries(t.dependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}`));continue}let f=Bd(n),p=this.ensureDependencyMeta(f),h=LQ(c.built,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=LQ(c.optional,{yamlCompatibilityMode:r});if(E===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}let C=LQ(c.unplugged,{yamlCompatibilityMode:r});if(C===null){s.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:C})}if(this.peerDependenciesMeta=new Map,typeof t.peerDependenciesMeta=="object"&&t.peerDependenciesMeta!==null)for(let[n,c]of Object.entries(t.peerDependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}'`));continue}let f=Bd(n),p=this.ensurePeerDependencyMeta(f),h=LQ(c.optional,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof t.resolutions=="object"&&t.resolutions!==null)for(let[n,c]of Object.entries(t.resolutions)){if(typeof c!="string"){s.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:Ex(n),reference:c})}catch(f){s.push(f);continue}}if(Array.isArray(t.files)){this.files=new Set;for(let n of t.files){if(typeof n!="string"){s.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof t.publishConfig=="object"&&t.publishConfig!==null){if(this.publishConfig={},typeof t.publishConfig.access=="string"&&(this.publishConfig.access=t.publishConfig.access),typeof t.publishConfig.main=="string"&&(this.publishConfig.main=Ta(t.publishConfig.main)),typeof t.publishConfig.module=="string"&&(this.publishConfig.module=Ta(t.publishConfig.module)),t.publishConfig.browser!=null)if(typeof t.publishConfig.browser=="string")this.publishConfig.browser=Ta(t.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,c]of Object.entries(t.publishConfig.browser))this.publishConfig.browser.set(Ta(n),typeof c=="string"?Ta(c):c)}if(typeof t.publishConfig.registry=="string"&&(this.publishConfig.registry=t.publishConfig.registry),typeof t.publishConfig.provenance=="boolean"&&(this.publishConfig.provenance=t.publishConfig.provenance),typeof t.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,Ta(t.publishConfig.bin)]]):s.push(new Error("String bin field, but no attached package name"));else if(typeof t.publishConfig.bin=="object"&&t.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,c]of Object.entries(t.publishConfig.bin)){if(typeof c!="string"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,Ta(c))}}if(Array.isArray(t.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of t.publishConfig.executableFiles){if(typeof n!="string"){s.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(Ta(n))}}}else this.publishConfig=null;if(typeof t.installConfig=="object"&&t.installConfig!==null){this.installConfig={};for(let n of Object.keys(t.installConfig))n==="hoistingLimits"?typeof t.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=t.installConfig.hoistingLimits:s.push(new Error("Invalid hoisting limits definition")):n=="selfReferences"?typeof t.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=t.installConfig.selfReferences:s.push(new Error("Invalid selfReferences definition, must be a boolean value")):s.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof t.optionalDependencies=="object"&&t.optionalDependencies!==null)for(let[n,c]of Object.entries(t.optionalDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=ka(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Un(f,c);this.dependencies.set(p.identHash,p);let h=Un(f,"unknown"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof t.preferUnplugged=="boolean"?this.preferUnplugged=t.preferUnplugged:this.preferUnplugged=null,this.errors=s}getForScope(t){switch(t){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${t}")`)}}hasConsumerDependency(t){return!!(this.dependencies.has(t.identHash)||this.peerDependencies.has(t.identHash))}hasHardDependency(t){return!!(this.dependencies.has(t.identHash)||this.devDependencies.has(t.identHash))}hasSoftDependency(t){return!!this.peerDependencies.has(t.identHash)}hasDependency(t){return!!(this.hasHardDependency(t)||this.hasSoftDependency(t))}getConditions(){let t=[];return this.os&&this.os.length>0&&t.push(D8("os",this.os)),this.cpu&&this.cpu.length>0&&t.push(D8("cpu",this.cpu)),this.libc&&this.libc.length>0&&t.push(D8("libc",this.libc)),t.length>0?t.join(" & "):null}ensureDependencyMeta(t){if(t.range!=="unknown"&&!Wce.default.valid(t.range))throw new Error(`Invalid meta field range for '${gl(t)}'`);let r=fn(t),s=t.range!=="unknown"?t.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(s);return n||a.set(s,n={}),n}ensurePeerDependencyMeta(t){if(t.range!=="unknown")throw new Error(`Invalid meta field range for '${gl(t)}'`);let r=fn(t),s=this.peerDependenciesMeta.get(r);return s||this.peerDependenciesMeta.set(r,s={}),s}setRawField(t,r,{after:s=[]}={}){let a=new Set(s.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,t))this.raw[t]=r;else{let n=this.raw,c=this.raw={},f=!1;for(let p of Object.keys(n))c[p]=n[p],f||(a.delete(p),a.size===0&&(c[t]=r,f=!0))}}exportTo(t,{compatibilityMode:r=!0}={}){if(Object.assign(t,this.raw),this.name!==null?t.name=fn(this.name):delete t.name,this.version!==null?t.version=this.version:delete t.version,this.os!==null?t.os=this.os:delete t.os,this.cpu!==null?t.cpu=this.cpu:delete t.cpu,this.type!==null?t.type=this.type:delete t.type,this.packageManager!==null?t.packageManager=this.packageManager:delete t.packageManager,this.private?t.private=!0:delete t.private,this.license!==null?t.license=this.license:delete t.license,this.languageName!==null?t.languageName=this.languageName:delete t.languageName,this.main!==null?t.main=this.main:delete t.main,this.module!==null?t.module=this.module:delete t.module,this.browser!==null){let n=this.browser;typeof n=="string"?t.browser=n:n instanceof Map&&(t.browser=Object.assign({},...Array.from(n.keys()).sort().map(c=>({[c]:n.get(c)}))))}else delete t.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?t.bin=this.bin.get(this.name.name):this.bin.size>0?t.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete t.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?t.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:t.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?t.workspaces=this.raw.workspaces:delete t.workspaces;let s=[],a=[];for(let n of this.dependencies.values()){let c=this.dependenciesMeta.get(fn(n)),f=!1;if(r&&c){let p=c.get(null);p&&p.optional&&(f=!0)}f?a.push(n):s.push(n)}s.length>0?t.dependencies=Object.assign({},...uI(s).map(n=>({[fn(n)]:n.range}))):delete t.dependencies,a.length>0?t.optionalDependencies=Object.assign({},...uI(a).map(n=>({[fn(n)]:n.range}))):delete t.optionalDependencies,this.devDependencies.size>0?t.devDependencies=Object.assign({},...uI(this.devDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete t.devDependencies,this.peerDependencies.size>0?t.peerDependencies=Object.assign({},...uI(this.peerDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete t.peerDependencies,t.dependenciesMeta={};for(let[n,c]of Ks(this.dependenciesMeta.entries(),([f,p])=>f))for(let[f,p]of Ks(c.entries(),([h,E])=>h!==null?`0${h}`:"1")){let h=f!==null?gl(Un(ka(n),f)):n,E={...p};r&&f===null&&delete E.optional,Object.keys(E).length!==0&&(t.dependenciesMeta[h]=E)}if(Object.keys(t.dependenciesMeta).length===0&&delete t.dependenciesMeta,this.peerDependenciesMeta.size>0?t.peerDependenciesMeta=Object.assign({},...Ks(this.peerDependenciesMeta.entries(),([n,c])=>n).map(([n,c])=>({[n]:c}))):delete t.peerDependenciesMeta,this.resolutions.length>0?t.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:c})=>({[Ix(n)]:c}))):delete t.resolutions,this.files!==null?t.files=Array.from(this.files):delete t.files,this.preferUnplugged!==null?t.preferUnplugged=this.preferUnplugged:delete t.preferUnplugged,this.scripts!==null&&this.scripts.size>0){t.scripts??={};for(let n of Object.keys(t.scripts))this.scripts.has(n)||delete t.scripts[n];for(let[n,c]of this.scripts.entries())t.scripts[n]=c}else delete t.scripts;return t}}});function EXe(e){return typeof e.reportCode<"u"}var Vce,Kce,yXe,Lt,Io,Nc=Ze(()=>{Zl();Vce=Ce("stream"),Kce=Ce("string_decoder"),yXe=15,Lt=class extends Error{constructor(r,s,a){super(s);this.reportExtra=a;this.reportCode=r}};Io=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(t){this.cacheHits.add(t.locatorHash)}reportCacheMiss(t,r){this.cacheMisses.add(t.locatorHash)}static progressViaCounter(t){let r=0,s,a=new Promise(p=>{s=p}),n=p=>{let h=s;a=new Promise(E=>{s=E}),r=p,h()},c=(p=0)=>{n(r+1)},f=async function*(){for(;r{r=c}),a=v4(c=>{let f=r;s=new Promise(p=>{r=p}),t=c,f()},1e3/yXe),n=async function*(){for(;;)await s,yield{title:t}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(t,r){let s=this.reportProgress(t);try{return await r(t)}finally{s.stop()}}startProgressSync(t,r){let s=this.reportProgress(t);try{return r(t)}finally{s.stop()}}reportInfoOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(t,r),s?.reportExtra?.(this))}reportWarningOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(t,r),s?.reportExtra?.(this))}reportErrorOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(t,r),s?.reportExtra?.(this))}reportExceptionOnce(t){EXe(t)?this.reportErrorOnce(t.reportCode,t.message,{key:t,reportExtra:t.reportExtra}):this.reportErrorOnce(1,t.stack||t.message,{key:t})}createStreamReporter(t=null){let r=new Vce.PassThrough,s=new Kce.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` +`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",t!==null?this.reportInfo(null,`${t} ${p}`):this.reportInfo(null,p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&(t!==null?this.reportInfo(null,`${t} ${n}`):this.reportInfo(null,n))}),r}}});var AI,P8=Ze(()=>{Nc();$o();AI=class{constructor(t){this.fetchers=t}supports(t,r){return!!this.tryFetcher(t,r)}getLocalPath(t,r){return this.getFetcher(t,r).getLocalPath(t,r)}async fetch(t,r){return await this.getFetcher(t,r).fetch(t,r)}tryFetcher(t,r){let s=this.fetchers.find(a=>a.supports(t,r));return s||null}getFetcher(t,r){let s=this.fetchers.find(a=>a.supports(t,r));if(!s)throw new Lt(11,`${Vr(r.project.configuration,t)} isn't supported by any available fetcher`);return s}}});var nm,x8=Ze(()=>{$o();nm=class{constructor(t){this.resolvers=t.filter(r=>r)}supportsDescriptor(t,r){return!!this.tryResolverByDescriptor(t,r)}supportsLocator(t,r){return!!this.tryResolverByLocator(t,r)}shouldPersistResolution(t,r){return this.getResolverByLocator(t,r).shouldPersistResolution(t,r)}bindDescriptor(t,r,s){return this.getResolverByDescriptor(t,s).bindDescriptor(t,r,s)}getResolutionDependencies(t,r){return this.getResolverByDescriptor(t,r).getResolutionDependencies(t,r)}async getCandidates(t,r,s){return await this.getResolverByDescriptor(t,s).getCandidates(t,r,s)}async getSatisfying(t,r,s,a){return this.getResolverByDescriptor(t,a).getSatisfying(t,r,s,a)}async resolve(t,r){return await this.getResolverByLocator(t,r).resolve(t,r)}tryResolverByDescriptor(t,r){let s=this.resolvers.find(a=>a.supportsDescriptor(t,r));return s||null}getResolverByDescriptor(t,r){let s=this.resolvers.find(a=>a.supportsDescriptor(t,r));if(!s)throw new Error(`${ai(r.project.configuration,t)} isn't supported by any available resolver`);return s}tryResolverByLocator(t,r){let s=this.resolvers.find(a=>a.supportsLocator(t,r));return s||null}getResolverByLocator(t,r){let s=this.resolvers.find(a=>a.supportsLocator(t,r));if(!s)throw new Error(`${Vr(r.project.configuration,t)} isn't supported by any available resolver`);return s}}});var pI,k8=Ze(()=>{bt();$o();pI=class{supports(t){return!!t.reference.startsWith("virtual:")}getLocalPath(t,r){let s=t.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=t.reference.slice(s+1),n=Js(t,a);return r.fetcher.getLocalPath(n,r)}async fetch(t,r){let s=t.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=t.reference.slice(s+1),n=Js(t,a),c=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(t,c,r)}getLocatorFilename(t){return lI(t)}async ensureVirtualLink(t,r,s){let a=r.packageFs.getRealPath(),n=s.project.configuration.get("virtualFolder"),c=this.getLocatorFilename(t),f=Eo.makeVirtualPath(n,c,a),p=new Gf(f,{baseFs:r.packageFs,pathUtils:Y});return{...r,packageFs:p}}}});var MQ,Jce=Ze(()=>{MQ=class e{static{this.protocol="virtual:"}static isVirtualDescriptor(t){return!!t.range.startsWith(e.protocol)}static isVirtualLocator(t){return!!t.reference.startsWith(e.protocol)}supportsDescriptor(t,r){return e.isVirtualDescriptor(t)}supportsLocator(t,r){return e.isVirtualLocator(t)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(t,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(t,r,s){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(t,r,s,a){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(t,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}}});var hI,Q8=Ze(()=>{bt();rm();hI=class{supports(t){return!!t.reference.startsWith(Ii.protocol)}getLocalPath(t,r){return this.getWorkspace(t,r).cwd}async fetch(t,r){let s=this.getWorkspace(t,r).cwd;return{packageFs:new Pn(s),prefixPath:wt.dot,localPath:s}}getWorkspace(t,r){return r.project.getWorkspaceByCwd(t.reference.slice(Ii.protocol.length))}}});function jB(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function zce(e){return typeof e>"u"?3:jB(e)?0:Array.isArray(e)?1:2}function F8(e,t){return Object.hasOwn(e,t)}function CXe(e){return jB(e)&&F8(e,"onConflict")&&typeof e.onConflict=="string"}function wXe(e){if(typeof e>"u")return{onConflict:"default",value:e};if(!CXe(e))return{onConflict:"default",value:e};if(F8(e,"value"))return e;let{onConflict:t,...r}=e;return{onConflict:t,value:r}}function Zce(e,t){let r=jB(e)&&F8(e,t)?e[t]:void 0;return wXe(r)}function dI(e,t){return[e,t,Xce]}function N8(e){return Array.isArray(e)?e[2]===Xce:!1}function T8(e,t){if(jB(e)){let r={};for(let s of Object.keys(e))r[s]=T8(e[s],t);return dI(t,r)}return Array.isArray(e)?dI(t,e.map(r=>T8(r,t))):dI(t,e)}function R8(e,t,r,s,a){let n,c=[],f=a,p=0;for(let E=a-1;E>=s;--E){let[C,S]=e[E],{onConflict:x,value:I}=Zce(S,r),R=zce(I);if(R!==3){if(n??=R,R!==n||x==="hardReset"){p=f;break}if(R===2)return dI(C,I);if(c.unshift([C,I]),x==="reset"){p=E;break}x==="extend"&&E===s&&(s=0),f=E}}if(typeof n>"u")return null;let h=c.map(([E])=>E).join(", ");switch(n){case 1:return dI(h,new Array().concat(...c.map(([E,C])=>C.map(S=>T8(S,E)))));case 0:{let E=Object.assign({},...c.map(([,R])=>R)),C=Object.keys(E),S={},x=e.map(([R,N])=>[R,Zce(N,r).value]),I=IXe(x,([R,N])=>{let U=zce(N);return U!==0&&U!==3});if(I!==-1){let R=x.slice(I+1);for(let N of C)S[N]=R8(R,t,N,0,R.length)}else for(let R of C)S[R]=R8(x,t,R,p,x.length);return dI(h,S)}default:throw new Error("Assertion failed: Non-extendable value type")}}function $ce(e){return R8(e.map(([t,r])=>[t,{".":r}]),[],".",0,e.length)}function GB(e){return N8(e)?e[1]:e}function UQ(e){let t=N8(e)?e[1]:e;if(Array.isArray(t))return t.map(r=>UQ(r));if(jB(t)){let r={};for(let[s,a]of Object.entries(t))r[s]=UQ(a);return r}return t}function O8(e){return N8(e)?e[0]:null}var IXe,Xce,eue=Ze(()=>{IXe=(e,t,r)=>{let s=[...e];return s.reverse(),s.findIndex(t,r)};Xce=Symbol()});var _Q={};Vt(_Q,{getDefaultGlobalFolder:()=>M8,getHomeFolder:()=>gI,isFolderInside:()=>U8});function M8(){if(process.platform==="win32"){let e=Ae.toPortablePath(process.env.LOCALAPPDATA||Ae.join((0,L8.homedir)(),"AppData","Local"));return Y.resolve(e,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let e=Ae.toPortablePath(process.env.XDG_DATA_HOME);return Y.resolve(e,"yarn/berry")}return Y.resolve(gI(),".yarn/berry")}function gI(){return Ae.toPortablePath((0,L8.homedir)()||"/usr/local/share")}function U8(e,t){let r=Y.relative(t,e);return r&&!r.startsWith("..")&&!Y.isAbsolute(r)}var L8,HQ=Ze(()=>{bt();L8=Ce("os")});var nue=G((gOt,rue)=>{"use strict";var _8=Ce("https"),H8=Ce("http"),{URL:tue}=Ce("url"),j8=class extends H8.Agent{constructor(t){let{proxy:r,proxyRequestOptions:s,...a}=t;super(a),this.proxy=typeof r=="string"?new tue(r):r,this.proxyRequestOptions=s||{}}createConnection(t,r){let s={...this.proxyRequestOptions,method:"CONNECT",host:this.proxy.hostname,port:this.proxy.port,path:`${t.host}:${t.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?"keep-alive":"close",host:`${t.host}:${t.port}`},agent:!1,timeout:t.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||"")}:${decodeURIComponent(this.proxy.password||"")}`).toString("base64");s.headers["proxy-authorization"]=`Basic ${n}`}this.proxy.protocol==="https:"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol==="http:"?H8:_8).request(s);a.once("connect",(n,c,f)=>{a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200?r(null,c):(c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null))}),a.once("timeout",()=>{a.destroy(new Error("Proxy timeout"))}),a.once("error",n=>{a.removeAllListeners(),r(n,null)}),a.end()}},G8=class extends _8.Agent{constructor(t){let{proxy:r,proxyRequestOptions:s,...a}=t;super(a),this.proxy=typeof r=="string"?new tue(r):r,this.proxyRequestOptions=s||{}}createConnection(t,r){let s={...this.proxyRequestOptions,method:"CONNECT",host:this.proxy.hostname,port:this.proxy.port,path:`${t.host}:${t.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?"keep-alive":"close",host:`${t.host}:${t.port}`},agent:!1,timeout:t.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||"")}:${decodeURIComponent(this.proxy.password||"")}`).toString("base64");s.headers["proxy-authorization"]=`Basic ${n}`}this.proxy.protocol==="https:"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol==="http:"?H8:_8).request(s);a.once("connect",(n,c,f)=>{if(a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200){let p=super.createConnection({...t,socket:c});r(null,p)}else c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null)}),a.once("timeout",()=>{a.destroy(new Error("Proxy timeout"))}),a.once("error",n=>{a.removeAllListeners(),r(n,null)}),a.end()}};rue.exports={HttpProxyAgent:j8,HttpsProxyAgent:G8}});var q8,iue,sue,oue=Ze(()=>{q8=et(nue(),1),iue=q8.default.HttpProxyAgent,sue=q8.default.HttpsProxyAgent});var Up=G((Mp,jQ)=>{"use strict";Object.defineProperty(Mp,"__esModule",{value:!0});var aue=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function vXe(e){return aue.includes(e)}var SXe=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Blob","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...aue];function bXe(e){return SXe.includes(e)}var DXe=["null","undefined","string","number","bigint","boolean","symbol"];function PXe(e){return DXe.includes(e)}function mI(e){return t=>typeof t===e}var{toString:lue}=Object.prototype,qB=e=>{let t=lue.call(e).slice(8,-1);if(/HTML\w+Element/.test(t)&&Pe.domElement(e))return"HTMLElement";if(bXe(t))return t},di=e=>t=>qB(t)===e;function Pe(e){if(e===null)return"null";switch(typeof e){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(Pe.observable(e))return"Observable";if(Pe.array(e))return"Array";if(Pe.buffer(e))return"Buffer";let t=qB(e);if(t)return t;if(e instanceof String||e instanceof Boolean||e instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}Pe.undefined=mI("undefined");Pe.string=mI("string");var xXe=mI("number");Pe.number=e=>xXe(e)&&!Pe.nan(e);Pe.bigint=mI("bigint");Pe.function_=mI("function");Pe.null_=e=>e===null;Pe.class_=e=>Pe.function_(e)&&e.toString().startsWith("class ");Pe.boolean=e=>e===!0||e===!1;Pe.symbol=mI("symbol");Pe.numericString=e=>Pe.string(e)&&!Pe.emptyStringOrWhitespace(e)&&!Number.isNaN(Number(e));Pe.array=(e,t)=>Array.isArray(e)?Pe.function_(t)?e.every(t):!0:!1;Pe.buffer=e=>{var t,r,s,a;return(a=(s=(r=(t=e)===null||t===void 0?void 0:t.constructor)===null||r===void 0?void 0:r.isBuffer)===null||s===void 0?void 0:s.call(r,e))!==null&&a!==void 0?a:!1};Pe.blob=e=>di("Blob")(e);Pe.nullOrUndefined=e=>Pe.null_(e)||Pe.undefined(e);Pe.object=e=>!Pe.null_(e)&&(typeof e=="object"||Pe.function_(e));Pe.iterable=e=>{var t;return Pe.function_((t=e)===null||t===void 0?void 0:t[Symbol.iterator])};Pe.asyncIterable=e=>{var t;return Pe.function_((t=e)===null||t===void 0?void 0:t[Symbol.asyncIterator])};Pe.generator=e=>{var t,r;return Pe.iterable(e)&&Pe.function_((t=e)===null||t===void 0?void 0:t.next)&&Pe.function_((r=e)===null||r===void 0?void 0:r.throw)};Pe.asyncGenerator=e=>Pe.asyncIterable(e)&&Pe.function_(e.next)&&Pe.function_(e.throw);Pe.nativePromise=e=>di("Promise")(e);var kXe=e=>{var t,r;return Pe.function_((t=e)===null||t===void 0?void 0:t.then)&&Pe.function_((r=e)===null||r===void 0?void 0:r.catch)};Pe.promise=e=>Pe.nativePromise(e)||kXe(e);Pe.generatorFunction=di("GeneratorFunction");Pe.asyncGeneratorFunction=e=>qB(e)==="AsyncGeneratorFunction";Pe.asyncFunction=e=>qB(e)==="AsyncFunction";Pe.boundFunction=e=>Pe.function_(e)&&!e.hasOwnProperty("prototype");Pe.regExp=di("RegExp");Pe.date=di("Date");Pe.error=di("Error");Pe.map=e=>di("Map")(e);Pe.set=e=>di("Set")(e);Pe.weakMap=e=>di("WeakMap")(e);Pe.weakSet=e=>di("WeakSet")(e);Pe.int8Array=di("Int8Array");Pe.uint8Array=di("Uint8Array");Pe.uint8ClampedArray=di("Uint8ClampedArray");Pe.int16Array=di("Int16Array");Pe.uint16Array=di("Uint16Array");Pe.int32Array=di("Int32Array");Pe.uint32Array=di("Uint32Array");Pe.float32Array=di("Float32Array");Pe.float64Array=di("Float64Array");Pe.bigInt64Array=di("BigInt64Array");Pe.bigUint64Array=di("BigUint64Array");Pe.arrayBuffer=di("ArrayBuffer");Pe.sharedArrayBuffer=di("SharedArrayBuffer");Pe.dataView=di("DataView");Pe.enumCase=(e,t)=>Object.values(t).includes(e);Pe.directInstanceOf=(e,t)=>Object.getPrototypeOf(e)===t.prototype;Pe.urlInstance=e=>di("URL")(e);Pe.urlString=e=>{if(!Pe.string(e))return!1;try{return new URL(e),!0}catch{return!1}};Pe.truthy=e=>!!e;Pe.falsy=e=>!e;Pe.nan=e=>Number.isNaN(e);Pe.primitive=e=>Pe.null_(e)||PXe(typeof e);Pe.integer=e=>Number.isInteger(e);Pe.safeInteger=e=>Number.isSafeInteger(e);Pe.plainObject=e=>{if(lue.call(e)!=="[object Object]")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.getPrototypeOf({})};Pe.typedArray=e=>vXe(qB(e));var QXe=e=>Pe.safeInteger(e)&&e>=0;Pe.arrayLike=e=>!Pe.nullOrUndefined(e)&&!Pe.function_(e)&&QXe(e.length);Pe.inRange=(e,t)=>{if(Pe.number(t))return e>=Math.min(0,t)&&e<=Math.max(t,0);if(Pe.array(t)&&t.length===2)return e>=Math.min(...t)&&e<=Math.max(...t);throw new TypeError(`Invalid range: ${JSON.stringify(t)}`)};var TXe=1,RXe=["innerHTML","ownerDocument","style","attributes","nodeValue"];Pe.domElement=e=>Pe.object(e)&&e.nodeType===TXe&&Pe.string(e.nodeName)&&!Pe.plainObject(e)&&RXe.every(t=>t in e);Pe.observable=e=>{var t,r,s,a;return e?e===((r=(t=e)[Symbol.observable])===null||r===void 0?void 0:r.call(t))||e===((a=(s=e)["@@observable"])===null||a===void 0?void 0:a.call(s)):!1};Pe.nodeStream=e=>Pe.object(e)&&Pe.function_(e.pipe)&&!Pe.observable(e);Pe.infinite=e=>e===1/0||e===-1/0;var cue=e=>t=>Pe.integer(t)&&Math.abs(t%2)===e;Pe.evenInteger=cue(0);Pe.oddInteger=cue(1);Pe.emptyArray=e=>Pe.array(e)&&e.length===0;Pe.nonEmptyArray=e=>Pe.array(e)&&e.length>0;Pe.emptyString=e=>Pe.string(e)&&e.length===0;var FXe=e=>Pe.string(e)&&!/\S/.test(e);Pe.emptyStringOrWhitespace=e=>Pe.emptyString(e)||FXe(e);Pe.nonEmptyString=e=>Pe.string(e)&&e.length>0;Pe.nonEmptyStringAndNotWhitespace=e=>Pe.string(e)&&!Pe.emptyStringOrWhitespace(e);Pe.emptyObject=e=>Pe.object(e)&&!Pe.map(e)&&!Pe.set(e)&&Object.keys(e).length===0;Pe.nonEmptyObject=e=>Pe.object(e)&&!Pe.map(e)&&!Pe.set(e)&&Object.keys(e).length>0;Pe.emptySet=e=>Pe.set(e)&&e.size===0;Pe.nonEmptySet=e=>Pe.set(e)&&e.size>0;Pe.emptyMap=e=>Pe.map(e)&&e.size===0;Pe.nonEmptyMap=e=>Pe.map(e)&&e.size>0;Pe.propertyKey=e=>Pe.any([Pe.string,Pe.number,Pe.symbol],e);Pe.formData=e=>di("FormData")(e);Pe.urlSearchParams=e=>di("URLSearchParams")(e);var uue=(e,t,r)=>{if(!Pe.function_(t))throw new TypeError(`Invalid predicate: ${JSON.stringify(t)}`);if(r.length===0)throw new TypeError("Invalid number of values");return e.call(r,t)};Pe.any=(e,...t)=>(Pe.array(e)?e:[e]).some(s=>uue(Array.prototype.some,s,t));Pe.all=(e,...t)=>uue(Array.prototype.every,e,t);var Ht=(e,t,r,s={})=>{if(!e){let{multipleValues:a}=s,n=a?`received values of types ${[...new Set(r.map(c=>`\`${Pe(c)}\``))].join(", ")}`:`received value of type \`${Pe(r)}\``;throw new TypeError(`Expected value which is \`${t}\`, ${n}.`)}};Mp.assert={undefined:e=>Ht(Pe.undefined(e),"undefined",e),string:e=>Ht(Pe.string(e),"string",e),number:e=>Ht(Pe.number(e),"number",e),bigint:e=>Ht(Pe.bigint(e),"bigint",e),function_:e=>Ht(Pe.function_(e),"Function",e),null_:e=>Ht(Pe.null_(e),"null",e),class_:e=>Ht(Pe.class_(e),"Class",e),boolean:e=>Ht(Pe.boolean(e),"boolean",e),symbol:e=>Ht(Pe.symbol(e),"symbol",e),numericString:e=>Ht(Pe.numericString(e),"string with a number",e),array:(e,t)=>{Ht(Pe.array(e),"Array",e),t&&e.forEach(t)},buffer:e=>Ht(Pe.buffer(e),"Buffer",e),blob:e=>Ht(Pe.blob(e),"Blob",e),nullOrUndefined:e=>Ht(Pe.nullOrUndefined(e),"null or undefined",e),object:e=>Ht(Pe.object(e),"Object",e),iterable:e=>Ht(Pe.iterable(e),"Iterable",e),asyncIterable:e=>Ht(Pe.asyncIterable(e),"AsyncIterable",e),generator:e=>Ht(Pe.generator(e),"Generator",e),asyncGenerator:e=>Ht(Pe.asyncGenerator(e),"AsyncGenerator",e),nativePromise:e=>Ht(Pe.nativePromise(e),"native Promise",e),promise:e=>Ht(Pe.promise(e),"Promise",e),generatorFunction:e=>Ht(Pe.generatorFunction(e),"GeneratorFunction",e),asyncGeneratorFunction:e=>Ht(Pe.asyncGeneratorFunction(e),"AsyncGeneratorFunction",e),asyncFunction:e=>Ht(Pe.asyncFunction(e),"AsyncFunction",e),boundFunction:e=>Ht(Pe.boundFunction(e),"Function",e),regExp:e=>Ht(Pe.regExp(e),"RegExp",e),date:e=>Ht(Pe.date(e),"Date",e),error:e=>Ht(Pe.error(e),"Error",e),map:e=>Ht(Pe.map(e),"Map",e),set:e=>Ht(Pe.set(e),"Set",e),weakMap:e=>Ht(Pe.weakMap(e),"WeakMap",e),weakSet:e=>Ht(Pe.weakSet(e),"WeakSet",e),int8Array:e=>Ht(Pe.int8Array(e),"Int8Array",e),uint8Array:e=>Ht(Pe.uint8Array(e),"Uint8Array",e),uint8ClampedArray:e=>Ht(Pe.uint8ClampedArray(e),"Uint8ClampedArray",e),int16Array:e=>Ht(Pe.int16Array(e),"Int16Array",e),uint16Array:e=>Ht(Pe.uint16Array(e),"Uint16Array",e),int32Array:e=>Ht(Pe.int32Array(e),"Int32Array",e),uint32Array:e=>Ht(Pe.uint32Array(e),"Uint32Array",e),float32Array:e=>Ht(Pe.float32Array(e),"Float32Array",e),float64Array:e=>Ht(Pe.float64Array(e),"Float64Array",e),bigInt64Array:e=>Ht(Pe.bigInt64Array(e),"BigInt64Array",e),bigUint64Array:e=>Ht(Pe.bigUint64Array(e),"BigUint64Array",e),arrayBuffer:e=>Ht(Pe.arrayBuffer(e),"ArrayBuffer",e),sharedArrayBuffer:e=>Ht(Pe.sharedArrayBuffer(e),"SharedArrayBuffer",e),dataView:e=>Ht(Pe.dataView(e),"DataView",e),enumCase:(e,t)=>Ht(Pe.enumCase(e,t),"EnumCase",e),urlInstance:e=>Ht(Pe.urlInstance(e),"URL",e),urlString:e=>Ht(Pe.urlString(e),"string with a URL",e),truthy:e=>Ht(Pe.truthy(e),"truthy",e),falsy:e=>Ht(Pe.falsy(e),"falsy",e),nan:e=>Ht(Pe.nan(e),"NaN",e),primitive:e=>Ht(Pe.primitive(e),"primitive",e),integer:e=>Ht(Pe.integer(e),"integer",e),safeInteger:e=>Ht(Pe.safeInteger(e),"integer",e),plainObject:e=>Ht(Pe.plainObject(e),"plain object",e),typedArray:e=>Ht(Pe.typedArray(e),"TypedArray",e),arrayLike:e=>Ht(Pe.arrayLike(e),"array-like",e),domElement:e=>Ht(Pe.domElement(e),"HTMLElement",e),observable:e=>Ht(Pe.observable(e),"Observable",e),nodeStream:e=>Ht(Pe.nodeStream(e),"Node.js Stream",e),infinite:e=>Ht(Pe.infinite(e),"infinite number",e),emptyArray:e=>Ht(Pe.emptyArray(e),"empty array",e),nonEmptyArray:e=>Ht(Pe.nonEmptyArray(e),"non-empty array",e),emptyString:e=>Ht(Pe.emptyString(e),"empty string",e),emptyStringOrWhitespace:e=>Ht(Pe.emptyStringOrWhitespace(e),"empty string or whitespace",e),nonEmptyString:e=>Ht(Pe.nonEmptyString(e),"non-empty string",e),nonEmptyStringAndNotWhitespace:e=>Ht(Pe.nonEmptyStringAndNotWhitespace(e),"non-empty string and not whitespace",e),emptyObject:e=>Ht(Pe.emptyObject(e),"empty object",e),nonEmptyObject:e=>Ht(Pe.nonEmptyObject(e),"non-empty object",e),emptySet:e=>Ht(Pe.emptySet(e),"empty set",e),nonEmptySet:e=>Ht(Pe.nonEmptySet(e),"non-empty set",e),emptyMap:e=>Ht(Pe.emptyMap(e),"empty map",e),nonEmptyMap:e=>Ht(Pe.nonEmptyMap(e),"non-empty map",e),propertyKey:e=>Ht(Pe.propertyKey(e),"PropertyKey",e),formData:e=>Ht(Pe.formData(e),"FormData",e),urlSearchParams:e=>Ht(Pe.urlSearchParams(e),"URLSearchParams",e),evenInteger:e=>Ht(Pe.evenInteger(e),"even integer",e),oddInteger:e=>Ht(Pe.oddInteger(e),"odd integer",e),directInstanceOf:(e,t)=>Ht(Pe.directInstanceOf(e,t),"T",e),inRange:(e,t)=>Ht(Pe.inRange(e,t),"in range",e),any:(e,...t)=>Ht(Pe.any(e,...t),"predicate returns truthy for any value",t,{multipleValues:!0}),all:(e,...t)=>Ht(Pe.all(e,...t),"predicate returns truthy for all values",t,{multipleValues:!0})};Object.defineProperties(Pe,{class:{value:Pe.class_},function:{value:Pe.function_},null:{value:Pe.null_}});Object.defineProperties(Mp.assert,{class:{value:Mp.assert.class_},function:{value:Mp.assert.function_},null:{value:Mp.assert.null_}});Mp.default=Pe;jQ.exports=Pe;jQ.exports.default=Pe;jQ.exports.assert=Mp.assert});var fue=G((yOt,Y8)=>{"use strict";var GQ=class extends Error{constructor(t){super(t||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},qQ=class e{static fn(t){return(...r)=>new e((s,a,n)=>{r.push(n),t(...r).then(s,a)})}constructor(t){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,s)=>{this._reject=s;let a=f=>{this._isPending=!1,r(f)},n=f=>{this._isPending=!1,s(f)},c=f=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(f)};return Object.defineProperties(c,{shouldReject:{get:()=>this._rejectOnCancel,set:f=>{this._rejectOnCancel=f}}}),t(a,n,c)})}then(t,r){return this._promise.then(t,r)}catch(t){return this._promise.catch(t)}finally(t){return this._promise.finally(t)}cancel(t){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new GQ(t))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(qQ.prototype,Promise.prototype);Y8.exports=qQ;Y8.exports.CancelError=GQ});var Aue=G((V8,K8)=>{"use strict";Object.defineProperty(V8,"__esModule",{value:!0});function NXe(e){return e.encrypted}var W8=(e,t)=>{let r;typeof t=="function"?r={connect:t}:r=t;let s=typeof r.connect=="function",a=typeof r.secureConnect=="function",n=typeof r.close=="function",c=()=>{s&&r.connect(),NXe(e)&&a&&(e.authorized?r.secureConnect():e.authorizationError||e.once("secureConnect",r.secureConnect)),n&&e.once("close",r.close)};e.writable&&!e.connecting?c():e.connecting?e.once("connect",c):e.destroyed&&n&&r.close(e._hadError)};V8.default=W8;K8.exports=W8;K8.exports.default=W8});var pue=G((z8,Z8)=>{"use strict";Object.defineProperty(z8,"__esModule",{value:!0});var OXe=Aue(),LXe=Number(process.versions.node.split(".")[0]),J8=e=>{let t={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};e.timings=t;let r=c=>{let f=c.emit.bind(c);c.emit=(p,...h)=>(p==="error"&&(t.error=Date.now(),t.phases.total=t.error-t.start,c.emit=f),f(p,...h))};r(e),e.prependOnceListener("abort",()=>{t.abort=Date.now(),(!t.response||LXe>=13)&&(t.phases.total=Date.now()-t.start)});let s=c=>{t.socket=Date.now(),t.phases.wait=t.socket-t.start;let f=()=>{t.lookup=Date.now(),t.phases.dns=t.lookup-t.socket};c.prependOnceListener("lookup",f),OXe.default(c,{connect:()=>{t.connect=Date.now(),t.lookup===void 0&&(c.removeListener("lookup",f),t.lookup=t.connect,t.phases.dns=t.lookup-t.socket),t.phases.tcp=t.connect-t.lookup},secureConnect:()=>{t.secureConnect=Date.now(),t.phases.tls=t.secureConnect-t.connect}})};e.socket?s(e.socket):e.prependOnceListener("socket",s);let a=()=>{var c;t.upload=Date.now(),t.phases.request=t.upload-(c=t.secureConnect,c??t.connect)};return(typeof e.writableFinished=="boolean"?e.writableFinished:e.finished&&e.outputSize===0&&(!e.socket||e.socket.writableLength===0))?a():e.prependOnceListener("finish",a),e.prependOnceListener("response",c=>{t.response=Date.now(),t.phases.firstByte=t.response-t.upload,c.timings=t,r(c),c.prependOnceListener("end",()=>{t.end=Date.now(),t.phases.download=t.end-t.response,t.phases.total=t.end-t.start})}),t};z8.default=J8;Z8.exports=J8;Z8.exports.default=J8});var Iue=G((EOt,eH)=>{"use strict";var{V4MAPPED:MXe,ADDRCONFIG:UXe,ALL:Eue,promises:{Resolver:hue},lookup:_Xe}=Ce("dns"),{promisify:X8}=Ce("util"),HXe=Ce("os"),yI=Symbol("cacheableLookupCreateConnection"),$8=Symbol("cacheableLookupInstance"),due=Symbol("expires"),jXe=typeof Eue=="number",gue=e=>{if(!(e&&typeof e.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},GXe=e=>{for(let t of e)t.family!==6&&(t.address=`::ffff:${t.address}`,t.family=6)},mue=()=>{let e=!1,t=!1;for(let r of Object.values(HXe.networkInterfaces()))for(let s of r)if(!s.internal&&(s.family==="IPv6"?t=!0:e=!0,e&&t))return{has4:e,has6:t};return{has4:e,has6:t}},qXe=e=>Symbol.iterator in e,yue={ttl:!0},YXe={all:!0},YQ=class{constructor({cache:t=new Map,maxTtl:r=1/0,fallbackDuration:s=3600,errorTtl:a=.15,resolver:n=new hue,lookup:c=_Xe}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=t,this._resolver=n,this._dnsLookup=X8(c),this._resolver instanceof hue?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=X8(this._resolver.resolve4.bind(this._resolver)),this._resolve6=X8(this._resolver.resolve6.bind(this._resolver))),this._iface=mue(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,s<1)this._fallback=!1;else{this._fallback=!0;let f=setInterval(()=>{this._hostnamesToFallback.clear()},s*1e3);f.unref&&f.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(t){this.clear(),this._resolver.setServers(t)}get servers(){return this._resolver.getServers()}lookup(t,r,s){if(typeof r=="function"?(s=r,r={}):typeof r=="number"&&(r={family:r}),!s)throw new Error("Callback must be a function.");this.lookupAsync(t,r).then(a=>{r.all?s(null,a):s(null,a.address,a.family,a.expires,a.ttl)},s)}async lookupAsync(t,r={}){typeof r=="number"&&(r={family:r});let s=await this.query(t);if(r.family===6){let a=s.filter(n=>n.family===6);r.hints&MXe&&(jXe&&r.hints&Eue||a.length===0)?GXe(s):s=a}else r.family===4&&(s=s.filter(a=>a.family===4));if(r.hints&UXe){let{_iface:a}=this;s=s.filter(n=>n.family===6?a.has6:a.has4)}if(s.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${t}`);throw a.code="ENOTFOUND",a.hostname=t,a}return r.all?s:s[0]}async query(t){let r=await this._cache.get(t);if(!r){let s=this._pending[t];if(s)r=await s;else{let a=this.queryAndCache(t);this._pending[t]=a,r=await a}}return r=r.map(s=>({...s})),r}async _resolve(t){let r=async h=>{try{return await h}catch(E){if(E.code==="ENODATA"||E.code==="ENOTFOUND")return[];throw E}},[s,a]=await Promise.all([this._resolve4(t,yue),this._resolve6(t,yue)].map(h=>r(h))),n=0,c=0,f=0,p=Date.now();for(let h of s)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,c=Math.max(c,h.ttl);return s.length>0?a.length>0?f=Math.min(n,c):f=n:f=c,{entries:[...s,...a],cacheTtl:f}}async _lookup(t){try{return{entries:await this._dnsLookup(t,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(t,r,s){if(this.maxTtl>0&&s>0){s=Math.min(s,this.maxTtl)*1e3,r[due]=Date.now()+s;try{await this._cache.set(t,r,s)}catch(a){this.lookupAsync=async()=>{let n=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw n.cause=a,n}}qXe(this._cache)&&this._tick(s)}}async queryAndCache(t){if(this._hostnamesToFallback.has(t))return this._dnsLookup(t,YXe);try{let r=await this._resolve(t);r.entries.length===0&&this._fallback&&(r=await this._lookup(t),r.entries.length!==0&&this._hostnamesToFallback.add(t));let s=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(t,r.entries,s),delete this._pending[t],r.entries}catch(r){throw delete this._pending[t],r}}_tick(t){let r=this._nextRemovalTime;(!r||t{this._nextRemovalTime=!1;let s=1/0,a=Date.now();for(let[n,c]of this._cache){let f=c[due];a>=f?this._cache.delete(n):f("lookup"in r||(r.lookup=this.lookup),t[yI](r,s))}uninstall(t){if(gue(t),t[yI]){if(t[$8]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");t.createConnection=t[yI],delete t[yI],delete t[$8]}}updateInterfaceInfo(){let{_iface:t}=this;this._iface=mue(),(t.has4&&!this._iface.has4||t.has6&&!this._iface.has6)&&this._cache.clear()}clear(t){if(t){this._cache.delete(t);return}this._cache.clear()}};eH.exports=YQ;eH.exports.default=YQ});var Bue=G((IOt,tH)=>{"use strict";var WXe=typeof URL>"u"?Ce("url").URL:URL,VXe="text/plain",KXe="us-ascii",Cue=(e,t)=>t.some(r=>r instanceof RegExp?r.test(e):r===e),JXe=(e,{stripHash:t})=>{let r=e.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${e}`);let s=r[1].split(";"),a=r[2],n=t?"":r[3],c=!1;s[s.length-1]==="base64"&&(s.pop(),c=!0);let f=(s.shift()||"").toLowerCase(),h=[...s.map(E=>{let[C,S=""]=E.split("=").map(x=>x.trim());return C==="charset"&&(S=S.toLowerCase(),S===KXe)?"":`${C}${S?`=${S}`:""}`}).filter(Boolean)];return c&&h.push("base64"),(h.length!==0||f&&f!==VXe)&&h.unshift(f),`data:${h.join(";")},${c?a.trim():a}${n?`#${n}`:""}`},wue=(e,t)=>{if(t={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},Reflect.has(t,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(t,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(t,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(e=e.trim(),/^data:/i.test(e))return JXe(e,t);let r=e.startsWith("//");!r&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,t.defaultProtocol));let a=new WXe(e);if(t.forceHttp&&t.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(t.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),t.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),t.stripAuthentication&&(a.username="",a.password=""),t.stripHash&&(a.hash=""),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\/{2,}/g,(n,c)=>/^(?!\/)/g.test(c)?`${c}/`:"/")),a.pathname&&(a.pathname=decodeURI(a.pathname)),t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let n=a.pathname.split("/"),c=n[n.length-1];Cue(c,t.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(let n of[...a.searchParams.keys()])Cue(n,t.removeQueryParameters)&&a.searchParams.delete(n);return t.sortQueryParameters&&a.searchParams.sort(),t.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,"")),e=a.toString(),(t.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&(e=e.replace(/\/$/,"")),r&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\/\//,"")),e};tH.exports=wue;tH.exports.default=wue});var bue=G((COt,Sue)=>{Sue.exports=vue;function vue(e,t){if(e&&t)return vue(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(s){r[s]=e[s]}),r;function r(){for(var s=new Array(arguments.length),a=0;a{var Due=bue();rH.exports=Due(WQ);rH.exports.strict=Due(Pue);WQ.proto=WQ(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return WQ(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Pue(this)},configurable:!0})});function WQ(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function Pue(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}});var iH=G((BOt,kue)=>{var zXe=nH(),ZXe=function(){},XXe=function(e){return e.setHeader&&typeof e.abort=="function"},$Xe=function(e){return e.stdio&&Array.isArray(e.stdio)&&e.stdio.length===3},xue=function(e,t,r){if(typeof t=="function")return xue(e,null,t);t||(t={}),r=zXe(r||ZXe);var s=e._writableState,a=e._readableState,n=t.readable||t.readable!==!1&&e.readable,c=t.writable||t.writable!==!1&&e.writable,f=function(){e.writable||p()},p=function(){c=!1,n||r.call(e)},h=function(){n=!1,c||r.call(e)},E=function(I){r.call(e,I?new Error("exited with error code: "+I):null)},C=function(I){r.call(e,I)},S=function(){if(n&&!(a&&a.ended))return r.call(e,new Error("premature close"));if(c&&!(s&&s.ended))return r.call(e,new Error("premature close"))},x=function(){e.req.on("finish",p)};return XXe(e)?(e.on("complete",p),e.on("abort",S),e.req?x():e.on("request",x)):c&&!s&&(e.on("end",f),e.on("close",f)),$Xe(e)&&e.on("exit",E),e.on("end",h),e.on("finish",p),t.error!==!1&&e.on("error",C),e.on("close",S),function(){e.removeListener("complete",p),e.removeListener("abort",S),e.removeListener("request",x),e.req&&e.req.removeListener("finish",p),e.removeListener("end",f),e.removeListener("close",f),e.removeListener("finish",p),e.removeListener("exit",E),e.removeListener("end",h),e.removeListener("error",C),e.removeListener("close",S)}};kue.exports=xue});var Rue=G((vOt,Tue)=>{var e$e=nH(),t$e=iH(),sH=Ce("fs"),YB=function(){},r$e=/^v?\.0/.test(process.version),VQ=function(e){return typeof e=="function"},n$e=function(e){return!r$e||!sH?!1:(e instanceof(sH.ReadStream||YB)||e instanceof(sH.WriteStream||YB))&&VQ(e.close)},i$e=function(e){return e.setHeader&&VQ(e.abort)},s$e=function(e,t,r,s){s=e$e(s);var a=!1;e.on("close",function(){a=!0}),t$e(e,{readable:t,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,n$e(e))return e.close(YB);if(i$e(e))return e.abort();if(VQ(e.destroy))return e.destroy();s(c||new Error("stream was destroyed"))}}},Que=function(e){e()},o$e=function(e,t){return e.pipe(t)},a$e=function(){var e=Array.prototype.slice.call(arguments),t=VQ(e[e.length-1]||YB)&&e.pop()||YB;if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new Error("pump requires two streams per minimum");var r,s=e.map(function(a,n){var c=n0;return s$e(a,c,f,function(p){r||(r=p),p&&s.forEach(Que),!c&&(s.forEach(Que),t(r))})});return e.reduce(o$e)};Tue.exports=a$e});var Nue=G((SOt,Fue)=>{"use strict";var{PassThrough:l$e}=Ce("stream");Fue.exports=e=>{e={...e};let{array:t}=e,{encoding:r}=e,s=r==="buffer",a=!1;t?a=!(r||s):r=r||"utf8",s&&(r=null);let n=new l$e({objectMode:a});r&&n.setEncoding(r);let c=0,f=[];return n.on("data",p=>{f.push(p),a?c=f.length:c+=p.length}),n.getBufferedValue=()=>t?f:s?Buffer.concat(f,c):f.join(""),n.getBufferedLength=()=>c,n}});var Oue=G((bOt,EI)=>{"use strict";var c$e=Rue(),u$e=Nue(),KQ=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function JQ(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t={maxBuffer:1/0,...t};let{maxBuffer:r}=t,s;return await new Promise((a,n)=>{let c=f=>{f&&(f.bufferedData=s.getBufferedValue()),n(f)};s=c$e(e,u$e(t),f=>{if(f){c(f);return}a()}),s.on("data",()=>{s.getBufferedLength()>r&&c(new KQ)})}),s.getBufferedValue()}EI.exports=JQ;EI.exports.default=JQ;EI.exports.buffer=(e,t)=>JQ(e,{...t,encoding:"buffer"});EI.exports.array=(e,t)=>JQ(e,{...t,array:!0});EI.exports.MaxBufferError=KQ});var Mue=G((POt,Lue)=>{"use strict";var f$e=new Set([200,203,204,206,300,301,308,404,405,410,414,501]),A$e=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),p$e=new Set([500,502,503,504]),h$e={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},d$e={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function im(e){let t=parseInt(e,10);return isFinite(t)?t:0}function g$e(e){return e?p$e.has(e.status):!0}function oH(e){let t={};if(!e)return t;let r=e.trim().split(/,/);for(let s of r){let[a,n]=s.split(/=/,2);t[a.trim()]=n===void 0?!0:n.trim().replace(/^"|"$/g,"")}return t}function m$e(e){let t=[];for(let r in e){let s=e[r];t.push(s===!0?r:r+"="+s)}if(t.length)return t.join(", ")}Lue.exports=class{constructor(t,r,{shared:s,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:c,_fromObject:f}={}){if(f){this._fromObject(f);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(t),this._responseTime=this.now(),this._isShared=s!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=oH(r.headers["cache-control"]),this._method="method"in t?t.method:"GET",this._url=t.url,this._host=t.headers.host,this._noAuthorization=!t.headers.authorization,this._reqHeaders=r.headers.vary?t.headers:null,this._reqcc=oH(t.headers["cache-control"]),c&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":m$e(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers["cache-control"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&A$e.has(this._status)&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc["max-age"]||this._isShared&&this._rescc["s-maxage"]||this._rescc.public||f$e.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(t){if(!t||!t.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(t){this._assertRequestHasHeaders(t);let r=oH(t.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(t.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(t,!1)}_requestMatches(t,r){return(!this._url||this._url===t.url)&&this._host===t.headers.host&&(!t.method||this._method===t.method||r&&t.method==="HEAD")&&this._varyMatches(t)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(t){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let s of r)if(t.headers[s]!==this._reqHeaders[s])return!1;return!0}_copyWithoutHopByHopHeaders(t){let r={};for(let s in t)h$e[s]||(r[s]=t[s]);if(t.connection){let s=t.connection.trim().split(/\s*,\s*/);for(let a of s)delete r[a]}if(r.warning){let s=r.warning.split(/,/).filter(a=>!/^\s*1[0-9][0-9]/.test(a));s.length?r.warning=s.join(",").trim():delete r.warning}return r}responseHeaders(){let t=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(t.warning=(t.warning?`${t.warning}, `:"")+'113 - "rfc7234 5.5.4"'),t.age=`${Math.round(r)}`,t.date=new Date(this.now()).toUTCString(),t}date(){let t=Date.parse(this._resHeaders.date);return isFinite(t)?t:this._responseTime}age(){let t=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return t+r}_ageValue(){return im(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return im(this._rescc["s-maxage"])}if(this._rescc["max-age"])return im(this._rescc["max-age"]);let t=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let s=Date.parse(this._resHeaders.expires);return Number.isNaN(s)||ss)return Math.max(t,(r-s)/1e3*this._cacheHeuristic)}return t}timeToLive(){let t=this.maxAge()-this.age(),r=t+im(this._rescc["stale-if-error"]),s=t+im(this._rescc["stale-while-revalidate"]);return Math.max(0,t,r,s)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+im(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+im(this._rescc["stale-while-revalidate"])>this.age()}static fromObject(t){return new this(void 0,void 0,{_fromObject:t})}_fromObject(t){if(this._responseTime)throw Error("Reinitialized");if(!t||t.v!==1)throw Error("Invalid serialization");this._responseTime=t.t,this._isShared=t.sh,this._cacheHeuristic=t.ch,this._immutableMinTtl=t.imm!==void 0?t.imm:24*3600*1e3,this._status=t.st,this._resHeaders=t.resh,this._rescc=t.rescc,this._method=t.m,this._url=t.u,this._host=t.h,this._noAuthorization=t.a,this._reqHeaders=t.reqh,this._reqcc=t.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(t){this._assertRequestHasHeaders(t);let r=this._copyWithoutHopByHopHeaders(t.headers);if(delete r["if-range"],!this._requestMatches(t,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let a=r["if-none-match"].split(/,/).filter(n=>!/^\s*W\//.test(n));a.length?r["if-none-match"]=a.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(t,r){if(this._assertRequestHasHeaders(t),this._useStaleIfError()&&g$e(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error("Response headers missing");let s=!1;if(r.status!==void 0&&r.status!=304?s=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?s=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?s=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?s=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(s=!0),!s)return{policy:new this.constructor(t,r),modified:r.status!=304,matches:!1};let a={};for(let c in this._resHeaders)a[c]=c in r.headers&&!d$e[c]?r.headers[c]:this._resHeaders[c];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(t,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var zQ=G((xOt,Uue)=>{"use strict";Uue.exports=e=>{let t={};for(let[r,s]of Object.entries(e))t[r.toLowerCase()]=s;return t}});var Hue=G((kOt,_ue)=>{"use strict";var y$e=Ce("stream").Readable,E$e=zQ(),aH=class extends y$e{constructor(t,r,s,a){if(typeof t!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(s instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof a!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=t,this.headers=E$e(r),this.body=s,this.url=a}_read(){this.push(this.body),this.push(null)}};_ue.exports=aH});var Gue=G((QOt,jue)=>{"use strict";var I$e=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];jue.exports=(e,t)=>{let r=new Set(Object.keys(e).concat(I$e));for(let s of r)s in t||(t[s]=typeof e[s]=="function"?e[s].bind(e):e[s])}});var Yue=G((TOt,que)=>{"use strict";var C$e=Ce("stream").PassThrough,w$e=Gue(),B$e=e=>{if(!(e&&e.pipe))throw new TypeError("Parameter `response` must be a response stream.");let t=new C$e;return w$e(e,t),e.pipe(t)};que.exports=B$e});var Wue=G(lH=>{lH.stringify=function e(t){if(typeof t>"u")return t;if(t&&Buffer.isBuffer(t))return JSON.stringify(":base64:"+t.toString("base64"));if(t&&t.toJSON&&(t=t.toJSON()),t&&typeof t=="object"){var r="",s=Array.isArray(t);r=s?"[":"{";var a=!0;for(var n in t){var c=typeof t[n]=="function"||!s&&typeof t[n]>"u";Object.hasOwnProperty.call(t,n)&&!c&&(a||(r+=","),a=!1,s?t[n]==null?r+="null":r+=e(t[n]):t[n]!==void 0&&(r+=e(n)+":"+e(t[n])))}return r+=s?"]":"}",r}else return typeof t=="string"?JSON.stringify(/^:/.test(t)?":"+t:t):typeof t>"u"?"null":JSON.stringify(t)};lH.parse=function(e){return JSON.parse(e,function(t,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var zue=G((FOt,Jue)=>{"use strict";var v$e=Ce("events"),Vue=Wue(),S$e=e=>{let t={redis:"@keyv/redis",rediss:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql",etcd:"@keyv/etcd",offline:"@keyv/offline",tiered:"@keyv/tiered"};if(e.adapter||e.uri){let r=e.adapter||/^[^:+]*/.exec(e.uri)[0];return new(Ce(t[r]))(e)}return new Map},Kue=["sqlite","postgres","mysql","mongo","redis","tiered"],cH=class extends v$e{constructor(t,{emitErrors:r=!0,...s}={}){if(super(),this.opts={namespace:"keyv",serialize:Vue.stringify,deserialize:Vue.parse,...typeof t=="string"?{uri:t}:t,...s},!this.opts.store){let n={...this.opts};this.opts.store=S$e(n)}if(this.opts.compression){let n=this.opts.compression;this.opts.serialize=n.serialize.bind(n),this.opts.deserialize=n.deserialize.bind(n)}typeof this.opts.store.on=="function"&&r&&this.opts.store.on("error",n=>this.emit("error",n)),this.opts.store.namespace=this.opts.namespace;let a=n=>async function*(){for await(let[c,f]of typeof n=="function"?n(this.opts.store.namespace):n){let p=await this.opts.deserialize(f);if(!(this.opts.store.namespace&&!c.includes(this.opts.store.namespace))){if(typeof p.expires=="number"&&Date.now()>p.expires){this.delete(c);continue}yield[this._getKeyUnprefix(c),p.value]}}};typeof this.opts.store[Symbol.iterator]=="function"&&this.opts.store instanceof Map?this.iterator=a(this.opts.store):typeof this.opts.store.iterator=="function"&&this.opts.store.opts&&this._checkIterableAdaptar()&&(this.iterator=a(this.opts.store.iterator.bind(this.opts.store)))}_checkIterableAdaptar(){return Kue.includes(this.opts.store.opts.dialect)||Kue.findIndex(t=>this.opts.store.opts.url.includes(t))>=0}_getKeyPrefix(t){return`${this.opts.namespace}:${t}`}_getKeyPrefixArray(t){return t.map(r=>`${this.opts.namespace}:${r}`)}_getKeyUnprefix(t){return t.split(":").splice(1).join(":")}get(t,r){let{store:s}=this.opts,a=Array.isArray(t),n=a?this._getKeyPrefixArray(t):this._getKeyPrefix(t);if(a&&s.getMany===void 0){let c=[];for(let f of n)c.push(Promise.resolve().then(()=>s.get(f)).then(p=>typeof p=="string"?this.opts.deserialize(p):this.opts.compression?this.opts.deserialize(p):p).then(p=>{if(p!=null)return typeof p.expires=="number"&&Date.now()>p.expires?this.delete(f).then(()=>{}):r&&r.raw?p:p.value}));return Promise.allSettled(c).then(f=>{let p=[];for(let h of f)p.push(h.value);return p})}return Promise.resolve().then(()=>a?s.getMany(n):s.get(n)).then(c=>typeof c=="string"?this.opts.deserialize(c):this.opts.compression?this.opts.deserialize(c):c).then(c=>{if(c!=null)return a?c.map((f,p)=>{if(typeof f=="string"&&(f=this.opts.deserialize(f)),f!=null){if(typeof f.expires=="number"&&Date.now()>f.expires){this.delete(t[p]).then(()=>{});return}return r&&r.raw?f:f.value}}):typeof c.expires=="number"&&Date.now()>c.expires?this.delete(t).then(()=>{}):r&&r.raw?c:c.value})}set(t,r,s){let a=this._getKeyPrefix(t);typeof s>"u"&&(s=this.opts.ttl),s===0&&(s=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let c=typeof s=="number"?Date.now()+s:null;return typeof r=="symbol"&&this.emit("error","symbol cannot be serialized"),r={value:r,expires:c},this.opts.serialize(r)}).then(c=>n.set(a,c,s)).then(()=>!0)}delete(t){let{store:r}=this.opts;if(Array.isArray(t)){let a=this._getKeyPrefixArray(t);if(r.deleteMany===void 0){let n=[];for(let c of a)n.push(r.delete(c));return Promise.allSettled(n).then(c=>c.every(f=>f.value===!0))}return Promise.resolve().then(()=>r.deleteMany(a))}let s=this._getKeyPrefix(t);return Promise.resolve().then(()=>r.delete(s))}clear(){let{store:t}=this.opts;return Promise.resolve().then(()=>t.clear())}has(t){let r=this._getKeyPrefix(t),{store:s}=this.opts;return Promise.resolve().then(async()=>typeof s.has=="function"?s.has(r):await s.get(r)!==void 0)}disconnect(){let{store:t}=this.opts;if(typeof t.disconnect=="function")return t.disconnect()}};Jue.exports=cH});var $ue=G((OOt,Xue)=>{"use strict";var b$e=Ce("events"),ZQ=Ce("url"),D$e=Bue(),P$e=Oue(),uH=Mue(),Zue=Hue(),x$e=zQ(),k$e=Yue(),Q$e=zue(),WB=class e{constructor(t,r){if(typeof t!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Q$e({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(t)}createCacheableRequest(t){return(r,s)=>{let a;if(typeof r=="string")a=fH(ZQ.parse(r)),r={};else if(r instanceof ZQ.URL)a=fH(ZQ.parse(r.toString())),r={};else{let[C,...S]=(r.path||"").split("?"),x=S.length>0?`?${S.join("?")}`:"";a=fH({...r,pathname:C,search:x})}r={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...T$e(a)},r.headers=x$e(r.headers);let n=new b$e,c=D$e(ZQ.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),f=`${r.method}:${c}`,p=!1,h=!1,E=C=>{h=!0;let S=!1,x,I=new Promise(N=>{x=()=>{S||(S=!0,N())}}),R=N=>{if(p&&!C.forceRefresh){N.status=N.statusCode;let K=uH.fromObject(p.cachePolicy).revalidatedPolicy(C,N);if(!K.modified){let $=K.policy.responseHeaders();N=new Zue(p.statusCode,$,p.body,p.url),N.cachePolicy=K.policy,N.fromCache=!0}}N.fromCache||(N.cachePolicy=new uH(C,N,C),N.fromCache=!1);let U;C.cache&&N.cachePolicy.storable()?(U=k$e(N),(async()=>{try{let K=P$e.buffer(N);if(await Promise.race([I,new Promise(le=>N.once("end",le))]),S)return;let $=await K,ie={cachePolicy:N.cachePolicy.toObject(),url:N.url,statusCode:N.fromCache?p.statusCode:N.statusCode,body:$},fe=C.strictTtl?N.cachePolicy.timeToLive():void 0;C.maxTtl&&(fe=fe?Math.min(fe,C.maxTtl):C.maxTtl),await this.cache.set(f,ie,fe)}catch(K){n.emit("error",new e.CacheError(K))}})()):C.cache&&p&&(async()=>{try{await this.cache.delete(f)}catch(K){n.emit("error",new e.CacheError(K))}})(),n.emit("response",U||N),typeof s=="function"&&s(U||N)};try{let N=t(C,R);N.once("error",x),N.once("abort",x),n.emit("request",N)}catch(N){n.emit("error",new e.RequestError(N))}};return(async()=>{let C=async x=>{await Promise.resolve();let I=x.cache?await this.cache.get(f):void 0;if(typeof I>"u")return E(x);let R=uH.fromObject(I.cachePolicy);if(R.satisfiesWithoutRevalidation(x)&&!x.forceRefresh){let N=R.responseHeaders(),U=new Zue(I.statusCode,N,I.body,I.url);U.cachePolicy=R,U.fromCache=!0,n.emit("response",U),typeof s=="function"&&s(U)}else p=I,x.headers=R.revalidationHeaders(x),E(x)},S=x=>n.emit("error",new e.CacheError(x));this.cache.once("error",S),n.on("response",()=>this.cache.removeListener("error",S));try{await C(r)}catch(x){r.automaticFailover&&!h&&E(r),n.emit("error",new e.CacheError(x))}})(),n}}};function T$e(e){let t={...e};return t.path=`${e.pathname||"/"}${e.search||""}`,delete t.pathname,delete t.search,t}function fH(e){return{protocol:e.protocol,auth:e.auth,hostname:e.hostname||e.host||"localhost",port:e.port,pathname:e.pathname,search:e.search}}WB.RequestError=class extends Error{constructor(e){super(e.message),this.name="RequestError",Object.assign(this,e)}};WB.CacheError=class extends Error{constructor(e){super(e.message),this.name="CacheError",Object.assign(this,e)}};Xue.exports=WB});var tfe=G((UOt,efe)=>{"use strict";var R$e=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];efe.exports=(e,t)=>{if(t._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(e).concat(R$e)),s={};for(let a of r)a in t||(s[a]={get(){let n=e[a];return typeof n=="function"?n.bind(e):n},set(n){e[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(t,s),e.once("aborted",()=>{t.destroy(),t.emit("aborted")}),e.once("close",()=>{e.complete&&t.readable?t.once("end",()=>{t.emit("close")}):t.emit("close")}),t}});var nfe=G((_Ot,rfe)=>{"use strict";var{Transform:F$e,PassThrough:N$e}=Ce("stream"),AH=Ce("zlib"),O$e=tfe();rfe.exports=e=>{let t=(e.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(t))return e;let r=t==="br";if(r&&typeof AH.createBrotliDecompress!="function")return e.destroy(new Error("Brotli is not supported on Node.js < 12")),e;let s=!0,a=new F$e({transform(f,p,h){s=!1,h(null,f)},flush(f){f()}}),n=new N$e({autoDestroy:!1,destroy(f,p){e.destroy(),p(f)}}),c=r?AH.createBrotliDecompress():AH.createUnzip();return c.once("error",f=>{if(s&&!e.readable){n.end();return}n.destroy(f)}),O$e(e,n),e.pipe(a).pipe(c).pipe(n),n}});var hH=G((HOt,ife)=>{"use strict";var pH=class{constructor(t={}){if(!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=t.maxSize,this.onEviction=t.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(t,r){if(this.cache.set(t,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[s,a]of this.oldCache.entries())this.onEviction(s,a);this.oldCache=this.cache,this.cache=new Map}}get(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t)){let r=this.oldCache.get(t);return this.oldCache.delete(t),this._set(t,r),r}}set(t,r){return this.cache.has(t)?this.cache.set(t,r):this._set(t,r),this}has(t){return this.cache.has(t)||this.oldCache.has(t)}peek(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t))return this.oldCache.get(t)}delete(t){let r=this.cache.delete(t);return r&&this._size--,this.oldCache.delete(t)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[t]of this)yield t}*values(){for(let[,t]of this)yield t}*[Symbol.iterator](){for(let t of this.cache)yield t;for(let t of this.oldCache){let[r]=t;this.cache.has(r)||(yield t)}}get size(){let t=0;for(let r of this.oldCache.keys())this.cache.has(r)||t++;return Math.min(this._size+t,this.maxSize)}};ife.exports=pH});var gH=G((jOt,lfe)=>{"use strict";var L$e=Ce("events"),M$e=Ce("tls"),U$e=Ce("http2"),_$e=hH(),Ra=Symbol("currentStreamsCount"),sfe=Symbol("request"),Oc=Symbol("cachedOriginSet"),II=Symbol("gracefullyClosing"),H$e=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],j$e=(e,t,r)=>{let s=0,a=e.length;for(;s>>1;r(e[n],t)?s=n+1:a=n}return s},G$e=(e,t)=>e.remoteSettings.maxConcurrentStreams>t.remoteSettings.maxConcurrentStreams,dH=(e,t)=>{for(let r of e)r[Oc].lengtht[Oc].includes(s))&&r[Ra]+t[Ra]<=t.remoteSettings.maxConcurrentStreams&&afe(r)},q$e=(e,t)=>{for(let r of e)t[Oc].lengthr[Oc].includes(s))&&t[Ra]+r[Ra]<=r.remoteSettings.maxConcurrentStreams&&afe(t)},ofe=({agent:e,isFree:t})=>{let r={};for(let s in e.sessions){let n=e.sessions[s].filter(c=>{let f=c[sm.kCurrentStreamsCount]{e[II]=!0,e[Ra]===0&&e.close()},sm=class e extends L$e{constructor({timeout:t=6e4,maxSessions:r=1/0,maxFreeSessions:s=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=t,this.maxSessions=r,this.maxFreeSessions=s,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new _$e({maxSize:a})}static normalizeOrigin(t,r){return typeof t=="string"&&(t=new URL(t)),r&&t.hostname!==r&&(t.hostname=r),t.origin}normalizeOptions(t){let r="";if(t)for(let s of H$e)t[s]&&(r+=`:${t[s]}`);return r}_tryToCreateNewSession(t,r){if(!(t in this.queue)||!(r in this.queue[t]))return;let s=this.queue[t][r];this._sessionsCount{Array.isArray(s)?(s=[...s],a()):s=[{resolve:a,reject:n}];let c=this.normalizeOptions(r),f=e.normalizeOrigin(t,r&&r.servername);if(f===void 0){for(let{reject:E}of s)E(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(c in this.sessions){let E=this.sessions[c],C=-1,S=-1,x;for(let I of E){let R=I.remoteSettings.maxConcurrentStreams;if(R=R||I[II]||I.destroyed)continue;x||(C=R),N>S&&(x=I,S=N)}}if(x){if(s.length!==1){for(let{reject:I}of s){let R=new Error(`Expected the length of listeners to be 1, got ${s.length}. +Please report this to https://github.com/szmarczak/http2-wrapper/`);I(R)}return}s[0].resolve(x);return}}if(c in this.queue){if(f in this.queue[c]){this.queue[c][f].listeners.push(...s),this._tryToCreateNewSession(c,f);return}}else this.queue[c]={};let p=()=>{c in this.queue&&this.queue[c][f]===h&&(delete this.queue[c][f],Object.keys(this.queue[c]).length===0&&delete this.queue[c])},h=()=>{let E=`${f}:${c}`,C=!1;try{let S=U$e.connect(t,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});S[Ra]=0,S[II]=!1;let x=()=>S[Ra]{this.tlsSessionCache.set(E,N)}),S.once("error",N=>{for(let{reject:U}of s)U(N);this.tlsSessionCache.delete(E)}),S.setTimeout(this.timeout,()=>{S.destroy()}),S.once("close",()=>{if(C){I&&this._freeSessionsCount--,this._sessionsCount--;let N=this.sessions[c];N.splice(N.indexOf(S),1),N.length===0&&delete this.sessions[c]}else{let N=new Error("Session closed without receiving a SETTINGS frame");N.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:U}of s)U(N);p()}this._tryToCreateNewSession(c,f)});let R=()=>{if(!(!(c in this.queue)||!x())){for(let N of S[Oc])if(N in this.queue[c]){let{listeners:U}=this.queue[c][N];for(;U.length!==0&&x();)U.shift().resolve(S);let K=this.queue[c];if(K[N].listeners.length===0&&(delete K[N],Object.keys(K).length===0)){delete this.queue[c];break}if(!x())break}}};S.on("origin",()=>{S[Oc]=S.originSet,x()&&(R(),dH(this.sessions[c],S))}),S.once("remoteSettings",()=>{if(S.ref(),S.unref(),this._sessionsCount++,h.destroyed){let N=new Error("Agent has been destroyed");for(let U of s)U.reject(N);S.destroy();return}S[Oc]=S.originSet;{let N=this.sessions;if(c in N){let U=N[c];U.splice(j$e(U,S,G$e),0,S)}else N[c]=[S]}this._freeSessionsCount+=1,C=!0,this.emit("session",S),R(),p(),S[Ra]===0&&this._freeSessionsCount>this.maxFreeSessions&&S.close(),s.length!==0&&(this.getSession(f,r,s),s.length=0),S.on("remoteSettings",()=>{R(),dH(this.sessions[c],S)})}),S[sfe]=S.request,S.request=(N,U)=>{if(S[II])throw new Error("The session is gracefully closing. No new streams are allowed.");let K=S[sfe](N,U);return S.ref(),++S[Ra],S[Ra]===S.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,K.once("close",()=>{if(I=x(),--S[Ra],!S.destroyed&&!S.closed&&(q$e(this.sessions[c],S),x()&&!S.closed)){I||(this._freeSessionsCount++,I=!0);let $=S[Ra]===0;$&&S.unref(),$&&(this._freeSessionsCount>this.maxFreeSessions||S[II])?S.close():(dH(this.sessions[c],S),R())}}),K}}catch(S){for(let x of s)x.reject(S);p()}};h.listeners=s,h.completed=!1,h.destroyed=!1,this.queue[c][f]=h,this._tryToCreateNewSession(c,f)})}request(t,r,s,a){return new Promise((n,c)=>{this.getSession(t,r,[{reject:c,resolve:f=>{try{n(f.request(s,a))}catch(p){c(p)}}}])})}createConnection(t,r){return e.connect(t,r)}static connect(t,r){r.ALPNProtocols=["h2"];let s=t.port||443,a=t.hostname||t.host;return typeof r.servername>"u"&&(r.servername=a),M$e.connect(s,a,r)}closeFreeSessions(){for(let t of Object.values(this.sessions))for(let r of t)r[Ra]===0&&r.close()}destroy(t){for(let r of Object.values(this.sessions))for(let s of r)s.destroy(t);for(let r of Object.values(this.queue))for(let s of Object.values(r))s.destroyed=!0;this.queue={}}get freeSessions(){return ofe({agent:this,isFree:!0})}get busySessions(){return ofe({agent:this,isFree:!1})}};sm.kCurrentStreamsCount=Ra;sm.kGracefullyClosing=II;lfe.exports={Agent:sm,globalAgent:new sm}});var yH=G((GOt,cfe)=>{"use strict";var{Readable:Y$e}=Ce("stream"),mH=class extends Y$e{constructor(t,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=t,this.connection=t,this._dumped=!1}_destroy(t){this.req._request.destroy(t)}setTimeout(t,r){return this.req.setTimeout(t,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};cfe.exports=mH});var EH=G((qOt,ufe)=>{"use strict";ufe.exports=e=>{let t={protocol:e.protocol,hostname:typeof e.hostname=="string"&&e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,host:e.host,hash:e.hash,search:e.search,pathname:e.pathname,href:e.href,path:`${e.pathname||""}${e.search||""}`};return typeof e.port=="string"&&e.port.length!==0&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username||""}:${e.password||""}`),t}});var Afe=G((YOt,ffe)=>{"use strict";ffe.exports=(e,t,r)=>{for(let s of r)e.on(s,(...a)=>t.emit(s,...a))}});var hfe=G((WOt,pfe)=>{"use strict";pfe.exports=e=>{switch(e){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var gfe=G((KOt,dfe)=>{"use strict";var CI=(e,t,r)=>{dfe.exports[t]=class extends e{constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.name} [${t}]`,this.code=t}}};CI(TypeError,"ERR_INVALID_ARG_TYPE",e=>{let t=e[0].includes(".")?"property":"argument",r=e[1],s=Array.isArray(r);return s&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${e[0]}" ${t} must be ${s?"one of":"of"} type ${r}. Received ${typeof e[2]}`});CI(TypeError,"ERR_INVALID_PROTOCOL",e=>`Protocol "${e[0]}" not supported. Expected "${e[1]}"`);CI(Error,"ERR_HTTP_HEADERS_SENT",e=>`Cannot ${e[0]} headers after they are sent to the client`);CI(TypeError,"ERR_INVALID_HTTP_TOKEN",e=>`${e[0]} must be a valid HTTP token [${e[1]}]`);CI(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",e=>`Invalid value "${e[0]} for header "${e[1]}"`);CI(TypeError,"ERR_INVALID_CHAR",e=>`Invalid character in ${e[0]} [${e[1]}]`)});var vH=G((JOt,Bfe)=>{"use strict";var W$e=Ce("http2"),{Writable:V$e}=Ce("stream"),{Agent:mfe,globalAgent:K$e}=gH(),J$e=yH(),z$e=EH(),Z$e=Afe(),X$e=hfe(),{ERR_INVALID_ARG_TYPE:IH,ERR_INVALID_PROTOCOL:$$e,ERR_HTTP_HEADERS_SENT:yfe,ERR_INVALID_HTTP_TOKEN:eet,ERR_HTTP_INVALID_HEADER_VALUE:tet,ERR_INVALID_CHAR:ret}=gfe(),{HTTP2_HEADER_STATUS:Efe,HTTP2_HEADER_METHOD:Ife,HTTP2_HEADER_PATH:Cfe,HTTP2_METHOD_CONNECT:net}=W$e.constants,ra=Symbol("headers"),CH=Symbol("origin"),wH=Symbol("session"),wfe=Symbol("options"),XQ=Symbol("flushedHeaders"),VB=Symbol("jobs"),iet=/^[\^`\-\w!#$%&*+.|~]+$/,set=/[^\t\u0020-\u007E\u0080-\u00FF]/,BH=class extends V$e{constructor(t,r,s){super({autoDestroy:!1});let a=typeof t=="string"||t instanceof URL;if(a&&(t=z$e(t instanceof URL?t:new URL(t))),typeof r=="function"||r===void 0?(s=r,r=a?t:{...t}):r={...t,...r},r.h2session)this[wH]=r.h2session;else if(r.agent===!1)this.agent=new mfe({maxFreeSessions:0});else if(typeof r.agent>"u"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new mfe({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=K$e;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new IH("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new $$e(r.protocol,"https:");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,c=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:f}=r;if(r.timeout=void 0,this[ra]=Object.create(null),this[VB]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!("authorization"in this[ra])&&(this[ra].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[wfe]=r,n===443?(this[CH]=`https://${c}`,":authority"in this[ra]||(this[ra][":authority"]=c)):(this[CH]=`https://${c}:${n}`,":authority"in this[ra]||(this[ra][":authority"]=`${c}:${n}`)),f&&this.setTimeout(f),s&&this.once("response",s),this[XQ]=!1}get method(){return this[ra][Ife]}set method(t){t&&(this[ra][Ife]=t.toUpperCase())}get path(){return this[ra][Cfe]}set path(t){t&&(this[ra][Cfe]=t)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(t,r,s){if(this._mustNotHaveABody){s(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let a=()=>this._request.write(t,r,s);this._request?a():this[VB].push(a)}_final(t){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){t();return}this._request.end(t)};this._request?r():this[VB].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(t,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(t)}async flushHeaders(){if(this[XQ]||this.destroyed)return;this[XQ]=!0;let t=this.method===net,r=s=>{if(this._request=s,this.destroyed){s.destroy();return}t||Z$e(s,this,["timeout","continue","close","error"]);let a=c=>(...f)=>{!this.writable&&!this.destroyed?c(...f):this.once("finish",()=>{c(...f)})};s.once("response",a((c,f,p)=>{let h=new J$e(this.socket,s.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=c[Efe],h.headers=c,h.rawHeaders=p,h.once("end",()=>{this.aborted?(h.aborted=!0,h.emit("aborted")):(h.complete=!0,h.socket=null,h.connection=null)}),t?(h.upgrade=!0,this.emit("connect",h,s,Buffer.alloc(0))?this.emit("close"):s.destroy()):(s.on("data",E=>{!h._dumped&&!h.push(E)&&s.pause()}),s.once("end",()=>{h.push(null)}),this.emit("response",h)||h._dump())})),s.once("headers",a(c=>this.emit("information",{statusCode:c[Efe]}))),s.once("trailers",a((c,f,p)=>{let{res:h}=this;h.trailers=c,h.rawTrailers=p}));let{socket:n}=s.session;this.socket=n,this.connection=n;for(let c of this[VB])c();this.emit("socket",this.socket)};if(this[wH])try{r(this[wH].request(this[ra]))}catch(s){this.emit("error",s)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[CH],this[wfe],this[ra]))}catch(s){this.emit("error",s)}}}getHeader(t){if(typeof t!="string")throw new IH("name","string",t);return this[ra][t.toLowerCase()]}get headersSent(){return this[XQ]}removeHeader(t){if(typeof t!="string")throw new IH("name","string",t);if(this.headersSent)throw new yfe("remove");delete this[ra][t.toLowerCase()]}setHeader(t,r){if(this.headersSent)throw new yfe("set");if(typeof t!="string"||!iet.test(t)&&!X$e(t))throw new eet("Header name",t);if(typeof r>"u")throw new tet(r,t);if(set.test(r))throw new ret("header content",t);this[ra][t.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(t,r){let s=()=>this._request.setTimeout(t,r);return this._request?s():this[VB].push(s),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(t){}};Bfe.exports=BH});var Sfe=G((zOt,vfe)=>{"use strict";var oet=Ce("tls");vfe.exports=(e={},t=oet.connect)=>new Promise((r,s)=>{let a=!1,n,c=async()=>{await p,n.off("timeout",f),n.off("error",s),e.resolveSocket?(r({alpnProtocol:n.alpnProtocol,socket:n,timeout:a}),a&&(await Promise.resolve(),n.emit("timeout"))):(n.destroy(),r({alpnProtocol:n.alpnProtocol,timeout:a}))},f=async()=>{a=!0,c()},p=(async()=>{try{n=await t(e,c),n.on("error",s),n.once("timeout",f)}catch(h){s(h)}})()})});var Dfe=G((ZOt,bfe)=>{"use strict";var aet=Ce("net");bfe.exports=e=>{let t=e.host,r=e.headers&&e.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?t=r:t=r.slice(1,-1):t=r.split(":",1)[0]),aet.isIP(t)?"":t}});var kfe=G((XOt,bH)=>{"use strict";var Pfe=Ce("http"),SH=Ce("https"),cet=Sfe(),uet=hH(),fet=vH(),Aet=Dfe(),pet=EH(),$Q=new uet({maxSize:100}),KB=new Map,xfe=(e,t,r)=>{t._httpMessage={shouldKeepAlive:!0};let s=()=>{e.emit("free",t,r)};t.on("free",s);let a=()=>{e.removeSocket(t,r)};t.on("close",a);let n=()=>{e.removeSocket(t,r),t.off("close",a),t.off("free",s),t.off("agentRemove",n)};t.on("agentRemove",n),e.emit("free",t,r)},het=async e=>{let t=`${e.host}:${e.port}:${e.ALPNProtocols.sort()}`;if(!$Q.has(t)){if(KB.has(t))return(await KB.get(t)).alpnProtocol;let{path:r,agent:s}=e;e.path=e.socketPath;let a=cet(e);KB.set(t,a);try{let{socket:n,alpnProtocol:c}=await a;if($Q.set(t,c),e.path=r,c==="h2")n.destroy();else{let{globalAgent:f}=SH,p=SH.Agent.prototype.createConnection;s?s.createConnection===p?xfe(s,n,e):n.destroy():f.createConnection===p?xfe(f,n,e):n.destroy()}return KB.delete(t),c}catch(n){throw KB.delete(t),n}}return $Q.get(t)};bH.exports=async(e,t,r)=>{if((typeof e=="string"||e instanceof URL)&&(e=pet(new URL(e))),typeof t=="function"&&(r=t,t=void 0),t={ALPNProtocols:["h2","http/1.1"],...e,...t,resolveSocket:!0},!Array.isArray(t.ALPNProtocols)||t.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");t.protocol=t.protocol||"https:";let s=t.protocol==="https:";t.host=t.hostname||t.host||"localhost",t.session=t.tlsSession,t.servername=t.servername||Aet(t),t.port=t.port||(s?443:80),t._defaultAgent=s?SH.globalAgent:Pfe.globalAgent;let a=t.agent;if(a){if(a.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");t.agent=a[s?"https":"http"]}return s&&await het(t)==="h2"?(a&&(t.agent=a.http2),new fet(t,r)):Pfe.request(t,r)};bH.exports.protocolCache=$Q});var Tfe=G(($Ot,Qfe)=>{"use strict";var det=Ce("http2"),get=gH(),DH=vH(),met=yH(),yet=kfe(),Eet=(e,t,r)=>new DH(e,t,r),Iet=(e,t,r)=>{let s=new DH(e,t,r);return s.end(),s};Qfe.exports={...det,ClientRequest:DH,IncomingMessage:met,...get,request:Eet,get:Iet,auto:yet}});var xH=G(PH=>{"use strict";Object.defineProperty(PH,"__esModule",{value:!0});var Rfe=Up();PH.default=e=>Rfe.default.nodeStream(e)&&Rfe.default.function_(e.getBoundary)});var Lfe=G(kH=>{"use strict";Object.defineProperty(kH,"__esModule",{value:!0});var Nfe=Ce("fs"),Ofe=Ce("util"),Ffe=Up(),Cet=xH(),wet=Ofe.promisify(Nfe.stat);kH.default=async(e,t)=>{if(t&&"content-length"in t)return Number(t["content-length"]);if(!e)return 0;if(Ffe.default.string(e))return Buffer.byteLength(e);if(Ffe.default.buffer(e))return e.length;if(Cet.default(e))return Ofe.promisify(e.getLength.bind(e))();if(e instanceof Nfe.ReadStream){let{size:r}=await wet(e.path);return r===0?void 0:r}}});var TH=G(QH=>{"use strict";Object.defineProperty(QH,"__esModule",{value:!0});function Bet(e,t,r){let s={};for(let a of r)s[a]=(...n)=>{t.emit(a,...n)},e.on(a,s[a]);return()=>{for(let a of r)e.off(a,s[a])}}QH.default=Bet});var Mfe=G(RH=>{"use strict";Object.defineProperty(RH,"__esModule",{value:!0});RH.default=()=>{let e=[];return{once(t,r,s){t.once(r,s),e.push({origin:t,event:r,fn:s})},unhandleAll(){for(let t of e){let{origin:r,event:s,fn:a}=t;r.removeListener(s,a)}e.length=0}}}});var _fe=G(JB=>{"use strict";Object.defineProperty(JB,"__esModule",{value:!0});JB.TimeoutError=void 0;var vet=Ce("net"),bet=Mfe(),Ufe=Symbol("reentry"),Det=()=>{},eT=class extends Error{constructor(t,r){super(`Timeout awaiting '${r}' for ${t}ms`),this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};JB.TimeoutError=eT;JB.default=(e,t,r)=>{if(Ufe in e)return Det;e[Ufe]=!0;let s=[],{once:a,unhandleAll:n}=bet.default(),c=(C,S,x)=>{var I;let R=setTimeout(S,C,C,x);(I=R.unref)===null||I===void 0||I.call(R);let N=()=>{clearTimeout(R)};return s.push(N),N},{host:f,hostname:p}=r,h=(C,S)=>{e.destroy(new eT(C,S))},E=()=>{for(let C of s)C();n()};if(e.once("error",C=>{if(E(),e.listenerCount("error")===0)throw C}),e.once("close",E),a(e,"response",C=>{a(C,"end",E)}),typeof t.request<"u"&&c(t.request,h,"request"),typeof t.socket<"u"){let C=()=>{h(t.socket,"socket")};e.setTimeout(t.socket,C),s.push(()=>{e.removeListener("timeout",C)})}return a(e,"socket",C=>{var S;let{socketPath:x}=e;if(C.connecting){let I=!!(x??vet.isIP((S=p??f)!==null&&S!==void 0?S:"")!==0);if(typeof t.lookup<"u"&&!I&&typeof C.address().address>"u"){let R=c(t.lookup,h,"lookup");a(C,"lookup",R)}if(typeof t.connect<"u"){let R=()=>c(t.connect,h,"connect");I?a(C,"connect",R()):a(C,"lookup",N=>{N===null&&a(C,"connect",R())})}typeof t.secureConnect<"u"&&r.protocol==="https:"&&a(C,"connect",()=>{let R=c(t.secureConnect,h,"secureConnect");a(C,"secureConnect",R)})}if(typeof t.send<"u"){let I=()=>c(t.send,h,"send");C.connecting?a(C,"connect",()=>{a(e,"upload-complete",I())}):a(e,"upload-complete",I())}}),typeof t.response<"u"&&a(e,"upload-complete",()=>{let C=c(t.response,h,"response");a(e,"response",C)}),E}});var jfe=G(FH=>{"use strict";Object.defineProperty(FH,"__esModule",{value:!0});var Hfe=Up();FH.default=e=>{e=e;let t={protocol:e.protocol,hostname:Hfe.default.string(e.hostname)&&e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,host:e.host,hash:e.hash,search:e.search,pathname:e.pathname,href:e.href,path:`${e.pathname||""}${e.search||""}`};return Hfe.default.string(e.port)&&e.port.length>0&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username||""}:${e.password||""}`),t}});var Gfe=G(NH=>{"use strict";Object.defineProperty(NH,"__esModule",{value:!0});var Pet=Ce("url"),xet=["protocol","host","hostname","port","pathname","search"];NH.default=(e,t)=>{var r,s;if(t.path){if(t.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(t.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(t.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(t.search&&t.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!e){if(!t.protocol)throw new TypeError("No URL protocol specified");e=`${t.protocol}//${(s=(r=t.hostname)!==null&&r!==void 0?r:t.host)!==null&&s!==void 0?s:""}`}let a=new Pet.URL(e);if(t.path){let n=t.path.indexOf("?");n===-1?t.pathname=t.path:(t.pathname=t.path.slice(0,n),t.search=t.path.slice(n+1)),delete t.path}for(let n of xet)t[n]&&(a[n]=t[n].toString());return a}});var qfe=G(LH=>{"use strict";Object.defineProperty(LH,"__esModule",{value:!0});var OH=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(t,r){typeof t=="object"?this.weakMap.set(t,r):this.map.set(t,r)}get(t){return typeof t=="object"?this.weakMap.get(t):this.map.get(t)}has(t){return typeof t=="object"?this.weakMap.has(t):this.map.has(t)}};LH.default=OH});var UH=G(MH=>{"use strict";Object.defineProperty(MH,"__esModule",{value:!0});var ket=async e=>{let t=[],r=0;for await(let s of e)t.push(s),r+=Buffer.byteLength(s);return Buffer.isBuffer(t[0])?Buffer.concat(t,r):Buffer.from(t.join(""))};MH.default=ket});var Wfe=G(om=>{"use strict";Object.defineProperty(om,"__esModule",{value:!0});om.dnsLookupIpVersionToFamily=om.isDnsLookupIpVersion=void 0;var Yfe={auto:0,ipv4:4,ipv6:6};om.isDnsLookupIpVersion=e=>e in Yfe;om.dnsLookupIpVersionToFamily=e=>{if(om.isDnsLookupIpVersion(e))return Yfe[e];throw new Error("Invalid DNS lookup IP version")}});var _H=G(tT=>{"use strict";Object.defineProperty(tT,"__esModule",{value:!0});tT.isResponseOk=void 0;tT.isResponseOk=e=>{let{statusCode:t}=e,r=e.request.options.followRedirect?299:399;return t>=200&&t<=r||t===304}});var Kfe=G(HH=>{"use strict";Object.defineProperty(HH,"__esModule",{value:!0});var Vfe=new Set;HH.default=e=>{Vfe.has(e)||(Vfe.add(e),process.emitWarning(`Got: ${e}`,{type:"DeprecationWarning"}))}});var Jfe=G(jH=>{"use strict";Object.defineProperty(jH,"__esModule",{value:!0});var Di=Up(),Qet=(e,t)=>{if(Di.default.null_(e.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");Di.assert.any([Di.default.string,Di.default.undefined],e.encoding),Di.assert.any([Di.default.boolean,Di.default.undefined],e.resolveBodyOnly),Di.assert.any([Di.default.boolean,Di.default.undefined],e.methodRewriting),Di.assert.any([Di.default.boolean,Di.default.undefined],e.isStream),Di.assert.any([Di.default.string,Di.default.undefined],e.responseType),e.responseType===void 0&&(e.responseType="text");let{retry:r}=e;if(t?e.retry={...t.retry}:e.retry={calculateDelay:s=>s.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Di.default.object(r)?(e.retry={...e.retry,...r},e.retry.methods=[...new Set(e.retry.methods.map(s=>s.toUpperCase()))],e.retry.statusCodes=[...new Set(e.retry.statusCodes)],e.retry.errorCodes=[...new Set(e.retry.errorCodes)]):Di.default.number(r)&&(e.retry.limit=r),Di.default.undefined(e.retry.maxRetryAfter)&&(e.retry.maxRetryAfter=Math.min(...[e.timeout.request,e.timeout.connect].filter(Di.default.number))),Di.default.object(e.pagination)){t&&(e.pagination={...t.pagination,...e.pagination});let{pagination:s}=e;if(!Di.default.function_(s.transform))throw new Error("`options.pagination.transform` must be implemented");if(!Di.default.function_(s.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!Di.default.function_(s.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!Di.default.function_(s.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return e.responseType==="json"&&e.headers.accept===void 0&&(e.headers.accept="application/json"),e};jH.default=Qet});var zfe=G(zB=>{"use strict";Object.defineProperty(zB,"__esModule",{value:!0});zB.retryAfterStatusCodes=void 0;zB.retryAfterStatusCodes=new Set([413,429,503]);var Tet=({attemptCount:e,retryOptions:t,error:r,retryAfter:s})=>{if(e>t.limit)return 0;let a=t.methods.includes(r.options.method),n=t.errorCodes.includes(r.code),c=r.response&&t.statusCodes.includes(r.response.statusCode);if(!a||!n&&!c)return 0;if(r.response){if(s)return t.maxRetryAfter===void 0||s>t.maxRetryAfter?0:s;if(r.response.statusCode===413)return 0}let f=Math.random()*100;return 2**(e-1)*1e3+f};zB.default=Tet});var $B=G(_n=>{"use strict";Object.defineProperty(_n,"__esModule",{value:!0});_n.UnsupportedProtocolError=_n.ReadError=_n.TimeoutError=_n.UploadError=_n.CacheError=_n.HTTPError=_n.MaxRedirectsError=_n.RequestError=_n.setNonEnumerableProperties=_n.knownHookEvents=_n.withoutBody=_n.kIsNormalizedAlready=void 0;var Zfe=Ce("util"),Xfe=Ce("stream"),Ret=Ce("fs"),vd=Ce("url"),$fe=Ce("http"),GH=Ce("http"),Fet=Ce("https"),Net=pue(),Oet=Iue(),eAe=$ue(),Let=nfe(),Met=Tfe(),Uet=zQ(),lt=Up(),_et=Lfe(),tAe=xH(),Het=TH(),rAe=_fe(),jet=jfe(),nAe=Gfe(),Get=qfe(),qet=UH(),iAe=Wfe(),Yet=_H(),Sd=Kfe(),Wet=Jfe(),Vet=zfe(),qH,Co=Symbol("request"),iT=Symbol("response"),wI=Symbol("responseSize"),BI=Symbol("downloadedSize"),vI=Symbol("bodySize"),SI=Symbol("uploadedSize"),rT=Symbol("serverResponsesPiped"),sAe=Symbol("unproxyEvents"),oAe=Symbol("isFromCache"),YH=Symbol("cancelTimeouts"),aAe=Symbol("startedReading"),bI=Symbol("stopReading"),nT=Symbol("triggerRead"),bd=Symbol("body"),ZB=Symbol("jobs"),lAe=Symbol("originalResponse"),cAe=Symbol("retryTimeout");_n.kIsNormalizedAlready=Symbol("isNormalizedAlready");var Ket=lt.default.string(process.versions.brotli);_n.withoutBody=new Set(["GET","HEAD"]);_n.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function Jet(e){for(let t in e){let r=e[t];if(!lt.default.string(r)&&!lt.default.number(r)&&!lt.default.boolean(r)&&!lt.default.null_(r)&&!lt.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function zet(e){return lt.default.object(e)&&!("statusCode"in e)}var WH=new Get.default,Zet=async e=>new Promise((t,r)=>{let s=a=>{r(a)};e.pending||t(),e.once("error",s),e.once("ready",()=>{e.off("error",s),t()})}),Xet=new Set([300,301,302,303,304,307,308]),$et=["context","body","json","form"];_n.setNonEnumerableProperties=(e,t)=>{let r={};for(let s of e)if(s)for(let a of $et)a in s&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:s[a]});Object.defineProperties(t,r)};var ps=class extends Error{constructor(t,r,s){var a;if(super(t),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,s instanceof fT?(Object.defineProperty(this,"request",{enumerable:!1,value:s}),Object.defineProperty(this,"response",{enumerable:!1,value:s[iT]}),Object.defineProperty(this,"options",{enumerable:!1,value:s.options})):Object.defineProperty(this,"options",{enumerable:!1,value:s}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,lt.default.string(r.stack)&<.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,c=this.stack.slice(n).split(` +`).reverse(),f=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` +`).reverse();for(;f.length!==0&&f[0]===c[0];)c.shift();this.stack=`${this.stack.slice(0,n)}${c.reverse().join(` +`)}${f.reverse().join(` +`)}`}}};_n.RequestError=ps;var sT=class extends ps{constructor(t){super(`Redirected ${t.options.maxRedirects} times. Aborting.`,{},t),this.name="MaxRedirectsError"}};_n.MaxRedirectsError=sT;var oT=class extends ps{constructor(t){super(`Response code ${t.statusCode} (${t.statusMessage})`,{},t.request),this.name="HTTPError"}};_n.HTTPError=oT;var aT=class extends ps{constructor(t,r){super(t.message,t,r),this.name="CacheError"}};_n.CacheError=aT;var lT=class extends ps{constructor(t,r){super(t.message,t,r),this.name="UploadError"}};_n.UploadError=lT;var cT=class extends ps{constructor(t,r,s){super(t.message,t,s),this.name="TimeoutError",this.event=t.event,this.timings=r}};_n.TimeoutError=cT;var XB=class extends ps{constructor(t,r){super(t.message,t,r),this.name="ReadError"}};_n.ReadError=XB;var uT=class extends ps{constructor(t){super(`Unsupported protocol "${t.url.protocol}"`,{},t),this.name="UnsupportedProtocolError"}};_n.UnsupportedProtocolError=uT;var ett=["socket","connect","continue","information","upgrade","timeout"],fT=class extends Xfe.Duplex{constructor(t,r={},s){super({autoDestroy:!1,highWaterMark:0}),this[BI]=0,this[SI]=0,this.requestInitialized=!1,this[rT]=new Set,this.redirects=[],this[bI]=!1,this[nT]=!1,this[ZB]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on("pipe",h=>{h.prependListener("data",a),h.on("data",n),h.prependListener("end",a),h.on("end",n)}),this.on("unpipe",h=>{h.off("data",a),h.off("data",n),h.off("end",a),h.off("end",n)}),this.on("pipe",h=>{h instanceof GH.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:c,body:f,form:p}=r;if((c||f||p)&&this._lockWrite(),_n.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(t,r,s)}catch(h){lt.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof Ret.ReadStream&&await Zet(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError("Missing `url` property");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[Co])===null||h===void 0||h.destroy();return}for(let C of this[ZB])C();this[ZB].length=0,this.requestInitialized=!0}catch(E){if(E instanceof ps){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(t,r,s){var a,n,c,f,p;let h=r;if(lt.default.object(t)&&!lt.default.urlInstance(t))r={...s,...t,...r};else{if(t&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...s,...r},t!==void 0&&(r.url=t),lt.default.urlInstance(r.url)&&(r.url=new vd.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),lt.assert.any([lt.default.string,lt.default.undefined],r.method),lt.assert.any([lt.default.object,lt.default.undefined],r.headers),lt.assert.any([lt.default.string,lt.default.urlInstance,lt.default.undefined],r.prefixUrl),lt.assert.any([lt.default.object,lt.default.undefined],r.cookieJar),lt.assert.any([lt.default.object,lt.default.string,lt.default.undefined],r.searchParams),lt.assert.any([lt.default.object,lt.default.string,lt.default.undefined],r.cache),lt.assert.any([lt.default.object,lt.default.number,lt.default.undefined],r.timeout),lt.assert.any([lt.default.object,lt.default.undefined],r.context),lt.assert.any([lt.default.object,lt.default.undefined],r.hooks),lt.assert.any([lt.default.boolean,lt.default.undefined],r.decompress),lt.assert.any([lt.default.boolean,lt.default.undefined],r.ignoreInvalidCookies),lt.assert.any([lt.default.boolean,lt.default.undefined],r.followRedirect),lt.assert.any([lt.default.number,lt.default.undefined],r.maxRedirects),lt.assert.any([lt.default.boolean,lt.default.undefined],r.throwHttpErrors),lt.assert.any([lt.default.boolean,lt.default.undefined],r.http2),lt.assert.any([lt.default.boolean,lt.default.undefined],r.allowGetBody),lt.assert.any([lt.default.string,lt.default.undefined],r.localAddress),lt.assert.any([iAe.isDnsLookupIpVersion,lt.default.undefined],r.dnsLookupIpVersion),lt.assert.any([lt.default.object,lt.default.undefined],r.https),lt.assert.any([lt.default.boolean,lt.default.undefined],r.rejectUnauthorized),r.https&&(lt.assert.any([lt.default.boolean,lt.default.undefined],r.https.rejectUnauthorized),lt.assert.any([lt.default.function_,lt.default.undefined],r.https.checkServerIdentity),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.certificateAuthority),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.key),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.certificate),lt.assert.any([lt.default.string,lt.default.undefined],r.https.passphrase),lt.assert.any([lt.default.string,lt.default.buffer,lt.default.array,lt.default.undefined],r.https.pfx)),lt.assert.any([lt.default.object,lt.default.undefined],r.cacheOptions),lt.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===s?.headers?r.headers={...r.headers}:r.headers=Uet({...s?.headers,...r.headers}),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==s?.searchParams){let x;if(lt.default.string(r.searchParams)||r.searchParams instanceof vd.URLSearchParams)x=new vd.URLSearchParams(r.searchParams);else{Jet(r.searchParams),x=new vd.URLSearchParams;for(let I in r.searchParams){let R=r.searchParams[I];R===null?x.append(I,""):R!==void 0&&x.append(I,R)}}(a=s?.searchParams)===null||a===void 0||a.forEach((I,R)=>{x.has(R)||x.append(R,I)}),r.searchParams=x}if(r.username=(n=r.username)!==null&&n!==void 0?n:"",r.password=(c=r.password)!==null&&c!==void 0?c:"",lt.default.undefined(r.prefixUrl)?r.prefixUrl=(f=s?.prefixUrl)!==null&&f!==void 0?f:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),lt.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=nAe.default(r.prefixUrl+r.url,r)}else(lt.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=nAe.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:x}=r;Object.defineProperty(r,"prefixUrl",{set:R=>{let N=r.url;if(!N.href.startsWith(R))throw new Error(`Cannot change \`prefixUrl\` from ${x} to ${R}: ${N.href}`);r.url=new vd.URL(R+N.href.slice(x.length)),x=R},get:()=>x});let{protocol:I}=r.url;if(I==="unix:"&&(I="http:",r.url=new vd.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),I!=="http:"&&I!=="https:")throw new uT(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:x,getCookieString:I}=E;lt.assert.function_(x),lt.assert.function_(I),x.length===4&&I.length===0&&(x=Zfe.promisify(x.bind(r.cookieJar)),I=Zfe.promisify(I.bind(r.cookieJar)),r.cookieJar={setCookie:x,getCookieString:I})}let{cache:C}=r;if(C&&(WH.has(C)||WH.set(C,new eAe((x,I)=>{let R=x[Co](x,I);return lt.default.promise(R)&&(R.once=(N,U)=>{if(N==="error")R.catch(U);else if(N==="abort")(async()=>{try{(await R).once("abort",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${N}`);return R}),R},C))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)qH||(qH=new Oet.default),r.dnsCache=qH;else if(!lt.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${lt.default(r.dnsCache)}`);lt.default.number(r.timeout)?r.timeout={request:r.timeout}:s&&r.timeout!==s.timeout?r.timeout={...s.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let S=r.hooks===s?.hooks;r.hooks={...r.hooks};for(let x of _n.knownHookEvents)if(x in r.hooks)if(lt.default.array(r.hooks[x]))r.hooks[x]=[...r.hooks[x]];else throw new TypeError(`Parameter \`${x}\` must be an Array, got ${lt.default(r.hooks[x])}`);else r.hooks[x]=[];if(s&&!S)for(let x of _n.knownHookEvents)s.hooks[x].length>0&&(r.hooks[x]=[...s.hooks[x],...r.hooks[x]]);if("family"in r&&Sd.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),s?.https&&(r.https={...s.https,...r.https}),"rejectUnauthorized"in r&&Sd.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&Sd.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&Sd.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&Sd.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&Sd.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&Sd.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&Sd.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let x in r.agent)if(x!=="http"&&x!=="https"&&x!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${x}\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,_n.setNonEnumerableProperties([s,h],r),Wet.default(r,s)}_lockWrite(){let t=()=>{throw new TypeError("The payload has been already provided")};this.write=t,this.end=t}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:t}=this,{headers:r}=t,s=!lt.default.undefined(t.form),a=!lt.default.undefined(t.json),n=!lt.default.undefined(t.body),c=s||a||n,f=_n.withoutBody.has(t.method)&&!(t.method==="GET"&&t.allowGetBody);if(this._cannotHaveBody=f,c){if(f)throw new TypeError(`The \`${t.method}\` method cannot be used with a body`);if([n,s,a].filter(p=>p).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(n&&!(t.body instanceof Xfe.Readable)&&!lt.default.string(t.body)&&!lt.default.buffer(t.body)&&!tAe.default(t.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(s&&!lt.default.object(t.form))throw new TypeError("The `form` option must be an Object");{let p=!lt.default.string(r["content-type"]);n?(tAe.default(t.body)&&p&&(r["content-type"]=`multipart/form-data; boundary=${t.body.getBoundary()}`),this[bd]=t.body):s?(p&&(r["content-type"]="application/x-www-form-urlencoded"),this[bd]=new vd.URLSearchParams(t.form).toString()):(p&&(r["content-type"]="application/json"),this[bd]=t.stringifyJson(t.json));let h=await _et.default(this[bd],t.headers);lt.default.undefined(r["content-length"])&<.default.undefined(r["transfer-encoding"])&&!f&&!lt.default.undefined(h)&&(r["content-length"]=String(h))}}else f?this._lockWrite():this._unlockWrite();this[vI]=Number(r["content-length"])||void 0}async _onResponseBase(t){let{options:r}=this,{url:s}=r;this[lAe]=t,r.decompress&&(t=Let(t));let a=t.statusCode,n=t;n.statusMessage=n.statusMessage?n.statusMessage:$fe.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=t.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[oAe]=n.isFromCache,this[wI]=Number(t.headers["content-length"])||void 0,this[iT]=t,t.once("end",()=>{this[wI]=this[BI],this.emit("downloadProgress",this.downloadProgress)}),t.once("error",f=>{t.destroy(),this._beforeError(new XB(f,this))}),t.once("aborted",()=>{this._beforeError(new XB({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let c=t.headers["set-cookie"];if(lt.default.object(r.cookieJar)&&c){let f=c.map(async p=>r.cookieJar.setCookie(p,s.toString()));r.ignoreInvalidCookies&&(f=f.map(async p=>p.catch(()=>{})));try{await Promise.all(f)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&t.headers.location&&Xet.has(a)){if(t.resume(),this[Co]&&(this[YH](),delete this[Co],this[sAe]()),(a===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[bd]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new sT(this));return}try{let p=Buffer.from(t.headers.location,"binary").toString(),h=new vd.URL(p,s),E=h.toString();decodeURI(E),h.hostname!==s.hostname||h.port!==s.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let C of r.hooks.beforeRedirect)await C(r,n);this.emit("redirect",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!Yet.isResponseOk(n)){this._beforeError(new oT(n));return}t.on("readable",()=>{this[nT]&&this._read()}),this.on("resume",()=>{t.resume()}),this.on("pause",()=>{t.pause()}),t.once("end",()=>{this.push(null)}),this.emit("response",t);for(let f of this[rT])if(!f.headersSent){for(let p in t.headers){let h=r.decompress?p!=="content-encoding":!0,E=t.headers[p];h&&f.setHeader(p,E)}f.statusCode=a}}async _onResponse(t){try{await this._onResponseBase(t)}catch(r){this._beforeError(r)}}_onRequest(t){let{options:r}=this,{timeout:s,url:a}=r;Net.default(t),this[YH]=rAe.default(t,s,a);let n=r.cache?"cacheableResponse":"response";t.once(n,p=>{this._onResponse(p)}),t.once("error",p=>{var h;t.destroy(),(h=t.res)===null||h===void 0||h.removeAllListeners("end"),p=p instanceof rAe.TimeoutError?new cT(p,this.timings,this):new ps(p.message,p,this),this._beforeError(p)}),this[sAe]=Het.default(t,this,ett),this[Co]=t,this.emit("uploadProgress",this.uploadProgress);let c=this[bd],f=this.redirects.length===0?this:t;lt.default.nodeStream(c)?(c.pipe(f),c.once("error",p=>{this._beforeError(new lT(p,this))})):(this._unlockWrite(),lt.default.undefined(c)?(this._cannotHaveBody||this._noPipe)&&(f.end(),this._lockWrite()):(this._writeRequest(c,void 0,()=>{}),f.end(),this._lockWrite())),this.emit("request",t)}async _createCacheableRequest(t,r){return new Promise((s,a)=>{Object.assign(r,jet.default(t)),delete r.url;let n,c=WH.get(r.cache)(r,async f=>{f._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",f),s(f)});r.url=t,c.once("error",a),c.once("request",async f=>{n=f,s(n)})})}async _makeRequest(){var t,r,s,a,n;let{options:c}=this,{headers:f}=c;for(let U in f)if(lt.default.undefined(f[U]))delete f[U];else if(lt.default.null_(f[U]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${U}\` header`);if(c.decompress&<.default.undefined(f["accept-encoding"])&&(f["accept-encoding"]=Ket?"gzip, deflate, br":"gzip, deflate"),c.cookieJar){let U=await c.cookieJar.getCookieString(c.url.toString());lt.default.nonEmptyString(U)&&(c.headers.cookie=U)}for(let U of c.hooks.beforeRequest){let K=await U(c);if(!lt.default.undefined(K)){c.request=()=>K;break}}c.body&&this[bd]!==c.body&&(this[bd]=c.body);let{agent:p,request:h,timeout:E,url:C}=c;if(c.dnsCache&&!("lookup"in c)&&(c.lookup=c.dnsCache.lookup),C.hostname==="unix"){let U=/(?.+?):(?.+)/.exec(`${C.pathname}${C.search}`);if(U?.groups){let{socketPath:K,path:$}=U.groups;Object.assign(c,{socketPath:K,path:$,host:""})}}let S=C.protocol==="https:",x;c.http2?x=Met.auto:x=S?Fet.request:$fe.request;let I=(t=c.request)!==null&&t!==void 0?t:x,R=c.cache?this._createCacheableRequest:I;p&&!c.http2&&(c.agent=p[S?"https":"http"]),c[Co]=I,delete c.request,delete c.timeout;let N=c;if(N.shared=(r=c.cacheOptions)===null||r===void 0?void 0:r.shared,N.cacheHeuristic=(s=c.cacheOptions)===null||s===void 0?void 0:s.cacheHeuristic,N.immutableMinTimeToLive=(a=c.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,N.ignoreCargoCult=(n=c.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,c.dnsLookupIpVersion!==void 0)try{N.family=iAe.dnsLookupIpVersionToFamily(c.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}c.https&&("rejectUnauthorized"in c.https&&(N.rejectUnauthorized=c.https.rejectUnauthorized),c.https.checkServerIdentity&&(N.checkServerIdentity=c.https.checkServerIdentity),c.https.certificateAuthority&&(N.ca=c.https.certificateAuthority),c.https.certificate&&(N.cert=c.https.certificate),c.https.key&&(N.key=c.https.key),c.https.passphrase&&(N.passphrase=c.https.passphrase),c.https.pfx&&(N.pfx=c.https.pfx));try{let U=await R(C,N);lt.default.undefined(U)&&(U=x(C,N)),c.request=h,c.timeout=E,c.agent=p,c.https&&("rejectUnauthorized"in c.https&&delete N.rejectUnauthorized,c.https.checkServerIdentity&&delete N.checkServerIdentity,c.https.certificateAuthority&&delete N.ca,c.https.certificate&&delete N.cert,c.https.key&&delete N.key,c.https.passphrase&&delete N.passphrase,c.https.pfx&&delete N.pfx),zet(U)?this._onRequest(U):this.writable?(this.once("finish",()=>{this._onResponse(U)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(U)}catch(U){throw U instanceof eAe.CacheError?new aT(U,this):new ps(U.message,U,this)}}async _error(t){try{for(let r of this.options.hooks.beforeError)t=await r(t)}catch(r){t=new ps(r.message,r,this)}this.destroy(t)}_beforeError(t){if(this[bI])return;let{options:r}=this,s=this.retryCount+1;this[bI]=!0,t instanceof ps||(t=new ps(t.message,t,this));let a=t,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await qet.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let c;try{let f;n&&"retry-after"in n.headers&&(f=Number(n.headers["retry-after"]),Number.isNaN(f)?(f=Date.parse(n.headers["retry-after"])-Date.now(),f<=0&&(f=1)):f*=1e3),c=await r.retry.calculateDelay({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:Vet.default({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:0})})}catch(f){this._error(new ps(f.message,f,this));return}if(c){let f=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,s)}catch(p){this._error(new ps(p.message,t,this));return}this.destroyed||(this.destroy(),this.emit("retry",s,t))};this[cAe]=setTimeout(f,c);return}}this._error(a)})()}_read(){this[nT]=!0;let t=this[iT];if(t&&!this[bI]){t.readableLength&&(this[nT]=!1);let r;for(;(r=t.read())!==null;){this[BI]+=r.length,this[aAe]=!0;let s=this.downloadProgress;s.percent<1&&this.emit("downloadProgress",s),this.push(r)}}}_write(t,r,s){let a=()=>{this._writeRequest(t,r,s)};this.requestInitialized?a():this[ZB].push(a)}_writeRequest(t,r,s){this[Co].destroyed||(this._progressCallbacks.push(()=>{this[SI]+=Buffer.byteLength(t,r);let a=this.uploadProgress;a.percent<1&&this.emit("uploadProgress",a)}),this[Co].write(t,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),s(a)}))}_final(t){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Co in this)){t();return}if(this[Co].destroyed){t();return}this[Co].end(s=>{s||(this[vI]=this[SI],this.emit("uploadProgress",this.uploadProgress),this[Co].emit("upload-complete")),t(s)})};this.requestInitialized?r():this[ZB].push(r)}_destroy(t,r){var s;this[bI]=!0,clearTimeout(this[cAe]),Co in this&&(this[YH](),!((s=this[iT])===null||s===void 0)&&s.complete||this[Co].destroy()),t!==null&&!lt.default.undefined(t)&&!(t instanceof ps)&&(t=new ps(t.message,t,this)),r(t)}get _isAboutToError(){return this[bI]}get ip(){var t;return(t=this.socket)===null||t===void 0?void 0:t.remoteAddress}get aborted(){var t,r,s;return((r=(t=this[Co])===null||t===void 0?void 0:t.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((s=this[lAe])===null||s===void 0)&&s.complete)}get socket(){var t,r;return(r=(t=this[Co])===null||t===void 0?void 0:t.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let t;return this[wI]?t=this[BI]/this[wI]:this[wI]===this[BI]?t=1:t=0,{percent:t,transferred:this[BI],total:this[wI]}}get uploadProgress(){let t;return this[vI]?t=this[SI]/this[vI]:this[vI]===this[SI]?t=1:t=0,{percent:t,transferred:this[SI],total:this[vI]}}get timings(){var t;return(t=this[Co])===null||t===void 0?void 0:t.timings}get isFromCache(){return this[oAe]}pipe(t,r){if(this[aAe])throw new Error("Failed to pipe. The response has been emitted already.");return t instanceof GH.ServerResponse&&this[rT].add(t),super.pipe(t,r)}unpipe(t){return t instanceof GH.ServerResponse&&this[rT].delete(t),super.unpipe(t),this}};_n.default=fT});var ev=G(Gu=>{"use strict";var ttt=Gu&&Gu.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),rtt=Gu&&Gu.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&ttt(t,e,r)};Object.defineProperty(Gu,"__esModule",{value:!0});Gu.CancelError=Gu.ParseError=void 0;var uAe=$B(),VH=class extends uAe.RequestError{constructor(t,r){let{options:s}=r.request;super(`${t.message} in "${s.url.toString()}"`,t,r.request),this.name="ParseError"}};Gu.ParseError=VH;var KH=class extends uAe.RequestError{constructor(t){super("Promise was canceled",{},t),this.name="CancelError"}get isCanceled(){return!0}};Gu.CancelError=KH;rtt($B(),Gu)});var AAe=G(JH=>{"use strict";Object.defineProperty(JH,"__esModule",{value:!0});var fAe=ev(),ntt=(e,t,r,s)=>{let{rawBody:a}=e;try{if(t==="text")return a.toString(s);if(t==="json")return a.length===0?"":r(a.toString());if(t==="buffer")return a;throw new fAe.ParseError({message:`Unknown body type '${t}'`,name:"Error"},e)}catch(n){throw new fAe.ParseError(n,e)}};JH.default=ntt});var zH=G(Dd=>{"use strict";var itt=Dd&&Dd.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),stt=Dd&&Dd.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&itt(t,e,r)};Object.defineProperty(Dd,"__esModule",{value:!0});var ott=Ce("events"),att=Up(),ltt=fue(),AT=ev(),pAe=AAe(),hAe=$B(),ctt=TH(),utt=UH(),dAe=_H(),ftt=["request","response","redirect","uploadProgress","downloadProgress"];function gAe(e){let t,r,s=new ott.EventEmitter,a=new ltt((c,f,p)=>{let h=E=>{let C=new hAe.default(void 0,e);C.retryCount=E,C._noPipe=!0,p(()=>C.destroy()),p.shouldReject=!1,p(()=>f(new AT.CancelError(C))),t=C,C.once("response",async I=>{var R;if(I.retryCount=E,I.request.aborted)return;let N;try{N=await utt.default(C),I.rawBody=N}catch{return}if(C._isAboutToError)return;let U=((R=I.headers["content-encoding"])!==null&&R!==void 0?R:"").toLowerCase(),K=["gzip","deflate","br"].includes(U),{options:$}=C;if(K&&!$.decompress)I.body=N;else try{I.body=pAe.default(I,$.responseType,$.parseJson,$.encoding)}catch(ie){if(I.body=N.toString(),dAe.isResponseOk(I)){C._beforeError(ie);return}}try{for(let[ie,fe]of $.hooks.afterResponse.entries())I=await fe(I,async le=>{let ge=hAe.default.normalizeArguments(void 0,{...le,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},$);ge.hooks.afterResponse=ge.hooks.afterResponse.slice(0,ie);for(let De of ge.hooks.beforeRetry)await De(ge);let pe=gAe(ge);return p(()=>{pe.catch(()=>{}),pe.cancel()}),pe})}catch(ie){C._beforeError(new AT.RequestError(ie.message,ie,C));return}if(!dAe.isResponseOk(I)){C._beforeError(new AT.HTTPError(I));return}r=I,c(C.options.resolveBodyOnly?I.body:I)});let S=I=>{if(a.isCanceled)return;let{options:R}=C;if(I instanceof AT.HTTPError&&!R.throwHttpErrors){let{response:N}=I;c(C.options.resolveBodyOnly?N.body:N);return}f(I)};C.once("error",S);let x=C.options.body;C.once("retry",(I,R)=>{var N,U;if(x===((N=R.request)===null||N===void 0?void 0:N.options.body)&&att.default.nodeStream((U=R.request)===null||U===void 0?void 0:U.options.body)){S(R);return}h(I)}),ctt.default(C,s,ftt)};h(0)});a.on=(c,f)=>(s.on(c,f),a);let n=c=>{let f=(async()=>{await a;let{options:p}=r.request;return pAe.default(r,c,p.parseJson,p.encoding)})();return Object.defineProperties(f,Object.getOwnPropertyDescriptors(a)),f};return a.json=()=>{let{headers:c}=t.options;return!t.writableFinished&&c.accept===void 0&&(c.accept="application/json"),n("json")},a.buffer=()=>n("buffer"),a.text=()=>n("text"),a}Dd.default=gAe;stt(ev(),Dd)});var mAe=G(ZH=>{"use strict";Object.defineProperty(ZH,"__esModule",{value:!0});var Att=ev();function ptt(e,...t){let r=(async()=>{if(e instanceof Att.RequestError)try{for(let a of t)if(a)for(let n of a)e=await n(e)}catch(a){e=a}throw e})(),s=()=>r;return r.json=s,r.text=s,r.buffer=s,r.on=s,r}ZH.default=ptt});var IAe=G(XH=>{"use strict";Object.defineProperty(XH,"__esModule",{value:!0});var yAe=Up();function EAe(e){for(let t of Object.values(e))(yAe.default.plainObject(t)||yAe.default.array(t))&&EAe(t);return Object.freeze(e)}XH.default=EAe});var wAe=G(CAe=>{"use strict";Object.defineProperty(CAe,"__esModule",{value:!0})});var $H=G(Mc=>{"use strict";var htt=Mc&&Mc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),dtt=Mc&&Mc.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&htt(t,e,r)};Object.defineProperty(Mc,"__esModule",{value:!0});Mc.defaultHandler=void 0;var BAe=Up(),Lc=zH(),gtt=mAe(),hT=$B(),mtt=IAe(),ytt={RequestError:Lc.RequestError,CacheError:Lc.CacheError,ReadError:Lc.ReadError,HTTPError:Lc.HTTPError,MaxRedirectsError:Lc.MaxRedirectsError,TimeoutError:Lc.TimeoutError,ParseError:Lc.ParseError,CancelError:Lc.CancelError,UnsupportedProtocolError:Lc.UnsupportedProtocolError,UploadError:Lc.UploadError},Ett=async e=>new Promise(t=>{setTimeout(t,e)}),{normalizeArguments:pT}=hT.default,vAe=(...e)=>{let t;for(let r of e)t=pT(void 0,r,t);return t},Itt=e=>e.isStream?new hT.default(void 0,e):Lc.default(e),Ctt=e=>"defaults"in e&&"options"in e.defaults,wtt=["get","post","put","patch","head","delete"];Mc.defaultHandler=(e,t)=>t(e);var SAe=(e,t)=>{if(e)for(let r of e)r(t)},bAe=e=>{e._rawHandlers=e.handlers,e.handlers=e.handlers.map(s=>(a,n)=>{let c,f=s(a,p=>(c=n(p),c));if(f!==c&&!a.isStream&&c){let p=f,{then:h,catch:E,finally:C}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(c)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(c)),p.then=h,p.catch=E,p.finally=C}return f});let t=(s,a={},n)=>{var c,f;let p=0,h=E=>e.handlers[p++](E,p===e.handlers.length?Itt:h);if(BAe.default.plainObject(s)){let E={...s,...a};hT.setNonEnumerableProperties([s,a],E),a=E,s=void 0}try{let E;try{SAe(e.options.hooks.init,a),SAe((c=a.hooks)===null||c===void 0?void 0:c.init,a)}catch(S){E=S}let C=pT(s,a,n??e.options);if(C[hT.kIsNormalizedAlready]=!0,E)throw new Lc.RequestError(E.message,E,C);return h(C)}catch(E){if(a.isStream)throw E;return gtt.default(E,e.options.hooks.beforeError,(f=a.hooks)===null||f===void 0?void 0:f.beforeError)}};t.extend=(...s)=>{let a=[e.options],n=[...e._rawHandlers],c;for(let f of s)Ctt(f)?(a.push(f.defaults.options),n.push(...f.defaults._rawHandlers),c=f.defaults.mutableDefaults):(a.push(f),"handlers"in f&&n.push(...f.handlers),c=f.mutableDefaults);return n=n.filter(f=>f!==Mc.defaultHandler),n.length===0&&n.push(Mc.defaultHandler),bAe({options:vAe(...a),handlers:n,mutableDefaults:!!c})};let r=async function*(s,a){let n=pT(s,a,e.options);n.resolveBodyOnly=!1;let c=n.pagination;if(!BAe.default.object(c))throw new TypeError("`options.pagination` must be implemented");let f=[],{countLimit:p}=c,h=0;for(;h{let n=[];for await(let c of r(s,a))n.push(c);return n},t.paginate.each=r,t.stream=(s,a)=>t(s,{...a,isStream:!0});for(let s of wtt)t[s]=(a,n)=>t(a,{...n,method:s}),t.stream[s]=(a,n)=>t(a,{...n,method:s,isStream:!0});return Object.assign(t,ytt),Object.defineProperty(t,"defaults",{value:e.mutableDefaults?e:mtt.default(e),writable:e.mutableDefaults,configurable:e.mutableDefaults,enumerable:!0}),t.mergeOptions=vAe,t};Mc.default=bAe;dtt(wAe(),Mc)});var xAe=G((_p,dT)=>{"use strict";var Btt=_p&&_p.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),DAe=_p&&_p.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&Btt(t,e,r)};Object.defineProperty(_p,"__esModule",{value:!0});var vtt=Ce("url"),PAe=$H(),Stt={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:e})=>e},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:e=>e.request.options.responseType==="json"?e.body:JSON.parse(e.body),paginate:e=>{if(!Reflect.has(e.headers,"link"))return!1;let t=e.headers.link.split(","),r;for(let s of t){let a=s.split(";");if(a[1].includes("next")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new vtt.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:e=>JSON.parse(e),stringifyJson:e=>JSON.stringify(e),cacheOptions:{}},handlers:[PAe.defaultHandler],mutableDefaults:!1},ej=PAe.default(Stt);_p.default=ej;dT.exports=ej;dT.exports.default=ej;dT.exports.__esModule=!0;DAe($H(),_p);DAe(zH(),_p)});var nn={};Vt(nn,{Method:()=>NAe,del:()=>ktt,get:()=>nj,getNetworkSettings:()=>FAe,post:()=>ij,put:()=>xtt,request:()=>tv});async function tj(e){return $l(QAe,e,()=>ae.readFilePromise(e).then(t=>(QAe.set(e,t),t)))}function Ptt({statusCode:e,statusMessage:t},r){let s=Gt(r,e,dt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${e}`;return eI(r,`${s}${t?` (${t})`:""}`,a)}async function gT(e,{configuration:t,customErrorMessage:r}){try{return await e}catch(s){if(s.name!=="HTTPError")throw s;let a=r?.(s,t)??s.response.body?.error;a==null&&(s.message.startsWith("Response code")?a="The remote server failed to provide the requested resource":a=s.message),s.code==="ETIMEDOUT"&&s.event==="socket"&&(a+=`(can be increased via ${Gt(t,"httpTimeout",dt.SETTING)})`);let n=new Lt(35,a,c=>{s.response&&c.reportError(35,` ${$f(t,{label:"Response Code",value:Uu(dt.NO_HINT,Ptt(s.response,t))})}`),s.request&&(c.reportError(35,` ${$f(t,{label:"Request Method",value:Uu(dt.NO_HINT,s.request.options.method)})}`),c.reportError(35,` ${$f(t,{label:"Request URL",value:Uu(dt.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&c.reportError(35,` ${$f(t,{label:"Request Redirects",value:Uu(dt.NO_HINT,Y4(t,s.request.redirects,dt.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&c.reportError(35,` ${$f(t,{label:"Request Retry Count",value:Uu(dt.NO_HINT,`${Gt(t,s.request.retryCount,dt.NUMBER)} (can be increased via ${Gt(t,"httpRetry",dt.SETTING)})`)})}`)});throw n.originalError=s,n}}function FAe(e,t){let r=[...t.configuration.get("networkSettings")].sort(([c],[f])=>f.length-c.length),s={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(s),n=typeof e=="string"?new URL(e):e;for(let[c,f]of r)if(rj.default.isMatch(n.hostname,c))for(let p of a){let h=f.get(p);h!==null&&typeof s[p]>"u"&&(s[p]=h)}for(let c of a)typeof s[c]>"u"&&(s[c]=t.configuration.get(c));return s}async function tv(e,t,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET",wrapNetworkRequest:f}){let p={target:e,body:t,configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c},h=async()=>await Qtt(e,t,p),E=typeof f<"u"?await f(h,p):h;return await(await r.reduceHook(S=>S.wrapNetworkRequest,E,p))()}async function nj(e,{configuration:t,jsonResponse:r,customErrorMessage:s,wrapNetworkRequest:a,...n}){let c=()=>gT(tv(e,null,{configuration:t,wrapNetworkRequest:a,...n}),{configuration:t,customErrorMessage:s}).then(p=>p.body),f=await(typeof a<"u"?c():$l(kAe,e,()=>c().then(p=>(kAe.set(e,p),p))));return r?JSON.parse(f.toString()):f}async function xtt(e,t,{customErrorMessage:r,...s}){return(await gT(tv(e,t,{...s,method:"PUT"}),{customErrorMessage:r,configuration:s.configuration})).body}async function ij(e,t,{customErrorMessage:r,...s}){return(await gT(tv(e,t,{...s,method:"POST"}),{customErrorMessage:r,configuration:s.configuration})).body}async function ktt(e,{customErrorMessage:t,...r}){return(await gT(tv(e,null,{...r,method:"DELETE"}),{customErrorMessage:t,configuration:r.configuration})).body}async function Qtt(e,t,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET"}){let f=typeof e=="string"?new URL(e):e,p=FAe(f,{configuration:r});if(p.enableNetwork===!1)throw new Lt(80,`Request to '${f.href}' has been blocked because of your configuration settings`);if(f.protocol==="http:"&&!rj.default.isMatch(f.hostname,r.get("unsafeHttpWhitelist")))throw new Lt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${f.hostname})`);let h={headers:s,method:c};h.responseType=n?"json":"buffer",t!==null&&(Buffer.isBuffer(t)||!a&&typeof t=="string"?h.body=t:h.json=t);let E=r.get("httpTimeout"),C=r.get("httpRetry"),S=r.get("enableStrictSsl"),x=p.httpsCaFilePath,I=p.httpsCertFilePath,R=p.httpsKeyFilePath,{default:N}=await Promise.resolve().then(()=>et(xAe())),U=x?await tj(x):void 0,K=I?await tj(I):void 0,$=R?await tj(R):void 0,ie={rejectUnauthorized:S,ca:U,cert:K,key:$},fe={http:p.httpProxy?new iue({proxy:p.httpProxy,proxyRequestOptions:ie}):btt,https:p.httpsProxy?new sue({proxy:p.httpsProxy,proxyRequestOptions:ie}):Dtt},le=N.extend({timeout:{socket:E},retry:C,agent:fe,https:{rejectUnauthorized:S,certificateAuthority:U,certificate:K,key:$},...h});return r.getLimit("networkConcurrency")(()=>le(f))}var TAe,RAe,rj,kAe,QAe,btt,Dtt,NAe,mT=Ze(()=>{bt();oue();TAe=Ce("https"),RAe=Ce("http"),rj=et(Zo());Nc();Tc();Qc();kAe=new Map,QAe=new Map,btt=new RAe.Agent({keepAlive:!0}),Dtt=new TAe.Agent({keepAlive:!0});NAe=(a=>(a.GET="GET",a.PUT="PUT",a.POST="POST",a.DELETE="DELETE",a))(NAe||{})});var Ui={};Vt(Ui,{availableParallelism:()=>oj,getArchitecture:()=>rv,getArchitectureName:()=>Ott,getArchitectureSet:()=>sj,getCaller:()=>_tt,major:()=>Ttt,openUrl:()=>Rtt});function Ntt(){if(process.platform!=="linux")return null;let e;try{e=ae.readFileSync(Ftt)}catch{}if(typeof e<"u"){if(e&&(e.includes("GLIBC")||e.includes("GNU libc")||e.includes("GNU C Library")))return"glibc";if(e&&e.includes("musl"))return"musl"}let r=(process.report?.getReport()??{}).sharedObjects??[],s=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return dd(r,a=>{let n=a.match(s);if(!n)return dd.skip;if(n[1])return"glibc";if(n[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")})??null}function rv(){return LAe=LAe??{os:(process.env.YARN_IS_TEST_ENV?process.env.YARN_OS_OVERRIDE:void 0)??process.platform,cpu:(process.env.YARN_IS_TEST_ENV?process.env.YARN_CPU_OVERRIDE:void 0)??process.arch,libc:(process.env.YARN_IS_TEST_ENV?process.env.YARN_LIBC_OVERRIDE:void 0)??Ntt()}}function Ott(e=rv()){return e.libc?`${e.os}-${e.cpu}-${e.libc}`:`${e.os}-${e.cpu}`}function sj(){let e=rv();return MAe=MAe??{os:[e.os],cpu:[e.cpu],libc:e.libc?[e.libc]:[]}}function Utt(e){let t=Ltt.exec(e);if(!t)return null;let r=t[2]&&t[2].indexOf("native")===0,s=t[2]&&t[2].indexOf("eval")===0,a=Mtt.exec(t[2]);return s&&a!=null&&(t[2]=a[1],t[3]=a[2],t[4]=a[3]),{file:r?null:t[2],methodName:t[1]||"",arguments:r?[t[2]]:[],line:t[3]?+t[3]:null,column:t[4]?+t[4]:null}}function _tt(){let t=new Error().stack.split(` +`)[3];return Utt(t)}function oj(){return typeof yT.default.availableParallelism<"u"?yT.default.availableParallelism():Math.max(1,yT.default.cpus().length)}var yT,Ttt,OAe,Rtt,Ftt,LAe,MAe,Ltt,Mtt,ET=Ze(()=>{bt();yT=et(Ce("os"));IT();Qc();Ttt=Number(process.versions.node.split(".")[0]),OAe=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),Rtt=typeof OAe<"u"?async e=>{try{return await aj(OAe,[e],{cwd:Y.cwd()}),!0}catch{return!1}}:void 0,Ftt="/usr/bin/ldd";Ltt=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Mtt=/\((\S*)(?::(\d+))(?::(\d+))\)/});function pj(e,t,r,s,a){let n=GB(r);if(s.isArray||s.type==="ANY"&&Array.isArray(n))return Array.isArray(n)?n.map((c,f)=>lj(e,`${t}[${f}]`,c,s,a)):String(n).split(/,/).map(c=>lj(e,t,c,s,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings "${t}" cannot be an array`);return lj(e,t,r,s,a)}function lj(e,t,r,s,a){let n=GB(r);switch(s.type){case"ANY":return UQ(n);case"SHAPE":return qtt(e,t,r,s,a);case"MAP":return Ytt(e,t,r,s,a)}if(n===null&&!s.isNullable&&s.default!==null)throw new Error(`Non-nullable configuration settings "${t}" cannot be set to null`);if("values"in s&&s.values?.includes(n))return n;let f=(()=>{if(s.type==="BOOLEAN"&&typeof n!="string")return DB(n);if(typeof n!="string")throw new Error(`Expected configuration setting "${t}" to be a string, got ${typeof n}`);let p=Zk(n,{env:e.env});switch(s.type){case"ABSOLUTE_PATH":{let h=a,E=O8(r);return E&&E[0]!=="<"&&(h=Y.dirname(E)),Y.resolve(h,Ae.toPortablePath(p))}case"LOCATOR_LOOSE":return Np(p,!1);case"NUMBER":return parseInt(p);case"LOCATOR":return Np(p);case"BOOLEAN":return DB(p);case"DURATION":return Xk(p,s.unit);default:return p}})();if("values"in s&&s.values&&!s.values.includes(f))throw new Error(`Invalid value, expected one of ${s.values.join(", ")}`);return f}function qtt(e,t,r,s,a){let n=GB(r);if(typeof n!="object"||Array.isArray(n))throw new ot(`Object configuration settings "${t}" must be an object`);let c=hj(e,s,{ignoreArrays:!0});if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=`${t}.${f}`;if(!s.properties[f])throw new ot(`Unrecognized configuration settings found: ${t}.${f} - run "yarn config" to see the list of settings supported in Yarn`);c.set(f,pj(e,h,p,s.properties[f],a))}return c}function Ytt(e,t,r,s,a){let n=GB(r),c=new Map;if(typeof n!="object"||Array.isArray(n))throw new ot(`Map configuration settings "${t}" must be an object`);if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=s.normalizeKeys?s.normalizeKeys(f):f,E=`${t}['${h}']`,C=s.valueDefinition;c.set(h,pj(e,E,p,C,a))}return c}function hj(e,t,{ignoreArrays:r=!1}={}){switch(t.type){case"SHAPE":{if(t.isArray&&!r)return[];let s=new Map;for(let[a,n]of Object.entries(t.properties))s.set(a,hj(e,n));return s}case"MAP":return t.isArray&&!r?[]:new Map;case"ABSOLUTE_PATH":return t.default===null?null:e.projectCwd===null?Array.isArray(t.default)?t.default.map(s=>Y.normalize(s)):Y.isAbsolute(t.default)?Y.normalize(t.default):t.isNullable?null:void 0:Array.isArray(t.default)?t.default.map(s=>Y.resolve(e.projectCwd,s)):Y.resolve(e.projectCwd,t.default);case"DURATION":return Xk(t.default,t.unit);default:return t.default}}function wT(e,t,r){if(t.type==="SECRET"&&typeof e=="string"&&r.hideSecrets)return Gtt;if(t.type==="ABSOLUTE_PATH"&&typeof e=="string"&&r.getNativePaths)return Ae.fromPortablePath(e);if(t.isArray&&Array.isArray(e)){let s=[];for(let a of e)s.push(wT(a,t,r));return s}if(t.type==="MAP"&&e instanceof Map){if(e.size===0)return;let s=new Map;for(let[a,n]of e.entries()){let c=wT(n,t.valueDefinition,r);typeof c<"u"&&s.set(a,c)}return s}if(t.type==="SHAPE"&&e instanceof Map){if(e.size===0)return;let s=new Map;for(let[a,n]of e.entries()){let c=t.properties[a],f=wT(n,c,r);typeof f<"u"&&s.set(a,f)}return s}return e}function Wtt(){let e={};for(let[t,r]of Object.entries(process.env))t=t.toLowerCase(),t.startsWith(BT)&&(t=(0,_Ae.default)(t.slice(BT.length)),e[t]=r);return e}function uj(){let e=`${BT}rc_filename`;for(let[t,r]of Object.entries(process.env))if(t.toLowerCase()===e&&typeof r=="string")return r;return fj}async function UAe(e){try{return await ae.readFilePromise(e)}catch{return Buffer.of()}}async function Vtt(e,t){return Buffer.compare(...await Promise.all([UAe(e),UAe(t)]))===0}async function Ktt(e,t){let[r,s]=await Promise.all([ae.statPromise(e),ae.statPromise(t)]);return r.dev===s.dev&&r.ino===s.ino}async function ztt({configuration:e,selfPath:t}){let r=e.get("yarnPath");return e.get("ignorePath")||r===null||r===t||await Jtt(r,t)?null:r}var _Ae,Hp,HAe,jAe,GAe,cj,Htt,nv,jtt,jp,BT,fj,Gtt,DI,qAe,Aj,vT,CT,Jtt,Je,iv=Ze(()=>{bt();Sc();_Ae=et(sre()),Hp=et(N0());jt();HAe=et(Xre()),jAe=Ce("module"),GAe=et(M0()),cj=Ce("stream");Lce();fI();P8();x8();k8();Jce();Q8();rm();eue();HQ();Tc();wd();mT();Qc();ET();Lp();$o();Htt=function(){if(!Hp.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let e=Ae.toPortablePath(process.env.GITHUB_EVENT_PATH),t;try{t=ae.readJsonSync(e)}catch{return!1}return!(!("repository"in t)||!t.repository||(t.repository.private??!0))}(),nv=new Set(["@yarnpkg/plugin-constraints","@yarnpkg/plugin-exec","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]),jtt=new Set(["isTestEnv","injectNpmUser","injectNpmPassword","injectNpm2FaToken","zipDataEpilogue","cacheCheckpointOverride","cacheVersionOverride","lockfileVersionOverride","osOverride","cpuOverride","libcOverride","binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir","registry","ignoreScripts","ignoreCwd"]),jp=/^(?!v)[a-z0-9._-]+$/i,BT="yarn_",fj=".yarnrc.yml",Gtt="********",DI=(C=>(C.ANY="ANY",C.BOOLEAN="BOOLEAN",C.ABSOLUTE_PATH="ABSOLUTE_PATH",C.LOCATOR="LOCATOR",C.LOCATOR_LOOSE="LOCATOR_LOOSE",C.NUMBER="NUMBER",C.STRING="STRING",C.DURATION="DURATION",C.SECRET="SECRET",C.SHAPE="SHAPE",C.MAP="MAP",C))(DI||{}),qAe=dt,Aj=(c=>(c.MILLISECONDS="ms",c.SECONDS="s",c.MINUTES="m",c.HOURS="h",c.DAYS="d",c.WEEKS="w",c))(Aj||{}),vT=(r=>(r.JUNCTIONS="junctions",r.SYMLINKS="symlinks",r))(vT||{}),CT={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:"STRING",default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:"ABSOLUTE_PATH",default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:"BOOLEAN",default:!1},globalFolder:{description:"Folder where all system-global files are stored",type:"ABSOLUTE_PATH",default:M8()},cacheFolder:{description:"Folder where the cache files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:"NUMBER",values:["mixed",0,1,2,3,4,5,6,7,8,9],default:0},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:"ABSOLUTE_PATH",default:"./.yarn/__virtual__"},installStatePath:{description:"Path of the file where the install state will be persisted",type:"ABSOLUTE_PATH",default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:"STRING",default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:"STRING",default:uj()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:"BOOLEAN",default:!0},cacheMigrationMode:{description:"Defines the conditions under which Yarn upgrades should cause the cache archives to be regenerated.",type:"STRING",values:["always","match-spec","required-only"],default:"always"},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:"BOOLEAN",default:rQ,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:q4,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:Hp.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:"BOOLEAN",default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:"BOOLEAN",default:!Hp.isCI,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:"BOOLEAN",default:!0},enableTips:{description:"If true, installs will print a helpful message every day of the week",type:"BOOLEAN",default:!Hp.isCI,defaultText:""},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:"BOOLEAN",default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:"BOOLEAN",default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:"STRING",default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:"STRING",default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:"STRING",default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:"BOOLEAN",default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:"SHAPE",properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:"BOOLEAN",default:!0},enableNetwork:{description:"If false, Yarn will refuse to use the network if required to",type:"BOOLEAN",default:!0},enableOfflineMode:{description:"If true, Yarn will attempt to retrieve files and metadata from the global cache rather than the network",type:"BOOLEAN",default:!1},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:"STRING",default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request",type:"DURATION",unit:"ms",default:"1m"},httpRetry:{description:"Retry times on http failure",type:"NUMBER",default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:"NUMBER",default:50},taskPoolConcurrency:{description:"Maximal amount of concurrent heavy task processing",type:"NUMBER",default:oj()},taskPoolMode:{description:"Execution strategy for heavy tasks",type:"STRING",values:["async","workers"],default:"workers"},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{httpsCaFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null}}}},httpsCaFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:"BOOLEAN",default:!0},logFilters:{description:"Overrides for log levels",type:"SHAPE",isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:"STRING",default:void 0},text:{description:"Code of the texts covered by this override",type:"STRING",default:void 0},pattern:{description:"Code of the patterns covered by this override",type:"STRING",default:void 0},level:{description:"Log level override, set to null to remove override",type:"STRING",values:Object.values(iQ),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:"BOOLEAN",default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads",type:"DURATION",unit:"d",default:"7d"},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:"STRING",default:null},enableHardenedMode:{description:"If true, automatically enable --check-resolutions --refresh-lockfile on installs",type:"BOOLEAN",default:Hp.isPR&&Htt,defaultText:""},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:"BOOLEAN",default:!1},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:"BOOLEAN",default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:"BOOLEAN",default:!1},enableCacheClean:{description:"If false, disallows the `cache clean` command",type:"BOOLEAN",default:!0},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:"STRING",default:"throw"},injectEnvironmentFiles:{description:"List of all the environment files that Yarn should inject inside the process when it starts",type:"ABSOLUTE_PATH",default:[".env.yarn?"],isArray:!0},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:"MAP",valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:"SHAPE",properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:"MAP",valueDefinition:{description:"A range",type:"STRING"}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:"MAP",valueDefinition:{description:"A semver range",type:"STRING"}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:"MAP",valueDefinition:{description:"The peerDependency meta",type:"SHAPE",properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:"BOOLEAN",default:!1}}}}}}}};Jtt=process.platform==="win32"?Vtt:Ktt;Je=class e{constructor(t){this.isCI=Hp.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=t}static{this.deleteProperty=Symbol()}static{this.telemetry=null}static create(t,r,s){let a=new e(t);typeof r<"u"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(CT);let n=typeof s<"u"?s:r instanceof Map?r:new Map;for(let[c,f]of n)a.activatePlugin(c,f);return a}static async find(t,r,{strict:s=!0,usePathCheck:a=null,useRc:n=!0}={}){let c=Wtt();delete c.rcFilename;let f=new e(t),p=await e.findRcFiles(t),h=await e.findFolderRcFile(gI());h&&(p.find(ge=>ge.path===h.path)||p.unshift(h));let E=$ce(p.map(le=>[le.path,le.data])),C=wt.dot,S=new Set(Object.keys(CT)),x=({yarnPath:le,ignorePath:ge,injectEnvironmentFiles:pe})=>({yarnPath:le,ignorePath:ge,injectEnvironmentFiles:pe}),I=({yarnPath:le,ignorePath:ge,injectEnvironmentFiles:pe,...De})=>{let ye={};for(let[d,ve]of Object.entries(De))S.has(d)&&(ye[d]=ve);return ye},R=({yarnPath:le,ignorePath:ge,...pe})=>{let De={};for(let[ye,d]of Object.entries(pe))S.has(ye)||(De[ye]=d);return De};if(f.importSettings(x(CT)),f.useWithSource("",x(c),t,{strict:!1}),E){let[le,ge]=E;f.useWithSource(le,x(ge),C,{strict:!1})}if(a){if(await ztt({configuration:f,selfPath:a})!==null)return f;f.useWithSource("",{ignorePath:!0},t,{strict:!1,overwrite:!0})}let N=await e.findProjectCwd(t);f.startingCwd=t,f.projectCwd=N;let U=Object.assign(Object.create(null),process.env);f.env=U;let K=await Promise.all(f.get("injectEnvironmentFiles").map(async le=>{let ge=le.endsWith("?")?await ae.readFilePromise(le.slice(0,-1),"utf8").catch(()=>""):await ae.readFilePromise(le,"utf8");return(0,HAe.parse)(ge)}));for(let le of K)for(let[ge,pe]of Object.entries(le))f.env[ge]=Zk(pe,{env:U});if(f.importSettings(I(CT)),f.useWithSource("",I(c),t,{strict:s}),E){let[le,ge]=E;f.useWithSource(le,I(ge),C,{strict:s})}let $=le=>"default"in le?le.default:le,ie=new Map([["@@core",Oce]]);if(r!==null)for(let le of r.plugins.keys())ie.set(le,$(r.modules.get(le)));for(let[le,ge]of ie)f.activatePlugin(le,ge);let fe=new Map([]);if(r!==null){let le=new Map;for(let[De,ye]of r.modules)le.set(De,()=>ye);let ge=new Set,pe=async(De,ye)=>{let{factory:d,name:ve}=Tp(De);if(!d||ge.has(ve))return;let Ie=new Map(le),me=X=>{if((0,jAe.isBuiltin)(X))return Tp(X);if(Ie.has(X))return Ie.get(X)();throw new ot(`This plugin cannot access the package referenced via ${X} which is neither a builtin, nor an exposed entry`)},ce=await JE(async()=>$(await d(me)),X=>`${X} (when initializing ${ve}, defined in ${ye})`);le.set(ve,()=>ce),ge.add(ve),fe.set(ve,ce)};if(c.plugins)for(let De of c.plugins.split(";")){let ye=Y.resolve(t,Ae.toPortablePath(De));await pe(ye,"")}for(let{path:De,cwd:ye,data:d}of p)if(n&&Array.isArray(d.plugins))for(let ve of d.plugins){let Ie=typeof ve!="string"?ve.path:ve,me=ve?.spec??"",ce=ve?.checksum??"";if(nv.has(me))continue;let X=Y.resolve(ye,Ae.toPortablePath(Ie));if(!await ae.existsPromise(X)){if(!me){let it=Gt(f,Y.basename(X,".cjs"),dt.NAME),_=Gt(f,".gitignore",dt.NAME),tt=Gt(f,f.values.get("rcFilename"),dt.NAME),Fe=Gt(f,"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored",dt.URL);throw new ot(`Missing source for the ${it} plugin - please try to remove the plugin from ${tt} then reinstall it manually. This error usually occurs because ${_} is incorrect, check ${Fe} to make sure your plugin folder isn't gitignored.`)}if(!me.match(/^https?:/)){let it=Gt(f,Y.basename(X,".cjs"),dt.NAME),_=Gt(f,f.values.get("rcFilename"),dt.NAME);throw new ot(`Failed to recognize the source for the ${it} plugin - please try to delete the plugin from ${_} then reinstall it manually.`)}let be=await nj(me,{configuration:f}),ke=As(be);if(ce&&ce!==ke){let it=Gt(f,Y.basename(X,".cjs"),dt.NAME),_=Gt(f,f.values.get("rcFilename"),dt.NAME),tt=Gt(f,`yarn plugin import ${me}`,dt.CODE);throw new ot(`Failed to fetch the ${it} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${_} then run ${tt} to reimport it.`)}await ae.mkdirPromise(Y.dirname(X),{recursive:!0}),await ae.writeFilePromise(X,be)}await pe(X,De)}}for(let[le,ge]of fe)f.activatePlugin(le,ge);if(f.useWithSource("",R(c),t,{strict:s}),E){let[le,ge]=E;f.useWithSource(le,R(ge),C,{strict:s})}return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),f}static async findRcFiles(t){let r=uj(),s=[],a=t,n=null;for(;a!==n;){n=a;let c=Y.join(n,r);if(ae.existsSync(c)){let f,p;try{p=await ae.readFilePromise(c,"utf8"),f=us(p)}catch{let h="";throw p?.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(h=" (in particular, make sure you list the colons after each key name)"),new ot(`Parse error when loading ${c}; please check it's proper Yaml${h}`)}s.unshift({path:c,cwd:n,data:f})}a=Y.dirname(n)}return s}static async findFolderRcFile(t){let r=Y.join(t,yr.rc),s;try{s=await ae.readFilePromise(r,"utf8")}catch(n){if(n.code==="ENOENT")return null;throw n}let a=us(s);return{path:r,cwd:t,data:a}}static async findProjectCwd(t){let r=null,s=t,a=null;for(;s!==a;){if(a=s,ae.existsSync(Y.join(a,yr.lockfile)))return a;ae.existsSync(Y.join(a,yr.manifest))&&(r=a),s=Y.dirname(a)}return r}static async updateConfiguration(t,r,s={}){let a=uj(),n=Y.join(t,a),c=ae.existsSync(n)?us(await ae.readFilePromise(n,"utf8")):{},f=!1,p;if(typeof r=="function"){try{p=r(c)}catch{p=r({})}if(p===c)return!1}else{p=c;for(let h of Object.keys(r)){let E=c[h],C=r[h],S;if(typeof C=="function")try{S=C(E)}catch{S=C(void 0)}else S=C;E!==S&&(S===e.deleteProperty?delete p[h]:p[h]=S,f=!0)}if(!f)return!1}return await ae.changeFilePromise(n,Al(p),{automaticNewlines:!0}),!0}static async addPlugin(t,r){r.length!==0&&await e.updateConfiguration(t,s=>{let a=s.plugins??[];if(a.length===0)return{...s,plugins:r};let n=[],c=[...r];for(let f of a){let p=typeof f!="string"?f.path:f,h=c.find(E=>E.path===p);h?(n.push(h),c=c.filter(E=>E!==h)):n.push(f)}return n.push(...c),{...s,plugins:n}})}static async updateHomeConfiguration(t){let r=gI();return await e.updateConfiguration(r,t)}activatePlugin(t,r){this.plugins.set(t,r),typeof r.configuration<"u"&&this.importSettings(r.configuration)}importSettings(t){for(let[r,s]of Object.entries(t))if(s!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,s),this.values.set(r,hj(this,s))}}useWithSource(t,r,s,a){try{this.use(t,r,s,a)}catch(n){throw n.message+=` (in ${Gt(this,t,dt.PATH)})`,n}}use(t,r,s,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSettings");for(let c of["enableStrictSettings",...Object.keys(r)]){let f=r[c],p=O8(f);if(p&&(t=p),typeof f>"u"||c==="plugins"||t===""&&jtt.has(c))continue;if(c==="rcFilename")throw new ot(`The rcFilename settings can only be set via ${`${BT}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(c);if(!h){let C=gI(),S=t[0]!=="<"?Y.dirname(t):null;if(a&&!(S!==null?C===S:!1))throw new ot(`Unrecognized or legacy configuration settings found: ${c} - run "yarn config" to see the list of settings supported in Yarn`);this.invalid.set(c,t);continue}if(this.sources.has(c)&&!(n||h.type==="MAP"||h.isArray&&h.concatenateValues))continue;let E;try{E=pj(this,c,f,h,s)}catch(C){throw C.message+=` in ${Gt(this,t,dt.PATH)}`,C}if(c==="enableStrictSettings"&&t!==""){a=E;continue}if(h.type==="MAP"){let C=this.values.get(c);this.values.set(c,new Map(n?[...C,...E]:[...E,...C])),this.sources.set(c,`${this.sources.get(c)}, ${t}`)}else if(h.isArray&&h.concatenateValues){let C=this.values.get(c);this.values.set(c,n?[...C,...E]:[...E,...C]),this.sources.set(c,`${this.sources.get(c)}, ${t}`)}else this.values.set(c,E),this.sources.set(c,t)}}get(t){if(!this.values.has(t))throw new Error(`Invalid configuration key "${t}"`);return this.values.get(t)}getSpecial(t,{hideSecrets:r=!1,getNativePaths:s=!1}){let a=this.get(t),n=this.settings.get(t);if(typeof n>"u")throw new ot(`Couldn't find a configuration settings named "${t}"`);return wT(a,n,{hideSecrets:r,getNativePaths:s})}getSubprocessStreams(t,{header:r,prefix:s,report:a}){let n,c,f=ae.createWriteStream(t);if(this.get("enableInlineBuilds")){let p=a.createStreamReporter(`${s} ${Gt(this,"STDOUT","green")}`),h=a.createStreamReporter(`${s} ${Gt(this,"STDERR","red")}`);n=new cj.PassThrough,n.pipe(p),n.pipe(f),c=new cj.PassThrough,c.pipe(h),c.pipe(f)}else n=f,c=f,typeof r<"u"&&n.write(`${r} +`);return{stdout:n,stderr:c}}makeResolver(){let t=[];for(let r of this.plugins.values())for(let s of r.resolvers||[])t.push(new s);return new nm([new MQ,new Ii,...t])}makeFetcher(){let t=[];for(let r of this.plugins.values())for(let s of r.fetchers||[])t.push(new s);return new AI([new pI,new hI,...t])}getLinkers(){let t=[];for(let r of this.plugins.values())for(let s of r.linkers||[])t.push(new s);return t}getSupportedArchitectures(){let t=rv(),r=this.get("supportedArchitectures"),s=r.get("os");s!==null&&(s=s.map(c=>c==="current"?t.os:c));let a=r.get("cpu");a!==null&&(a=a.map(c=>c==="current"?t.cpu:c));let n=r.get("libc");return n!==null&&(n=Xl(n,c=>c==="current"?t.libc??Xl.skip:c)),{os:s,cpu:a,libc:n}}isInteractive({interactive:t,stdout:r}){return r.isTTY?t??this.get("preferInteractive"):!1}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let t=this.packageExtensions,r=(s,a,{userProvided:n=!1}={})=>{if(!yl(s.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let c=new _t;c.load(a,{yamlCompatibilityMode:!0});let f=bB(t,s.identHash),p=[];f.push([s.range,p]);let h={status:"inactive",userProvided:n,parentDescriptor:s};for(let E of c.dependencies.values())p.push({...h,type:"Dependency",descriptor:E});for(let E of c.peerDependencies.values())p.push({...h,type:"PeerDependency",descriptor:E});for(let[E,C]of c.peerDependenciesMeta)for(let[S,x]of Object.entries(C))p.push({...h,type:"PeerDependencyMeta",selector:E,key:S,value:x})};await this.triggerHook(s=>s.registerPackageExtensions,this,r);for(let[s,a]of this.get("packageExtensions"))r(Bd(s,!0),zk(a),{userProvided:!0});return t}normalizeLocator(t){return yl(t.reference)?Js(t,`${this.get("defaultProtocol")}${t.reference}`):jp.test(t.reference)?Js(t,`${this.get("defaultProtocol")}${t.reference}`):t}normalizeDependency(t){return yl(t.range)?Un(t,`${this.get("defaultProtocol")}${t.range}`):jp.test(t.range)?Un(t,`${this.get("defaultProtocol")}${t.range}`):t}normalizeDependencyMap(t){return new Map([...t].map(([r,s])=>[r,this.normalizeDependency(s)]))}normalizePackage(t,{packageExtensions:r}){let s=FB(t),a=r.get(t.identHash);if(typeof a<"u"){let c=t.version;if(c!==null){for(let[f,p]of a)if(rA(c,f))for(let h of p)switch(h.status==="inactive"&&(h.status="redundant"),h.type){case"Dependency":typeof s.dependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case"PeerDependency":typeof s.peerDependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case"PeerDependencyMeta":{let E=s.peerDependenciesMeta.get(h.selector);(typeof E>"u"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status="active",$l(s.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:O4(h)}}}let n=c=>c.scope?`${c.scope}__${c.name}`:`${c.name}`;for(let c of s.peerDependenciesMeta.keys()){let f=ka(c);s.peerDependencies.has(f.identHash)||s.peerDependencies.set(f.identHash,Un(f,"*"))}for(let c of s.peerDependencies.values()){if(c.scope==="types")continue;let f=n(c),p=Qa("types",f),h=fn(p);s.peerDependencies.has(p.identHash)||s.peerDependenciesMeta.has(h)||s.dependencies.has(p.identHash)||(s.peerDependencies.set(p.identHash,Un(p,"*")),s.peerDependenciesMeta.set(h,{optional:!0}))}return s.dependencies=new Map(Ks(s.dependencies,([,c])=>gl(c))),s.peerDependencies=new Map(Ks(s.peerDependencies,([,c])=>gl(c))),s}getLimit(t){return $l(this.limits,t,()=>(0,GAe.default)(this.get(t)))}async triggerHook(t,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=t(a);n&&await n(...r)}}async triggerMultipleHooks(t,r){for(let s of r)await this.triggerHook(t,...s)}async reduceHook(t,r,...s){let a=r;for(let n of this.plugins.values()){let c=n.hooks;if(!c)continue;let f=t(c);f&&(a=await f(a,...s))}return a}async firstHook(t,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=t(a);if(!n)continue;let c=await n(...r);if(typeof c<"u")return c}return null}}});var Yr={};Vt(Yr,{EndStrategy:()=>yj,ExecError:()=>ST,PipeError:()=>sv,execvp:()=>aj,pipevp:()=>qu});function am(e){return e!==null&&typeof e.fd=="number"}function dj(){}function gj(){for(let e of lm)e.kill()}async function qu(e,t,{cwd:r,env:s=process.env,strict:a=!1,stdin:n=null,stdout:c,stderr:f,end:p=2}){let h=["pipe","pipe","pipe"];n===null?h[0]="ignore":am(n)&&(h[0]=n),am(c)&&(h[1]=c),am(f)&&(h[2]=f);let E=(0,mj.default)(e,t,{cwd:Ae.fromPortablePath(r),env:{...s,PWD:Ae.fromPortablePath(r)},stdio:h});lm.add(E),lm.size===1&&(process.on("SIGINT",dj),process.on("SIGTERM",gj)),!am(n)&&n!==null&&n.pipe(E.stdin),am(c)||E.stdout.pipe(c,{end:!1}),am(f)||E.stderr.pipe(f,{end:!1});let C=()=>{for(let S of new Set([c,f]))am(S)||S.end()};return new Promise((S,x)=>{E.on("error",I=>{lm.delete(E),lm.size===0&&(process.off("SIGINT",dj),process.off("SIGTERM",gj)),(p===2||p===1)&&C(),x(I)}),E.on("close",(I,R)=>{lm.delete(E),lm.size===0&&(process.off("SIGINT",dj),process.off("SIGTERM",gj)),(p===2||p===1&&I!==0)&&C(),I===0||!a?S({code:Ej(I,R)}):x(new sv({fileName:e,code:I,signal:R}))})})}async function aj(e,t,{cwd:r,env:s=process.env,encoding:a="utf8",strict:n=!1}){let c=["ignore","pipe","pipe"],f=[],p=[],h=Ae.fromPortablePath(r);typeof s.PWD<"u"&&(s={...s,PWD:h});let E=(0,mj.default)(e,t,{cwd:h,env:s,stdio:c});return E.stdout.on("data",C=>{f.push(C)}),E.stderr.on("data",C=>{p.push(C)}),await new Promise((C,S)=>{E.on("error",x=>{let I=Je.create(r),R=Gt(I,e,dt.PATH);S(new Lt(1,`Process ${R} failed to spawn`,N=>{N.reportError(1,` ${$f(I,{label:"Thrown Error",value:Uu(dt.NO_HINT,x.message)})}`)}))}),E.on("close",(x,I)=>{let R=a==="buffer"?Buffer.concat(f):Buffer.concat(f).toString(a),N=a==="buffer"?Buffer.concat(p):Buffer.concat(p).toString(a);x===0||!n?C({code:Ej(x,I),stdout:R,stderr:N}):S(new ST({fileName:e,code:x,signal:I,stdout:R,stderr:N}))})})}function Ej(e,t){let r=Ztt.get(t);return typeof r<"u"?128+r:e??1}function Xtt(e,t,{configuration:r,report:s}){s.reportError(1,` ${$f(r,e!==null?{label:"Exit Code",value:Uu(dt.NUMBER,e)}:{label:"Exit Signal",value:Uu(dt.CODE,t)})}`)}var mj,yj,sv,ST,lm,Ztt,IT=Ze(()=>{bt();mj=et(RU());iv();Nc();Tc();yj=(s=>(s[s.Never=0]="Never",s[s.ErrorCode=1]="ErrorCode",s[s.Always=2]="Always",s))(yj||{}),sv=class extends Lt{constructor({fileName:t,code:r,signal:s}){let a=Je.create(Y.cwd()),n=Gt(a,t,dt.PATH);super(1,`Child ${n} reported an error`,c=>{Xtt(r,s,{configuration:a,report:c})}),this.code=Ej(r,s)}},ST=class extends sv{constructor({fileName:t,code:r,signal:s,stdout:a,stderr:n}){super({fileName:t,code:r,signal:s}),this.stdout=a,this.stderr=n}};lm=new Set;Ztt=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]])});function WAe(e){YAe=e}function ov(){return typeof Ij>"u"&&(Ij=YAe()),Ij}var Ij,YAe,Cj=Ze(()=>{YAe=()=>{throw new Error("Assertion failed: No libzip instance is available, and no factory was configured")}});var VAe=G((bT,Bj)=>{var $tt=Object.assign({},Ce("fs")),wj=function(){var e=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(e=e||__filename),function(t){t=t||{};var r=typeof t<"u"?t:{},s,a;r.ready=new Promise(function(ze,at){s=ze,a=at});var n={},c;for(c in r)r.hasOwnProperty(c)&&(n[c]=r[c]);var f=[],p="./this.program",h=function(ze,at){throw at},E=!1,C=!0,S="";function x(ze){return r.locateFile?r.locateFile(ze,S):S+ze}var I,R,N,U;C&&(E?S=Ce("path").dirname(S)+"/":S=__dirname+"/",I=function(at,St){var lr=qa(at);return lr?St?lr:lr.toString():(N||(N=$tt),U||(U=Ce("path")),at=U.normalize(at),N.readFileSync(at,St?null:"utf8"))},R=function(at){var St=I(at,!0);return St.buffer||(St=new Uint8Array(St)),ve(St.buffer),St},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),f=process.argv.slice(2),h=function(ze){process.exit(ze)},r.inspect=function(){return"[Emscripten Module object]"});var K=r.print||console.log.bind(console),$=r.printErr||console.warn.bind(console);for(c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);n=null,r.arguments&&(f=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ie=0,fe=function(ze){ie=ze},le;r.wasmBinary&&(le=r.wasmBinary);var ge=r.noExitRuntime||!0;typeof WebAssembly!="object"&&is("no native wasm support detected");function pe(ze,at,St){switch(at=at||"i8",at.charAt(at.length-1)==="*"&&(at="i32"),at){case"i1":return je[ze>>0];case"i8":return je[ze>>0];case"i16":return yh((ze>>1)*2);case"i32":return co((ze>>2)*4);case"i64":return co((ze>>2)*4);case"float":return df((ze>>2)*4);case"double":return mh((ze>>3)*8);default:is("invalid type for getValue: "+at)}return null}var De,ye=!1,d;function ve(ze,at){ze||is("Assertion failed: "+at)}function Ie(ze){var at=r["_"+ze];return ve(at,"Cannot call unknown function "+ze+", make sure it is exported"),at}function me(ze,at,St,lr,te){var Ee={string:function(qi){var Nn=0;if(qi!=null&&qi!==0){var Xa=(qi.length<<2)+1;Nn=vi(Xa),it(qi,Nn,Xa)}return Nn},array:function(qi){var Nn=vi(qi.length);return Fe(qi,Nn),Nn}};function Oe(qi){return at==="string"?be(qi):at==="boolean"?!!qi:qi}var mt=Ie(ze),Et=[],Dt=0;if(lr)for(var tr=0;tr=St)&&Te[lr];)++lr;return X.decode(Te.subarray(ze,lr))}function ke(ze,at,St,lr){if(!(lr>0))return 0;for(var te=St,Ee=St+lr-1,Oe=0;Oe=55296&&mt<=57343){var Et=ze.charCodeAt(++Oe);mt=65536+((mt&1023)<<10)|Et&1023}if(mt<=127){if(St>=Ee)break;at[St++]=mt}else if(mt<=2047){if(St+1>=Ee)break;at[St++]=192|mt>>6,at[St++]=128|mt&63}else if(mt<=65535){if(St+2>=Ee)break;at[St++]=224|mt>>12,at[St++]=128|mt>>6&63,at[St++]=128|mt&63}else{if(St+3>=Ee)break;at[St++]=240|mt>>18,at[St++]=128|mt>>12&63,at[St++]=128|mt>>6&63,at[St++]=128|mt&63}}return at[St]=0,St-te}function it(ze,at,St){return ke(ze,Te,at,St)}function _(ze){for(var at=0,St=0;St=55296&&lr<=57343&&(lr=65536+((lr&1023)<<10)|ze.charCodeAt(++St)&1023),lr<=127?++at:lr<=2047?at+=2:lr<=65535?at+=3:at+=4}return at}function tt(ze){var at=_(ze)+1,St=Va(at);return St&&ke(ze,je,St,at),St}function Fe(ze,at){je.set(ze,at)}function Qe(ze,at){return ze%at>0&&(ze+=at-ze%at),ze}var Se,je,Te,ct,Me,P,w,D,y,F;function z(ze){Se=ze,r.HEAP_DATA_VIEW=F=new DataView(ze),r.HEAP8=je=new Int8Array(ze),r.HEAP16=ct=new Int16Array(ze),r.HEAP32=P=new Int32Array(ze),r.HEAPU8=Te=new Uint8Array(ze),r.HEAPU16=Me=new Uint16Array(ze),r.HEAPU32=w=new Uint32Array(ze),r.HEAPF32=D=new Float32Array(ze),r.HEAPF64=y=new Float64Array(ze)}var Z=r.INITIAL_MEMORY||16777216,ee,se=[],xe=[],Ne=[],ut=!1;function Ct(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Pt(r.preRun.shift());Ns(se)}function Yt(){ut=!0,Ns(xe)}function ir(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Pr(r.postRun.shift());Ns(Ne)}function Pt(ze){se.unshift(ze)}function mn(ze){xe.unshift(ze)}function Pr(ze){Ne.unshift(ze)}var Cr=0,Lr=null,on=null;function ci(ze){Cr++,r.monitorRunDependencies&&r.monitorRunDependencies(Cr)}function Do(ze){if(Cr--,r.monitorRunDependencies&&r.monitorRunDependencies(Cr),Cr==0&&(Lr!==null&&(clearInterval(Lr),Lr=null),on)){var at=on;on=null,at()}}r.preloadedImages={},r.preloadedAudios={};function is(ze){r.onAbort&&r.onAbort(ze),ze+="",$(ze),ye=!0,d=1,ze="abort("+ze+"). Build with -s ASSERTIONS=1 for more info.";var at=new WebAssembly.RuntimeError(ze);throw a(at),at}var ao="data:application/octet-stream;base64,";function Po(ze){return ze.startsWith(ao)}var ji="data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAQUUAKG51bGwpADogAFBLBgcAUEsGBgBQSwUGAFBLAwQAUEsBAgAAAAA/BQAAwAcAAJMIAAB4CAAAbwUAAJEFAAB6BQAAsgUAAFYIAAAbBwAA1gQAAAsHAADqBgAAnAUAAMgGAACyCAAAHggAACgHAABHBAAAoAYAAGAFAAAuBAAAPgcAAD8IAAD+BwAAjgYAAMkIAADeCAAA5gcAALIGAABVBQAAqAcAACAAQcgTCxEBAAAAAQAAAAEAAAABAAAAAQBB7BMLCQEAAAABAAAAAgBBmBQLAQEAQbgUCwEBAEHSFAukLDomOyZlJmYmYyZgJiIg2CXLJdklQiZAJmomayY8JrolxCWVITwgtgCnAKwlqCGRIZMhkiGQIR8ilCGyJbwlIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AAIjxwD8AOkA4gDkAOAA5QDnAOoA6wDoAO8A7gDsAMQAxQDJAOYAxgD0APYA8gD7APkA/wDWANwAogCjAKUApyCSAeEA7QDzAPoA8QDRAKoAugC/ABAjrAC9ALwAoQCrALsAkSWSJZMlAiUkJWElYiVWJVUlYyVRJVclXSVcJVslECUUJTQlLCUcJQAlPCVeJV8lWiVUJWklZiVgJVAlbCVnJWglZCVlJVklWCVSJVMlayVqJRglDCWIJYQljCWQJYAlsQPfAJMDwAOjA8MDtQDEA6YDmAOpA7QDHiLGA7UDKSJhIrEAZSJkIiAjISP3AEgisAAZIrcAGiJ/ILIAoCWgAAAAAACWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAARjtnZYx2zsrKTamvWevtTh/QiivVnSOEk6ZE4bLW25307bz4PqAVV3ibcjLrPTbTrQZRtmdL+BkhcJ98JavG4GOQoYWp3Qgq7+ZvT3xAK646e0zL8DblZLYNggGXfR190UZ6GBsL07ddMLTSzpbwM4itl1ZC4D75BNtZnAtQ/BpNa5t/hyYy0MEdVbVSuxFUFIB2Md7N356Y9rj7uYYnh/+9QOI18OlNc8uOKOBtysmmVq2sbBsEAyogY2Yu+zr6aMBdn6KN9DDktpNVdxDXtDErsNH7Zhl+vV1+G5wt4WfaFoYCEFsvrVZgSMjFxgwpg/1rTEmwwuMPi6WGFqD4NVCbn1Ca1jb/3O1Rmk9LFXsJcHIewz3bsYUGvNSkdiOo4k1EzSgA7WJuO4oH/Z3O5rumqYNx6wAsN9BnSTMLPtV1MFmwv33wH/lGl3pq4NObLNu0/uaWHVGgrXo0gd3lSMfmgi0NqyuCS5BM59g2CAaeDW9jVEDGzBJ7oakd8AQvW8tjSpGGyuXXva2ARBvpYQIgjgTIbSerjlZAzq8m37LpHbjXI1AReGVrdh32zTL8sPZVmXq7/DY8gJtTOFvCz35gpaq0LQwF8hZrYGGwL4Eni0jk7cbhS6v9hi6KjRlSzLZ+Nwb715hAwLD902b0HJVdk3lfEDrWGStdsyxA8Wtqe5YOoDY/oeYNWMR1qxwlM5B7QPnd0u+/5rWKnpYq9titTZMS4OQ8VNuDWcd9x7iBRqDdSwsJcg0wbhcJ6zeLT9BQ7oWd+UHDpp4kUADaxRY7vaDcdhQPmk1zars97Bb9BotzN0si3HFwRbni1gFYpO1mPW6gz5Iom6j3JxANcWErahSrZsO77V2k3n774D84wIda8o0u9bS2SZCVxtbs0/2xiRmwGCZfi39DzC07oooWXMdAW/VoBmCSDQK7y5FEgKz0js0FW8j2Yj5bUCbfHWtButcm6BWRHY9wsG0QDPZWd2k8G97GeiC5o+mG/UKvvZonZfAziCPLVO064AlefNtuO7aWx5TwraDxYwvkECUwg3XvfSraqUZNv4g20sPODbWmBEAcCUJ7e2zR3T+Nl+ZY6F2r8UcbkJYiH0vPvllwqNuTPQF01QZmEUagIvAAm0WVytbsOozti1+tnRQj66ZzRiHr2uln0L2M9Hb5bbJNngh4ADenPjtQwjGw9UR3i5IhvcY7jvv9XOtoWxgKLmB/b+Qt1sCiFrGlg2Yu2cVdSbwPEOATSSuHdtqNw5ectqTyVvsNXRDAajgUGzOkUiBUwZht/W7eVpoLTfDe6gvLuY/BhhAgh713RabN6Dng9o9cKrsm82yAQZb/JgV3uR1iEnNQy701a6zYAAAAAFiA4tfxBrR0qYZWo+INaOm6jYo+EwvcnUuLPkqFHaEJ3Z1D3nQbFX0sm/eqZxDJ4D+QKzeWFn2UzpafQwo7QhNSu6DE+z32Z6O9FLDoNir6sLbILRkwno5BsHxZjybjGtemAc1+IFduJqC1uW0ri/M1q2kknC0/h8St3VAUdoQmTPZm8eVwMFK98NKF9nvsz677DhgHfVi7X/26bJFrJS/J68f4YG2RWzjtc4xzZk3GK+avEYJg+bLa4BtlHk3GNUbNJOLvS3JBt8uQlvxArtykwEwLDUYaqFXG+H+bUGc8w9CF62pW00gy1jGfeV0P1SHd7QKIW7uh0NtZdijsCE1wbOqa2eq8OYFqXu7K4WCkkmGCczvn1NBjZzYHrfGpRPVxS5Nc9x0wBHf/50/8wa0XfCN6vvp12eZ6lw4i10peeleoidPR/iqLURz9wNoit5hawGAx3JbDaVx0FKfK61f/SgmAVsxfIw5MvfRFx4O+HUdhabTBN8rsQdUdPJqMa2QabrzNnDgflRzayN6X5IKGFwZVL5FQ9ncRsiG5hy1i4QfPtUiBmRYQAXvBW4pFiwMKp1yqjPH/8gwTKDahznhuISyvx6d6DJ8nmNvUrKaRjCxERiWqEuV9KvAys7xvces8jaZCutsFGjo50lGxB5gJMeVPoLez7Pg3UTtQ2BGaCFjzTaHepe75Xkc5stV5c+pVm6RD080HG1Mv0NXFsJONRVJEJMME53xD5jA3yNh6b0g6rcbObA6eTo7ZWuNTiQJjsV6r5ef982UFKrjuO2Dgbtm3SeiPFBFobcPf/vKAh34QVy74RvR2eKQjPfOaaWVzeL7M9S4dlHXMykSulbwcLndrtaghyO0owx+mo/1V/iMfglelSSEPJav2wbM0tZkz1mIwtYDBaDViFiO+XFx7Pr6L0rjoKIo4Cv9OldevFhU1eL+TY9vnE4EMrJi/RvQYXZFdngsyBR7p5cuIdqaTCJRxOo7C0mIOIAUphR5PcQX8mNiDqjuAA0jseDQZ1yC0+wCJMq2j0bJPdJo5cT7CuZPpaz/FSjO/J539KbjepalaCQwvDKpUr+59HyTQN0ekMuDuImRDtqKGlHIPW8Qqj7kTgwnvsNuJDWeQAjMtyILR+mEEh1k5hGWO9xL6za+SGBoGFE65XpSsbhUfkiRNn3Dz5BkmULyZxIdsQp3xNMJ/Jp1EKYXFxMtSjk/1GNbPF89/SUFsJ8mju+lfPPix394vGFmIjEDZalsLUlQRU9K2xvpU4GWi1AKyZnnf4j75PTWXf2uWz/+JQYR0twvc9FXcdXIDfy3y4ajjZH7ru+ScPBJiyp9K4ihIAWkWAlnp9NXwb6J2qO9AoQAAAADhtlLvg2vUBWLdhuoG16gL52H65IW8fA5kCi7hDK5RF+0YA/iPxYUSbnPX/Qp5+Rzrz6vziRItGWikf/YYXKMu+erxwZs3dyt6gSXEHosLJf89Wcqd4N8gfFaNzxTy8jn1RKDWl5kmPHYvdNMSJVoy85MI3ZFOjjdw+NzYMLhGXdEOFLKz05JYUmXAtzZv7lbX2by5tQQ6U1SyaLw8FhdK3aBFpb99w09ey5GgOsG/Qdt37a65qmtEWBw5qyjk5XPJUrecq48xdko5Y5kuM014z4Ufl61YmX1M7suSJEq0ZMX85ounIWBhRpcyjiKdHG/DK06AofbIakBAmoVgcI26gcbfVeMbWb8CrQtQZqclsYcRd17lzPG0BHqjW2ze3K2NaI5C77UIqA4DWkdqCXSmi78mSelioKMI1PJMeCwulJmafHv7R/qRGvGofn77hp+fTdRw/ZBSmhwmAHV0gn+DlTQtbPfpq4YWX/lpclXXiJPjhWfxPgONEIhRYlDIy+exfpkI06Mf4jIVTQ1WH2Pst6kxA9V0t+k0wuUGXGaa8L3QyB/fDU71PrscGlqxMvu7B2AU2drm/jhstBFIlGjJqSI6Jsv/vMwqSe4jTkPAwq/1ki3NKBTHLJ5GKEQ6Od6ljGsxx1Ht2ybnvzRC7ZHVo1vDOsGGRdAgMBc/geZrrmBQOUECjb+r4zvtRIcxw6Vmh5FKBFoXoOXsRU+NSDq5bP5oVg4j7rzvlbxTi5+SsmopwF0I9Ea36UIUWJm6yIB4DJpvGtEchftnTmqfbWCLftsyZBwGtI79sOZhlRSZl3Siy3gWf02S98kffZPDMZxydWNzEKjlmfEet3axXi3zUOh/HDI1+fbTg6sZt4mF+FY/1xc04lH91VQDEr3wfORcRi4LPpuo4d8t+g67J9TvWpGGADhMAOrZ+lIFqQKO3Ui03DIqaVrYy98IN6/VJtZOY3Q5LL7y080IoDylrN/KRBqNJSbHC8/HcVkgo3t3wULNJS4gEKPEwabxK+GW5hQAILT7Yv0yEYNLYP7nQU4fBvcc8GQqmhqFnMj17Ti3AwyO5exuU2MGj+Ux6evvHwgKWU3naITLDYkymeL5ykU6GHwX1XqhkT+bF8PQ/x3tMR6rv958djk0ncBr2/VkFC0U0kbCdg/AKJe5ksfzs7wmEgXuyXDYaCORbjrM0S6gSTCY8qZSRXRMs/Mmo9f5CEI2T1qtVJLcR7UkjqjdgPFePDajsV7rJVu/XXe021dZVTrhC7pYPI1QuYrfv8lyA2coxFGIShnXYquvhY3PpatsLhP5g0zOf2mteC2GxdxScCRqAJ9Gt4Z1pwHUmsML+nsivaiUQGAufqHWfJEAAAAAQ8umh8eQPNSEW5pTzycIc4zsrvQItzSnS3ySIJ5PEObdhLZhWd8sMhoUirVRaBiVEqO+Epb4JEHVM4LGfZlRFz5S95C6CW3D+cLLRLK+WWTxdf/jdS5lsDblwzfj1kHxoB3ndiRGfSVnjduiLPFJgm867wXrYXVWqKrT0foyoy65+QWpPaKf+n5pOX01Fatddt4N2vKFl4mxTjEOZH2zyCe2FU+j7Y8c4CYpm6tau7vokR08bMqHby8BIeiHq/I5xGBUvkA7zu0D8GhqSIz6SgtHXM2PHMaezNdgGRnk4t9aL0RY3nTeC52/eIzWw+qslQhMKxFT1nhSmHD/9GVGXbeu4Noz9XqJcD7cDjtCTi54ieip/NJy+r8Z1H1qKla7KeHwPK26am/ucczopQ1eyObG+E9inWIcIVbEm4n8F0rKN7HNTmwrng2njRlG2x85BRC5voFLI+3CgIVqF7MHrFR4oSvQIzt4k+id/9iUD9+bX6lYHwQzC1zPlYwOV+VzTZxD9MnH2aeKDH8gwXDtAIK7S4cG4NHURSt3U5AY9ZXT01MSV4jJQRRDb8ZfP/3mHPRbYZivwTLbZGe1c860ZDAFEuO0Xoiw95UuN7zpvBf/IhqQe3mAwziyJkTtgaSCrkoCBSoRmFZp2j7RIqas8WFtCnblNpAlpv02oujLjLqrACo9L1uwbmyQFukn7ITJZCciTuB8uB2jtx6adoScXDVPOtuxFKCI8t8GD7mjlC/6aDKofjOo+z34DnyVUt2t1pl7KlLC4XkRCUf+WnXV3hm+c1md5ekK3i5PjQsdzUtI1mvMzI3xn49GVxjEOsU4h/FjvwOq+exAYV9rEvkvlFEyiRPVaRNAlqK1x93eJ+eeFYFgGk4bM1mFvbSMtj9yz32Z9UsmA6YI7aUhQ5E3AQBakYaEAQvVx8qtUm9gfoMsq9gEqPBCV+s75NCgR3bw44zQd2fXSiQkHOyj8S9uZbLkyOI2v1KxdXT0Nj4IZhZ9w8CR+ZhawrpT/EUcrsrnX2VsYNs+9jOY9VC004nClJBCZBMUGf5AV9JYx4Lh2gHBKnyGRXHm1Qa6QFJNxtJyDg109YpW7qbJnUghYTeb8CL8PXemp6ck5WwBo64Qk4Pt2zUEaYCvVypLCdD/eIsWvLMtkTjot8J7IxFFMF+DZXOUJeL3z7+xtAQZNuacacmlV89OIQxVHWLH85opu2G6anDHPe4rXW6t4PvpeNN5LzsY36i/Q0X7/IjjfLf0cVz0P9fbcGRNiDOv6w+bBTje2M6eWVyVBAofXqKNVCIwrRfpliqTsgx50Hmq/gVKKDhGgY6/wtoU7IERsmvKbSBLiaaGzA39HJ9ONroYFAQAAJ0HAAAsCQAAhgUAAEgFAACnBQAAAAQAADIFAAC8BQAALAkAQYDBAAv3CQwACACMAAgATAAIAMwACAAsAAgArAAIAGwACADsAAgAHAAIAJwACABcAAgA3AAIADwACAC8AAgAfAAIAPwACAACAAgAggAIAEIACADCAAgAIgAIAKIACABiAAgA4gAIABIACACSAAgAUgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkAvwEJAH8ACQB/AQkA/wAJAP8BCQAAAAcAQAAHACAABwBgAAcAEAAHAFAABwAwAAcAcAAHAAgABwBIAAcAKAAHAGgABwAYAAcAWAAHADgABwB4AAcABAAHAEQABwAkAAcAZAAHABQABwBUAAcANAAHAHQABwADAAgAgwAIAEMACADDAAgAIwAIAKMACABjAAgA4wAIAAAABQAQAAUACAAFABgABQAEAAUAFAAFAAwABQAcAAUAAgAFABIABQAKAAUAGgAFAAYABQAWAAUADgAFAB4ABQABAAUAEQAFAAkABQAZAAUABQAFABUABQANAAUAHQAFAAMABQATAAUACwAFABsABQAHAAUAFwAFAEGBywAL7AYBAgMEBAUFBgYGBgcHBwcICAgICAgICAkJCQkJCQkJCgoKCgoKCgoKCgoKCgoKCgsLCwsLCwsLCwsLCwsLCwsMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8AABAREhITExQUFBQVFRUVFhYWFhYWFhYXFxcXFxcXFxgYGBgYGBgYGBgYGBgYGBgZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAAECAwQFBgcICAkJCgoLCwwMDAwNDQ0NDg4ODg8PDw8QEBAQEBAQEBEREREREREREhISEhISEhITExMTExMTExQUFBQUFBQUFBQUFBQUFBQVFRUVFRUVFRUVFRUVFRUVFhYWFhYWFhYWFhYWFhYWFhcXFxcXFxcXFxcXFxcXFxcYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbHAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAQYTSAAutAQEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAgCAAAMApAAABAQAAHgEAAA8AAAAAJQAAQCoAAAAAAAAeAAAADwAAAAAAAADAKgAAAAAAABMAAAAHAEHg0wALTQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAEHQ1AALZQEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAEGA1gALIwIAAAADAAAABwAAAAAAAAAQERIACAcJBgoFCwQMAw0CDgEPAEHQ1gALTQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAEHA1wALZQEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAEG42AALASwAQcTYAAthLQAAAAQABAAIAAQALgAAAAQABgAQAAYALwAAAAQADAAgABgALwAAAAgAEAAgACAALwAAAAgAEACAAIAALwAAAAgAIACAAAABMAAAACAAgAACAQAEMAAAACAAAgECAQAQMABBsNkAC6UTAwAEAAUABgAHAAgACQAKAAsADQAPABEAEwAXABsAHwAjACsAMwA7AEMAUwBjAHMAgwCjAMMA4wACAQAAAAAAABAAEAAQABAAEAAQABAAEAARABEAEQARABIAEgASABIAEwATABMAEwAUABQAFAAUABUAFQAVABUAEABNAMoAAAABAAIAAwAEAAUABwAJAA0AEQAZACEAMQBBAGEAgQDBAAEBgQEBAgEDAQQBBgEIAQwBEAEYASABMAFAAWAAAAAAEAAQABAAEAARABEAEgASABMAEwAUABQAFQAVABYAFgAXABcAGAAYABkAGQAaABoAGwAbABwAHAAdAB0AQABAAGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcAAEAcKAAAIYAAACCAAAAmgAAAIAAAACIAAAAhAAAAJ4AAQBwYAAAhYAAAIGAAACZAAEwc7AAAIeAAACDgAAAnQABEHEQAACGgAAAgoAAAJsAAACAgAAAiIAAAISAAACfAAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyAARBw0AAAhkAAAIJAAACagAAAgEAAAIhAAACEQAAAnoABAHCAAACFwAAAgcAAAJmAAUB1MAAAh8AAAIPAAACdgAEgcXAAAIbAAACCwAAAm4AAAIDAAACIwAAAhMAAAJ+AAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnEABEHCwAACGIAAAgiAAAJpAAACAIAAAiCAAAIQgAACeQAEAcHAAAIWgAACBoAAAmUABQHQwAACHoAAAg6AAAJ1AASBxMAAAhqAAAIKgAACbQAAAgKAAAIigAACEoAAAn0ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACcwAEQcPAAAIZgAACCYAAAmsAAAIBgAACIYAAAhGAAAJ7AAQBwkAAAheAAAIHgAACZwAFAdjAAAIfgAACD4AAAncABIHGwAACG4AAAguAAAJvAAACA4AAAiOAAAITgAACfwAYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwgAQBwoAAAhhAAAIIQAACaIAAAgBAAAIgQAACEEAAAniABAHBgAACFkAAAgZAAAJkgATBzsAAAh5AAAIOQAACdIAEQcRAAAIaQAACCkAAAmyAAAICQAACIkAAAhJAAAJ8gAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnKABEHDQAACGUAAAglAAAJqgAACAUAAAiFAAAIRQAACeoAEAcIAAAIXQAACB0AAAmaABQHUwAACH0AAAg9AAAJ2gASBxcAAAhtAAAILQAACboAAAgNAAAIjQAACE0AAAn6ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACcYAEQcLAAAIYwAACCMAAAmmAAAIAwAACIMAAAhDAAAJ5gAQBwcAAAhbAAAIGwAACZYAFAdDAAAIewAACDsAAAnWABIHEwAACGsAAAgrAAAJtgAACAsAAAiLAAAISwAACfYAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzgARBw8AAAhnAAAIJwAACa4AAAgHAAAIhwAACEcAAAnuABAHCQAACF8AAAgfAAAJngAUB2MAAAh/AAAIPwAACd4AEgcbAAAIbwAACC8AAAm+AAAIDwAACI8AAAhPAAAJ/gBgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnBABAHCgAACGAAAAggAAAJoQAACAAAAAiAAAAIQAAACeEAEAcGAAAIWAAACBgAAAmRABMHOwAACHgAAAg4AAAJ0QARBxEAAAhoAAAIKAAACbEAAAgIAAAIiAAACEgAAAnxABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACckAEQcNAAAIZAAACCQAAAmpAAAIBAAACIQAAAhEAAAJ6QAQBwgAAAhcAAAIHAAACZkAFAdTAAAIfAAACDwAAAnZABIHFwAACGwAAAgsAAAJuQAACAwAAAiMAAAITAAACfkAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxQARBwsAAAhiAAAIIgAACaUAAAgCAAAIggAACEIAAAnlABAHBwAACFoAAAgaAAAJlQAUB0MAAAh6AAAIOgAACdUAEgcTAAAIagAACCoAAAm1AAAICgAACIoAAAhKAAAJ9QAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnNABEHDwAACGYAAAgmAAAJrQAACAYAAAiGAAAIRgAACe0AEAcJAAAIXgAACB4AAAmdABQHYwAACH4AAAg+AAAJ3QASBxsAAAhuAAAILgAACb0AAAgOAAAIjgAACE4AAAn9AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcMAEAcKAAAIYQAACCEAAAmjAAAIAQAACIEAAAhBAAAJ4wAQBwYAAAhZAAAIGQAACZMAEwc7AAAIeQAACDkAAAnTABEHEQAACGkAAAgpAAAJswAACAkAAAiJAAAISQAACfMAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJywARBw0AAAhlAAAIJQAACasAAAgFAAAIhQAACEUAAAnrABAHCAAACF0AAAgdAAAJmwAUB1MAAAh9AAAIPQAACdsAEgcXAAAIbQAACC0AAAm7AAAIDQAACI0AAAhNAAAJ+wAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnHABEHCwAACGMAAAgjAAAJpwAACAMAAAiDAAAIQwAACecAEAcHAAAIWwAACBsAAAmXABQHQwAACHsAAAg7AAAJ1wASBxMAAAhrAAAIKwAACbcAAAgLAAAIiwAACEsAAAn3ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc8AEQcPAAAIZwAACCcAAAmvAAAIBwAACIcAAAhHAAAJ7wAQBwkAAAhfAAAIHwAACZ8AFAdjAAAIfwAACD8AAAnfABIHGwAACG8AAAgvAAAJvwAACA8AAAiPAAAITwAACf8AEAUBABcFAQETBREAGwUBEBEFBQAZBQEEFQVBAB0FAUAQBQMAGAUBAhQFIQAcBQEgEgUJABoFAQgWBYEAQAUAABAFAgAXBYEBEwUZABsFARgRBQcAGQUBBhUFYQAdBQFgEAUEABgFAQMUBTEAHAUBMBIFDQAaBQEMFgXBAEAFAAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEHg7AALQREACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABAAkLCwAACQYLAAALAAYRAAAAERERAEGx7QALIQsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwBB6+0ACwEMAEH37QALFQwAAAAADAAAAAAJDAAAAAAADAAADABBpe4ACwEOAEGx7gALFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBB3+4ACwEQAEHr7gALHg8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgBBou8ACw4SAAAAEhISAAAAAAAACQBB0+8ACwELAEHf7wALFQoAAAAACgAAAAAJCwAAAAAACwAACwBBjfAACwEMAEGZ8AALJwwAAAAADAAAAAAJDAAAAAAADAAADAAAMDEyMzQ1Njc4OUFCQ0RFRgBB5PAACwE+AEGL8QALBf//////AEHQ8QALVxkSRDsCPyxHFD0zMAobBkZLRTcPSQ6OFwNAHTxpKzYfSi0cASAlKSEIDBUWIi4QOD4LNDEYZHR1di9BCX85ESNDMkKJiosFBCYoJw0qHjWMBxpIkxOUlQBBsPIAC4oOSWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==";Po(ji)||(ji=x(ji));function lo(ze){try{if(ze==ji&&le)return new Uint8Array(le);var at=qa(ze);if(at)return at;if(R)return R(ze);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(St){is(St)}}function xo(ze,at){var St,lr,te;try{te=lo(ze),lr=new WebAssembly.Module(te),St=new WebAssembly.Instance(lr,at)}catch(Oe){var Ee=Oe.toString();throw $("failed to compile wasm module: "+Ee),(Ee.includes("imported Memory")||Ee.includes("memory import"))&&$("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),Oe}return[St,lr]}function FA(){var ze={a:Ue};function at(te,Ee){var Oe=te.exports;r.asm=Oe,De=r.asm.g,z(De.buffer),ee=r.asm.W,mn(r.asm.h),Do("wasm-instantiate")}if(ci("wasm-instantiate"),r.instantiateWasm)try{var St=r.instantiateWasm(ze,at);return St}catch(te){return $("Module.instantiateWasm callback failed with error: "+te),!1}var lr=xo(ji,ze);return at(lr[0]),r.asm}function df(ze){return F.getFloat32(ze,!0)}function mh(ze){return F.getFloat64(ze,!0)}function yh(ze){return F.getInt16(ze,!0)}function co(ze){return F.getInt32(ze,!0)}function qn(ze,at){F.setInt32(ze,at,!0)}function Ns(ze){for(;ze.length>0;){var at=ze.shift();if(typeof at=="function"){at(r);continue}var St=at.func;typeof St=="number"?at.arg===void 0?ee.get(St)():ee.get(St)(at.arg):St(at.arg===void 0?null:at.arg)}}function uo(ze,at){var St=new Date(co((ze>>2)*4)*1e3);qn((at>>2)*4,St.getUTCSeconds()),qn((at+4>>2)*4,St.getUTCMinutes()),qn((at+8>>2)*4,St.getUTCHours()),qn((at+12>>2)*4,St.getUTCDate()),qn((at+16>>2)*4,St.getUTCMonth()),qn((at+20>>2)*4,St.getUTCFullYear()-1900),qn((at+24>>2)*4,St.getUTCDay()),qn((at+36>>2)*4,0),qn((at+32>>2)*4,0);var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),te=(St.getTime()-lr)/(1e3*60*60*24)|0;return qn((at+28>>2)*4,te),uo.GMTString||(uo.GMTString=tt("GMT")),qn((at+40>>2)*4,uo.GMTString),at}function ou(ze,at){return uo(ze,at)}function au(ze,at,St){Te.copyWithin(ze,at,at+St)}function lu(ze){try{return De.grow(ze-Se.byteLength+65535>>>16),z(De.buffer),1}catch{}}function NA(ze){var at=Te.length;ze=ze>>>0;var St=2147483648;if(ze>St)return!1;for(var lr=1;lr<=4;lr*=2){var te=at*(1+.2/lr);te=Math.min(te,ze+100663296);var Ee=Math.min(St,Qe(Math.max(ze,te),65536)),Oe=lu(Ee);if(Oe)return!0}return!1}function OA(ze){fe(ze)}function Aa(ze){var at=Date.now()/1e3|0;return ze&&qn((ze>>2)*4,at),at}function pa(){if(pa.called)return;pa.called=!0;var ze=new Date().getFullYear(),at=new Date(ze,0,1),St=new Date(ze,6,1),lr=at.getTimezoneOffset(),te=St.getTimezoneOffset(),Ee=Math.max(lr,te);qn((Tl()>>2)*4,Ee*60),qn((vs()>>2)*4,+(lr!=te));function Oe(pn){var ui=pn.toTimeString().match(/\(([A-Za-z ]+)\)$/);return ui?ui[1]:"GMT"}var mt=Oe(at),Et=Oe(St),Dt=tt(mt),tr=tt(Et);te>2)*4,Dt),qn((Mi()+4>>2)*4,tr)):(qn((Mi()>>2)*4,tr),qn((Mi()+4>>2)*4,Dt))}function LA(ze){pa();var at=Date.UTC(co((ze+20>>2)*4)+1900,co((ze+16>>2)*4),co((ze+12>>2)*4),co((ze+8>>2)*4),co((ze+4>>2)*4),co((ze>>2)*4),0),St=new Date(at);qn((ze+24>>2)*4,St.getUTCDay());var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),te=(St.getTime()-lr)/(1e3*60*60*24)|0;return qn((ze+28>>2)*4,te),St.getTime()/1e3|0}var gr=typeof atob=="function"?atob:function(ze){var at="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",St="",lr,te,Ee,Oe,mt,Et,Dt,tr=0;ze=ze.replace(/[^A-Za-z0-9\+\/\=]/g,"");do Oe=at.indexOf(ze.charAt(tr++)),mt=at.indexOf(ze.charAt(tr++)),Et=at.indexOf(ze.charAt(tr++)),Dt=at.indexOf(ze.charAt(tr++)),lr=Oe<<2|mt>>4,te=(mt&15)<<4|Et>>2,Ee=(Et&3)<<6|Dt,St=St+String.fromCharCode(lr),Et!==64&&(St=St+String.fromCharCode(te)),Dt!==64&&(St=St+String.fromCharCode(Ee));while(tr0||(Ct(),Cr>0))return;function at(){Fn||(Fn=!0,r.calledRun=!0,!ye&&(Yt(),s(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),ir()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),at()},1)):at()}if(r.run=dc,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return dc(),t}}();typeof bT=="object"&&typeof Bj=="object"?Bj.exports=wj:typeof define=="function"&&define.amd?define([],function(){return wj}):typeof bT=="object"&&(bT.createModule=wj)});var Gp,KAe,JAe,zAe=Ze(()=>{Gp=["number","number"],KAe=(X=>(X[X.ZIP_ER_OK=0]="ZIP_ER_OK",X[X.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",X[X.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",X[X.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",X[X.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",X[X.ZIP_ER_READ=5]="ZIP_ER_READ",X[X.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",X[X.ZIP_ER_CRC=7]="ZIP_ER_CRC",X[X.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",X[X.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",X[X.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",X[X.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",X[X.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",X[X.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",X[X.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",X[X.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",X[X.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",X[X.ZIP_ER_EOF=17]="ZIP_ER_EOF",X[X.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",X[X.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",X[X.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",X[X.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",X[X.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",X[X.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",X[X.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",X[X.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",X[X.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",X[X.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",X[X.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",X[X.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",X[X.ZIP_ER_TELL=30]="ZIP_ER_TELL",X[X.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",X))(KAe||{}),JAe=e=>({get HEAPU8(){return e.HEAPU8},errors:KAe,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:e._malloc(1),uint32S:e._malloc(4),malloc:e._malloc,free:e._free,getValue:e.getValue,openFromSource:e.cwrap("zip_open_from_source","number",["number","number","number"]),close:e.cwrap("zip_close","number",["number"]),discard:e.cwrap("zip_discard",null,["number"]),getError:e.cwrap("zip_get_error","number",["number"]),getName:e.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:e.cwrap("zip_get_num_entries","number",["number","number"]),delete:e.cwrap("zip_delete","number",["number","number"]),statIndex:e.cwrap("zip_stat_index","number",["number",...Gp,"number","number"]),fopenIndex:e.cwrap("zip_fopen_index","number",["number",...Gp,"number"]),fread:e.cwrap("zip_fread","number",["number","number","number","number"]),fclose:e.cwrap("zip_fclose","number",["number"]),dir:{add:e.cwrap("zip_dir_add","number",["number","string"])},file:{add:e.cwrap("zip_file_add","number",["number","string","number","number"]),getError:e.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:e.cwrap("zip_file_get_external_attributes","number",["number",...Gp,"number","number","number"]),setExternalAttributes:e.cwrap("zip_file_set_external_attributes","number",["number",...Gp,"number","number","number"]),setMtime:e.cwrap("zip_file_set_mtime","number",["number",...Gp,"number","number"]),setCompression:e.cwrap("zip_set_file_compression","number",["number",...Gp,"number","number"])},ext:{countSymlinks:e.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:e.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:e.cwrap("zip_error_strerror","string",["number"])},name:{locate:e.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:e.cwrap("zip_source_buffer_create","number",["number",...Gp,"number","number"]),fromBuffer:e.cwrap("zip_source_buffer","number",["number","number",...Gp,"number"]),free:e.cwrap("zip_source_free",null,["number"]),keep:e.cwrap("zip_source_keep",null,["number"]),open:e.cwrap("zip_source_open","number",["number"]),close:e.cwrap("zip_source_close","number",["number"]),seek:e.cwrap("zip_source_seek","number",["number",...Gp,"number"]),tell:e.cwrap("zip_source_tell","number",["number"]),read:e.cwrap("zip_source_read","number",["number","number","number"]),error:e.cwrap("zip_source_error","number",["number"])},struct:{statS:e.cwrap("zipstruct_statS","number",[]),statSize:e.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:e.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:e.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:e.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:e.cwrap("zipstruct_stat_crc","number",["number"]),errorS:e.cwrap("zipstruct_errorS","number",[]),errorCodeZip:e.cwrap("zipstruct_error_code_zip","number",["number"])}})});function vj(e,t){let r=e.indexOf(t);if(r<=0)return null;let s=r;for(;r>=0&&(s=r+t.length,e[s]!==Y.sep);){if(e[r-1]===Y.sep)return null;r=e.indexOf(t,s)}return e.length>s&&e[s]!==Y.sep?null:e.slice(0,s)}var nA,ZAe=Ze(()=>{bt();bt();iA();nA=class e extends td{static async openPromise(t,r){let s=new e(r);try{return await t(s)}finally{s.saveAndClose()}}constructor(t={}){let r=t.fileExtensions,s=t.readOnlyArchives,a=typeof r>"u"?f=>vj(f,".zip"):f=>{for(let p of r){let h=vj(f,p);if(h)return h}return null},n=(f,p)=>new hs(p,{baseFs:f,readOnly:s,stats:f.statSync(p),customZipImplementation:t.customZipImplementation}),c=async(f,p)=>{let h={baseFs:f,readOnly:s,stats:await f.statPromise(p),customZipImplementation:t.customZipImplementation};return()=>new hs(p,h)};super({...t,factorySync:n,factoryPromise:c,getMountPoint:a})}}});var Sj,PI,bj=Ze(()=>{Cj();Sj=class extends Error{constructor(t,r){super(t),this.name="Libzip Error",this.code=r}},PI=class{constructor(t){this.filesShouldBeCached=!0;let r="buffer"in t?t.buffer:t.baseFs.readFileSync(t.path);this.libzip=ov();let s=this.libzip.malloc(4);try{let c=0;t.readOnly&&(c|=this.libzip.ZIP_RDONLY);let f=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(f,c,s),this.lzSource=f}catch(p){throw this.libzip.source.free(f),p}if(this.zip===0){let p=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(p,this.libzip.getValue(s,"i32")),this.makeLibzipError(p)}}finally{this.libzip.free(s)}let a=this.libzip.getNumEntries(this.zip,0),n=new Array(a);for(let c=0;c>>0,n=this.libzip.struct.statMtime(r)>>>0,c=this.libzip.struct.statCrc(r)>>>0;return{size:a,mtime:n,crc:c}}makeLibzipError(t){let r=this.libzip.struct.errorCodeZip(t),s=this.libzip.error.strerror(t),a=new Sj(s,this.libzip.errors[r]);if(r===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${a.message}`);return a}setFileSource(t,r,s){let a=this.allocateSource(s);try{let n=this.libzip.file.add(this.zip,t,a,this.libzip.ZIP_FL_OVERWRITE);if(n===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(r!==null&&this.libzip.file.setCompression(this.zip,n,0,r[0],r[1])===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return n}catch(n){throw this.libzip.source.free(a),n}}setMtime(t,r){if(this.libzip.file.setMtime(this.zip,t,0,r,0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getExternalAttributes(t){if(this.libzip.file.getExternalAttributes(this.zip,t,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let s=this.libzip.getValue(this.libzip.uint08S,"i8")>>>0,a=this.libzip.getValue(this.libzip.uint32S,"i32")>>>0;return[s,a]}setExternalAttributes(t,r,s){if(this.libzip.file.setExternalAttributes(this.zip,t,0,0,r,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}locate(t){return this.libzip.name.locate(this.zip,t,0)}getFileSource(t){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,t,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statCompSize(r),n=this.libzip.struct.statCompMethod(r),c=this.libzip.malloc(a);try{let f=this.libzip.fopenIndex(this.zip,t,0,this.libzip.ZIP_FL_COMPRESSED);if(f===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let p=this.libzip.fread(f,c,a,0);if(p===-1)throw this.makeLibzipError(this.libzip.file.getError(f));if(pa)throw new Error("Overread");let h=this.libzip.HEAPU8.subarray(c,c+a);return{data:Buffer.from(h),compressionMethod:n}}finally{this.libzip.fclose(f)}}finally{this.libzip.free(c)}}deleteEntry(t){if(this.libzip.delete(this.zip,t)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}addDirectory(t){let r=this.libzip.dir.add(this.zip,t);if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return r}getBufferAndClose(){try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let t=this.libzip.source.tell(this.lzSource);if(t===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.malloc(t);if(!r)throw new Error("Couldn't allocate enough memory");try{let s=this.libzip.source.read(this.lzSource,r,t);if(s===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(st)throw new Error("Overread");let a=Buffer.from(this.libzip.HEAPU8.subarray(r,r+t));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(a=Buffer.concat([a,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),a}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource)}}allocateBuffer(t){Buffer.isBuffer(t)||(t=Buffer.from(t));let r=this.libzip.malloc(t.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,t.byteLength).set(t),{buffer:r,byteLength:t.byteLength}}allocateUnattachedSource(t){let r=this.libzip.struct.errorS(),{buffer:s,byteLength:a}=this.allocateBuffer(t),n=this.libzip.source.fromUnattachedBuffer(s,a,0,1,r);if(n===0)throw this.libzip.free(r),this.makeLibzipError(r);return n}allocateSource(t){let{buffer:r,byteLength:s}=this.allocateBuffer(t),a=this.libzip.source.fromBuffer(this.zip,r,s,0,1);if(a===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return a}discard(){this.libzip.discard(this.zip)}}});function ert(e){if(typeof e=="string"&&String(+e)===e)return+e;if(typeof e=="number"&&Number.isFinite(e))return e<0?Date.now()/1e3:e;if(XAe.types.isDate(e))return e.getTime()/1e3;throw new Error("Invalid time")}function DT(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Fa,Dj,XAe,Pj,cm,xj,kj,$Ae,hs,PT=Ze(()=>{bt();bt();bt();bt();bt();bt();Fa=Ce("fs"),Dj=Ce("stream"),XAe=Ce("util"),Pj=et(Ce("zlib"));bj();cm=3,xj=0,kj=8,$Ae="mixed";hs=class extends jf{constructor(r,s={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;s.readOnly&&(this.readOnly=!0);let a=s;this.level=typeof a.level<"u"?a.level:$Ae;let n=s.customZipImplementation??PI;if(typeof r=="string"){let{baseFs:f=new Kn}=a;this.baseFs=f,this.path=r}else this.path=null,this.baseFs=null;if(s.stats)this.stats=s.stats;else if(typeof r=="string")try{this.stats=this.baseFs.statSync(r)}catch(f){if(f.code==="ENOENT"&&a.create)this.stats=ll.makeDefaultStats();else throw f}else this.stats=ll.makeDefaultStats();typeof r=="string"?s.create?this.zipImpl=new n({buffer:DT(),readOnly:this.readOnly}):this.zipImpl=new n({path:r,baseFs:this.baseFs,readOnly:this.readOnly,size:this.stats.size}):this.zipImpl=new n({buffer:r??DT(),readOnly:this.readOnly}),this.listings.set(wt.root,new Set);let c=this.zipImpl.getListings();for(let f=0;f{this.closeSync(f)}})}async readPromise(r,s,a,n,c){return this.readSync(r,s,a,n,c)}readSync(r,s,a=0,n=s.byteLength,c=-1){let f=this.fds.get(r);if(typeof f>"u")throw or.EBADF("read");let p=c===-1||c===null?f.cursor:c,h=this.readFileSync(f.p);h.copy(s,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(c===-1||c===null)&&(f.cursor+=E),E}async writePromise(r,s,a,n,c){return typeof s=="string"?this.writeSync(r,s,c):this.writeSync(r,s,a,n,c)}writeSync(r,s,a,n,c){throw typeof this.fds.get(r)>"u"?or.EBADF("read"):new Error("Unimplemented")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>"u")throw or.EBADF("read");this.fds.delete(r)}createReadStream(r,{encoding:s}={}){if(r===null)throw new Error("Unimplemented");let a=this.openSync(r,"r"),n=Object.assign(new Dj.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(f,p)=>{clearImmediate(c),this.closeSync(a),p(f)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),c=setImmediate(async()=>{try{let f=await this.readFilePromise(r,s);n.bytesRead=f.length,n.end(f)}catch(f){n.destroy(f)}});return n}createWriteStream(r,{encoding:s}={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);if(r===null)throw new Error("Unimplemented");let a=[],n=this.openSync(r,"w"),c=Object.assign(new Dj.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(f,p)=>{try{f?p(f):(this.writeFileSync(r,Buffer.concat(a),s),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){c.destroy()},bytesWritten:0,path:r,pending:!1});return c.on("data",f=>{let p=Buffer.from(f);c.bytesWritten+=p.length,a.push(p)}),c}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let s=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`lstat '${r}'`);return s}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw or.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=Y.resolve(wt.root,r);return this.entries.has(a)||this.listings.has(a)}let s;try{s=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return s===void 0?!1:this.entries.has(s)||this.listings.has(s)}async accessPromise(r,s){return this.accessSync(r,s)}accessSync(r,s=Fa.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`access '${r}'`);if(this.readOnly&&s&Fa.constants.W_OK)throw or.EROFS(`access '${r}'`)}async statPromise(r,s={bigint:!1}){return s.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`stat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,s)}}async fstatPromise(r,s){return this.fstatSync(r,s)}fstatSync(r,s){let a=this.fds.get(r);if(typeof a>"u")throw or.EBADF("fstatSync");let{p:n}=a,c=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(c)&&!this.listings.has(c))throw or.ENOENT(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(c))throw or.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,c,s)}async lstatPromise(r,s={bigint:!1}){return s.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`lstat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,s)}}statImpl(r,s,a={}){let n=this.entries.get(s);if(typeof n<"u"){let c=this.zipImpl.stat(n),f=c.crc,p=c.size,h=c.mtime*1e3,E=this.stats.uid,C=this.stats.gid,S=512,x=Math.ceil(c.size/S),I=h,R=h,N=h,U=new Date(I),K=new Date(R),$=new Date(N),ie=new Date(h),fe=this.listings.has(s)?Fa.constants.S_IFDIR:this.isSymbolicLink(n)?Fa.constants.S_IFLNK:Fa.constants.S_IFREG,le=fe===Fa.constants.S_IFDIR?493:420,ge=fe|this.getUnixMode(n,le)&511,pe=Object.assign(new ll.StatEntry,{uid:E,gid:C,size:p,blksize:S,blocks:x,atime:U,birthtime:K,ctime:$,mtime:ie,atimeMs:I,birthtimeMs:R,ctimeMs:N,mtimeMs:h,mode:ge,crc:f});return a.bigint===!0?ll.convertToBigIntStats(pe):pe}if(this.listings.has(s)){let c=this.stats.uid,f=this.stats.gid,p=0,h=512,E=0,C=this.stats.mtimeMs,S=this.stats.mtimeMs,x=this.stats.mtimeMs,I=this.stats.mtimeMs,R=new Date(C),N=new Date(S),U=new Date(x),K=new Date(I),$=Fa.constants.S_IFDIR|493,fe=Object.assign(new ll.StatEntry,{uid:c,gid:f,size:p,blksize:h,blocks:E,atime:R,birthtime:N,ctime:U,mtime:K,atimeMs:C,birthtimeMs:S,ctimeMs:x,mtimeMs:I,mode:$,crc:0});return a.bigint===!0?ll.convertToBigIntStats(fe):fe}throw new Error("Unreachable")}getUnixMode(r,s){let[a,n]=this.zipImpl.getExternalAttributes(r);return a!==cm?s:n>>>16}registerListing(r){let s=this.listings.get(r);if(s)return s;this.registerListing(Y.dirname(r)).add(Y.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,s){this.registerListing(Y.dirname(r)).add(Y.basename(r)),this.entries.set(r,s)}unregisterListing(r){this.listings.delete(r),this.listings.get(Y.dirname(r))?.delete(Y.basename(r))}unregisterEntry(r){this.unregisterListing(r);let s=this.entries.get(r);this.entries.delete(r),!(typeof s>"u")&&(this.fileSources.delete(s),this.isSymbolicLink(s)&&this.symlinkCount--)}deleteEntry(r,s){this.unregisterEntry(r),this.zipImpl.deleteEntry(s)}resolveFilename(r,s,a=!0,n=!0){if(!this.ready)throw or.EBUSY(`archive closed, ${r}`);let c=Y.resolve(wt.root,s);if(c==="/")return wt.root;let f=this.entries.get(c);if(a&&f!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(f)){let p=this.getFileSource(f).toString();return this.resolveFilename(r,Y.resolve(Y.dirname(c),p),!0,n)}else return c;for(;;){let p=this.resolveFilename(r,Y.dirname(c),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw or.ENOENT(r)}if(!h)throw or.ENOTDIR(r);if(c=Y.resolve(p,Y.basename(c)),!a||this.symlinkCount===0)break;let C=this.zipImpl.locate(c.slice(1));if(C===-1)break;if(this.isSymbolicLink(C)){let S=this.getFileSource(C).toString();c=Y.resolve(Y.dirname(c),S)}else break}return c}setFileSource(r,s){let a=Buffer.isBuffer(s)?s:Buffer.from(s),n=Y.relative(wt.root,r),c=null;this.level!=="mixed"&&(c=[this.level===0?xj:kj,this.level]);let f=this.zipImpl.setFileSource(n,c,a);return this.fileSources.set(f,a),f}isSymbolicLink(r){if(this.symlinkCount===0)return!1;let[s,a]=this.zipImpl.getExternalAttributes(r);return s!==cm?!1:(a>>>16&Fa.constants.S_IFMT)===Fa.constants.S_IFLNK}getFileSource(r,s={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<"u")return a;let{data:n,compressionMethod:c}=this.zipImpl.getFileSource(r);if(c===xj)return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,n),n;if(c===kj){if(s.asyncDecompress)return new Promise((f,p)=>{Pj.default.inflateRaw(n,(h,E)=>{h?p(h):(this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,E),f(E))})});{let f=Pj.default.inflateRawSync(n);return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,f),f}}else throw new Error(`Unsupported compression method: ${c}`)}async fchmodPromise(r,s){return this.chmodPromise(this.fdToPath(r,"fchmod"),s)}fchmodSync(r,s){return this.chmodSync(this.fdToPath(r,"fchmodSync"),s)}async chmodPromise(r,s){return this.chmodSync(r,s)}chmodSync(r,s){if(this.readOnly)throw or.EROFS(`chmod '${r}'`);s&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>"u")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let f=this.getUnixMode(n,Fa.constants.S_IFREG|0)&-512|s;this.zipImpl.setExternalAttributes(n,cm,f<<16)}async fchownPromise(r,s,a){return this.chownPromise(this.fdToPath(r,"fchown"),s,a)}fchownSync(r,s,a){return this.chownSync(this.fdToPath(r,"fchownSync"),s,a)}async chownPromise(r,s,a){return this.chownSync(r,s,a)}chownSync(r,s,a){throw new Error("Unimplemented")}async renamePromise(r,s){return this.renameSync(r,s)}renameSync(r,s){throw new Error("Unimplemented")}async copyFilePromise(r,s,a){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}copyFileSync(r,s,a=0){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=this.getFileSource(n),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}prepareCopyFile(r,s,a=0){if(this.readOnly)throw or.EROFS(`copyfile '${r} -> '${s}'`);if(a&Fa.constants.COPYFILE_FICLONE_FORCE)throw or.ENOSYS("unsupported clone operation",`copyfile '${r}' -> ${s}'`);let n=this.resolveFilename(`copyfile '${r} -> ${s}'`,r),c=this.entries.get(n);if(typeof c>"u")throw or.EINVAL(`copyfile '${r}' -> '${s}'`);let f=this.resolveFilename(`copyfile '${r}' -> ${s}'`,s),p=this.entries.get(f);if(a&(Fa.constants.COPYFILE_EXCL|Fa.constants.COPYFILE_FICLONE_FORCE)&&typeof p<"u")throw or.EEXIST(`copyfile '${r}' -> '${s}'`);return{indexSource:c,resolvedDestP:f,indexDest:p}}async appendFilePromise(r,s,a){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFilePromise(r,s,a)}appendFileSync(r,s,a={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFileSync(r,s,a)}fdToPath(r,s){let a=this.fds.get(r)?.p;if(typeof a>"u")throw or.EBADF(s);return a}async writeFilePromise(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([await this.getFileSource(f,{asyncDecompress:!0}),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&await this.chmodPromise(p,c)}writeFileSync(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([this.getFileSource(f),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&this.chmodSync(p,c)}prepareWriteFile(r,s){if(typeof r=="number"&&(r=this.fdToPath(r,"read")),this.readOnly)throw or.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw or.EISDIR(`open '${r}'`);let n=null,c=null;typeof s=="string"?n=s:typeof s=="object"&&({encoding:n=null,mode:c=null}=s);let f=this.entries.get(a);return{encoding:n,mode:c,resolvedP:a,index:f}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw or.EROFS(`unlink '${r}'`);let s=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(s))throw or.EISDIR(`unlink '${r}'`);let a=this.entries.get(s);if(typeof a>"u")throw or.EINVAL(`unlink '${r}'`);this.deleteEntry(s,a)}async utimesPromise(r,s,a){return this.utimesSync(r,s,a)}utimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,s,a){return this.lutimesSync(r,s,a)}lutimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,s){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error("Unreachable");this.zipImpl.setMtime(a,ert(s))}async mkdirPromise(r,s){return this.mkdirSync(r,s)}mkdirSync(r,{mode:s=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:s});if(this.readOnly)throw or.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw or.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,s)}async rmdirPromise(r,s){return this.rmdirSync(r,s)}rmdirSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rmdir '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rmdir '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,c)}async rmPromise(r,s){return this.rmSync(r,s)}rmSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rm '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rm '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rm '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rm '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rm '${r}'`);this.deleteEntry(r,c)}hydrateDirectory(r){let s=this.zipImpl.addDirectory(Y.relative(wt.root,r));return this.registerListing(r),this.registerEntry(r,s),s}async linkPromise(r,s){return this.linkSync(r,s)}linkSync(r,s){throw or.EOPNOTSUPP(`link '${r}' -> '${s}'`)}async symlinkPromise(r,s){return this.symlinkSync(r,s)}symlinkSync(r,s){if(this.readOnly)throw or.EROFS(`symlink '${r}' -> '${s}'`);let a=this.resolveFilename(`symlink '${r}' -> '${s}'`,s);if(this.listings.has(a))throw or.EISDIR(`symlink '${r}' -> '${s}'`);if(this.entries.has(a))throw or.EEXIST(`symlink '${r}' -> '${s}'`);let n=this.setFileSource(a,r);this.registerEntry(a,n),this.zipImpl.setExternalAttributes(n,cm,(Fa.constants.S_IFLNK|511)<<16),this.symlinkCount+=1}async readFilePromise(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return s?a.toString(s):a}readFileSync(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=this.readFileBuffer(r);return s?a.toString(s):a}readFileBuffer(r,s={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdToPath(r,"read"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`open '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw or.EISDIR("read");let n=this.entries.get(a);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,s)}async readdirPromise(r,s){return this.readdirSync(r,s)}readdirSync(r,s){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`scandir '${r}'`);if(s?.recursive)if(s?.withFileTypes){let c=Array.from(n,f=>Object.assign(this.statImpl("lstat",Y.join(r,f)),{name:f,path:wt.dot,parentPath:wt.dot}));for(let f of c){if(!f.isDirectory())continue;let p=Y.join(f.path,f.name),h=this.listings.get(Y.join(a,p));for(let E of h)c.push(Object.assign(this.statImpl("lstat",Y.join(r,p,E)),{name:E,path:p,parentPath:p}))}return c}else{let c=[...n];for(let f of c){let p=this.listings.get(Y.join(a,f));if(!(typeof p>"u"))for(let h of p)c.push(Y.join(f,h))}return c}else return s?.withFileTypes?Array.from(n,c=>Object.assign(this.statImpl("lstat",Y.join(r,c)),{name:c,path:void 0,parentPath:void 0})):[...n]}async readlinkPromise(r){let s=this.prepareReadlink(r);return(await this.getFileSource(s,{asyncDecompress:!0})).toString()}readlinkSync(r){let s=this.prepareReadlink(r);return this.getFileSource(s).toString()}prepareReadlink(r){let s=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`readlink '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(s))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(s))throw or.EINVAL(`readlink '${r}'`);let a=this.entries.get(s);if(a===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(a))throw or.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=await this.getFileSource(n,{asyncDecompress:!0}),f=Buffer.alloc(s,0);return c.copy(f),await this.writeFilePromise(r,f)}truncateSync(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=this.getFileSource(n),f=Buffer.alloc(s,0);return c.copy(f),this.writeFileSync(r,f)}async ftruncatePromise(r,s){return this.truncatePromise(this.fdToPath(r,"ftruncate"),s)}ftruncateSync(r,s){return this.truncateSync(this.fdToPath(r,"ftruncateSync"),s)}watch(r,s,a){let n;switch(typeof s){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=s);break}if(!n)return{on:()=>{},close:()=>{}};let c=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(c)}}}watchFile(r,s,a){let n=Y.resolve(wt.root,r);return fE(this,n,s,a)}unwatchFile(r,s){let a=Y.resolve(wt.root,r);return y0(this,a,s)}}});function tpe(e,t,r=Buffer.alloc(0),s){let a=new hs(r),n=C=>C===t||C.startsWith(`${t}/`)?C.slice(0,t.length):null,c=async(C,S)=>()=>a,f=(C,S)=>a,p={...e},h=new Kn(p),E=new td({baseFs:h,getMountPoint:n,factoryPromise:c,factorySync:f,magicByte:21,maxAge:1/0,typeCheck:s?.typeCheck});return L2(epe.default,new rd(E)),a}var epe,rpe=Ze(()=>{bt();epe=et(Ce("fs"));PT()});var npe=Ze(()=>{ZAe();PT();rpe()});var Qj,av,xT,ipe=Ze(()=>{bt();PT();Qj={CENTRAL_DIRECTORY:33639248,END_OF_CENTRAL_DIRECTORY:101010256},av=22,xT=class e{constructor(t){this.filesShouldBeCached=!1;if("buffer"in t)throw new Error("Buffer based zip archives are not supported");if(!t.readOnly)throw new Error("Writable zip archives are not supported");this.baseFs=t.baseFs,this.fd=this.baseFs.openSync(t.path,"r");try{this.entries=e.readZipSync(this.fd,this.baseFs,t.size)}catch(r){throw this.baseFs.closeSync(this.fd),this.fd="closed",r}}static readZipSync(t,r,s){if(s=0;N--)if(n.readUInt32LE(N)===Qj.END_OF_CENTRAL_DIRECTORY){a=N;break}if(a===-1)throw new Error("Not a zip archive")}let c=n.readUInt16LE(a+10),f=n.readUInt32LE(a+12),p=n.readUInt32LE(a+16),h=n.readUInt16LE(a+20);if(a+h+av>n.length)throw new Error("Zip archive inconsistent");if(c==65535||f==4294967295||p==4294967295)throw new Error("Zip 64 is not supported");if(f>s)throw new Error("Zip archive inconsistent");if(c>f/46)throw new Error("Zip archive inconsistent");let E=Buffer.alloc(f);if(r.readSync(t,E,0,E.length,p)!==E.length)throw new Error("Zip archive inconsistent");let C=[],S=0,x=0,I=0;for(;xE.length)throw new Error("Zip archive inconsistent");if(E.readUInt32LE(S)!==Qj.CENTRAL_DIRECTORY)throw new Error("Zip archive inconsistent");let N=E.readUInt16LE(S+4)>>>8;if(E.readUInt16LE(S+8)&1)throw new Error("Encrypted zip files are not supported");let K=E.readUInt16LE(S+10),$=E.readUInt32LE(S+16),ie=E.readUInt16LE(S+28),fe=E.readUInt16LE(S+30),le=E.readUInt16LE(S+32),ge=E.readUInt32LE(S+42),pe=E.toString("utf8",S+46,S+46+ie).replaceAll("\0"," ");if(pe.includes("\0"))throw new Error("Invalid ZIP file");let De=E.readUInt32LE(S+20),ye=E.readUInt32LE(S+38);C.push({name:pe,os:N,mtime:pi.SAFE_TIME,crc:$,compressionMethod:K,isSymbolicLink:N===cm&&(ye>>>16&pi.S_IFMT)===pi.S_IFLNK,size:E.readUInt32LE(S+24),compressedSize:De,externalAttributes:ye,localHeaderOffset:ge}),I+=De,x+=1,S+=46+ie+fe+le}if(I>s)throw new Error("Zip archive inconsistent");if(S!==E.length)throw new Error("Zip archive inconsistent");return C}getExternalAttributes(t){let r=this.entries[t];return[r.os,r.externalAttributes]}getListings(){return this.entries.map(t=>t.name)}getSymlinkCount(){let t=0;for(let r of this.entries)r.isSymbolicLink&&(t+=1);return t}stat(t){let r=this.entries[t];return{crc:r.crc,mtime:r.mtime,size:r.size}}locate(t){for(let r=0;r$Ae,DEFLATE:()=>kj,JsZipImpl:()=>xT,LibZipImpl:()=>PI,STORE:()=>xj,ZIP_UNIX:()=>cm,ZipFS:()=>hs,ZipOpenFS:()=>nA,getArchivePart:()=>vj,getLibzipPromise:()=>rrt,getLibzipSync:()=>trt,makeEmptyArchive:()=>DT,mountMemoryDrive:()=>tpe});function trt(){return ov()}async function rrt(){return ov()}var spe,iA=Ze(()=>{Cj();spe=et(VAe());zAe();npe();ipe();bj();WAe(()=>{let e=(0,spe.default)();return JAe(e)})});var cv,ope=Ze(()=>{bt();jt();uv();cv=class extends st{constructor(){super(...arguments);this.cwd=he.String("--cwd",process.cwd(),{description:"The directory to run the command in"});this.commandName=he.String();this.args=he.Proxy()}static{this.usage={description:"run a command using yarn's portable shell",details:` + This command will run a command using Yarn's portable shell. + + Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell. + + Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell. + + Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used. + + For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md. + `,examples:[["Run a simple command","$0 echo Hello"],["Run a command with a glob pattern","$0 echo '*.js'"],["Run a command with a redirection","$0 echo Hello World '>' hello.txt"],["Run a command with an escaped glob pattern (The double escape is needed in Unix shells)",`$0 echo '"*.js"'`],["Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)",'$0 "GREETING=Hello echo $GREETING World"']]}}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await xI(r,[],{cwd:Ae.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}}});var ec,ape=Ze(()=>{ec=class extends Error{constructor(t){super(t),this.name="ShellError"}}});var TT={};Vt(TT,{fastGlobOptions:()=>upe,isBraceExpansion:()=>Tj,isGlobPattern:()=>nrt,match:()=>irt,micromatchOptions:()=>QT});function nrt(e){if(!kT.default.scan(e,QT).isGlob)return!1;try{kT.default.parse(e,QT)}catch{return!1}return!0}function irt(e,{cwd:t,baseFs:r}){return(0,lpe.default)(e,{...upe,cwd:Ae.fromPortablePath(t),fs:px(cpe.default,new rd(r))})}function Tj(e){return kT.default.scan(e,QT).isBrace}var lpe,cpe,kT,QT,upe,fpe=Ze(()=>{bt();lpe=et(DQ()),cpe=et(Ce("fs")),kT=et(Zo()),QT={strictBrackets:!0},upe={onlyDirectories:!1,onlyFiles:!1}});function Rj(){}function Fj(){for(let e of um)e.kill()}function dpe(e,t,r,s){return a=>{let n=a[0]instanceof sA.Transform?"pipe":a[0],c=a[1]instanceof sA.Transform?"pipe":a[1],f=a[2]instanceof sA.Transform?"pipe":a[2],p=(0,ppe.default)(e,t,{...s,stdio:[n,c,f]});return um.add(p),um.size===1&&(process.on("SIGINT",Rj),process.on("SIGTERM",Fj)),a[0]instanceof sA.Transform&&a[0].pipe(p.stdin),a[1]instanceof sA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof sA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on("error",E=>{switch(um.delete(p),um.size===0&&(process.off("SIGINT",Rj),process.off("SIGTERM",Fj)),E.code){case"ENOENT":a[2].write(`command not found: ${e} +`),h(127);break;case"EACCES":a[2].write(`permission denied: ${e} +`),h(128);break;default:a[2].write(`uncaught error: ${E.message} +`),h(1);break}}),p.on("close",E=>{um.delete(p),um.size===0&&(process.off("SIGINT",Rj),process.off("SIGTERM",Fj)),h(E!==null?E:129)})})}}}function gpe(e){return t=>{let r=t[0]==="pipe"?new sA.PassThrough:t[0];return{stdin:r,promise:Promise.resolve().then(()=>e({stdin:r,stdout:t[1],stderr:t[2]}))}}}function RT(e,t){return Oj.start(e,t)}function Ape(e,t=null){let r=new sA.PassThrough,s=new hpe.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` +`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",e(t!==null?`${t} ${p}`:p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&e(t!==null?`${t} ${n}`:n)}),r}function mpe(e,{prefix:t}){return{stdout:Ape(r=>e.stdout.write(`${r} +`),e.stdout.isTTY?t:null),stderr:Ape(r=>e.stderr.write(`${r} +`),e.stderr.isTTY?t:null)}}var ppe,sA,hpe,um,Uc,Nj,Oj,Lj=Ze(()=>{ppe=et(RU()),sA=Ce("stream"),hpe=Ce("string_decoder"),um=new Set;Uc=class{constructor(t){this.stream=t}close(){}get(){return this.stream}},Nj=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(t){this.stream=t}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Oj=class e{constructor(t,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=t,this.implementation=r}static start(t,{stdin:r,stdout:s,stderr:a}){let n=new e(null,t);return n.stdin=r,n.stdout=s,n.stderr=a,n}pipeTo(t,r=1){let s=new e(this,t),a=new Nj;return s.pipe=a,s.stdout=this.stdout,s.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),s}async exec(){let t=["ignore","ignore","ignore"];if(this.pipe)t[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");t[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,t[1]=r.get();let s;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");s=this.stderr,t[2]=s.get();let a=this.implementation(t);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),s.close(),n))}async run(){let t=[];for(let s=this;s;s=s.ancestor)t.push(s.exec());return(await Promise.all(t))[0]}}});var hv={};Vt(hv,{EntryCommand:()=>cv,ShellError:()=>ec,execute:()=>xI,globUtils:()=>TT});function ype(e,t,r){let s=new tc.PassThrough({autoDestroy:!0});switch(e){case 0:(t&1)===1&&r.stdin.pipe(s,{end:!1}),(t&2)===2&&r.stdin instanceof tc.Writable&&s.pipe(r.stdin,{end:!1});break;case 1:(t&1)===1&&r.stdout.pipe(s,{end:!1}),(t&2)===2&&s.pipe(r.stdout,{end:!1});break;case 2:(t&1)===1&&r.stderr.pipe(s,{end:!1}),(t&2)===2&&s.pipe(r.stderr,{end:!1});break;default:throw new ec(`Bad file descriptor: "${e}"`)}return s}function NT(e,t={}){let r={...e,...t};return r.environment={...e.environment,...t.environment},r.variables={...e.variables,...t.variables},r}async function ort(e,t,r){let s=[],a=new tc.PassThrough;return a.on("data",n=>s.push(n)),await OT(e,t,NT(r,{stdout:a})),Buffer.concat(s).toString().replace(/[\r\n]+$/,"")}async function Epe(e,t,r){let s=e.map(async n=>{let c=await fm(n.args,t,r);return{name:n.name,value:c.join(" ")}});return(await Promise.all(s)).reduce((n,c)=>(n[c.name]=c.value,n),{})}function FT(e){return e.match(/[^ \r\n\t]+/g)||[]}async function Spe(e,t,r,s,a=s){switch(e.name){case"$":s(String(process.pid));break;case"#":s(String(t.args.length));break;case"@":if(e.quoted)for(let n of t.args)a(n);else for(let n of t.args){let c=FT(n);for(let f=0;f=0&&n"u"&&(e.defaultValue?c=(await fm(e.defaultValue,t,r)).join(" "):e.alternativeValue&&(c="")),typeof c>"u")throw f?new ec(`Unbound argument #${n}`):new ec(`Unbound variable "${e.name}"`);if(e.quoted)s(c);else{let p=FT(c);for(let E=0;Es.push(n));let a=Number(s.join(" "));return Number.isNaN(a)?fv({type:"variable",name:s.join(" ")},t,r):fv({type:"number",value:a},t,r)}else return art[e.type](await fv(e.left,t,r),await fv(e.right,t,r))}async function fm(e,t,r){let s=new Map,a=[],n=[],c=E=>{n.push(E)},f=()=>{n.length>0&&a.push(n.join("")),n=[]},p=E=>{c(E),f()},h=(E,C,S)=>{let x=JSON.stringify({type:E,fd:C}),I=s.get(x);typeof I>"u"&&s.set(x,I=[]),I.push(S)};for(let E of e){let C=!1;switch(E.type){case"redirection":{let S=await fm(E.args,t,r);for(let x of S)h(E.subtype,E.fd,x)}break;case"argument":for(let S of E.segments)switch(S.type){case"text":c(S.text);break;case"glob":c(S.pattern),C=!0;break;case"shell":{let x=await ort(S.shell,t,r);if(S.quoted)c(x);else{let I=FT(x);for(let R=0;R"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let x=await t.glob.match(S,{cwd:r.cwd,baseFs:t.baseFs});if(x.length===0){let I=Tj(S)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new ec(`No matches found: "${S}"${I}`)}for(let I of x.sort())p(I)}}if(s.size>0){let E=[];for(let[C,S]of s.entries())E.splice(E.length,0,C,String(S.length),...S);a.splice(0,0,"__ysh_set_redirects",...E,"--")}return a}function Av(e,t,r){t.builtins.has(e[0])||(e=["command",...e]);let s=Ae.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<"u"&&(a={...a,PWD:s});let[n,...c]=e;if(n==="command")return dpe(c[0],c.slice(1),t,{cwd:s,env:a});let f=t.builtins.get(n);if(typeof f>"u")throw new Error(`Assertion failed: A builtin should exist for "${n}"`);return gpe(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:C,stdout:S,stderr:x}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await f(c,t,r)}finally{r.stdin=C,r.stdout=S,r.stderr=x}})}function lrt(e,t,r){return s=>{let a=new tc.PassThrough,n=OT(e,t,NT(r,{stdin:a}));return{stdin:a,promise:n}}}function crt(e,t,r){return s=>{let a=new tc.PassThrough,n=OT(e,t,r);return{stdin:a,promise:n}}}function Ipe(e,t,r,s){if(t.length===0)return e;{let a;do a=String(Math.random());while(Object.hasOwn(s.procedures,a));return s.procedures={...s.procedures},s.procedures[a]=e,Av([...t,"__ysh_run_procedure",a],r,s)}}async function Cpe(e,t,r){let s=e,a=null,n=null;for(;s;){let c=s.then?{...r}:r,f;switch(s.type){case"command":{let p=await fm(s.args,t,r),h=await Epe(s.envs,t,r);f=s.envs.length?Av(p,t,NT(c,{environment:h})):Av(p,t,c)}break;case"subshell":{let p=await fm(s.args,t,r),h=lrt(s.subshell,t,c);f=Ipe(h,p,t,c)}break;case"group":{let p=await fm(s.args,t,r),h=crt(s.group,t,c);f=Ipe(h,p,t,c)}break;case"envs":{let p=await Epe(s.envs,t,r);c.environment={...c.environment,...p},f=Av(["true"],t,c)}break}if(typeof f>"u")throw new Error("Assertion failed: An action should have been generated");if(a===null)n=RT(f,{stdin:new Uc(c.stdin),stdout:new Uc(c.stdout),stderr:new Uc(c.stderr)});else{if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(a){case"|":n=n.pipeTo(f,1);break;case"|&":n=n.pipeTo(f,3);break}}s.then?(a=s.then.type,s=s.then.chain):s=null}if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await n.run()}async function urt(e,t,r,{background:s=!1}={}){function a(n){let c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[n%c.length];return wpe.default.hex(f)}if(s){let n=r.nextBackgroundJobIndex++,c=a(n),f=`[${n}]`,p=c(f),{stdout:h,stderr:E}=mpe(r,{prefix:p});return r.backgroundJobs.push(Cpe(e,t,NT(r,{stdout:h,stderr:E})).catch(C=>E.write(`${C.message} +`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${c(yE(e))}' has ended +`)})),0}return await Cpe(e,t,r)}async function frt(e,t,r,{background:s=!1}={}){let a,n=f=>{a=f,r.variables["?"]=String(f)},c=async f=>{try{return await urt(f.chain,t,r,{background:s&&typeof f.then>"u"})}catch(p){if(!(p instanceof ec))throw p;return r.stderr.write(`${p.message} +`),1}};for(n(await c(e));e.then;){if(r.exitCode!==null)return r.exitCode;switch(e.then.type){case"&&":a===0&&n(await c(e.then.line));break;case"||":a!==0&&n(await c(e.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${e.then.type}"`)}e=e.then.line}return a}async function OT(e,t,r){let s=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:c}of e){if(a=await frt(n,t,r,{background:c==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=s,a}function bpe(e){switch(e.type){case"variable":return e.name==="@"||e.name==="#"||e.name==="*"||Number.isFinite(parseInt(e.name,10))||"defaultValue"in e&&!!e.defaultValue&&e.defaultValue.some(t=>pv(t))||"alternativeValue"in e&&!!e.alternativeValue&&e.alternativeValue.some(t=>pv(t));case"arithmetic":return Mj(e.arithmetic);case"shell":return Uj(e.shell);default:return!1}}function pv(e){switch(e.type){case"redirection":return e.args.some(t=>pv(t));case"argument":return e.segments.some(t=>bpe(t));default:throw new Error(`Assertion failed: Unsupported argument type: "${e.type}"`)}}function Mj(e){switch(e.type){case"variable":return bpe(e);case"number":return!1;default:return Mj(e.left)||Mj(e.right)}}function Uj(e){return e.some(({command:t})=>{for(;t;){let r=t.chain;for(;r;){let s;switch(r.type){case"subshell":s=Uj(r.subshell);break;case"command":s=r.envs.some(a=>a.args.some(n=>pv(n)))||r.args.some(a=>pv(a));break}if(s)return!0;if(!r.then)break;r=r.then.chain}if(!t.then)break;t=t.then.line}return!1})}async function xI(e,t=[],{baseFs:r=new Kn,builtins:s={},cwd:a=Ae.toPortablePath(process.cwd()),env:n=process.env,stdin:c=process.stdin,stdout:f=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=TT}={}){let C={};for(let[I,R]of Object.entries(n))typeof R<"u"&&(C[I]=R);let S=new Map(srt);for(let[I,R]of Object.entries(s))S.set(I,R);c===null&&(c=new tc.PassThrough,c.end());let x=gx(e,E);if(!Uj(x)&&x.length>0&&t.length>0){let{command:I}=x[x.length-1];for(;I.then;)I=I.then.line;let R=I.chain;for(;R.then;)R=R.then.chain;R.type==="command"&&(R.args=R.args.concat(t.map(N=>({type:"argument",segments:[{type:"text",text:N}]}))))}return await OT(x,{args:t,baseFs:r,builtins:S,initialStdin:c,initialStdout:f,initialStderr:p,glob:E},{cwd:a,environment:C,exitCode:null,procedures:{},stdin:c,stdout:f,stderr:p,variables:Object.assign({},h,{"?":0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var wpe,Bpe,tc,vpe,srt,art,uv=Ze(()=>{bt();Sc();wpe=et(LE()),Bpe=Ce("os"),tc=Ce("stream"),vpe=Ce("timers/promises");ope();ape();fpe();Lj();Lj();srt=new Map([["cd",async([e=(0,Bpe.homedir)(),...t],r,s)=>{let a=Y.resolve(s.cwd,Ae.toPortablePath(e));if(!(await r.baseFs.statPromise(a).catch(c=>{throw c.code==="ENOENT"?new ec(`cd: no such file or directory: ${e}`):c})).isDirectory())throw new ec(`cd: not a directory: ${e}`);return s.cwd=a,0}],["pwd",async(e,t,r)=>(r.stdout.write(`${Ae.fromPortablePath(r.cwd)} +`),0)],[":",async(e,t,r)=>0],["true",async(e,t,r)=>0],["false",async(e,t,r)=>1],["exit",async([e,...t],r,s)=>s.exitCode=parseInt(e??s.variables["?"],10)],["echo",async(e,t,r)=>(r.stdout.write(`${e.join(" ")} +`),0)],["sleep",async([e],t,r)=>{if(typeof e>"u")throw new ec("sleep: missing operand");let s=Number(e);if(Number.isNaN(s))throw new ec(`sleep: invalid time interval '${e}'`);return await(0,vpe.setTimeout)(1e3*s,0)}],["unset",async(e,t,r)=>{for(let s of e)delete r.environment[s],delete r.variables[s];return 0}],["__ysh_run_procedure",async(e,t,r)=>{let s=r.procedures[e[0]];return await RT(s,{stdin:new Uc(r.stdin),stdout:new Uc(r.stdout),stderr:new Uc(r.stderr)}).run()}],["__ysh_set_redirects",async(e,t,r)=>{let s=r.stdin,a=r.stdout,n=r.stderr,c=[],f=[],p=[],h=0;for(;e[h]!=="--";){let C=e[h++],{type:S,fd:x}=JSON.parse(C),I=K=>{switch(x){case null:case 0:c.push(K);break;default:throw new Error(`Unsupported file descriptor: "${x}"`)}},R=K=>{switch(x){case null:case 1:f.push(K);break;case 2:p.push(K);break;default:throw new Error(`Unsupported file descriptor: "${x}"`)}},N=Number(e[h++]),U=h+N;for(let K=h;Kt.baseFs.createReadStream(Y.resolve(r.cwd,Ae.toPortablePath(e[K]))));break;case"<<<":I(()=>{let $=new tc.PassThrough;return process.nextTick(()=>{$.write(`${e[K]} +`),$.end()}),$});break;case"<&":I(()=>ype(Number(e[K]),1,r));break;case">":case">>":{let $=Y.resolve(r.cwd,Ae.toPortablePath(e[K]));R($==="/dev/null"?new tc.Writable({autoDestroy:!0,emitClose:!0,write(ie,fe,le){setImmediate(le)}}):t.baseFs.createWriteStream($,S===">>"?{flags:"a"}:void 0))}break;case">&":R(ype(Number(e[K]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${S}"`)}}if(c.length>0){let C=new tc.PassThrough;s=C;let S=x=>{if(x===c.length)C.end();else{let I=c[x]();I.pipe(C,{end:!1}),I.on("end",()=>{S(x+1)})}};S(0)}if(f.length>0){let C=new tc.PassThrough;a=C;for(let S of f)C.pipe(S)}if(p.length>0){let C=new tc.PassThrough;n=C;for(let S of p)C.pipe(S)}let E=await RT(Av(e.slice(h+1),t,r),{stdin:new Uc(s),stdout:new Uc(a),stderr:new Uc(n)}).run();return await Promise.all(f.map(C=>new Promise((S,x)=>{C.on("error",I=>{x(I)}),C.on("close",()=>{S()}),C.end()}))),await Promise.all(p.map(C=>new Promise((S,x)=>{C.on("error",I=>{x(I)}),C.on("close",()=>{S()}),C.end()}))),E}]]);art={addition:(e,t)=>e+t,subtraction:(e,t)=>e-t,multiplication:(e,t)=>e*t,division:(e,t)=>Math.trunc(e/t)}});var Dpe=G((wUt,LT)=>{function Art(){var e=0,t=1,r=2,s=3,a=4,n=5,c=6,f=7,p=8,h=9,E=10,C=11,S=12,x=13,I=14,R=15,N=16,U=17,K=0,$=1,ie=2,fe=3,le=4;function ge(d,ve){return 55296<=d.charCodeAt(ve)&&d.charCodeAt(ve)<=56319&&56320<=d.charCodeAt(ve+1)&&d.charCodeAt(ve+1)<=57343}function pe(d,ve){ve===void 0&&(ve=0);var Ie=d.charCodeAt(ve);if(55296<=Ie&&Ie<=56319&&ve=1){var me=d.charCodeAt(ve-1),ce=Ie;return 55296<=me&&me<=56319?(me-55296)*1024+(ce-56320)+65536:ce}return Ie}function De(d,ve,Ie){var me=[d].concat(ve).concat([Ie]),ce=me[me.length-2],X=Ie,be=me.lastIndexOf(I);if(be>1&&me.slice(1,be).every(function(_){return _==s})&&[s,x,U].indexOf(d)==-1)return ie;var ke=me.lastIndexOf(a);if(ke>0&&me.slice(1,ke).every(function(_){return _==a})&&[S,a].indexOf(ce)==-1)return me.filter(function(_){return _==a}).length%2==1?fe:le;if(ce==e&&X==t)return K;if(ce==r||ce==e||ce==t)return X==I&&ve.every(function(_){return _==s})?ie:$;if(X==r||X==e||X==t)return $;if(ce==c&&(X==c||X==f||X==h||X==E))return K;if((ce==h||ce==f)&&(X==f||X==p))return K;if((ce==E||ce==p)&&X==p)return K;if(X==s||X==R)return K;if(X==n)return K;if(ce==S)return K;var it=me.indexOf(s)!=-1?me.lastIndexOf(s)-1:me.length-2;return[x,U].indexOf(me[it])!=-1&&me.slice(it+1,-1).every(function(_){return _==s})&&X==I||ce==R&&[N,U].indexOf(X)!=-1?K:ve.indexOf(a)!=-1?ie:ce==a&&X==a?K:$}this.nextBreak=function(d,ve){if(ve===void 0&&(ve=0),ve<0)return 0;if(ve>=d.length-1)return d.length;for(var Ie=ye(pe(d,ve)),me=[],ce=ve+1;ce{var prt=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,MT;function hrt(){if(MT)return MT;if(typeof Intl.Segmenter<"u"){let e=new Intl.Segmenter("en",{granularity:"grapheme"});return MT=t=>Array.from(e.segment(t),({segment:r})=>r)}else{let e=Dpe(),t=new e;return MT=r=>t.splitGraphemes(r)}}Ppe.exports=(e,t=0,r=e.length)=>{if(t<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let s=r-t,a="",n=0,c=0;for(;e.length>0;){let f=e.match(prt)||[e,e,void 0],p=hrt()(f[1]),h=Math.min(t-n,p.length);p=p.slice(h);let E=Math.min(s-c,p.length);a+=p.slice(0,E).join(""),n+=h,c+=E,typeof f[2]<"u"&&(a+=f[2]),e=e.slice(f[0].length)}return a}});var An,dv=Ze(()=>{An=process.env.YARN_IS_TEST_ENV?"0.0.0":"4.17.1"});function Npe(e,{configuration:t,json:r}){if(!t.get("enableMessageNames"))return"";let a=zf(e===null?0:e);return!r&&e===null?Gt(t,a,"grey"):a}function _j(e,{configuration:t,json:r}){let s=Npe(e,{configuration:t,json:r});if(!s||e===null||e===0)return s;let a=pr[e],n=`https://yarnpkg.com/advanced/error-codes#${s}---${a}`.toLowerCase();return eI(t,s,n)}async function kI({configuration:e,stdout:t,forceError:r},s){let a=await Ft.start({configuration:e,stdout:t,includeFooter:!1},async n=>{let c=!1,f=!1;for(let p of s)typeof p.option<"u"&&(p.error||r?(f=!0,n.reportError(50,p.message)):(c=!0,n.reportWarning(50,p.message)),p.callback?.());c&&!f&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var Rpe,UT,drt,kpe,Qpe,Pd,Fpe,Tpe,grt,mrt,_T,yrt,Ft,gv=Ze(()=>{Rpe=et(xpe()),UT=et(N0());Kx();Nc();dv();Tc();drt="\xB7",kpe=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Qpe=80,Pd=UT.default.GITHUB_ACTIONS?{start:e=>`::group::${e} +`,end:e=>`::endgroup:: +`}:UT.default.TRAVIS?{start:e=>`travis_fold:start:${e} +`,end:e=>`travis_fold:end:${e} +`}:UT.default.GITLAB?{start:e=>`section_start:${Math.floor(Date.now()/1e3)}:${e.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${e} +`,end:e=>`section_end:${Math.floor(Date.now()/1e3)}:${e.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,Fpe=Pd!==null,Tpe=new Date,grt=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,mrt=e=>e,_T=mrt({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),yrt=grt&&Object.keys(_T).find(e=>{let t=_T[e];return!(t.date&&(t.date[0]!==Tpe.getDate()||t.date[1]!==Tpe.getMonth()+1))})||"default";Ft=class extends Io{constructor({configuration:r,stdout:s,json:a=!1,forceSectionAlignment:n=!1,includeNames:c=!0,includePrefix:f=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:C=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(kB(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=c,this.includePrefix=f,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=C,this.json=a,this.stdout=s,r.get("enableProgressBars")&&!a&&s.isTTY&&s.columns>22){let S=r.get("progressBarStyle")||yrt;if(!Object.hasOwn(_T,S))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=_T[S];let x=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*x/80)}}static async start(r,s){let a=new this(r),n=process.emitWarning;process.emitWarning=(c,f)=>{if(typeof c!="string"){let h=c;c=h.message,f=f??h.name}let p=typeof f<"u"?`${f}: ${c}`:c;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,Z0(r.configuration,`Yarn ${An}`,2));try{await s(a)}catch(c){a.reportExceptionOnce(c)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let s=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,s-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}async startSectionPromise({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}startTimerImpl(r,s,a){return{cb:typeof s=="function"?s:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\u250C ${r}`),this.indent+=1,Pd!==null&&!this.json&&this.includeInfos&&this.stdout.write(Pd.start(r))},reportFooter:f=>{if(this.indent-=1,Pd!==null&&!this.json&&this.includeInfos){this.stdout.write(Pd.end(r));for(let p of this.timerFooter)p()}this.configuration.get("enableTimers")&&f>200?this.reportInfo(null,`\u2514 Completed in ${Gt(this.configuration,f,dt.DURATION)}`):this.reportInfo(null,"\u2514 Completed"),this.level-=1},skipIfEmpty:(typeof s=="function"?{}:s).skipIfEmpty}}startTimerSync(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionSync(c,n)}async startTimerPromise(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionPromise(c,n)}reportSeparator(){this.indent===0?this.writeLine(""):this.reportInfo(null,"")}reportInfo(r,s){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"",c=`${this.formatPrefix(n,"blueBright")}${s}`;this.json?this.reportJson({type:"info",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(c)}reportWarning(r,s){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"warning",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"yellowBright")}${s}`)}reportError(r,s){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,s)),this.reportErrorImpl(r,s)}reportErrorImpl(r,s){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"error",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"redBright")}${s}`,{truncate:!1})}reportFold(r,s){if(!Pd)return;let a=`${Pd.start(r)}${s}${Pd.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let s=!1,a=Promise.resolve().then(async()=>{let c={progress:r.hasProgress?0:void 0,title:r.hasTitle?"":void 0};this.progress.set(r,{definition:c,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:f,title:p}of r)s||c.progress===f&&c.title===p||(c.progress=f,c.title=p,this.refreshProgress());n()}),n=()=>{s||(s=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r="";this.errorCount>0?r="Failed with errors":this.warningCount>0?r="Done with warnings":r="Done";let s=Gt(this.configuration,Date.now()-this.startTime,dt.DURATION),a=this.configuration.get("enableTimers")?`${r} in ${s}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:s}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:s})} +`),this.writeProgress()}writeLines(r,{truncate:s}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:s})} +`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let s of r)s.committed=!0,s.action()}clearProgress({delta:r=0,clear:s=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\x1B[${this.progress.size+r}A`),(r>0||s)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>Qpe&&(this.progressFrame=(this.progressFrame+1)%kpe.length,this.progressTime=r);let s=kpe[this.progressFrame];for(let a of this.progress.values()){let n="";if(typeof a.lastScaledSize<"u"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let c=this.formatName(null),f=c?`${c}: `:"",p=a.definition.title?` ${a.definition.title}`:"";this.stdout.write(`${Gt(this.configuration,"\u27A4","blueBright")} ${f}${s}${n}${p} +`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},Qpe)}refreshProgress({delta:r=0,force:s=!1}={}){let a=!1,n=!1;if(s||this.progress.size===0)a=!0;else for(let c of this.progress.values()){let f=typeof c.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*c.definition.progress):void 0,p=c.lastScaledSize;c.lastScaledSize=f;let h=c.lastTitle;if(c.lastTitle=c.definition.title,f!==p||(n=h!==c.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:s}={}){return this.progressStyle===null&&(s=!1),typeof s>"u"&&(s=this.configuration.get("preferTruncatedLines")),s&&(r=(0,Rpe.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?Npe(r,{configuration:this.configuration,json:this.json}):""}formatPrefix(r,s){return this.includePrefix?`${Gt(this.configuration,"\u27A4",s)} ${r}${this.formatIndent()}`:""}formatNameWithHyperlink(r){return this.includeNames?_j(r,{configuration:this.configuration,json:this.json}):""}formatIndent(){return this.level>0||!this.forceSectionAlignment?"\u2502 ".repeat(this.indent):`${drt} `}}});var wn={};Vt(wn,{PackageManager:()=>Lpe,detectPackageManager:()=>Mpe,executePackageAccessibleBinary:()=>Gpe,executePackageScript:()=>HT,executePackageShellcode:()=>Hj,executeWorkspaceAccessibleBinary:()=>Srt,executeWorkspaceLifecycleScript:()=>Hpe,executeWorkspaceScript:()=>_pe,getPackageAccessibleBinaries:()=>jT,getWorkspaceAccessibleBinaries:()=>jpe,hasPackageScript:()=>wrt,hasWorkspaceScript:()=>jj,isNodeScript:()=>Gj,makeScriptEnv:()=>mv,maybeExecuteWorkspaceLifecycleScript:()=>vrt,prepareExternalProject:()=>Crt});async function xd(e,t,r,s=[]){if(process.platform==="win32"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${s.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await ae.writeFilePromise(Y.format({dir:e,name:t,ext:".cmd"}),a)}await ae.writeFilePromise(Y.join(e,t),`#!/bin/sh +exec "${r}" ${s.map(a=>`'${a.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" +`,{mode:493})}async function Mpe(e){let t=await _t.tryFind(e);if(t?.packageManager){let s=RQ(t.packageManager);if(s?.name){let a=`found ${JSON.stringify({packageManager:t.packageManager})} in manifest`,[n]=s.reference.split(".");switch(s.name){case"yarn":return{packageManagerField:!0,packageManager:Number(n)===1?"Yarn Classic":"Yarn",reason:a};case"npm":return{packageManagerField:!0,packageManager:"npm",reason:a};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:a}}}}let r;try{r=await ae.readFilePromise(Y.join(e,yr.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:ae.existsSync(Y.join(e,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:ae.existsSync(Y.join(e,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function mv({project:e,locator:t,binFolder:r,ignoreCorepack:s,lifecycleScript:a,baseEnv:n=e?.configuration.env??process.env}){let c={};for(let[E,C]of Object.entries(n))typeof C<"u"&&(c[E.toLowerCase()!=="path"?E:"PATH"]=C);let f=Ae.fromPortablePath(r);c.BERRY_BIN_FOLDER=Ae.fromPortablePath(f);let p=process.env.COREPACK_ROOT&&!s?Ae.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([xd(r,"node",process.execPath),...An!==null?[xd(r,"run",process.execPath,[p,"run"]),xd(r,"yarn",process.execPath,[p]),xd(r,"yarnpkg",process.execPath,[p]),xd(r,"node-gyp",process.execPath,[p,"run","--top-level","node-gyp"])]:[]]),e&&(c.INIT_CWD=Ae.fromPortablePath(e.configuration.startingCwd),c.PROJECT_CWD=Ae.fromPortablePath(e.cwd)),c.PATH=c.PATH?`${f}${Ae.delimiter}${c.PATH}`:`${f}`,c.npm_execpath=`${f}${Ae.sep}yarn`,c.npm_node_execpath=`${f}${Ae.sep}node`,t){if(!e)throw new Error("Assertion failed: Missing project");let E=e.tryWorkspaceByLocator(t),C=E?E.manifest.version??"":e.storedPackages.get(t.locatorHash).version??"";c.npm_package_name=fn(t),c.npm_package_version=C;let S;if(E)S=E.cwd;else{let x=e.storedPackages.get(t.locatorHash);if(!x)throw new Error(`Package for ${Vr(e.configuration,t)} not found in the project`);let I=e.configuration.getLinkers(),R={project:e,report:new Ft({stdout:new kd.PassThrough,configuration:e.configuration})},N=I.find(U=>U.supportsPackage(x,R));if(!N)throw new Error(`The package ${Vr(e.configuration,x)} isn't supported by any of the available linkers`);S=await N.findPackageLocation(x,R)}c.npm_package_json=Ae.fromPortablePath(Y.join(S,yr.manifest))}let h=An!==null?`yarn/${An}`:`yarn/${Tp("@yarnpkg/core").version}-core`;return c.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(c.npm_lifecycle_event=a),e&&await e.configuration.triggerHook(E=>E.setupScriptEnvironment,e,c,async(E,C,S)=>await xd(r,E,C,S)),c}async function Crt(e,t,{configuration:r,report:s,workspace:a=null,locator:n=null}){await Irt(async()=>{await ae.mktempPromise(async c=>{let f=Y.join(c,"pack.log"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(f,{prefix:Ae.fromPortablePath(e),report:s}),C=n&&ju(n)?aI(n):n,S=C?ml(C):"an external project";h.write(`Packing ${S} from sources +`);let x=await Mpe(e),I;x!==null?(h.write(`Using ${x.packageManager} for bootstrap. Reason: ${x.reason} + +`),I=x.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn + +`),I="Yarn");let R=I==="Yarn"&&!x?.packageManagerField;await ae.mktempPromise(async N=>{let U=await mv({binFolder:N,ignoreCorepack:R,baseEnv:{...process.env,COREPACK_ENABLE_AUTO_PIN:"0"}}),$=new Map([["Yarn Classic",async()=>{let fe=a!==null?["workspace",a]:[],le=Y.join(e,yr.manifest),ge=await ae.readFilePromise(le),pe=await qu(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed","--yarn-path"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(pe.code!==0)return pe.code;await ae.writeFilePromise(le,ge),await ae.appendFilePromise(Y.join(e,".npmignore"),`/.yarn +`),h.write(` +`),delete U.NODE_ENV;let De=await qu("yarn",["install"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(De.code!==0)return De.code;h.write(` +`);let ye=await qu("yarn",[...fe,"pack","--filename",Ae.fromPortablePath(t)],{cwd:e,env:U,stdin:p,stdout:h,stderr:E});return ye.code!==0?ye.code:0}],["Yarn",async()=>{let fe=a!==null?["workspace",a]:[];U.YARN_ENABLE_INLINE_BUILDS="1";let le=Y.join(e,yr.lockfile);await ae.existsPromise(le)||await ae.writeFilePromise(le,"");let ge=await qu("yarn",[...fe,"pack","--install-if-needed","--filename",Ae.fromPortablePath(t)],{cwd:e,env:U,stdin:p,stdout:h,stderr:E});return ge.code!==0?ge.code:0}],["npm",async()=>{if(a!==null){let ve=new kd.PassThrough,Ie=zE(ve);ve.pipe(h,{end:!1});let me=await qu("npm",["--version"],{cwd:e,env:U,stdin:p,stdout:ve,stderr:E,end:0});if(ve.end(),me.code!==0)return h.end(),E.end(),me.code;let ce=(await Ie).toString().trim();if(!rA(ce,">=7.x")){let X=Qa(null,"npm"),be=Un(X,ce),ke=Un(X,">=7.x");throw new Error(`Workspaces aren't supported by ${ai(r,be)}; please upgrade to ${ai(r,ke)} (npm has been detected as the primary package manager for ${Gt(r,e,dt.PATH)})`)}}let fe=a!==null?["--workspace",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let le=await qu("npm",["install","--legacy-peer-deps"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(le.code!==0)return le.code;let ge=new kd.PassThrough,pe=zE(ge);ge.pipe(h);let De=await qu("npm",["pack","--silent",...fe],{cwd:e,env:U,stdin:p,stdout:ge,stderr:E});if(De.code!==0)return De.code;let ye=(await pe).toString().trim().replace(/^.*\n/s,""),d=Y.resolve(e,Ae.toPortablePath(ye));return await ae.renamePromise(d,t),0}]]).get(I);if(typeof $>"u")throw new Error("Assertion failed: Unsupported workflow");let ie=await $();if(!(ie===0||typeof ie>"u"))throw ae.detachTemp(c),new Lt(58,`Packing the package failed (exit code ${ie}, logs can be found here: ${Gt(r,f,dt.PATH)})`)})})})}async function wrt(e,t,{project:r}){let s=r.tryWorkspaceByLocator(e);if(s!==null)return jj(s,t);let a=r.storedPackages.get(e.locatorHash);if(!a)throw new Error(`Package for ${Vr(r.configuration,e)} not found in the project`);return await nA.openPromise(async n=>{let c=r.configuration,f=r.configuration.getLinkers(),p={project:r,report:new Ft({stdout:new kd.PassThrough,configuration:c})},h=f.find(x=>x.supportsPackage(a,p));if(!h)throw new Error(`The package ${Vr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),C=new Pn(E,{baseFs:n});return(await _t.find(wt.dot,{baseFs:C})).scripts.has(t)})}async function HT(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await ae.mktempPromise(async p=>{let{manifest:h,env:E,cwd:C}=await Upe(e,{project:a,binFolder:p,cwd:s,lifecycleScript:t}),S=h.scripts.get(t);if(typeof S>"u")return 1;let x=async()=>await xI(S,r,{cwd:C,env:E,stdin:n,stdout:c,stderr:f});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,x,a,e,t,{script:S,args:r,cwd:C,env:E,stdin:n,stdout:c,stderr:f}))()})}async function Hj(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await ae.mktempPromise(async p=>{let{env:h,cwd:E}=await Upe(e,{project:a,binFolder:p,cwd:s});return await xI(t,r,{cwd:E,env:h,stdin:n,stdout:c,stderr:f})})}async function Brt(e,{binFolder:t,cwd:r,lifecycleScript:s}){let a=await mv({project:e.project,locator:e.anchoredLocator,binFolder:t,lifecycleScript:s});return await qj(t,await jpe(e)),typeof r>"u"&&(r=Y.dirname(await ae.realpathPromise(Y.join(e.cwd,"package.json")))),{manifest:e.manifest,binFolder:t,env:a,cwd:r}}async function Upe(e,{project:t,binFolder:r,cwd:s,lifecycleScript:a}){let n=t.tryWorkspaceByLocator(e);if(n!==null)return Brt(n,{binFolder:r,cwd:s,lifecycleScript:a});let c=t.storedPackages.get(e.locatorHash);if(!c)throw new Error(`Package for ${Vr(t.configuration,e)} not found in the project`);return await nA.openPromise(async f=>{let p=t.configuration,h=t.configuration.getLinkers(),E={project:t,report:new Ft({stdout:new kd.PassThrough,configuration:p})},C=h.find(N=>N.supportsPackage(c,E));if(!C)throw new Error(`The package ${Vr(t.configuration,c)} isn't supported by any of the available linkers`);let S=await mv({project:t,locator:e,binFolder:r,lifecycleScript:a});await qj(r,await jT(e,{project:t}));let x=await C.findPackageLocation(c,E),I=new Pn(x,{baseFs:f}),R=await _t.find(wt.dot,{baseFs:I});return typeof s>"u"&&(s=x),{manifest:R,binFolder:r,env:S,cwd:s}})}async function _pe(e,t,r,{cwd:s,stdin:a,stdout:n,stderr:c}){return await HT(e.anchoredLocator,t,r,{cwd:s,project:e.project,stdin:a,stdout:n,stderr:c})}function jj(e,t){return e.manifest.scripts.has(t)}async function Hpe(e,t,{cwd:r,report:s}){let{configuration:a}=e.project,n=null;await ae.mktempPromise(async c=>{let f=Y.join(c,`${t}.log`),p=`# This file contains the result of Yarn calling the "${t}" lifecycle script inside a workspace ("${Ae.fromPortablePath(e.cwd)}") +`,{stdout:h,stderr:E}=a.getSubprocessStreams(f,{report:s,prefix:Vr(a,e.anchoredLocator),header:p});s.reportInfo(36,`Calling the "${t}" lifecycle script`);let C=await _pe(e,t,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),C!==0)throw ae.detachTemp(c),new Lt(36,`${vB(t)} script failed (exit code ${Gt(a,C,dt.NUMBER)}, logs can be found here: ${Gt(a,f,dt.PATH)}); run ${Gt(a,`yarn ${t}`,dt.CODE)} to investigate`)})}async function vrt(e,t,r){jj(e,t)&&await Hpe(e,t,r)}function Gj(e){let t=Y.extname(e);if(t.match(/\.[cm]?[jt]sx?$/))return!0;if(t===".exe"||t===".bin")return!1;let r=Buffer.alloc(4),s;try{s=ae.openSync(e,"r")}catch{return!0}try{ae.readSync(s,r,0,r.length,0)}finally{ae.closeSync(s)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function jT(e,{project:t}){let r=t.configuration,s=new Map,a=t.storedPackages.get(e.locatorHash);if(!a)throw new Error(`Package for ${Vr(r,e)} not found in the project`);let n=new kd.Writable,c=r.getLinkers(),f={project:t,report:new Ft({configuration:r,stdout:n})},p=new Set([e.locatorHash]);for(let E of a.dependencies.values()){let C=t.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(`Assertion failed: The resolution (${ai(r,E)}) should have been registered`);p.add(C)}let h=await Promise.all(Array.from(p,async E=>{let C=t.storedPackages.get(E);if(!C)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(C.bin.size===0)return Xl.skip;let S=c.find(I=>I.supportsPackage(C,f));if(!S)return Xl.skip;let x=null;try{x=await S.findPackageLocation(C,f)}catch(I){if(I.code==="LOCATOR_NOT_INSTALLED")return Xl.skip;throw I}return{dependency:C,packageLocation:x}}));for(let E of h){if(E===Xl.skip)continue;let{dependency:C,packageLocation:S}=E;for(let[x,I]of C.bin){let R=Y.resolve(S,I);s.set(x,[C,Ae.fromPortablePath(R),Gj(R)])}}return s}async function jpe(e){return await jT(e.anchoredLocator,{project:e.project})}async function qj(e,t){await Promise.all(Array.from(t,([r,[,s,a]])=>a?xd(e,r,process.execPath,[s]):xd(e,r,s,[])))}async function Gpe(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await jT(e,{project:a});let E=h.get(t);if(!E)throw new Error(`Binary not found (${t}) for ${Vr(a.configuration,e)}`);return await ae.mktempPromise(async C=>{let[,S]=E,x=await mv({project:a,locator:e,binFolder:C});await qj(x.BERRY_BIN_FOLDER,h);let I=Gj(Ae.toPortablePath(S))?qu(process.execPath,[...p,S,...r],{cwd:s,env:x,stdin:n,stdout:c,stderr:f}):qu(S,r,{cwd:s,env:x,stdin:n,stdout:c,stderr:f}),R;try{R=await I}finally{await ae.removePromise(x.BERRY_BIN_FOLDER)}return R.code})}async function Srt(e,t,r,{cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f}){return await Gpe(e.anchoredLocator,t,r,{project:e.project,cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f})}var Ope,kd,Lpe,Ert,Irt,Yj=Ze(()=>{bt();bt();iA();uv();Zl();Ope=et(M0()),kd=Ce("stream");fI();Nc();gv();dv();IT();Tc();Qc();Lp();$o();Lpe=(a=>(a.Yarn1="Yarn Classic",a.Yarn2="Yarn",a.Npm="npm",a.Pnpm="pnpm",a))(Lpe||{});Ert=2,Irt=(0,Ope.default)(Ert)});function Mnt(e,t,r){let s=t,a=t?t.next:e.head,n=new J6(r,s,a,e);return n.next===void 0&&(e.tail=n),n.prev===void 0&&(e.head=n),e.length++,n}function Unt(e,t){e.tail=new J6(t,e.tail,void 0,e),e.head||(e.head=e.tail),e.length++}function _nt(e,t){e.head=new J6(t,void 0,e.head,e),e.tail||(e.tail=e.head),e.length++}var Ihe,Oa,yR,H6,Che,G6,wm,IR,vhe,hR,Ud,Kpe,She,Cm,Qhe,Uv,Ku,B6,Ohe,Q6,Z6,jhe,X6,Bn,gs,$6,jv,_I,Il,Vhe,_v,eG,El,rG,brt,Drt,qpe,Prt,xrt,krt,qp,Yp,Qd,GT,yv,qT,Ype,YT,Wpe,Yu,QI,zs,Ev,NI,Zs,Na,Xs,Wj,WT,na,es,Vj,Kj,Vpe,Jj,oA,zj,VT,Iv,Am,rc,Cv,Qrt,Trt,Rrt,Frt,whe,Nrt,Ort,Lrt,Dm,Mrt,Hd,zu,wv,Jn,Zj,Jp,Xj,E6,I6,Tv,KT,UI,HI,$j,OI,jd,Ju,Nd,aA,LI,e6,Kp,Bv,t6,nR,pm,iR,Bm,j6,Urt,ER,Bhe,_rt,Hrt,jrt,Grt,qrt,Yrt,Wrt,q6,Hv,Vrt,uA,Krt,Jpe,Jrt,r6,vm,JT,n6,Y6,bhe,zrt,Zrt,Dhe,Xrt,$rt,Phe,ent,tnt,rnt,nnt,int,snt,ont,ant,xhe,khe,lnt,sR,cnt,CR,W6,Sm,unt,hm,i6,fnt,Od,Ant,pnt,hnt,Ld,dnt,gnt,mnt,s6,ynt,dm,dR,Ent,Int,Cnt,wnt,cn,Rhe,wR,Bnt,C6,w6,vnt,_c,gm,Wp,o6,zpe,lA,vv,Td,Zpe,Ci,Vp,Rd,a6,mm,ds,zT,ZT,l6,Xpe,$pe,Sv,c6,XT,TI,Fd,$T,ym,eR,tR,ehe,Snt,bm,Rv,bnt,Fhe,Dnt,Pnt,BR,Nhe,xnt,the,V6,vR,K6,knt,Qnt,rhe,Tnt,Lhe,Rnt,nhe,ihe,she,v6,ohe,bv,oR,S6,aR,b6,D6,P6,x6,Md,gR,k6,u6,cA,Mhe,Fnt,Nnt,Ont,Lnt,J6,ahe,lhe,lR,Dv,Wu,Em,Im,Pv,f6,Vu,A6,cR,che,T6,R6,uR,fR,uhe,p6,AR,Uhe,h6,SR,z6,Hnt,jnt,_he,Hhe,Gnt,qnt,YUt,Ynt,Wnt,Vnt,Knt,Jnt,Ghe,znt,Znt,Xnt,qhe,F6,mR,$nt,Yhe,eit,Whe,Khe,bR,tit,rit,N6,Jhe,nit,iit,d6,fhe,RI,sit,oit,ait,lit,cit,uit,Ahe,O6,phe,L6,Hc,M6,U6,pR,hhe,dhe,Qv,ghe,mhe,g6,_d,$s,rR,yhe,FI,m6,y6,_6,Fv,Nv,Ov,Lv,fit,Mv,Ait,pit,hit,Ehe,tG,xv,zhe,dit,git,WUt,mit,yit,Eit,Iit,Cit,kv,VUt,wit,Zhe=Ze(()=>{Ihe=et(Ce("events"),1),Oa=et(Ce("fs"),1),yR=Ce("node:events"),H6=et(Ce("node:stream"),1),Che=Ce("node:string_decoder"),G6=et(Ce("node:path"),1),wm=et(Ce("node:fs"),1),IR=Ce("path"),vhe=Ce("events"),hR=et(Ce("assert"),1),Ud=Ce("buffer"),Kpe=et(Ce("zlib"),1),She=et(Ce("zlib"),1),Cm=Ce("node:path"),Qhe=Ce("node:path"),Uv=et(Ce("fs"),1),Ku=et(Ce("fs"),1),B6=et(Ce("path"),1),Ohe=Ce("node:path"),Q6=et(Ce("path"),1),Z6=et(Ce("node:fs"),1),jhe=et(Ce("node:assert"),1),X6=Ce("node:crypto"),Bn=et(Ce("node:fs"),1),gs=et(Ce("node:path"),1),$6=et(Ce("fs"),1),jv=et(Ce("node:fs"),1),_I=et(Ce("node:path"),1),Il=et(Ce("node:fs"),1),Vhe=et(Ce("node:fs/promises"),1),_v=et(Ce("node:path"),1),eG=Ce("node:path"),El=et(Ce("node:fs"),1),rG=et(Ce("node:path"),1),brt=Object.defineProperty,Drt=(e,t)=>{for(var r in t)brt(e,r,{get:t[r],enumerable:!0})},qpe=typeof process=="object"&&process?process:{stdout:null,stderr:null},Prt=e=>!!e&&typeof e=="object"&&(e instanceof Dm||e instanceof H6.default||xrt(e)||krt(e)),xrt=e=>!!e&&typeof e=="object"&&e instanceof yR.EventEmitter&&typeof e.pipe=="function"&&e.pipe!==H6.default.Writable.prototype.pipe,krt=e=>!!e&&typeof e=="object"&&e instanceof yR.EventEmitter&&typeof e.write=="function"&&typeof e.end=="function",qp=Symbol("EOF"),Yp=Symbol("maybeEmitEnd"),Qd=Symbol("emittedEnd"),GT=Symbol("emittingEnd"),yv=Symbol("emittedError"),qT=Symbol("closed"),Ype=Symbol("read"),YT=Symbol("flush"),Wpe=Symbol("flushChunk"),Yu=Symbol("encoding"),QI=Symbol("decoder"),zs=Symbol("flowing"),Ev=Symbol("paused"),NI=Symbol("resume"),Zs=Symbol("buffer"),Na=Symbol("pipes"),Xs=Symbol("bufferLength"),Wj=Symbol("bufferPush"),WT=Symbol("bufferShift"),na=Symbol("objectMode"),es=Symbol("destroyed"),Vj=Symbol("error"),Kj=Symbol("emitData"),Vpe=Symbol("emitEnd"),Jj=Symbol("emitEnd2"),oA=Symbol("async"),zj=Symbol("abort"),VT=Symbol("aborted"),Iv=Symbol("signal"),Am=Symbol("dataListeners"),rc=Symbol("discarded"),Cv=e=>Promise.resolve().then(e),Qrt=e=>e(),Trt=e=>e==="end"||e==="finish"||e==="prefinish",Rrt=e=>e instanceof ArrayBuffer||!!e&&typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,Frt=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e),whe=class{src;dest;opts;ondrain;constructor(e,t,r){this.src=e,this.dest=t,this.opts=r,this.ondrain=()=>e[NI](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},Nrt=class extends whe{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,r){super(e,t,r),this.proxyErrors=s=>t.emit("error",s),e.on("error",this.proxyErrors)}},Ort=e=>!!e.objectMode,Lrt=e=>!e.objectMode&&!!e.encoding&&e.encoding!=="buffer",Dm=class extends yR.EventEmitter{[zs]=!1;[Ev]=!1;[Na]=[];[Zs]=[];[na];[Yu];[oA];[QI];[qp]=!1;[Qd]=!1;[GT]=!1;[qT]=!1;[yv]=null;[Xs]=0;[es]=!1;[Iv];[VT]=!1;[Am]=0;[rc]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Ort(t)?(this[na]=!0,this[Yu]=null):Lrt(t)?(this[Yu]=t.encoding,this[na]=!1):(this[na]=!1,this[Yu]=null),this[oA]=!!t.async,this[QI]=this[Yu]?new Che.StringDecoder(this[Yu]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[Zs]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[Na]});let{signal:r}=t;r&&(this[Iv]=r,r.aborted?this[zj]():r.addEventListener("abort",()=>this[zj]()))}get bufferLength(){return this[Xs]}get encoding(){return this[Yu]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[na]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[oA]}set async(e){this[oA]=this[oA]||!!e}[zj](){this[VT]=!0,this.emit("abort",this[Iv]?.reason),this.destroy(this[Iv]?.reason)}get aborted(){return this[VT]}set aborted(e){}write(e,t,r){if(this[VT])return!1;if(this[qp])throw new Error("write after end");if(this[es])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(r=t,t="utf8"),t||(t="utf8");let s=this[oA]?Cv:Qrt;if(!this[na]&&!Buffer.isBuffer(e)){if(Frt(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(Rrt(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[na]?(this[zs]&&this[Xs]!==0&&this[YT](!0),this[zs]?this.emit("data",e):this[Wj](e),this[Xs]!==0&&this.emit("readable"),r&&s(r),this[zs]):e.length?(typeof e=="string"&&!(t===this[Yu]&&!this[QI]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[Yu]&&(e=this[QI].write(e)),this[zs]&&this[Xs]!==0&&this[YT](!0),this[zs]?this.emit("data",e):this[Wj](e),this[Xs]!==0&&this.emit("readable"),r&&s(r),this[zs]):(this[Xs]!==0&&this.emit("readable"),r&&s(r),this[zs])}read(e){if(this[es])return null;if(this[rc]=!1,this[Xs]===0||e===0||e&&e>this[Xs])return this[Yp](),null;this[na]&&(e=null),this[Zs].length>1&&!this[na]&&(this[Zs]=[this[Yu]?this[Zs].join(""):Buffer.concat(this[Zs],this[Xs])]);let t=this[Ype](e||null,this[Zs][0]);return this[Yp](),t}[Ype](e,t){if(this[na])this[WT]();else{let r=t;e===r.length||e===null?this[WT]():typeof r=="string"?(this[Zs][0]=r.slice(e),t=r.slice(0,e),this[Xs]-=e):(this[Zs][0]=r.subarray(e),t=r.subarray(0,e),this[Xs]-=e)}return this.emit("data",t),!this[Zs].length&&!this[qp]&&this.emit("drain"),t}end(e,t,r){return typeof e=="function"&&(r=e,e=void 0),typeof t=="function"&&(r=t,t="utf8"),e!==void 0&&this.write(e,t),r&&this.once("end",r),this[qp]=!0,this.writable=!1,(this[zs]||!this[Ev])&&this[Yp](),this}[NI](){this[es]||(!this[Am]&&!this[Na].length&&(this[rc]=!0),this[Ev]=!1,this[zs]=!0,this.emit("resume"),this[Zs].length?this[YT]():this[qp]?this[Yp]():this.emit("drain"))}resume(){return this[NI]()}pause(){this[zs]=!1,this[Ev]=!0,this[rc]=!1}get destroyed(){return this[es]}get flowing(){return this[zs]}get paused(){return this[Ev]}[Wj](e){this[na]?this[Xs]+=1:this[Xs]+=e.length,this[Zs].push(e)}[WT](){return this[na]?this[Xs]-=1:this[Xs]-=this[Zs][0].length,this[Zs].shift()}[YT](e=!1){do;while(this[Wpe](this[WT]())&&this[Zs].length);!e&&!this[Zs].length&&!this[qp]&&this.emit("drain")}[Wpe](e){return this.emit("data",e),this[zs]}pipe(e,t){if(this[es])return e;this[rc]=!1;let r=this[Qd];return t=t||{},e===qpe.stdout||e===qpe.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,r?t.end&&e.end():(this[Na].push(t.proxyErrors?new Nrt(this,e,t):new whe(this,e,t)),this[oA]?Cv(()=>this[NI]()):this[NI]()),e}unpipe(e){let t=this[Na].find(r=>r.dest===e);t&&(this[Na].length===1?(this[zs]&&this[Am]===0&&(this[zs]=!1),this[Na]=[]):this[Na].splice(this[Na].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let r=super.on(e,t);if(e==="data")this[rc]=!1,this[Am]++,!this[Na].length&&!this[zs]&&this[NI]();else if(e==="readable"&&this[Xs]!==0)super.emit("readable");else if(Trt(e)&&this[Qd])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[yv]){let s=t;this[oA]?Cv(()=>s.call(this,this[yv])):s.call(this,this[yv])}return r}removeListener(e,t){return this.off(e,t)}off(e,t){let r=super.off(e,t);return e==="data"&&(this[Am]=this.listeners("data").length,this[Am]===0&&!this[rc]&&!this[Na].length&&(this[zs]=!1)),r}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Am]=0,!this[rc]&&!this[Na].length&&(this[zs]=!1)),t}get emittedEnd(){return this[Qd]}[Yp](){!this[GT]&&!this[Qd]&&!this[es]&&this[Zs].length===0&&this[qp]&&(this[GT]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[qT]&&this.emit("close"),this[GT]=!1)}emit(e,...t){let r=t[0];if(e!=="error"&&e!=="close"&&e!==es&&this[es])return!1;if(e==="data")return!this[na]&&!r?!1:this[oA]?(Cv(()=>this[Kj](r)),!0):this[Kj](r);if(e==="end")return this[Vpe]();if(e==="close"){if(this[qT]=!0,!this[Qd]&&!this[es])return!1;let a=super.emit("close");return this.removeAllListeners("close"),a}else if(e==="error"){this[yv]=r,super.emit(Vj,r);let a=!this[Iv]||this.listeners("error").length?super.emit("error",r):!1;return this[Yp](),a}else if(e==="resume"){let a=super.emit("resume");return this[Yp](),a}else if(e==="finish"||e==="prefinish"){let a=super.emit(e);return this.removeAllListeners(e),a}let s=super.emit(e,...t);return this[Yp](),s}[Kj](e){for(let r of this[Na])r.dest.write(e)===!1&&this.pause();let t=this[rc]?!1:super.emit("data",e);return this[Yp](),t}[Vpe](){return this[Qd]?!1:(this[Qd]=!0,this.readable=!1,this[oA]?(Cv(()=>this[Jj]()),!0):this[Jj]())}[Jj](){if(this[QI]){let t=this[QI].end();if(t){for(let r of this[Na])r.dest.write(t);this[rc]||super.emit("data",t)}}for(let t of this[Na])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[na]||(e.dataLength=0);let t=this.promise();return this.on("data",r=>{e.push(r),this[na]||(e.dataLength+=r.length)}),await t,e}async concat(){if(this[na])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[Yu]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(es,()=>t(new Error("stream destroyed"))),this.on("error",r=>t(r)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[rc]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[qp])return t();let s,a,n=h=>{this.off("data",c),this.off("end",f),this.off(es,p),t(),a(h)},c=h=>{this.off("error",n),this.off("end",f),this.off(es,p),this.pause(),s({value:h,done:!!this[qp]})},f=()=>{this.off("error",n),this.off("data",c),this.off(es,p),t(),s({done:!0,value:void 0})},p=()=>n(new Error("stream destroyed"));return new Promise((h,E)=>{a=E,s=h,this.once(es,p),this.once("error",n),this.once("end",f),this.once("data",c)})},throw:t,return:t,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[rc]=!1;let e=!1,t=()=>(this.pause(),this.off(Vj,t),this.off(es,t),this.off("end",t),e=!0,{done:!0,value:void 0}),r=()=>{if(e)return t();let s=this.read();return s===null?t():{done:!1,value:s}};return this.once("end",t),this.once(Vj,t),this.once(es,t),{next:r,throw:t,return:t,[Symbol.iterator](){return this}}}destroy(e){if(this[es])return e?this.emit("error",e):this.emit(es),this;this[es]=!0,this[rc]=!0,this[Zs].length=0,this[Xs]=0;let t=this;return typeof t.close=="function"&&!this[qT]&&t.close(),e?this.emit("error",e):this.emit(es),this}static get isStream(){return Prt}},Mrt=Oa.default.writev,Hd=Symbol("_autoClose"),zu=Symbol("_close"),wv=Symbol("_ended"),Jn=Symbol("_fd"),Zj=Symbol("_finished"),Jp=Symbol("_flags"),Xj=Symbol("_flush"),E6=Symbol("_handleChunk"),I6=Symbol("_makeBuf"),Tv=Symbol("_mode"),KT=Symbol("_needDrain"),UI=Symbol("_onerror"),HI=Symbol("_onopen"),$j=Symbol("_onread"),OI=Symbol("_onwrite"),jd=Symbol("_open"),Ju=Symbol("_path"),Nd=Symbol("_pos"),aA=Symbol("_queue"),LI=Symbol("_read"),e6=Symbol("_readSize"),Kp=Symbol("_reading"),Bv=Symbol("_remain"),t6=Symbol("_size"),nR=Symbol("_write"),pm=Symbol("_writing"),iR=Symbol("_defaultFlag"),Bm=Symbol("_errored"),j6=class extends Dm{[Bm]=!1;[Jn];[Ju];[e6];[Kp]=!1;[t6];[Bv];[Hd];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Bm]=!1,this[Jn]=typeof t.fd=="number"?t.fd:void 0,this[Ju]=e,this[e6]=t.readSize||16*1024*1024,this[Kp]=!1,this[t6]=typeof t.size=="number"?t.size:1/0,this[Bv]=this[t6],this[Hd]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[Jn]=="number"?this[LI]():this[jd]()}get fd(){return this[Jn]}get path(){return this[Ju]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[jd](){Oa.default.open(this[Ju],"r",(e,t)=>this[HI](e,t))}[HI](e,t){e?this[UI](e):(this[Jn]=t,this.emit("open",t),this[LI]())}[I6](){return Buffer.allocUnsafe(Math.min(this[e6],this[Bv]))}[LI](){if(!this[Kp]){this[Kp]=!0;let e=this[I6]();if(e.length===0)return process.nextTick(()=>this[$j](null,0,e));Oa.default.read(this[Jn],e,0,e.length,null,(t,r,s)=>this[$j](t,r,s))}}[$j](e,t,r){this[Kp]=!1,e?this[UI](e):this[E6](t,r)&&this[LI]()}[zu](){if(this[Hd]&&typeof this[Jn]=="number"){let e=this[Jn];this[Jn]=void 0,Oa.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[UI](e){this[Kp]=!0,this[zu](),this.emit("error",e)}[E6](e,t){let r=!1;return this[Bv]-=e,e>0&&(r=super.write(ethis[HI](e,t))}[HI](e,t){this[iR]&&this[Jp]==="r+"&&e&&e.code==="ENOENT"?(this[Jp]="w",this[jd]()):e?this[UI](e):(this[Jn]=t,this.emit("open",t),this[pm]||this[Xj]())}end(e,t){return e&&this.write(e,t),this[wv]=!0,!this[pm]&&!this[aA].length&&typeof this[Jn]=="number"&&this[OI](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[wv]?(this.emit("error",new Error("write() after end()")),!1):this[Jn]===void 0||this[pm]||this[aA].length?(this[aA].push(e),this[KT]=!0,!1):(this[pm]=!0,this[nR](e),!0)}[nR](e){Oa.default.write(this[Jn],e,0,e.length,this[Nd],(t,r)=>this[OI](t,r))}[OI](e,t){e?this[UI](e):(this[Nd]!==void 0&&typeof t=="number"&&(this[Nd]+=t),this[aA].length?this[Xj]():(this[pm]=!1,this[wv]&&!this[Zj]?(this[Zj]=!0,this[zu](),this.emit("finish")):this[KT]&&(this[KT]=!1,this.emit("drain"))))}[Xj](){if(this[aA].length===0)this[wv]&&this[OI](null,0);else if(this[aA].length===1)this[nR](this[aA].pop());else{let e=this[aA];this[aA]=[],Mrt(this[Jn],e,this[Nd],(t,r)=>this[OI](t,r))}}[zu](){if(this[Hd]&&typeof this[Jn]=="number"){let e=this[Jn];this[Jn]=void 0,Oa.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}},Bhe=class extends ER{[jd](){let e;if(this[iR]&&this[Jp]==="r+")try{e=Oa.default.openSync(this[Ju],this[Jp],this[Tv])}catch(t){if(t?.code==="ENOENT")return this[Jp]="w",this[jd]();throw t}else e=Oa.default.openSync(this[Ju],this[Jp],this[Tv]);this[HI](null,e)}[zu](){if(this[Hd]&&typeof this[Jn]=="number"){let e=this[Jn];this[Jn]=void 0,Oa.default.closeSync(e),this.emit("close")}}[nR](e){let t=!0;try{this[OI](null,Oa.default.writeSync(this[Jn],e,0,e.length,this[Nd])),t=!1}finally{if(t)try{this[zu]()}catch{}}}},_rt=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),Hrt=e=>!!e.sync&&!!e.file,jrt=e=>!e.sync&&!!e.file,Grt=e=>!!e.sync&&!e.file,qrt=e=>!e.sync&&!e.file,Yrt=e=>!!e.file,Wrt=e=>_rt.get(e)||e,q6=(e={})=>{if(!e)return{};let t={};for(let[r,s]of Object.entries(e)){let a=Wrt(r);t[a]=s}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t},Hv=(e,t,r,s,a)=>Object.assign((n=[],c,f)=>{Array.isArray(n)&&(c=n,n={}),typeof c=="function"&&(f=c,c=void 0),c?c=Array.from(c):c=[];let p=q6(n);if(a?.(p,c),Hrt(p)){if(typeof f=="function")throw new TypeError("callback not supported for sync tar functions");return e(p,c)}else if(jrt(p)){let h=t(p,c),E=f||void 0;return E?h.then(()=>E(),E):h}else if(Grt(p)){if(typeof f=="function")throw new TypeError("callback not supported for sync tar functions");return r(p,c)}else if(qrt(p)){if(typeof f=="function")throw new TypeError("callback only supported with file option");return s(p,c)}else throw new Error("impossible options??")},{syncFile:e,asyncFile:t,syncNoFile:r,asyncNoFile:s,validate:a}),Vrt=She.default.constants||{ZLIB_VERNUM:4736},uA=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Vrt)),Krt=Ud.Buffer.concat,Jpe=Object.getOwnPropertyDescriptor(Ud.Buffer,"concat"),Jrt=e=>e,r6=Jpe?.writable===!0||Jpe?.set!==void 0?e=>{Ud.Buffer.concat=e?Jrt:Krt}:e=>{},vm=Symbol("_superWrite"),JT=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}},n6=Symbol("flushFlag"),Y6=class extends Dm{#e=!1;#t=!1;#s;#r;#i;#n;#o;get sawError(){return this.#e}get handle(){return this.#n}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#r=e.finishFlush??0,this.#i=e.fullFlushFlag??0,typeof Kpe[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#n=new Kpe[t](e)}catch(r){throw new JT(r,this.constructor)}this.#o=r=>{this.#e||(this.#e=!0,this.close(),this.emit("error",r))},this.#n?.on("error",r=>this.#o(new JT(r))),this.once("end",()=>this.close)}close(){this.#n&&(this.#n.close(),this.#n=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,hR.default)(this.#n,"zlib binding closed"),this.#n.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#i),this.write(Object.assign(Ud.Buffer.alloc(0),{[n6]:e})))}end(e,t,r){return typeof e=="function"&&(r=e,t=void 0,e=void 0),typeof t=="function"&&(r=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#r),this.#t=!0,super.end(r)}get ended(){return this.#t}[vm](e){return super.write(e)}write(e,t,r){if(typeof t=="function"&&(r=t,t="utf8"),typeof e=="string"&&(e=Ud.Buffer.from(e,t)),this.#e)return;(0,hR.default)(this.#n,"zlib binding closed");let s=this.#n._handle,a=s.close;s.close=()=>{};let n=this.#n.close;this.#n.close=()=>{},r6(!0);let c;try{let p=typeof e[n6]=="number"?e[n6]:this.#s;c=this.#n._processChunk(e,p),r6(!1)}catch(p){r6(!1),this.#o(new JT(p,this.write))}finally{this.#n&&(this.#n._handle=s,s.close=a,this.#n.close=n,this.#n.removeAllListeners("error"))}this.#n&&this.#n.on("error",p=>this.#o(new JT(p,this.write)));let f;if(c)if(Array.isArray(c)&&c.length>0){let p=c[0];f=this[vm](Ud.Buffer.from(p));for(let h=1;h{typeof s=="function"&&(a=s,s=this.flushFlag),this.flush(s),a?.()};try{this.handle.params(e,t)}finally{this.handle.flush=r}this.handle&&(this.#e=e,this.#t=t)}}}},zrt=class extends bhe{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[vm](e){return this.#e?(this.#e=!1,e[9]=255,super[vm](e)):super[vm](e)}},Zrt=class extends bhe{constructor(e){super(e,"Unzip")}},Dhe=class extends Y6{constructor(e,t){e=e||{},e.flush=e.flush||uA.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||uA.BROTLI_OPERATION_FINISH,e.fullFlushFlag=uA.BROTLI_OPERATION_FLUSH,super(e,t)}},Xrt=class extends Dhe{constructor(e){super(e,"BrotliCompress")}},$rt=class extends Dhe{constructor(e){super(e,"BrotliDecompress")}},Phe=class extends Y6{constructor(e,t){e=e||{},e.flush=e.flush||uA.ZSTD_e_continue,e.finishFlush=e.finishFlush||uA.ZSTD_e_end,e.fullFlushFlag=uA.ZSTD_e_flush,super(e,t)}},ent=class extends Phe{constructor(e){super(e,"ZstdCompress")}},tnt=class extends Phe{constructor(e){super(e,"ZstdDecompress")}},rnt=(e,t)=>{if(Number.isSafeInteger(e))e<0?int(e,t):nnt(e,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},nnt=(e,t)=>{t[0]=128;for(var r=t.length;r>1;r--)t[r-1]=e&255,e=Math.floor(e/256)},int=(e,t)=>{t[0]=255;var r=!1;e=e*-1;for(var s=t.length;s>1;s--){var a=e&255;e=Math.floor(e/256),r?t[s-1]=xhe(a):a===0?t[s-1]=0:(r=!0,t[s-1]=khe(a))}},snt=e=>{let t=e[0],r=t===128?ant(e.subarray(1,e.length)):t===255?ont(e):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},ont=e=>{for(var t=e.length,r=0,s=!1,a=t-1;a>-1;a--){var n=Number(e[a]),c;s?c=xhe(n):n===0?c=n:(s=!0,c=khe(n)),c!==0&&(r-=c*Math.pow(256,t-a-1))}return r},ant=e=>{for(var t=e.length,r=0,s=t-1;s>-1;s--){var a=Number(e[s]);a!==0&&(r+=a*Math.pow(256,t-s-1))}return r},xhe=e=>(255^e)&255,khe=e=>(255^e)+1&255,lnt={};Drt(lnt,{code:()=>W6,isCode:()=>sR,isName:()=>cnt,name:()=>CR});sR=e=>CR.has(e),cnt=e=>W6.has(e),CR=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),W6=new Map(Array.from(CR).map(e=>[e[1],e[0]])),Sm=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#e="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(e,t=0,r,s){Buffer.isBuffer(e)?this.decode(e,t||0,r,s):e&&this.#t(e)}decode(e,t,r,s){if(t||(t=0),!e||!(e.length>=t+512))throw new Error("need 512 bytes for header");this.path=r?.path??hm(e,t,100),this.mode=r?.mode??s?.mode??Od(e,t+100,8),this.uid=r?.uid??s?.uid??Od(e,t+108,8),this.gid=r?.gid??s?.gid??Od(e,t+116,8),this.size=r?.size??s?.size??Od(e,t+124,12),this.mtime=r?.mtime??s?.mtime??i6(e,t+136,12),this.cksum=Od(e,t+148,12),s&&this.#t(s,!0),r&&this.#t(r);let a=hm(e,t+156,1);if(sR(a)&&(this.#e=a||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=hm(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=r?.uname??s?.uname??hm(e,t+265,32),this.gname=r?.gname??s?.gname??hm(e,t+297,32),this.devmaj=r?.devmaj??s?.devmaj??Od(e,t+329,8)??0,this.devmin=r?.devmin??s?.devmin??Od(e,t+337,8)??0,e[t+475]!==0){let c=hm(e,t+345,155);this.path=c+"/"+this.path}else{let c=hm(e,t+345,130);c&&(this.path=c+"/"+this.path),this.atime=r?.atime??s?.atime??i6(e,t+476,12),this.ctime=r?.ctime??s?.ctime??i6(e,t+488,12)}let n=256;for(let c=t;c!(s==null||r==="path"&&t||r==="linkpath"&&t||r==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let r=this.ctime||this.atime?130:155,s=unt(this.path||"",r),a=s[0],n=s[1];this.needPax=!!s[2],this.needPax=dm(e,t,100,a)||this.needPax,this.needPax=Ld(e,t+100,8,this.mode)||this.needPax,this.needPax=Ld(e,t+108,8,this.uid)||this.needPax,this.needPax=Ld(e,t+116,8,this.gid)||this.needPax,this.needPax=Ld(e,t+124,12,this.size)||this.needPax,this.needPax=s6(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this.#e.charCodeAt(0),this.needPax=dm(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=dm(e,t+265,32,this.uname)||this.needPax,this.needPax=dm(e,t+297,32,this.gname)||this.needPax,this.needPax=Ld(e,t+329,8,this.devmaj)||this.needPax,this.needPax=Ld(e,t+337,8,this.devmin)||this.needPax,this.needPax=dm(e,t+345,r,n)||this.needPax,e[t+475]!==0?this.needPax=dm(e,t+345,155,n)||this.needPax:(this.needPax=dm(e,t+345,130,n)||this.needPax,this.needPax=s6(e,t+476,12,this.atime)||this.needPax,this.needPax=s6(e,t+488,12,this.ctime)||this.needPax);let c=256;for(let f=t;f{let r=e,s="",a,n=Cm.posix.parse(e).root||".";if(Buffer.byteLength(r)<100)a=[r,s,!1];else{s=Cm.posix.dirname(r),r=Cm.posix.basename(r);do Buffer.byteLength(r)<=100&&Buffer.byteLength(s)<=t?a=[r,s,!1]:Buffer.byteLength(r)>100&&Buffer.byteLength(s)<=t?a=[r.slice(0,99),s,!0]:(r=Cm.posix.join(Cm.posix.basename(s),r),s=Cm.posix.dirname(s));while(s!==n&&a===void 0);a||(a=[e.slice(0,99),"",!0])}return a},hm=(e,t,r)=>e.subarray(t,t+r).toString("utf8").replace(/\0.*/,""),i6=(e,t,r)=>fnt(Od(e,t,r)),fnt=e=>e===void 0?void 0:new Date(e*1e3),Od=(e,t,r)=>Number(e[t])&128?snt(e.subarray(t,t+r)):pnt(e,t,r),Ant=e=>isNaN(e)?void 0:e,pnt=(e,t,r)=>Ant(parseInt(e.subarray(t,t+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),hnt={12:8589934591,8:2097151},Ld=(e,t,r,s)=>s===void 0?!1:s>hnt[r]||s<0?(rnt(s,e.subarray(t,t+r)),!0):(dnt(e,t,r,s),!1),dnt=(e,t,r,s)=>e.write(gnt(s,r),t,r,"ascii"),gnt=(e,t)=>mnt(Math.floor(e).toString(8),t),mnt=(e,t)=>(e.length===t-1?e:new Array(t-e.length-1).join("0")+e+" ")+"\0",s6=(e,t,r,s)=>s===void 0?!1:Ld(e,t,r,s.getTime()/1e3),ynt=new Array(156).join("\0"),dm=(e,t,r,s)=>s===void 0?!1:(e.write(s+ynt,t,r,"utf8"),s.length!==Buffer.byteLength(s)||s.length>r),dR=class The{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,r=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=r,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let r=Buffer.byteLength(t),s=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(s);for(let n=0;n<512;n++)a[n]=0;new Sm({path:("PaxHeader/"+(0,Qhe.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:r,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(a),a.write(t,512,r,"utf8");for(let n=r+512;n=Math.pow(10,c)&&(c+=1),c+n+a}static parse(t,r,s=!1){return new The(Ent(Int(t),r),s)}},Ent=(e,t)=>t?Object.assign({},t,e):e,Int=e=>e.replace(/\n$/,"").split(` +`).reduce(Cnt,Object.create(null)),Cnt=(e,t)=>{let r=parseInt(t,10);if(r!==Buffer.byteLength(t)+1)return e;t=t.slice((r+" ").length);let s=t.split("="),a=s.shift();if(!a)return e;let n=a.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),c=s.join("=");return e[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(c)*1e3):/^[0-9]+$/.test(c)?+c:c,e},wnt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,cn=wnt!=="win32"?e=>e:e=>e&&e.replace(/\\/g,"/"),Rhe=class extends Dm{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,r){switch(super({}),this.pause(),this.extended=t,this.globalExtended=r,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=cn(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?cn(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),r&&this.#e(r,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let r=this.remain,s=this.blockRemain;return this.remain=Math.max(0,r-t),this.blockRemain=Math.max(0,s-t),this.ignore?!0:r>=t?super.write(e):super.write(e.subarray(0,r))}#e(e,t=!1){e.path&&(e.path=cn(e.path)),e.linkpath&&(e.linkpath=cn(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([r,s])=>!(s==null||r==="path"&&t))))}},wR=(e,t,r,s={})=>{e.file&&(s.file=e.file),e.cwd&&(s.cwd=e.cwd),s.code=r instanceof Error&&r.code||t,s.tarCode=t,!e.strict&&s.recoverable!==!1?(r instanceof Error&&(s=Object.assign(r,s),r=r.message),e.emit("warn",t,r,s)):r instanceof Error?e.emit("error",Object.assign(r,s)):e.emit("error",Object.assign(new Error(`${t}: ${r}`),s))},Bnt=1024*1024,C6=Buffer.from([31,139]),w6=Buffer.from([40,181,47,253]),vnt=Math.max(C6.length,w6.length),_c=Symbol("state"),gm=Symbol("writeEntry"),Wp=Symbol("readEntry"),o6=Symbol("nextEntry"),zpe=Symbol("processEntry"),lA=Symbol("extendedHeader"),vv=Symbol("globalExtendedHeader"),Td=Symbol("meta"),Zpe=Symbol("emitMeta"),Ci=Symbol("buffer"),Vp=Symbol("queue"),Rd=Symbol("ended"),a6=Symbol("emittedEnd"),mm=Symbol("emit"),ds=Symbol("unzip"),zT=Symbol("consumeChunk"),ZT=Symbol("consumeChunkSub"),l6=Symbol("consumeBody"),Xpe=Symbol("consumeMeta"),$pe=Symbol("consumeHeader"),Sv=Symbol("consuming"),c6=Symbol("bufferConcat"),XT=Symbol("maybeEnd"),TI=Symbol("writing"),Fd=Symbol("aborted"),$T=Symbol("onDone"),ym=Symbol("sawValidEntry"),eR=Symbol("sawNullBlock"),tR=Symbol("sawEOF"),ehe=Symbol("closeStream"),Snt=()=>!0,bm=class extends vhe.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[Vp]=[];[Ci];[Wp];[gm];[_c]="begin";[Td]="";[lA];[vv];[Rd]=!1;[ds];[Fd]=!1;[ym];[eR]=!1;[tR]=!1;[TI]=!1;[Sv]=!1;[a6]=!1;constructor(e={}){super(),this.file=e.file||"",this.on($T,()=>{(this[_c]==="begin"||this[ym]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on($T,e.ondone):this.on($T,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||Bnt,this.filter=typeof e.filter=="function"?e.filter:Snt;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let r=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:r?!0:void 0,this.on("end",()=>this[ehe]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,r={}){wR(this,e,t,r)}[$pe](e,t){this[ym]===void 0&&(this[ym]=!1);let r;try{r=new Sm(e,t,this[lA],this[vv])}catch(s){return this.warn("TAR_ENTRY_INVALID",s)}if(r.nullBlock)this[eR]?(this[tR]=!0,this[_c]==="begin"&&(this[_c]="header"),this[mm]("eof")):(this[eR]=!0,this[mm]("nullBlock"));else if(this[eR]=!1,!r.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:r});else if(!r.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:r});else{let s=r.type;if(/^(Symbolic)?Link$/.test(s)&&!r.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:r});else if(!/^(Symbolic)?Link$/.test(s)&&!/^(Global)?ExtendedHeader$/.test(s)&&r.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:r});else{let a=this[gm]=new Rhe(r,this[lA],this[vv]);if(!this[ym])if(a.remain){let n=()=>{a.invalid||(this[ym]=!0)};a.on("end",n)}else this[ym]=!0;a.meta?a.size>this.maxMetaEntrySize?(a.ignore=!0,this[mm]("ignoredEntry",a),this[_c]="ignore",a.resume()):a.size>0&&(this[Td]="",a.on("data",n=>this[Td]+=n),this[_c]="meta"):(this[lA]=void 0,a.ignore=a.ignore||!this.filter(a.path,a),a.ignore?(this[mm]("ignoredEntry",a),this[_c]=a.remain?"ignore":"header",a.resume()):(a.remain?this[_c]="body":(this[_c]="header",a.end()),this[Wp]?this[Vp].push(a):(this[Vp].push(a),this[o6]())))}}}[ehe](){queueMicrotask(()=>this.emit("close"))}[zpe](e){let t=!0;if(!e)this[Wp]=void 0,t=!1;else if(Array.isArray(e)){let[r,...s]=e;this.emit(r,...s)}else this[Wp]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[o6]()),t=!1);return t}[o6](){do;while(this[zpe](this[Vp].shift()));if(!this[Vp].length){let e=this[Wp];!e||e.flowing||e.size===e.remain?this[TI]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[l6](e,t){let r=this[gm];if(!r)throw new Error("attempt to consume body without entry??");let s=r.blockRemain??0,a=s>=e.length&&t===0?e:e.subarray(t,t+s);return r.write(a),r.blockRemain||(this[_c]="header",this[gm]=void 0,r.end()),a.length}[Xpe](e,t){let r=this[gm],s=this[l6](e,t);return!this[gm]&&r&&this[Zpe](r),s}[mm](e,t,r){!this[Vp].length&&!this[Wp]?this.emit(e,t,r):this[Vp].push([e,t,r])}[Zpe](e){switch(this[mm]("meta",this[Td]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[lA]=dR.parse(this[Td],this[lA],!1);break;case"GlobalExtendedHeader":this[vv]=dR.parse(this[Td],this[vv],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[lA]??Object.create(null);this[lA]=t,t.path=this[Td].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[lA]||Object.create(null);this[lA]=t,t.linkpath=this[Td].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Fd]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e,t,r){if(typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[Fd])return r?.(),!1;if((this[ds]===void 0||this.brotli===void 0&&this[ds]===!1)&&e){if(this[Ci]&&(e=Buffer.concat([this[Ci],e]),this[Ci]=void 0),e.lengththis[zT](p)),this[ds].on("error",p=>this.abort(p)),this[ds].on("end",()=>{this[Rd]=!0,this[zT]()}),this[TI]=!0;let f=!!this[ds][c?"end":"write"](e);return this[TI]=!1,r?.(),f}}this[TI]=!0,this[ds]?this[ds].write(e):this[zT](e),this[TI]=!1;let s=this[Vp].length?!1:this[Wp]?this[Wp].flowing:!0;return!s&&!this[Vp].length&&this[Wp]?.once("drain",()=>this.emit("drain")),r?.(),s}[c6](e){e&&!this[Fd]&&(this[Ci]=this[Ci]?Buffer.concat([this[Ci],e]):e)}[XT](){if(this[Rd]&&!this[a6]&&!this[Fd]&&!this[Sv]){this[a6]=!0;let e=this[gm];if(e&&e.blockRemain){let t=this[Ci]?this[Ci].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[Ci]&&e.write(this[Ci]),e.end()}this[mm]($T)}}[zT](e){if(this[Sv]&&e)this[c6](e);else if(!e&&!this[Ci])this[XT]();else if(e){if(this[Sv]=!0,this[Ci]){this[c6](e);let t=this[Ci];this[Ci]=void 0,this[ZT](t)}else this[ZT](e);for(;this[Ci]&&this[Ci]?.length>=512&&!this[Fd]&&!this[tR];){let t=this[Ci];this[Ci]=void 0,this[ZT](t)}this[Sv]=!1}(!this[Ci]||this[Rd])&&this[XT]()}[ZT](e){let t=0,r=e.length;for(;t+512<=r&&!this[Fd]&&!this[tR];)switch(this[_c]){case"begin":case"header":this[$pe](e,t),t+=512;break;case"ignore":case"body":t+=this[l6](e,t);break;case"meta":t+=this[Xpe](e,t);break;default:throw new Error("invalid state: "+this[_c])}t{let t=e.length-1,r=-1;for(;t>-1&&e.charAt(t)==="/";)r=t,t--;return r===-1?e:e.slice(0,r)},bnt=e=>{let t=e.onReadEntry;e.onReadEntry=t?r=>{t(r),r.resume()}:r=>r.resume()},Fhe=(e,t)=>{let r=new Map(t.map(n=>[Rv(n),!0])),s=e.filter,a=(n,c="")=>{let f=c||(0,IR.parse)(n).root||".",p;if(n===f)p=!1;else{let h=r.get(n);h!==void 0?p=h:p=a((0,IR.dirname)(n),f)}return r.set(n,p),p};e.filter=s?(n,c)=>s(n,c)&&a(Rv(n)):n=>a(Rv(n))},Dnt=e=>{let t=new bm(e),r=e.file,s;try{s=wm.default.openSync(r,"r");let a=wm.default.fstatSync(s),n=e.maxReadSize||16*1024*1024;if(a.size{let r=new bm(e),s=e.maxReadSize||16*1024*1024,a=e.file;return new Promise((n,c)=>{r.on("error",c),r.on("end",n),wm.default.stat(a,(f,p)=>{if(f)c(f);else{let h=new j6(a,{readSize:s,size:p.size});h.on("error",c),h.pipe(r)}})})},BR=Hv(Dnt,Pnt,e=>new bm(e),e=>new bm(e),(e,t)=>{t?.length&&Fhe(e,t),e.noResume||bnt(e)}),Nhe=(e,t,r)=>(e&=4095,r&&(e=(e|384)&-19),t&&(e&256&&(e|=64),e&32&&(e|=8),e&4&&(e|=1)),e),{isAbsolute:xnt,parse:the}=Ohe.win32,V6=e=>{let t="",r=the(e);for(;xnt(e)||r.root;){let s=e.charAt(0)==="/"&&e.slice(0,4)!=="//?/"?"/":r.root;e=e.slice(s.length),t+=s,r=the(e)}return[t,e]},vR=["|","<",">","?",":"],K6=vR.map(e=>String.fromCharCode(61440+e.charCodeAt(0))),knt=new Map(vR.map((e,t)=>[e,K6[t]])),Qnt=new Map(K6.map((e,t)=>[e,vR[t]])),rhe=e=>vR.reduce((t,r)=>t.split(r).join(knt.get(r)),e),Tnt=e=>K6.reduce((t,r)=>t.split(r).join(Qnt.get(r)),e),Lhe=(e,t)=>t?(e=cn(e).replace(/^\.(\/|$)/,""),Rv(t)+"/"+e):cn(e),Rnt=16*1024*1024,nhe=Symbol("process"),ihe=Symbol("file"),she=Symbol("directory"),v6=Symbol("symlink"),ohe=Symbol("hardlink"),bv=Symbol("header"),oR=Symbol("read"),S6=Symbol("lstat"),aR=Symbol("onlstat"),b6=Symbol("onread"),D6=Symbol("onreadlink"),P6=Symbol("openfile"),x6=Symbol("onopenfile"),Md=Symbol("close"),gR=Symbol("mode"),k6=Symbol("awaitDrain"),u6=Symbol("ondrain"),cA=Symbol("prefix"),Mhe=class extends Dm{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let r=q6(t);super(),this.path=cn(e),this.portable=!!r.portable,this.maxReadSize=r.maxReadSize||Rnt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=cn(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime,this.prefix=r.prefix?cn(r.prefix):void 0,this.onWriteEntry=r.onWriteEntry,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let s=!1;if(!this.preservePaths){let[n,c]=V6(this.path);n&&typeof c=="string"&&(this.path=c,s=n)}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Tnt(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=cn(r.absolute||B6.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),s&&this.warn("TAR_ENTRY_INFO",`stripping ${s} from absolute path`,{entry:this,path:s+this.path});let a=this.statCache.get(this.absolute);a?this[aR](a):this[S6]()}warn(e,t,r={}){return wR(this,e,t,r)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[S6](){Ku.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[aR](t)})}[aR](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=Ont(e),this.emit("stat",e),this[nhe]()}[nhe](){switch(this.type){case"File":return this[ihe]();case"Directory":return this[she]();case"SymbolicLink":return this[v6]();default:return this.end()}}[gR](e){return Nhe(e,this.type==="Directory",this.portable)}[cA](e){return Lhe(e,this.prefix)}[bv](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new Sm({path:this[cA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[cA](this.linkpath):this.linkpath,mode:this[gR](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new dR({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[cA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[cA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[she](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[bv](),this.end()}[v6](){Ku.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[D6](t)})}[D6](e){this.linkpath=cn(e),this[bv](),this.end()}[ohe](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=cn(B6.default.relative(this.cwd,e)),this.stat.size=0,this[bv](),this.end()}[ihe](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[ohe](t);this.linkCache.set(e,this.absolute)}if(this[bv](),this.stat.size===0)return this.end();this[P6]()}[P6](){Ku.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[x6](t)})}[x6](e){if(this.fd=e,this.#e)return this[Md]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[oR]()}[oR](){let{fd:e,buf:t,offset:r,length:s,pos:a}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");Ku.default.read(e,t,r,s,a,(n,c)=>{if(n)return this[Md](()=>this.emit("error",n));this[b6](c)})}[Md](e=()=>{}){this.fd!==void 0&&Ku.default.close(this.fd,e)}[b6](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[Md](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[Md](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;rthis[u6]())}[k6](e){this.once("drain",e)}write(e,t,r){if(typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemaine?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[oR]()}},Fnt=class extends Mhe{sync=!0;[S6](){this[aR](Ku.default.lstatSync(this.absolute))}[v6](){this[D6](Ku.default.readlinkSync(this.absolute))}[P6](){this[x6](Ku.default.openSync(this.absolute,"r"))}[oR](){let e=!0;try{let{fd:t,buf:r,offset:s,length:a,pos:n}=this;if(t===void 0||r===void 0)throw new Error("fd and buf must be set in READ method");let c=Ku.default.readSync(t,r,s,a,n);this[b6](c),e=!1}finally{if(e)try{this[Md](()=>{})}catch{}}}[k6](e){e()}[Md](e=()=>{}){this.fd!==void 0&&Ku.default.closeSync(this.fd),e()}},Nnt=class extends Dm{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,r={}){return wR(this,e,t,r)}constructor(e,t={}){let r=q6(t);super(),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.onWriteEntry=r.onWriteEntry,this.readEntry=e;let{type:s}=e;if(s==="Unsupported")throw new Error("writing entry that should be ignored");this.type=s,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix,this.path=cn(e.path),this.mode=e.mode!==void 0?this[gR](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:r.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?cn(e.linkpath):void 0,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let a=!1;if(!this.preservePaths){let[c,f]=V6(this.path);c&&typeof f=="string"&&(this.path=f,a=c)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new Sm({path:this[cA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[cA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),a&&this.warn("TAR_ENTRY_INFO",`stripping ${a} from absolute path`,{entry:this,path:a+this.path}),this.header.encode()&&!this.noPax&&super.write(new dR({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[cA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[cA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let n=this.header?.block;if(!n)throw new Error("failed to encode header");super.write(n),e.pipe(this)}[cA](e){return Lhe(e,this.prefix)}[gR](e){return Nhe(e,this.type==="Directory",this.portable)}write(e,t,r){typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let s=e.length;if(s>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=s,super.write(e,r)}end(e,t,r){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(r=e,t=void 0,e=void 0),typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),r&&this.once("finish",r),e?super.end(e,r):super.end(r),this}},Ont=e=>e.isFile()?"File":e.isDirectory()?"Directory":e.isSymbolicLink()?"SymbolicLink":"Unsupported",Lnt=class MI{tail;head;length=0;static create(t=[]){return new MI(t)}constructor(t=[]){for(let r of t)this.push(r)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let r=t.next,s=t.prev;return r&&(r.prev=s),s&&(s.next=r),t===this.head&&(this.head=r),t===this.tail&&(this.tail=s),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,r}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let r=this.head;t.list=this,t.next=r,r&&(r.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let r=this.tail;t.list=this,t.prev=r,r&&(r.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let r=0,s=t.length;r1)s=r;else if(this.head)a=this.head.next,s=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;a;n++)s=t(s,a.value,n),a=a.next;return s}reduceReverse(t,r){let s,a=this.tail;if(arguments.length>1)s=r;else if(this.tail)a=this.tail.prev,s=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;a;n--)s=t(s,a.value,n),a=a.prev;return s}toArray(){let t=new Array(this.length);for(let r=0,s=this.head;s;r++)t[r]=s.value,s=s.next;return t}toArrayReverse(){let t=new Array(this.length);for(let r=0,s=this.tail;s;r++)t[r]=s.value,s=s.prev;return t}slice(t=0,r=this.length){r<0&&(r+=this.length),t<0&&(t+=this.length);let s=new MI;if(rthis.length&&(r=this.length);let a=this.head,n=0;for(n=0;a&&nthis.length&&(r=this.length);let a=this.length,n=this.tail;for(;n&&a>r;a--)n=n.prev;for(;n&&a>t;a--,n=n.prev)s.push(n.value);return s}splice(t,r=0,...s){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let a=this.head;for(let c=0;a&&c1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new zrt(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new Xrt(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new ent(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",r=>super.write(r)),t.on("end",()=>super.end()),t.on("drain",()=>this[h6]()),this.on("resume",()=>t.resume())}else this.on("drain",this[h6]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[Wu]=new Lnt,this[Vu]=0,this.jobs=Number(e.jobs)||4,this[Pv]=!1,this[Dv]=!1}[Uhe](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,r){return typeof e=="function"&&(r=e,e=void 0),typeof t=="function"&&(r=t,t=void 0),e&&this.add(e),this[Dv]=!0,this[Im](),r&&r(),this}write(e){if(this[Dv])throw new Error("write after end");return e instanceof Rhe?this[che](e):this[cR](e),this.flowing}[che](e){let t=cn(Q6.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let r=new ahe(e.path,t);r.entry=new Nnt(e,this[p6](r)),r.entry.on("end",()=>this[A6](r)),this[Vu]+=1,this[Wu].push(r)}this[Im]()}[cR](e){let t=cn(Q6.default.resolve(this.cwd,e));this[Wu].push(new ahe(e,t)),this[Im]()}[T6](e){e.pending=!0,this[Vu]+=1;let t=this.follow?"stat":"lstat";Uv.default[t](e.absolute,(r,s)=>{e.pending=!1,this[Vu]-=1,r?this.emit("error",r):this[lR](e,s)})}[lR](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)?t.isFile()&&t.nlink>1&&e===this[Em]&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync&&this[f6](e):e.ignore=!0,this[Im]()}[R6](e){e.pending=!0,this[Vu]+=1,Uv.default.readdir(e.absolute,(t,r)=>{if(e.pending=!1,this[Vu]-=1,t)return this.emit("error",t);this[uR](e,r)})}[uR](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[Im]()}[Im](){if(!this[Pv]){this[Pv]=!0;for(let e=this[Wu].head;e&&this[Vu]this.warn(t,r,s),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[uhe](e){this[Vu]+=1;try{return new this[AR](e.path,this[p6](e)).on("end",()=>this[A6](e)).on("error",t=>this.emit("error",t))}catch(t){this.emit("error",t)}}[h6](){this[Em]&&this[Em].entry&&this[Em].entry.resume()}[fR](e){e.piped=!0,e.readdir&&e.readdir.forEach(s=>{let a=e.path,n=a==="./"?"":a.replace(/\/*$/,"/");this[cR](n+s)});let t=e.entry,r=this.zip;if(!t)throw new Error("cannot pipe without source");r?t.on("data",s=>{r.write(s)||t.pause()}):t.on("data",s=>{super.write(s)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,r={}){wR(this,e,t,r)}},z6=class extends SR{sync=!0;constructor(e){super(e),this[AR]=Fnt}pause(){}resume(){}[T6](e){let t=this.follow?"statSync":"lstatSync";this[lR](e,Uv.default[t](e.absolute))}[R6](e){this[uR](e,Uv.default.readdirSync(e.absolute))}[fR](e){let t=e.entry,r=this.zip;if(e.readdir&&e.readdir.forEach(s=>{let a=e.path,n=a==="./"?"":a.replace(/\/*$/,"/");this[cR](n+s)}),!t)throw new Error("Cannot pipe without source");r?t.on("data",s=>{r.write(s)}):t.on("data",s=>{super[Uhe](s)})}},Hnt=(e,t)=>{let r=new z6(e),s=new Bhe(e.file,{mode:e.mode||438});r.pipe(s),_he(r,t)},jnt=(e,t)=>{let r=new SR(e),s=new ER(e.file,{mode:e.mode||438});r.pipe(s);let a=new Promise((n,c)=>{s.on("error",c),s.on("close",n),r.on("error",c)});return Hhe(r,t),a},_he=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?BR({file:G6.default.resolve(e.cwd,r.slice(1)),sync:!0,noResume:!0,onReadEntry:s=>e.add(s)}):e.add(r)}),e.end()},Hhe=async(e,t)=>{for(let r=0;r{e.add(a)}}):e.add(s)}e.end()},Gnt=(e,t)=>{let r=new z6(e);return _he(r,t),r},qnt=(e,t)=>{let r=new SR(e);return Hhe(r,t),r},YUt=Hv(Hnt,jnt,Gnt,qnt,(e,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")}),Ynt=process.platform,Wnt=Ynt==="win32",{O_CREAT:Vnt,O_TRUNC:Knt,O_WRONLY:Jnt}=$6.default.constants,Ghe=Number(process.env.__FAKE_FS_O_FILENAME__)||$6.default.constants.UV_FS_O_FILEMAP||0,znt=Wnt&&!!Ghe,Znt=512*1024,Xnt=Ghe|Knt|Vnt|Jnt,qhe=znt?e=>e"w",F6=(e,t,r)=>{try{return jv.default.lchownSync(e,t,r)}catch(s){if(s?.code!=="ENOENT")throw s}},mR=(e,t,r,s)=>{jv.default.lchown(e,t,r,a=>{s(a&&a?.code!=="ENOENT"?a:null)})},$nt=(e,t,r,s,a)=>{if(t.isDirectory())Yhe(_I.default.resolve(e,t.name),r,s,n=>{if(n)return a(n);let c=_I.default.resolve(e,t.name);mR(c,r,s,a)});else{let n=_I.default.resolve(e,t.name);mR(n,r,s,a)}},Yhe=(e,t,r,s)=>{jv.default.readdir(e,{withFileTypes:!0},(a,n)=>{if(a){if(a.code==="ENOENT")return s();if(a.code!=="ENOTDIR"&&a.code!=="ENOTSUP")return s(a)}if(a||!n.length)return mR(e,t,r,s);let c=n.length,f=null,p=h=>{if(!f){if(h)return s(f=h);if(--c===0)return mR(e,t,r,s)}};for(let h of n)$nt(e,h,t,r,p)})},eit=(e,t,r,s)=>{t.isDirectory()&&Whe(_I.default.resolve(e,t.name),r,s),F6(_I.default.resolve(e,t.name),r,s)},Whe=(e,t,r)=>{let s;try{s=jv.default.readdirSync(e,{withFileTypes:!0})}catch(a){let n=a;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return F6(e,t,r);throw n}for(let a of s)eit(e,a,t,r);return F6(e,t,r)},Khe=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}},bR=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}},tit=(e,t)=>{Il.default.stat(e,(r,s)=>{(r||!s.isDirectory())&&(r=new Khe(e,r?.code||"ENOTDIR")),t(r)})},rit=(e,t,r)=>{e=cn(e);let s=t.umask??18,a=t.mode|448,n=(a&s)!==0,c=t.uid,f=t.gid,p=typeof c=="number"&&typeof f=="number"&&(c!==t.processUid||f!==t.processGid),h=t.preserve,E=t.unlink,C=cn(t.cwd),S=(I,R)=>{I?r(I):R&&p?Yhe(R,c,f,N=>S(N)):n?Il.default.chmod(e,a,r):r()};if(e===C)return tit(e,S);if(h)return Vhe.default.mkdir(e,{mode:a,recursive:!0}).then(I=>S(null,I??void 0),S);let x=cn(_v.default.relative(C,e)).split("/");N6(C,x,a,E,C,void 0,S)},N6=(e,t,r,s,a,n,c)=>{if(!t.length)return c(null,n);let f=t.shift(),p=cn(_v.default.resolve(e+"/"+f));Il.default.mkdir(p,r,Jhe(p,t,r,s,a,n,c))},Jhe=(e,t,r,s,a,n,c)=>f=>{f?Il.default.lstat(e,(p,h)=>{if(p)p.path=p.path&&cn(p.path),c(p);else if(h.isDirectory())N6(e,t,r,s,a,n,c);else if(s)Il.default.unlink(e,E=>{if(E)return c(E);Il.default.mkdir(e,r,Jhe(e,t,r,s,a,n,c))});else{if(h.isSymbolicLink())return c(new bR(e,e+"/"+t.join("/")));c(f)}}):(n=n||e,N6(e,t,r,s,a,n,c))},nit=e=>{let t=!1,r;try{t=Il.default.statSync(e).isDirectory()}catch(s){r=s?.code}finally{if(!t)throw new Khe(e,r??"ENOTDIR")}},iit=(e,t)=>{e=cn(e);let r=t.umask??18,s=t.mode|448,a=(s&r)!==0,n=t.uid,c=t.gid,f=typeof n=="number"&&typeof c=="number"&&(n!==t.processUid||c!==t.processGid),p=t.preserve,h=t.unlink,E=cn(t.cwd),C=I=>{I&&f&&Whe(I,n,c),a&&Il.default.chmodSync(e,s)};if(e===E)return nit(E),C();if(p)return C(Il.default.mkdirSync(e,{mode:s,recursive:!0})??void 0);let S=cn(_v.default.relative(E,e)).split("/"),x;for(let I=S.shift(),R=E;I&&(R+="/"+I);I=S.shift()){R=cn(_v.default.resolve(R));try{Il.default.mkdirSync(R,s),x=x||R}catch{let N=Il.default.lstatSync(R);if(N.isDirectory())continue;if(h){Il.default.unlinkSync(R),Il.default.mkdirSync(R,s),x=x||R;continue}else if(N.isSymbolicLink())return new bR(R,R+"/"+S.join("/"))}}return C(x)},d6=Object.create(null),fhe=1e4,RI=new Set,sit=e=>{RI.has(e)?RI.delete(e):d6[e]=e.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),RI.add(e);let t=d6[e],r=RI.size-fhe;if(r>fhe/10){for(let s of RI)if(RI.delete(s),delete d6[s],--r<=0)break}return t},oit=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,ait=oit==="win32",lit=e=>e.split("/").slice(0,-1).reduce((t,r)=>{let s=t[t.length-1];return s!==void 0&&(r=(0,eG.join)(s,r)),t.push(r||"/"),t},[]),cit=class{#e=new Map;#t=new Map;#s=new Set;reserve(e,t){e=ait?["win32 parallelization disabled"]:e.map(s=>Rv((0,eG.join)(sit(s))));let r=new Set(e.map(s=>lit(s)).reduce((s,a)=>s.concat(a)));this.#t.set(t,{dirs:r,paths:e});for(let s of e){let a=this.#e.get(s);a?a.push(t):this.#e.set(s,[t])}for(let s of r){let a=this.#e.get(s);if(!a)this.#e.set(s,[new Set([t])]);else{let n=a[a.length-1];n instanceof Set?n.add(t):a.push(new Set([t]))}}return this.#i(t)}#r(e){let t=this.#t.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(r=>this.#e.get(r)),dirs:[...t.dirs].map(r=>this.#e.get(r))}}check(e){let{paths:t,dirs:r}=this.#r(e);return t.every(s=>s&&s[0]===e)&&r.every(s=>s&&s[0]instanceof Set&&s[0].has(e))}#i(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#n(e)),!0)}#n(e){if(!this.#s.has(e))return!1;let t=this.#t.get(e);if(!t)throw new Error("invalid reservation");let{paths:r,dirs:s}=t,a=new Set;for(let n of r){let c=this.#e.get(n);if(!c||c?.[0]!==e)continue;let f=c[1];if(!f){this.#e.delete(n);continue}if(c.shift(),typeof f=="function")a.add(f);else for(let p of f)a.add(p)}for(let n of s){let c=this.#e.get(n),f=c?.[0];if(!(!c||!(f instanceof Set)))if(f.size===1&&c.length===1){this.#e.delete(n);continue}else if(f.size===1){c.shift();let p=c[0];typeof p=="function"&&a.add(p)}else f.delete(e)}return this.#s.delete(e),a.forEach(n=>this.#i(n)),!0}},uit=()=>process.umask(),Ahe=Symbol("onEntry"),O6=Symbol("checkFs"),phe=Symbol("checkFs2"),L6=Symbol("isReusable"),Hc=Symbol("makeFs"),M6=Symbol("file"),U6=Symbol("directory"),pR=Symbol("link"),hhe=Symbol("symlink"),dhe=Symbol("hardlink"),Qv=Symbol("ensureNoSymlink"),ghe=Symbol("unsupported"),mhe=Symbol("checkPath"),g6=Symbol("stripAbsolutePath"),_d=Symbol("mkdir"),$s=Symbol("onError"),rR=Symbol("pending"),yhe=Symbol("pend"),FI=Symbol("unpend"),m6=Symbol("ended"),y6=Symbol("maybeClose"),_6=Symbol("skip"),Fv=Symbol("doChown"),Nv=Symbol("uid"),Ov=Symbol("gid"),Lv=Symbol("checkedCwd"),fit=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Mv=fit==="win32",Ait=1024,pit=(e,t)=>{if(!Mv)return Bn.default.unlink(e,t);let r=e+".DELETE."+(0,X6.randomBytes)(16).toString("hex");Bn.default.rename(e,r,s=>{if(s)return t(s);Bn.default.unlink(r,t)})},hit=e=>{if(!Mv)return Bn.default.unlinkSync(e);let t=e+".DELETE."+(0,X6.randomBytes)(16).toString("hex");Bn.default.renameSync(e,t),Bn.default.unlinkSync(t)},Ehe=(e,t,r)=>e!==void 0&&e===e>>>0?e:t!==void 0&&t===t>>>0?t:r,tG=class extends bm{[m6]=!1;[Lv]=!1;[rR]=0;reservations=new cit;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[m6]=!0,this[y6]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:Ait,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Mv,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=cn(gs.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:uit():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[Ahe](t))}warn(e,t,r={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(r.recoverable=!1),super.warn(e,t,r)}[y6](){this[m6]&&this[rR]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[g6](e,t){let r=e[t],{type:s}=e;if(!r||this.preservePaths)return!0;let a=r.split("/");if(a.includes("..")||Mv&&/^[a-z]:\.\.$/i.test(a[0]??"")){if(t==="path"||s==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:r}),!1;{let f=gs.default.posix.dirname(e.path),p=gs.default.posix.normalize(gs.default.posix.join(f,r));if(p.startsWith("../")||p==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:r}),!1}}let[n,c]=V6(r);return n&&(e[t]=String(c),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${t}`,{entry:e,[t]:r})),!0}[mhe](e){let t=cn(e.path),r=t.split("/");if(this.strip){if(r.length=this.strip)e.linkpath=s.slice(this.strip).join("/");else return!1}r.splice(0,this.strip),e.path=r.join("/")}if(isFinite(this.maxDepth)&&r.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:r.length,maxDepth:this.maxDepth}),!1;if(!this[g6](e,"path")||!this[g6](e,"linkpath"))return!1;if(gs.default.isAbsolute(e.path)?e.absolute=cn(gs.default.resolve(e.path)):e.absolute=cn(gs.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:cn(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:s}=gs.default.win32.parse(String(e.absolute));e.absolute=s+rhe(String(e.absolute).slice(s.length));let{root:a}=gs.default.win32.parse(e.path);e.path=a+rhe(e.path.slice(a.length))}return!0}[Ahe](e){if(!this[mhe](e))return e.resume();switch(jhe.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[O6](e);default:return this[ghe](e)}}[$s](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[FI](),t.resume())}[_d](e,t,r){rit(cn(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},r)}[Fv](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[Nv](e){return Ehe(this.uid,e.uid,this.processUid)}[Ov](e){return Ehe(this.gid,e.gid,this.processGid)}[M6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.fmode,s=new ER(String(e.absolute),{flags:qhe(e.size),mode:r,autoClose:!1});s.on("error",f=>{s.fd&&Bn.default.close(s.fd,()=>{}),s.write=()=>!0,this[$s](f,e),t()});let a=1,n=f=>{if(f){s.fd&&Bn.default.close(s.fd,()=>{}),this[$s](f,e),t();return}--a===0&&s.fd!==void 0&&Bn.default.close(s.fd,p=>{p?this[$s](p,e):this[FI](),t()})};s.on("finish",()=>{let f=String(e.absolute),p=s.fd;if(typeof p=="number"&&e.mtime&&!this.noMtime){a++;let h=e.atime||new Date,E=e.mtime;Bn.default.futimes(p,h,E,C=>C?Bn.default.utimes(f,h,E,S=>n(S&&C)):n())}if(typeof p=="number"&&this[Fv](e)){a++;let h=this[Nv](e),E=this[Ov](e);typeof h=="number"&&typeof E=="number"&&Bn.default.fchown(p,h,E,C=>C?Bn.default.chown(f,h,E,S=>n(S&&C)):n())}n()});let c=this.transform&&this.transform(e)||e;c!==e&&(c.on("error",f=>{this[$s](f,e),t()}),e.pipe(c)),c.pipe(s)}[U6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.dmode;this[_d](String(e.absolute),r,s=>{if(s){this[$s](s,e),t();return}let a=1,n=()=>{--a===0&&(t(),this[FI](),e.resume())};e.mtime&&!this.noMtime&&(a++,Bn.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,n)),this[Fv](e)&&(a++,Bn.default.chown(String(e.absolute),Number(this[Nv](e)),Number(this[Ov](e)),n)),n()})}[ghe](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[hhe](e,t){let r=cn(gs.default.relative(this.cwd,gs.default.resolve(gs.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Qv](e,this.cwd,r,()=>this[pR](e,String(e.linkpath),"symlink",t),s=>{this[$s](s,e),t()})}[dhe](e,t){let r=cn(gs.default.resolve(this.cwd,String(e.linkpath))),s=cn(String(e.linkpath)).split("/");this[Qv](e,this.cwd,s,()=>this[pR](e,r,"link",t),a=>{this[$s](a,e),t()})}[Qv](e,t,r,s,a){let n=r.shift();if(this.preservePaths||n===void 0)return s();let c=gs.default.resolve(t,n);Bn.default.lstat(c,(f,p)=>{if(f)return s();if(p?.isSymbolicLink())return a(new bR(c,gs.default.resolve(c,r.join("/"))));this[Qv](e,c,r,s,a)})}[yhe](){this[rR]++}[FI](){this[rR]--,this[y6]()}[_6](e){this[FI](),e.resume()}[L6](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!Mv}[O6](e){this[yhe]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,r=>this[phe](e,r))}[phe](e,t){let r=c=>{t(c)},s=()=>{this[_d](this.cwd,this.dmode,c=>{if(c){this[$s](c,e),r();return}this[Lv]=!0,a()})},a=()=>{if(e.absolute!==this.cwd){let c=cn(gs.default.dirname(String(e.absolute)));if(c!==this.cwd)return this[_d](c,this.dmode,f=>{if(f){this[$s](f,e),r();return}n()})}n()},n=()=>{Bn.default.lstat(String(e.absolute),(c,f)=>{if(f&&(this.keep||this.newer&&f.mtime>(e.mtime??f.mtime))){this[_6](e),r();return}if(c||this[L6](e,f))return this[Hc](null,e,r);if(f.isDirectory()){if(e.type==="Directory"){let p=this.chmod&&e.mode&&(f.mode&4095)!==e.mode,h=E=>this[Hc](E??null,e,r);return p?Bn.default.chmod(String(e.absolute),Number(e.mode),h):h()}if(e.absolute!==this.cwd)return Bn.default.rmdir(String(e.absolute),p=>this[Hc](p??null,e,r))}if(e.absolute===this.cwd)return this[Hc](null,e,r);pit(String(e.absolute),p=>this[Hc](p??null,e,r))})};this[Lv]?a():s()}[Hc](e,t,r){if(e){this[$s](e,t),r();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[M6](t,r);case"Link":return this[dhe](t,r);case"SymbolicLink":return this[hhe](t,r);case"Directory":case"GNUDumpDir":return this[U6](t,r)}}[pR](e,t,r,s){Bn.default[r](t,String(e.absolute),a=>{a?this[$s](a,e):(this[FI](),e.resume()),s()})}},xv=e=>{try{return[null,e()]}catch(t){return[t,null]}},zhe=class extends tG{sync=!0;[Hc](e,t){return super[Hc](e,t,()=>{})}[O6](e){if(!this[Lv]){let a=this[_d](this.cwd,this.dmode);if(a)return this[$s](a,e);this[Lv]=!0}if(e.absolute!==this.cwd){let a=cn(gs.default.dirname(String(e.absolute)));if(a!==this.cwd){let n=this[_d](a,this.dmode);if(n)return this[$s](n,e)}}let[t,r]=xv(()=>Bn.default.lstatSync(String(e.absolute)));if(r&&(this.keep||this.newer&&r.mtime>(e.mtime??r.mtime)))return this[_6](e);if(t||this[L6](e,r))return this[Hc](null,e);if(r.isDirectory()){if(e.type==="Directory"){let n=this.chmod&&e.mode&&(r.mode&4095)!==e.mode,[c]=n?xv(()=>{Bn.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[Hc](c,e)}let[a]=xv(()=>Bn.default.rmdirSync(String(e.absolute)));this[Hc](a,e)}let[s]=e.absolute===this.cwd?[]:xv(()=>hit(String(e.absolute)));this[Hc](s,e)}[M6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.fmode,s=c=>{let f;try{Bn.default.closeSync(a)}catch(p){f=p}(c||f)&&this[$s](c||f,e),t()},a;try{a=Bn.default.openSync(String(e.absolute),qhe(e.size),r)}catch(c){return s(c)}let n=this.transform&&this.transform(e)||e;n!==e&&(n.on("error",c=>this[$s](c,e)),e.pipe(n)),n.on("data",c=>{try{Bn.default.writeSync(a,c,0,c.length)}catch(f){s(f)}}),n.on("end",()=>{let c=null;if(e.mtime&&!this.noMtime){let f=e.atime||new Date,p=e.mtime;try{Bn.default.futimesSync(a,f,p)}catch(h){try{Bn.default.utimesSync(String(e.absolute),f,p)}catch{c=h}}}if(this[Fv](e)){let f=this[Nv](e),p=this[Ov](e);try{Bn.default.fchownSync(a,Number(f),Number(p))}catch(h){try{Bn.default.chownSync(String(e.absolute),Number(f),Number(p))}catch{c=c||h}}}s(c)})}[U6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.dmode,s=this[_d](String(e.absolute),r);if(s){this[$s](s,e),t();return}if(e.mtime&&!this.noMtime)try{Bn.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[Fv](e))try{Bn.default.chownSync(String(e.absolute),Number(this[Nv](e)),Number(this[Ov](e)))}catch{}t(),e.resume()}[_d](e,t){try{return iit(cn(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(r){return r}}[Qv](e,t,r,s,a){if(this.preservePaths||!r.length)return s();let n=t;for(let c of r){n=gs.default.resolve(n,c);let[f,p]=xv(()=>Bn.default.lstatSync(n));if(f)return s();if(p.isSymbolicLink())return a(new bR(n,gs.default.resolve(t,r.join("/"))))}s()}[pR](e,t,r,s){let a=`${r}Sync`;try{Bn.default[a](t,String(e.absolute)),s(),e.resume()}catch(n){return this[$s](n,e)}}},dit=e=>{let t=new zhe(e),r=e.file,s=Z6.default.statSync(r),a=e.maxReadSize||16*1024*1024;new Urt(r,{readSize:a,size:s.size}).pipe(t)},git=(e,t)=>{let r=new tG(e),s=e.maxReadSize||16*1024*1024,a=e.file;return new Promise((n,c)=>{r.on("error",c),r.on("close",n),Z6.default.stat(a,(f,p)=>{if(f)c(f);else{let h=new j6(a,{readSize:s,size:p.size});h.on("error",c),h.pipe(r)}})})},WUt=Hv(dit,git,e=>new zhe(e),e=>new tG(e),(e,t)=>{t?.length&&Fhe(e,t)}),mit=(e,t)=>{let r=new z6(e),s=!0,a,n;try{try{a=El.default.openSync(e.file,"r+")}catch(p){if(p?.code==="ENOENT")a=El.default.openSync(e.file,"w+");else throw p}let c=El.default.fstatSync(a),f=Buffer.alloc(512);e:for(n=0;nc.size)break;n+=h,e.mtimeCache&&p.mtime&&e.mtimeCache.set(String(p.path),p.mtime)}s=!1,yit(e,r,n,a,t)}finally{if(s)try{El.default.closeSync(a)}catch{}}},yit=(e,t,r,s,a)=>{let n=new Bhe(e.file,{fd:s,start:r});t.pipe(n),Iit(t,a)},Eit=(e,t)=>{t=Array.from(t);let r=new SR(e),s=(a,n,c)=>{let f=(S,x)=>{S?El.default.close(a,I=>c(S)):c(null,x)},p=0;if(n===0)return f(null,0);let h=0,E=Buffer.alloc(512),C=(S,x)=>{if(S||typeof x>"u")return f(S);if(h+=x,h<512&&x)return El.default.read(a,E,h,E.length-h,p+h,C);if(p===0&&E[0]===31&&E[1]===139)return f(new Error("cannot append to compressed archives"));if(h<512)return f(null,p);let I=new Sm(E);if(!I.cksumValid)return f(null,p);let R=512*Math.ceil((I.size??0)/512);if(p+R+512>n||(p+=R+512,p>=n))return f(null,p);e.mtimeCache&&I.mtime&&e.mtimeCache.set(String(I.path),I.mtime),h=0,El.default.read(a,E,0,512,p,C)};El.default.read(a,E,0,512,p,C)};return new Promise((a,n)=>{r.on("error",n);let c="r+",f=(p,h)=>{if(p&&p.code==="ENOENT"&&c==="r+")return c="w+",El.default.open(e.file,c,f);if(p||!h)return n(p);El.default.fstat(h,(E,C)=>{if(E)return El.default.close(h,()=>n(E));s(h,C.size,(S,x)=>{if(S)return n(S);let I=new ER(e.file,{fd:h,start:x});r.pipe(I),I.on("error",n),I.on("close",a),Cit(r,t)})})};El.default.open(e.file,c,f)})},Iit=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?BR({file:rG.default.resolve(e.cwd,r.slice(1)),sync:!0,noResume:!0,onReadEntry:s=>e.add(s)}):e.add(r)}),e.end()},Cit=async(e,t)=>{for(let r=0;re.add(a)}):e.add(s)}e.end()},kv=Hv(mit,Eit,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(e,t)=>{if(!Yrt(e))throw new TypeError("file is required");if(e.gzip||e.brotli||e.zstd||e.file.endsWith(".br")||e.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")}),VUt=Hv(kv.syncFile,kv.asyncFile,kv.syncNoFile,kv.asyncNoFile,(e,t=[])=>{kv.validate?.(e,t),wit(e)}),wit=e=>{let t=e.filter;e.mtimeCache||(e.mtimeCache=new Map),e.filter=t?(r,s)=>t(r,s)&&!((e.mtimeCache?.get(r)??s.mtime??0)>(s.mtime??0)):(r,s)=>!((e.mtimeCache?.get(r)??s.mtime??0)>(s.mtime??0))}});var nG,Xhe,Gd,Gv,qv,$he=Ze(()=>{nG=et(M0()),Xhe=Ce("worker_threads"),Gd=Symbol("kTaskInfo"),Gv=class{constructor(t,r){this.fn=t;this.limit=(0,nG.default)(r.poolSize)}run(t){return this.limit(()=>this.fn(t))}},qv=class{constructor(t,r){this.source=t;this.workers=[];this.limit=(0,nG.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let s=this.workers.pop();s?s.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let t=new Xhe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return t.on("message",r=>{if(!t[Gd])throw new Error("Assertion failed: Worker sent a result without having a task assigned");t[Gd].resolve(r),t[Gd]=null,t.unref(),this.workers.push(t)}),t.on("error",r=>{t[Gd]?.reject(r),t[Gd]=null}),t.on("exit",r=>{r!==0&&t[Gd]?.reject(new Error(`Worker exited with code ${r}`)),t[Gd]=null}),t}run(t){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((s,a)=>{r[Gd]={resolve:s,reject:a},r.postMessage(t)})})}}});var tde=G((x_t,ede)=>{var iG;ede.exports.getContent=()=>(typeof iG>"u"&&(iG=Ce("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),iG)});var ms={};Vt(ms,{convertToZip:()=>Dit,convertToZipWorker:()=>aG,extractArchiveTo:()=>sde,getDefaultTaskPool:()=>nde,getTaskPoolForConfiguration:()=>ide,makeArchiveFromDirectory:()=>bit});function vit(e,t){switch(e){case"async":return new Gv(aG,{poolSize:t});case"workers":return new qv((0,oG.getContent)(),{poolSize:t});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}}function nde(){return typeof sG>"u"&&(sG=vit("workers",Ui.availableParallelism())),sG}function ide(e){return typeof e>"u"?nde():$l(Sit,e,()=>{let t=e.get("taskPoolMode"),r=e.get("taskPoolConcurrency");switch(t){case"async":return new Gv(aG,{poolSize:r});case"workers":return new qv((0,oG.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}})}async function aG(e){let{tmpFile:t,tgz:r,compressionLevel:s,extractBufferOpts:a}=e,n=new hs(t,{create:!0,level:s,stats:ll.makeDefaultStats()}),c=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await sde(c,n,a),n.saveAndClose(),t}async function bit(e,{baseFs:t=new Kn,prefixPath:r=wt.root,compressionLevel:s,inMemory:a=!1}={}){let n;if(a)n=new hs(null,{level:s});else{let f=await ae.mktempPromise(),p=Y.join(f,"archive.zip");n=new hs(p,{create:!0,level:s})}let c=Y.resolve(wt.root,r);return await n.copyPromise(c,e,{baseFs:t,stableTime:!0,stableSort:!0}),n}async function Dit(e,t={}){let r=await ae.mktempPromise(),s=Y.join(r,"archive.zip"),a=t.compressionLevel??t.configuration?.get("compressionLevel")??"mixed",n={prefixPath:t.prefixPath,stripComponents:t.stripComponents};return await(t.taskPool??ide(t.configuration)).run({tmpFile:s,tgz:e,compressionLevel:a,extractBufferOpts:n}),new hs(s,{level:t.compressionLevel})}async function*Pit(e){let t=new bm,r=new rde.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});t.on("entry",s=>{r.write(s)}),t.on("error",s=>{r.destroy(s)}),t.on("close",()=>{r.destroyed||r.end()}),t.end(e);for await(let s of r){let a=s;yield a,a.resume()}}async function sde(e,t,{stripComponents:r=0,prefixPath:s=wt.dot}={}){function a(n){if(n.path[0]==="/")return!0;let c=n.path.split(/\//g);return!!(c.some(f=>f==="..")||c.length<=r)}for await(let n of Pit(e)){if(a(n))continue;let c=Y.normalize(Ae.toPortablePath(n.path)).replace(/\/$/,"").split(/\//g);if(c.length<=r)continue;let f=c.slice(r).join("/"),p=Y.join(s,f),h=420;switch((n.type==="Directory"||(n.mode??0)&73)&&(h|=73),n.type){case"Directory":t.mkdirpSync(Y.dirname(p),{chmod:493,utimes:[pi.SAFE_TIME,pi.SAFE_TIME]}),t.mkdirSync(p,{mode:h}),t.utimesSync(p,pi.SAFE_TIME,pi.SAFE_TIME);break;case"OldFile":case"File":t.mkdirpSync(Y.dirname(p),{chmod:493,utimes:[pi.SAFE_TIME,pi.SAFE_TIME]}),t.writeFileSync(p,await zE(n),{mode:h}),t.utimesSync(p,pi.SAFE_TIME,pi.SAFE_TIME);break;case"SymbolicLink":t.mkdirpSync(Y.dirname(p),{chmod:493,utimes:[pi.SAFE_TIME,pi.SAFE_TIME]}),t.symlinkSync(n.linkpath,p),t.lutimesSync(p,pi.SAFE_TIME,pi.SAFE_TIME);break}}return t}var rde,oG,sG,Sit,ode=Ze(()=>{Ge();bt();iA();rde=Ce("stream");Zhe();$he();Qc();oG=et(tde());Sit=new WeakMap});var lde=G((lG,ade)=>{(function(e,t){typeof lG=="object"?ade.exports=t():typeof define=="function"&&define.amd?define(t):e.treeify=t()})(lG,function(){function e(a,n){var c=n?"\u2514":"\u251C";return a?c+="\u2500 ":c+="\u2500\u2500\u2510",c}function t(a,n){var c=[];for(var f in a)a.hasOwnProperty(f)&&(n&&typeof a[f]=="function"||c.push(f));return c}function r(a,n,c,f,p,h,E){var C="",S=0,x,I,R=f.slice(0);if(R.push([n,c])&&f.length>0&&(f.forEach(function(U,K){K>0&&(C+=(U[1]?" ":"\u2502")+" "),!I&&U[0]===n&&(I=!0)}),C+=e(a,c)+a,p&&(typeof n!="object"||n instanceof Date)&&(C+=": "+n),I&&(C+=" (circular ref.)"),E(C)),!I&&typeof n=="object"){var N=t(n,h);N.forEach(function(U){x=++S===N.length,r(U,n[U],x,R,p,h,E)})}}var s={};return s.asLines=function(a,n,c,f){var p=typeof c!="function"?c:!1;r(".",a,!1,[],n,p,f||c)},s.asTree=function(a,n,c){var f="";return r(".",a,!1,[],n,c,function(p){f+=p+` +`}),f},s})});var ts={};Vt(ts,{emitList:()=>xit,emitTree:()=>Ade,treeNodeToJson:()=>fde,treeNodeToTreeify:()=>ude});function ude(e,{configuration:t}){let r={},s=0,a=(n,c)=>{let f=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of f){if(!h)continue;let{label:E,value:C,children:S}=h,x=[];typeof E<"u"&&x.push(Z0(t,E,2)),typeof C<"u"&&x.push(Gt(t,C[0],C[1])),x.length===0&&x.push(Z0(t,`${p}`,2));let I=x.join(": ").trim(),R=`\0${s++}\0`,N=c[`${R}${I}`]={};typeof S<"u"&&a(S,N)}};if(typeof e.children>"u")throw new Error("The root node must only contain children");return a(e.children,r),r}function fde(e){let t=r=>{if(typeof r.children>"u"){if(typeof r.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return X0(r.value[0],r.value[1])}let s=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,c]of s)c&&(a[kit(n)]=t(c));return typeof r.value>"u"?a:{value:X0(r.value[0],r.value[1]),children:a}};return t(e)}function xit(e,{configuration:t,stdout:r,json:s}){let a=e.map(n=>({value:n}));Ade({children:a},{configuration:t,stdout:r,json:s})}function Ade(e,{configuration:t,stdout:r,json:s,separators:a=0}){if(s){let c=Array.isArray(e.children)?e.children.values():Object.values(e.children??{});for(let f of c)f&&r.write(`${JSON.stringify(fde(f))} +`);return}let n=(0,cde.asTree)(ude(e,{configuration:t}),!1,!1);if(n=n.replace(/\0[0-9]+\0/g,""),a>=1&&(n=n.replace(/^([├└]─)/gm,`\u2502 +$1`).replace(/^│\n/,"")),a>=2)for(let c=0;c<2;++c)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 +$2`).replace(/^│\n/,"");if(a>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(n)}function kit(e){return typeof e=="string"?e.replace(/^\0[0-9]+\0/,""):e}var cde,pde=Ze(()=>{cde=et(lde());Tc()});var DR,hde=Ze(()=>{DR=class{constructor(t){this.releaseFunction=t;this.map=new Map}addOrCreate(t,r){let s=this.map.get(t);if(typeof s<"u"){if(s.refCount<=0)throw new Error(`Race condition in RefCountedMap. While adding a new key the refCount is: ${s.refCount} for ${JSON.stringify(t)}`);return s.refCount++,{value:s.value,release:()=>this.release(t)}}else{let a=r();return this.map.set(t,{refCount:1,value:a}),{value:a,release:()=>this.release(t)}}}release(t){let r=this.map.get(t);if(!r)throw new Error(`Unbalanced calls to release. No known instances of: ${JSON.stringify(t)}`);let s=r.refCount;if(s<=0)throw new Error(`Unbalanced calls to release. Too many release vs alloc refcount would become: ${s-1} of ${JSON.stringify(t)}`);s==1?(this.map.delete(t),this.releaseFunction(r.value)):r.refCount--}}});function Yv(e){let t=e.match(Qit);if(!t?.groups)throw new Error("Assertion failed: Expected the checksum to match the requested pattern");let r=t.groups.cacheVersion?parseInt(t.groups.cacheVersion):null;return{cacheKey:t.groups.cacheKey??null,cacheVersion:r,cacheSpec:t.groups.cacheSpec??null,hash:t.groups.hash}}var dde,cG,uG,PR,zr,Qit,fG=Ze(()=>{Ge();bt();bt();iA();dde=Ce("crypto"),cG=et(Ce("fs"));hde();Nc();wd();Qc();$o();uG=ZE(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),PR=ZE(process.env.YARN_CACHE_VERSION_OVERRIDE??10),zr=class e{constructor(t,{configuration:r,immutable:s=r.get("enableImmutableCache"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.refCountedZipFsCache=new DR(t=>{t.discardAndClose()});this.cacheId=`-${(0,dde.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=t,this.immutable=s,this.check=a;let{cacheSpec:n,cacheKey:c}=e.getCacheKey(r);this.cacheSpec=n,this.cacheKey=c}static async find(t,{immutable:r,check:s}={}){let a=new e(t.get("cacheFolder"),{configuration:t,immutable:r,check:s});return await a.setup(),a}static getCacheKey(t){let r=t.get("compressionLevel"),s=r!=="mixed"?`c${r}`:"";return{cacheKey:[PR,s].join(""),cacheSpec:s}}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let t=`${this.configuration.get("globalFolder")}/cache`;return t!==this.cwd?t:null}getVersionFilename(t){return`${lI(t)}-${this.cacheKey}.zip`}getChecksumFilename(t,r){let a=Yv(r).hash.slice(0,10);return`${lI(t)}-${a}.zip`}isChecksumCompatible(t){if(t===null)return!1;let{cacheVersion:r,cacheSpec:s}=Yv(t);if(r===null||r{let pe=new hs,De=Y.join(wt.root,v8(t));return pe.mkdirSync(De,{recursive:!0}),pe.writeJsonSync(Y.join(De,yr.manifest),{name:fn(t),mocked:!0}),pe},E=async(pe,{isColdHit:De,controlPath:ye=null})=>{if(ye===null&&c.unstablePackages?.has(t.locatorHash))return{isValid:!0,hash:null};let d=r&&!De?Yv(r).cacheKey:this.cacheKey,ve=!c.skipIntegrityCheck||!r?`${d}/${await xQ(pe)}`:r;if(ye!==null){let me=!c.skipIntegrityCheck||!r?`${this.cacheKey}/${await xQ(ye)}`:r;if(ve!==me)throw new Lt(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}let Ie=null;switch(r!==null&&ve!==r&&(this.check?Ie="throw":Yv(r).cacheKey!==Yv(ve).cacheKey?Ie="update":Ie=this.configuration.get("checksumBehavior")),Ie){case null:case"update":return{isValid:!0,hash:ve};case"ignore":return{isValid:!0,hash:r};case"reset":return{isValid:!1,hash:r};default:case"throw":throw new Lt(18,"The remote archive doesn't match the expected checksum")}},C=async pe=>{if(!n)throw new Error(`Cache check required but no loader configured for ${Vr(this.configuration,t)}`);let De=await n(),ye=De.getRealPath();De.saveAndClose(),await ae.chmodPromise(ye,420);let d=await E(pe,{controlPath:ye,isColdHit:!1});if(!d.isValid)throw new Error("Assertion failed: Expected a valid checksum");return d.hash},S=async()=>{if(f===null||!await ae.existsPromise(f)){let pe=await n(),De=pe.getRealPath();return pe.saveAndClose(),{source:"loader",path:De}}return{source:"mirror",path:f}},x=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${Vr(this.configuration,t)}`);if(this.immutable)throw new Lt(56,`Cache entry required but missing for ${Vr(this.configuration,t)}`);let{path:pe,source:De}=await S(),{hash:ye}=await E(pe,{isColdHit:!0}),d=this.getLocatorPath(t,ye),ve=[];De!=="mirror"&&f!==null&&ve.push(async()=>{let me=`${f}${this.cacheId}`;await ae.copyFilePromise(pe,me,cG.default.constants.COPYFILE_FICLONE),await ae.chmodPromise(me,420),await ae.renamePromise(me,f)}),(!c.mirrorWriteOnly||f===null)&&ve.push(async()=>{let me=`${d}${this.cacheId}`;await ae.copyFilePromise(pe,me,cG.default.constants.COPYFILE_FICLONE),await ae.chmodPromise(me,420),await ae.renamePromise(me,d)});let Ie=c.mirrorWriteOnly?f??d:d;return await Promise.all(ve.map(me=>me())),[!1,Ie,ye]},I=async()=>{let De=(async()=>{let ye=c.unstablePackages?.has(t.locatorHash),d=ye||!r||this.isChecksumCompatible(r)?this.getLocatorPath(t,r):null,ve=d!==null?this.markedFiles.has(d)||await p.existsPromise(d):!1,Ie=!!c.mockedPackages?.has(t.locatorHash)&&(!this.check||!ve),me=Ie||ve,ce=me?s:a;if(ce&&ce(),me){let X=null,be=d;if(!Ie)if(this.check)X=await C(be);else{let ke=await E(be,{isColdHit:!1});if(ke.isValid)X=ke.hash;else return x()}return[Ie,be,X]}else{if(this.immutable&&ye)throw new Lt(56,`Cache entry required but missing for ${Vr(this.configuration,t)}; consider defining ${ue.pretty(this.configuration,"supportedArchitectures",ue.Type.CODE)} to cache packages for multiple systems`);return x()}})();this.mutexes.set(t.locatorHash,De);try{return await De}finally{this.mutexes.delete(t.locatorHash)}};for(let pe;pe=this.mutexes.get(t.locatorHash);)await pe;let[R,N,U]=await I();R||this.markedFiles.add(N);let K=()=>this.refCountedZipFsCache.addOrCreate(N,()=>R?h():new hs(N,{baseFs:p,readOnly:!0})),$,ie=new AE(()=>M4(()=>($=K(),$.value),pe=>`Failed to open the cache entry for ${Vr(this.configuration,t)}: ${pe}`),Y),fe=new Gf(N,{baseFs:ie,pathUtils:Y}),le=()=>{$?.release()},ge=c.unstablePackages?.has(t.locatorHash)?null:U;return[fe,le,ge]}},Qit=/^(?:(?(?[0-9]+)(?.*))\/)?(?.*)$/});var xR,gde=Ze(()=>{xR=(r=>(r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE",r))(xR||{})});var Tit,jI,AG=Ze(()=>{bt();Sc();Lp();$o();Tit=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(e,t,r,s)=>`${r}#commit=${s}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(e,t,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(e,t,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,e=>`npm:${e}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,e=>`npm:${e}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,e=>`npm:${e}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(e,t)=>FQ({protocol:"npm:",source:null,selector:e,params:{__archiveUrl:t}})],[/^[^/]+\.tgz#[0-9a-f]+$/,e=>`npm:${e}`]],jI=class{constructor(t){this.resolver=t;this.resolutions=null}async setup(t,{report:r}){let s=Y.join(t.cwd,yr.lockfile);if(!ae.existsSync(s))return;let a=await ae.readFilePromise(s,"utf8"),n=us(a);if(Object.hasOwn(n,"__metadata"))return;let c=this.resolutions=new Map;for(let f of Object.keys(n)){let p=MB(f);if(!p){r.reportWarning(14,`Failed to parse the string "${f}" into a proper descriptor`);continue}let h=yl(p.range)?Un(p,`npm:${p.range}`):p,{version:E,resolved:C}=n[f];if(!C)continue;let S;for(let[I,R]of Tit){let N=C.match(I);if(N){S=R(E,...N);break}}if(!S){r.reportWarning(14,`${ai(t.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not "${C}")`);continue}let x=h;try{let I=tm(h.range),R=MB(I.selector,!0);R&&(x=R)}catch{}c.set(h.descriptorHash,Js(x,S))}}supportsDescriptor(t,r){return this.resolutions?this.resolutions.has(t.descriptorHash):!1}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let a=this.resolutions.get(t.descriptorHash);if(!a)throw new Error("Assertion failed: The resolution should have been registered");let n=I8(a),c=s.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(c,r,s)}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}}});var fA,mde=Ze(()=>{Nc();gv();Tc();fA=class extends Io{constructor({configuration:r,stdout:s,suggestInstall:a=!0}){super();this.errorCount=0;kB(this,{configuration:r}),this.configuration=r,this.stdout=s,this.suggestInstall=a}static async start(r,s){let a=new this(r);try{await s(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,s){return s()}async startSectionPromise(r,s){return await s()}startTimerSync(r,s,a){return(typeof s=="function"?s:a)()}async startTimerPromise(r,s,a){return await(typeof s=="function"?s:a)()}reportSeparator(){}reportInfo(r,s){}reportWarning(r,s){}reportError(r,s){this.errorCount+=1,this.stdout.write(`${Gt(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(r)}: ${s} +`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,s){}async finalize(){this.errorCount>0&&(this.stdout.write(` +`),this.stdout.write(`${Gt(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. +`),this.suggestInstall&&this.stdout.write(`${Gt(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. +`))}formatNameWithHyperlink(r){return _j(r,{configuration:this.configuration,json:!1})}}});var GI,pG=Ze(()=>{$o();GI=class{constructor(t){this.resolver=t}supportsDescriptor(t,r){return!!(r.project.storedResolutions.get(t.descriptorHash)||r.project.originalPackages.has(QQ(t).locatorHash))}supportsLocator(t,r){return!!(r.project.originalPackages.has(t.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(t,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return this.resolver.getResolutionDependencies(t,r)}async getCandidates(t,r,s){let a=s.project.storedResolutions.get(t.descriptorHash);if(a){let c=s.project.originalPackages.get(a);if(c)return[c]}let n=s.project.originalPackages.get(QQ(t).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let s=r.project.originalPackages.get(t.locatorHash);if(!s)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return s}}});function zp(){}function Rit(e,t,r,s,a){for(var n=0,c=t.length,f=0,p=0;nx.length?R:x}),h.value=e.join(E)}else h.value=e.join(r.slice(f,f+h.count));f+=h.count,h.added||(p+=h.count)}}var S=t[c-1];return c>1&&typeof S.value=="string"&&(S.added||S.removed)&&e.equals("",S.value)&&(t[c-2].value+=S.value,t.pop()),t}function Fit(e){return{newPos:e.newPos,components:e.components.slice(0)}}function Nit(e,t){if(typeof e=="function")t.callback=e;else if(e)for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}function Ide(e,t,r){return r=Nit(r,{ignoreWhitespace:!0}),yG.diff(e,t,r)}function Oit(e,t,r){return EG.diff(e,t,r)}function kR(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?kR=function(t){return typeof t}:kR=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},kR(e)}function hG(e){return Uit(e)||_it(e)||Hit(e)||jit()}function Uit(e){if(Array.isArray(e))return dG(e)}function _it(e){if(typeof Symbol<"u"&&Symbol.iterator in Object(e))return Array.from(e)}function Hit(e,t){if(e){if(typeof e=="string")return dG(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return dG(e,t)}}function dG(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,s=new Array(t);r"u"&&(c.context=4);var f=Oit(r,s,c);if(!f)return;f.push({value:"",lines:[]});function p(U){return U.map(function(K){return" "+K})}for(var h=[],E=0,C=0,S=[],x=1,I=1,R=function(K){var $=f[K],ie=$.lines||$.value.replace(/\n$/,"").split(` +`);if($.lines=ie,$.added||$.removed){var fe;if(!E){var le=f[K-1];E=x,C=I,le&&(S=c.context>0?p(le.lines.slice(-c.context)):[],E-=S.length,C-=S.length)}(fe=S).push.apply(fe,hG(ie.map(function(me){return($.added?"+":"-")+me}))),$.added?I+=ie.length:x+=ie.length}else{if(E)if(ie.length<=c.context*2&&K=f.length-2&&ie.length<=c.context){var d=/\n$/.test(r),ve=/\n$/.test(s),Ie=ie.length==0&&S.length>ye.oldLines;!d&&Ie&&r.length>0&&S.splice(ye.oldLines,0,"\\ No newline at end of file"),(!d&&!Ie||!ve)&&S.push("\\ No newline at end of file")}h.push(ye),E=0,C=0,S=[]}x+=ie.length,I+=ie.length}},N=0;N{zp.prototype={diff:function(t,r){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=s.callback;typeof s=="function"&&(a=s,s={}),this.options=s;var n=this;function c(R){return a?(setTimeout(function(){a(void 0,R)},0),!0):R}t=this.castInput(t),r=this.castInput(r),t=this.removeEmpty(this.tokenize(t)),r=this.removeEmpty(this.tokenize(r));var f=r.length,p=t.length,h=1,E=f+p;s.maxEditLength&&(E=Math.min(E,s.maxEditLength));var C=[{newPos:-1,components:[]}],S=this.extractCommon(C[0],r,t,0);if(C[0].newPos+1>=f&&S+1>=p)return c([{value:this.join(r),count:r.length}]);function x(){for(var R=-1*h;R<=h;R+=2){var N=void 0,U=C[R-1],K=C[R+1],$=(K?K.newPos:0)-R;U&&(C[R-1]=void 0);var ie=U&&U.newPos+1=f&&$+1>=p)return c(Rit(n,N.components,r,t,n.useLongestToken));C[R]=N}h++}if(a)(function R(){setTimeout(function(){if(h>E)return a();x()||R()},0)})();else for(;h<=E;){var I=x();if(I)return I}},pushComponent:function(t,r,s){var a=t[t.length-1];a&&a.added===r&&a.removed===s?t[t.length-1]={count:a.count+1,added:r,removed:s}:t.push({count:1,added:r,removed:s})},extractCommon:function(t,r,s,a){for(var n=r.length,c=s.length,f=t.newPos,p=f-a,h=0;f+1"u"?r:c}:s;return typeof e=="string"?e:JSON.stringify(gG(e,null,null,a),a," ")};Wv.equals=function(e,t){return zp.prototype.equals.call(Wv,e.replace(/,([\r\n])/g,"$1"),t.replace(/,([\r\n])/g,"$1"))};mG=new zp;mG.tokenize=function(e){return e.slice()};mG.join=mG.removeEmpty=function(e){return e}});var QR,wde=Ze(()=>{Nc();QR=class{constructor(t){this.resolver=t}supportsDescriptor(t,r){return this.resolver.supportsDescriptor(t,r)}supportsLocator(t,r){return this.resolver.supportsLocator(t,r)}shouldPersistResolution(t,r){return this.resolver.shouldPersistResolution(t,r)}bindDescriptor(t,r,s){return this.resolver.bindDescriptor(t,r,s)}getResolutionDependencies(t,r){return this.resolver.getResolutionDependencies(t,r)}async getCandidates(t,r,s){throw new Lt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(t,r,s,a){throw new Lt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(t,r){throw new Lt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}}});var Qi,CG=Ze(()=>{Nc();Qi=class extends Io{reportCacheHit(t){}reportCacheMiss(t){}startSectionSync(t,r){return r()}async startSectionPromise(t,r){return await r()}startTimerSync(t,r,s){return(typeof r=="function"?r:s)()}async startTimerPromise(t,r,s){return await(typeof r=="function"?r:s)()}reportSeparator(){}reportInfo(t,r){}reportWarning(t,r){}reportError(t,r){}reportProgress(t){return{...Promise.resolve().then(async()=>{for await(let{}of t);}),stop:()=>{}}}reportJson(t){}reportFold(t,r){}async finalize(){}}});var Bde,qI,wG=Ze(()=>{bt();Bde=et(DQ());fI();rm();Tc();wd();Lp();$o();qI=class{constructor(t,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=t}async setup(){this.manifest=await _t.tryFind(this.cwd)??new _t,this.relativeCwd=Y.relative(this.project.cwd,this.cwd)||wt.dot;let t=this.manifest.name?this.manifest.name:Qa(null,`${this.computeCandidateName()}-${As(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=Un(t,`${Ii.protocol}${this.relativeCwd}`),this.anchoredLocator=Js(t,`${Ii.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let s=await(0,Bde.default)(r,{cwd:Ae.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:["**/node_modules","**/.git","**/.yarn"]});s.sort(),await s.reduce(async(a,n)=>{let c=Y.resolve(this.cwd,Ae.toPortablePath(n)),f=await ae.existsPromise(Y.join(c,"package.json"));await a,f&&this.workspacesCwds.add(c)},Promise.resolve())}get anchoredPackage(){let t=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!t)throw new Error(`Assertion failed: Expected workspace ${_B(this.project.configuration,this)} (${Gt(this.project.configuration,Y.join(this.cwd,yr.manifest),dt.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);return t}accepts(t){let r=t.indexOf(":"),s=r!==-1?t.slice(0,r+1):null,a=r!==-1?t.slice(r+1):t;if(s===Ii.protocol&&Y.normalize(a)===this.relativeCwd||s===Ii.protocol&&(a==="*"||a==="^"||a==="~"))return!0;let n=yl(a);return n?s===Ii.protocol?n.test(this.manifest.version??"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${Y.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:t=_t.hardDependencies}={}){let r=new Set,s=a=>{for(let n of t)for(let c of a.manifest[n].values()){let f=this.project.tryWorkspaceByDescriptor(c);f===null||r.has(f)||(r.add(f),s(f))}};return s(this),r}getRecursiveWorkspaceDependents({dependencies:t=_t.hardDependencies}={}){let r=new Set,s=a=>{for(let n of this.project.workspaces)t.some(f=>[...n.manifest[f].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&LB(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),s(n))};return s(this),r}getRecursiveWorkspaceChildren(){let t=new Set([this]);for(let r of t)for(let s of r.workspacesCwds){let a=this.project.workspacesByCwd.get(s);a&&t.add(a)}return t.delete(this),Array.from(t)}async persistManifest(){let t={};this.manifest.exportTo(t);let r=Y.join(this.cwd,_t.fileName),s=`${JSON.stringify(t,null,this.manifest.indent)} +`;await ae.changeFilePromise(r,s,{automaticNewlines:!0}),this.manifest.raw=t}}});function Jit({project:e,allDescriptors:t,allResolutions:r,allPackages:s,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:c=new Map,peerWarnings:f=[],peerRequirementNodes:p=new Map,volatileDescriptors:h=new Set}){let E=new Map,C=[],S=new Map,x=new Map,I=new Map,R=new Map,N=new Map,U=new Map(e.workspaces.map(le=>{let ge=le.anchoredLocator.locatorHash,pe=s.get(ge);if(typeof pe>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[ge,FB(pe)]})),K=()=>{let le=ae.mktempSync(),ge=Y.join(le,"stacktrace.log"),pe=String(C.length+1).length,De=C.map((ye,d)=>`${`${d+1}.`.padStart(pe," ")} ${ml(ye)} +`).join("");throw ae.writeFileSync(ge,De),ae.detachTemp(le),new Lt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${Ae.fromPortablePath(ge)}`)},$=le=>{let ge=r.get(le.descriptorHash);if(typeof ge>"u")throw new Error("Assertion failed: The resolution should have been registered");let pe=s.get(ge);if(!pe)throw new Error("Assertion failed: The package could not be found");return pe},ie=(le,ge,pe,{top:De,optional:ye})=>{C.length>1e3&&K(),C.push(ge);let d=fe(le,ge,pe,{top:De,optional:ye});return C.pop(),d},fe=(le,ge,pe,{top:De,optional:ye})=>{if(ye||n.delete(ge.locatorHash),a.has(ge.locatorHash))return;a.add(ge.locatorHash);let d=s.get(ge.locatorHash);if(!d)throw new Error(`Assertion failed: The package (${Vr(e.configuration,ge)}) should have been registered`);let ve=new Set,Ie=new Map,me=[],ce=[],X=[],be=[];for(let ke of Array.from(d.dependencies.values())){if(d.peerDependencies.has(ke.identHash)&&d.locatorHash!==De)continue;if(Fp(ke))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");h.delete(ke.descriptorHash);let it=ye;if(!it){let Te=d.dependenciesMeta.get(fn(ke));if(typeof Te<"u"){let ct=Te.get(null);typeof ct<"u"&&ct.optional&&(it=!0)}}let _=r.get(ke.descriptorHash);if(!_)throw new Error(`Assertion failed: The resolution (${ai(e.configuration,ke)}) should have been registered`);let tt=U.get(_)||s.get(_);if(!tt)throw new Error(`Assertion failed: The package (${_}, resolved from ${ai(e.configuration,ke)}) should have been registered`);if(tt.peerDependencies.size===0){ie(ke,tt,new Map,{top:De,optional:it});continue}let Fe,Qe,Se=new Set,je=new Map;me.push(()=>{Fe=w8(ke,ge.locatorHash),Qe=B8(tt,ge.locatorHash),d.dependencies.set(ke.identHash,Fe),r.set(Fe.descriptorHash,Qe.locatorHash),t.set(Fe.descriptorHash,Fe),s.set(Qe.locatorHash,Qe),Qp(R,Qe.locatorHash).add(Fe.descriptorHash),ve.add(Qe.locatorHash)}),ce.push(()=>{N.set(Qe.locatorHash,je);for(let Te of Qe.peerDependencies.values()){let Me=$l(Ie,Te.identHash,()=>{let P=pe.get(Te.identHash)??null,w=d.dependencies.get(Te.identHash);return!w&&OB(ge,Te)&&(le.identHash===ge.identHash?w=le:(w=Un(ge,le.range),t.set(w.descriptorHash,w),r.set(w.descriptorHash,ge.locatorHash),h.delete(w.descriptorHash),P=null)),w||(w=Un(Te,"missing:")),{subject:ge,ident:Te,provided:w,root:!P,requests:new Map,hash:`p${As(ge.locatorHash,Te.identHash).slice(0,6)}`}}).provided;if(Me.range==="missing:"&&Qe.dependencies.has(Te.identHash)){Qe.peerDependencies.delete(Te.identHash);continue}if(je.set(Te.identHash,{requester:Qe,descriptor:Te,meta:Qe.peerDependenciesMeta.get(fn(Te)),children:new Map}),Qe.dependencies.set(Te.identHash,Me),Fp(Me)){let P=r.get(Me.descriptorHash);Qp(I,P).add(Qe.locatorHash)}S.set(Me.identHash,Me),Me.range==="missing:"&&Se.add(Me.identHash)}Qe.dependencies=new Map(Ks(Qe.dependencies,([Te,ct])=>fn(ct)))}),X.push(()=>{if(!s.has(Qe.locatorHash))return;let Te=E.get(tt.locatorHash);typeof Te=="number"&&Te>=2&&K();let ct=E.get(tt.locatorHash),Me=typeof ct<"u"?ct+1:1;E.set(tt.locatorHash,Me),ie(Fe,Qe,je,{top:De,optional:it}),E.set(tt.locatorHash,Me-1)}),be.push(()=>{let Te=r.get(Fe.descriptorHash);if(typeof Te>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let ct=N.get(Te);if(typeof ct>"u")throw new Error("Assertion failed: Expected the peer requests to be registered");for(let Me of Ie.values()){let P=ct.get(Me.ident.identHash);P&&(Me.requests.set(Fe.descriptorHash,P),p.set(Me.hash,Me),Me.root||pe.get(Me.ident.identHash)?.children.set(Fe.descriptorHash,P))}if(s.has(Qe.locatorHash))for(let Me of Se)Qe.dependencies.delete(Me)})}for(let ke of[...me,...ce])ke();for(let ke of ve){ve.delete(ke);let it=s.get(ke),_=As(aI(it).locatorHash,...Array.from(it.dependencies.values(),Se=>{let je=Se.range!=="missing:"?r.get(Se.descriptorHash):"missing:";if(typeof je>"u")throw new Error(`Assertion failed: Expected the resolution for ${ai(e.configuration,Se)} to have been registered`);return je===De?`${je} (top)`:je})),tt=x.get(_);if(typeof tt>"u"){x.set(_,it);continue}let Fe=Qp(R,tt.locatorHash);for(let Se of R.get(it.locatorHash)??[])r.set(Se,tt.locatorHash),Fe.add(Se);s.delete(it.locatorHash),a.delete(it.locatorHash),ve.delete(it.locatorHash);let Qe=I.get(it.locatorHash);if(Qe!==void 0){let Se=Qp(I,tt.locatorHash);for(let je of Qe)Se.add(je),ve.add(je)}}for(let ke of[...X,...be])ke()};for(let le of e.workspaces){let ge=le.anchoredLocator;h.delete(le.anchoredDescriptor.descriptorHash),ie(le.anchoredDescriptor,ge,new Map,{top:ge.locatorHash,optional:!1})}for(let le of p.values()){if(!le.root)continue;let ge=s.get(le.subject.locatorHash);if(typeof ge>"u")continue;for(let De of le.requests.values()){let ye=`p${As(le.subject.locatorHash,fn(le.ident),De.requester.locatorHash).slice(0,6)}`;c.set(ye,{subject:le.subject.locatorHash,requested:le.ident,rootRequester:De.requester.locatorHash,allRequesters:Array.from(HB(De),d=>d.requester.locatorHash)})}let pe=[...HB(le)];if(le.provided.range!=="missing:"){let De=$(le.provided),ye=De.version??"0.0.0",d=Ie=>{if(Ie.startsWith(Ii.protocol)){if(!e.tryWorkspaceByLocator(De))return null;Ie=Ie.slice(Ii.protocol.length),(Ie==="^"||Ie==="~")&&(Ie="*")}return Ie},ve=!0;for(let Ie of pe){let me=d(Ie.descriptor.range);if(me===null){ve=!1;continue}if(!rA(ye,me)){ve=!1;let ce=`p${As(le.subject.locatorHash,fn(le.ident),Ie.requester.locatorHash).slice(0,6)}`;f.push({type:1,subject:ge,requested:le.ident,requester:Ie.requester,version:ye,hash:ce,requirementCount:pe.length})}}if(!ve){let Ie=pe.map(me=>d(me.descriptor.range));f.push({type:3,node:le,range:Ie.includes(null)?null:b8(Ie),hash:le.hash})}}else{let De=!0;for(let ye of pe)if(!ye.meta?.optional){De=!1;let d=`p${As(le.subject.locatorHash,fn(le.ident),ye.requester.locatorHash).slice(0,6)}`;f.push({type:0,subject:ge,requested:le.ident,requester:ye.requester,hash:d})}De||f.push({type:2,node:le,hash:le.hash})}}}function*zit(e){let t=new Map;if("children"in e)t.set(e,e);else for(let r of e.requests.values())t.set(r,r);for(let[r,s]of t){yield{request:r,root:s};for(let a of r.children.values())t.has(a)||t.set(a,s)}}function Zit(e,t){let r=[],s=[],a=!1;for(let n of e.peerWarnings)if(!(n.type===1||n.type===0)){if(!e.tryWorkspaceByLocator(n.node.subject)){a=!0;continue}if(n.type===3){let c=e.storedResolutions.get(n.node.provided.descriptorHash);if(typeof c>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let f=e.storedPackages.get(c);if(typeof f>"u")throw new Error("Assertion failed: Expected the package to be registered");let p=dd(zit(n.node),({request:C,root:S})=>rA(f.version??"0.0.0",C.descriptor.range)?dd.skip:C===S?$i(e.configuration,C.requester):`${$i(e.configuration,C.requester)} (via ${$i(e.configuration,S.requester)})`),h=[...HB(n.node)].length>1?"and other dependencies request":"requests",E=n.range?cI(e.configuration,n.range):Gt(e.configuration,"but they have non-overlapping ranges!","redBright");r.push(`${$i(e.configuration,n.node.ident)} is listed by your project with version ${UB(e.configuration,f.version??"0.0.0")} (${Gt(e.configuration,n.hash,dt.CODE)}), which doesn't satisfy what ${p} ${h} (${E}).`)}if(n.type===2){let c=n.node.requests.size>1?" and other dependencies":"";s.push(`${Vr(e.configuration,n.node.subject)} doesn't provide ${$i(e.configuration,n.node.ident)} (${Gt(e.configuration,n.hash,dt.CODE)}), requested by ${$i(e.configuration,n.node.requests.values().next().value.requester)}${c}.`)}}t.startSectionSync({reportFooter:()=>{t.reportWarning(86,`Some peer dependencies are incorrectly met by your project; run ${Gt(e.configuration,"yarn explain peer-requirements ",dt.CODE)} for details, where ${Gt(e.configuration,"",dt.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of Ks(r,c=>$E.default(c)))t.reportWarning(60,n);for(let n of Ks(s,c=>$E.default(c)))t.reportWarning(2,n)}),a&&t.reportWarning(86,`Some peer dependencies are incorrectly met by dependencies; run ${Gt(e.configuration,"yarn explain peer-requirements",dt.CODE)} for details.`)}var TR,RR,bde,SG,vG,bG,FR,qit,Yit,vde,Wit,Vit,Kit,La,BG,NR,Sde,Tt,Dde=Ze(()=>{bt();bt();Sc();jt();TR=Ce("crypto");IG();Zl();RR=et(M0()),bde=et(hi()),SG=Ce("util"),vG=et(Ce("v8")),bG=et(Ce("zlib"));fG();iv();AG();pG();fI();x8();Nc();wde();gv();CG();rm();wG();HQ();Tc();wd();Qc();ET();Yj();Lp();$o();FR=ZE(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??10),qit=3,Yit=/ *, */g,vde=/\/$/,Wit=32,Vit=(0,SG.promisify)(bG.default.gzip),Kit=(0,SG.promisify)(bG.default.gunzip),La=(r=>(r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build",r))(La||{}),BG={restoreLinkersCustomData:["linkersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["skippedBuilds","storedBuildState"]},NR=(a=>(a[a.NotProvided=0]="NotProvided",a[a.NotCompatible=1]="NotCompatible",a[a.NodeNotProvided=2]="NodeNotProvided",a[a.NodeNotCompatible=3]="NodeNotCompatible",a))(NR||{}),Sde=e=>As(`${qit}`,e),Tt=class e{constructor(t,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.peerRequirementNodes=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=t}static async find(t,r){if(!t.projectCwd)throw new ot(`No project found in ${r}`);let s=t.projectCwd,a=r,n=null;for(;n!==t.projectCwd;){if(n=a,ae.existsSync(Y.join(n,yr.manifest))){s=n;break}a=Y.dirname(n)}let c=new e(t.projectCwd,{configuration:t});Je.telemetry?.reportProject(c.cwd),await c.setupResolutions(),await c.setupWorkspaces(),Je.telemetry?.reportWorkspaceCount(c.workspaces.length),Je.telemetry?.reportDependencyCount(c.workspaces.reduce((I,R)=>I+R.manifest.dependencies.size+R.manifest.devDependencies.size,0));let f=c.tryWorkspaceByCwd(s);if(f)return{project:c,workspace:f,locator:f.anchoredLocator};let p=await c.findLocatorForLocation(`${s}/`,{strict:!0});if(p)return{project:c,locator:p,workspace:null};let h=Gt(t,c.cwd,dt.PATH),E=Gt(t,Y.relative(c.cwd,s),dt.PATH),C=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,S=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,x=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new ot(`The nearest package directory (${Gt(t,s,dt.PATH)}) doesn't seem to be part of the project declared in ${Gt(t,c.cwd,dt.PATH)}. + +${[C,S,x].join(` +`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let t=Y.join(this.cwd,yr.lockfile),r=this.configuration.get("defaultLanguageName");if(ae.existsSync(t)){let s=await ae.readFilePromise(t,"utf8");this.lockFileChecksum=Sde(s);let a=us(s);if(a.__metadata){let n=a.__metadata.version,c=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${f})`);let h=Np(p.resolution,!0),E=new _t;E.load(p,{yamlCompatibilityMode:!0});let C=E.version,S=E.languageName||r,x=p.linkType.toUpperCase(),I=p.conditions??null,R=E.dependencies,N=E.peerDependencies,U=E.dependenciesMeta,K=E.peerDependenciesMeta,$=E.bin;if(p.checksum!=null){let fe=typeof c<"u"&&!p.checksum.includes("/")?`${c}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,fe)}let ie={...h,version:C,languageName:S,linkType:x,conditions:I,dependencies:R,peerDependencies:N,dependenciesMeta:U,peerDependenciesMeta:K,bin:$};this.originalPackages.set(ie.locatorHash,ie);for(let fe of f.split(Yit)){let le=Bd(fe);n<=6&&(le=this.configuration.normalizeDependency(le),le=Un(le,le.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(le.descriptorHash,le),this.storedResolutions.set(le.descriptorHash,h.locatorHash)}}}else s.includes("yarn lockfile v1")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let t=new Set,r=(0,RR.default)(4),s=async(a,n)=>{if(t.has(n))return a;t.add(n);let c=new qI(n,{project:this});await r(()=>c.setup());let f=a.then(()=>{this.addWorkspace(c)});return Array.from(c.workspacesCwds).reduce(s,f)};await s(Promise.resolve(),this.cwd)}addWorkspace(t){let r=this.workspacesByIdent.get(t.anchoredLocator.identHash);if(typeof r<"u")throw new Error(`Duplicate workspace name ${$i(this.configuration,t.anchoredLocator)}: ${Ae.fromPortablePath(t.cwd)} conflicts with ${Ae.fromPortablePath(r.cwd)}`);this.workspaces.push(t),this.workspacesByCwd.set(t.cwd,t),this.workspacesByIdent.set(t.anchoredLocator.identHash,t)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(t){Y.isAbsolute(t)||(t=Y.resolve(this.cwd,t)),t=Y.normalize(t).replace(/\/+$/,"");let r=this.workspacesByCwd.get(t);return r||null}getWorkspaceByCwd(t){let r=this.tryWorkspaceByCwd(t);if(!r)throw new Error(`Workspace not found (${t})`);return r}tryWorkspaceByFilePath(t){let r=null;for(let s of this.workspaces)Y.relative(s.cwd,t).startsWith("../")||r&&r.cwd.length>=s.cwd.length||(r=s);return r||null}getWorkspaceByFilePath(t){let r=this.tryWorkspaceByFilePath(t);if(!r)throw new Error(`Workspace not found (${t})`);return r}tryWorkspaceByIdent(t){let r=this.workspacesByIdent.get(t.identHash);return typeof r>"u"?null:r}getWorkspaceByIdent(t){let r=this.tryWorkspaceByIdent(t);if(!r)throw new Error(`Workspace not found (${$i(this.configuration,t)})`);return r}tryWorkspaceByDescriptor(t){if(t.range.startsWith(Ii.protocol)){let s=t.range.slice(Ii.protocol.length);if(s!=="^"&&s!=="~"&&s!=="*"&&!yl(s))return this.tryWorkspaceByCwd(s)}let r=this.tryWorkspaceByIdent(t);return r===null||(Fp(t)&&(t=NB(t)),!r.accepts(t.range))?null:r}getWorkspaceByDescriptor(t){let r=this.tryWorkspaceByDescriptor(t);if(r===null)throw new Error(`Workspace not found (${ai(this.configuration,t)})`);return r}tryWorkspaceByLocator(t){let r=this.tryWorkspaceByIdent(t);return r===null||(ju(t)&&(t=aI(t)),r.anchoredLocator.locatorHash!==t.locatorHash)?null:r}getWorkspaceByLocator(t){let r=this.tryWorkspaceByLocator(t);if(!r)throw new Error(`Workspace not found (${Vr(this.configuration,t)})`);return r}deleteDescriptor(t){this.storedResolutions.delete(t),this.storedDescriptors.delete(t)}deleteLocator(t){this.originalPackages.delete(t),this.storedPackages.delete(t),this.accessibleLocators.delete(t)}forgetResolution(t){if("descriptorHash"in t){let r=this.storedResolutions.get(t.descriptorHash);this.deleteDescriptor(t.descriptorHash);let s=new Set(this.storedResolutions.values());typeof r<"u"&&!s.has(r)&&this.deleteLocator(r)}if("locatorHash"in t){this.deleteLocator(t.locatorHash);for(let[r,s]of this.storedResolutions)s===t.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let t=this.configuration.makeResolver(),r=new Map;for(let[s,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(s)}for(let s of this.originalPackages.values()){let a;try{a=t.shouldPersistResolution(s,{project:this,resolver:t})}catch{a=!1}if(!a){this.deleteLocator(s.locatorHash);let n=r.get(s.locatorHash);if(n){r.delete(s.locatorHash);for(let c of n)this.deleteDescriptor(c)}}}}forgetVirtualResolutions(){for(let t of this.storedPackages.values())for(let[r,s]of t.dependencies)Fp(s)&&t.dependencies.set(r,NB(s))}getDependencyMeta(t,r){let s={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(fn(t));if(!n)return s;let c=n.get(null);if(c&&Object.assign(s,c),r===null||!bde.default.valid(r))return s;for(let[f,p]of n)f!==null&&f===r&&Object.assign(s,p);return s}async findLocatorForLocation(t,{strict:r=!1}={}){let s=new Qi,a=this.configuration.getLinkers(),n={project:this,report:s};for(let c of a){let f=await c.findPackageLocator(t,n);if(f){if(r&&(await c.findPackageLocation(f,n)).replace(vde,"")!==t.replace(vde,""))continue;return f}}return null}async loadUserConfig(){let t=Y.join(this.cwd,".pnp.cjs");await ae.existsPromise(t)&&Tp(t).setup();let r=Y.join(this.cwd,"yarn.config.cjs");return await ae.existsPromise(r)?Tp(r):null}async preparePackage(t,{resolver:r,resolveOptions:s}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(t,{packageExtensions:a});for(let[c,f]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,f,this,n,f,{resolver:r,resolveOptions:s});if(!OB(f,p))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let h=r.bindDescriptor(p,n,s);n.dependencies.set(c,h)}return n}async resolveEverything(t){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),s=[];t.lockfileOnly||this.forgetTransientResolutions();let a=t.resolver||this.configuration.makeResolver(),n=new jI(a);await n.setup(this,{report:t.report});let c=t.lockfileOnly?[new QR(a)]:[n,a],f=new nm([new GI(a),...c]),p=new nm([...c]),h=this.configuration.makeFetcher(),E=t.lockfileOnly?{project:this,report:t.report,resolver:f}:{project:this,report:t.report,resolver:f,fetchOptions:{project:this,cache:t.cache,checksums:this.storedChecksums,report:t.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},C=new Map,S=new Map,x=new Map,I=new Map,R=new Map,N=new Map,U=this.topLevelWorkspace.anchoredLocator,K=new Set,$=[],ie=sj(),fe=this.configuration.getSupportedArchitectures();await t.report.startProgressPromise(Io.progressViaTitle(),async ce=>{let X=async tt=>{let Fe=await JE(async()=>await f.resolve(tt,E),Te=>`${Vr(this.configuration,tt)}: ${Te}`);if(!LB(tt,Fe))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${Vr(this.configuration,tt)} to ${Vr(this.configuration,Fe)})`);I.set(Fe.locatorHash,Fe),!r.delete(Fe.locatorHash)&&!this.tryWorkspaceByLocator(Fe)&&s.push(Fe);let Se=await this.preparePackage(Fe,{resolver:f,resolveOptions:E}),je=Mu([...Se.dependencies.values()].map(Te=>_(Te)));return $.push(je),je.catch(()=>{}),S.set(Se.locatorHash,Se),Se},be=async tt=>{let Fe=R.get(tt.locatorHash);if(typeof Fe<"u")return Fe;let Qe=Promise.resolve().then(()=>X(tt));return R.set(tt.locatorHash,Qe),Qe},ke=async(tt,Fe)=>{let Qe=await _(Fe);return C.set(tt.descriptorHash,tt),x.set(tt.descriptorHash,Qe.locatorHash),Qe},it=async tt=>{ce.setTitle(ai(this.configuration,tt));let Fe=this.resolutionAliases.get(tt.descriptorHash);if(typeof Fe<"u")return ke(tt,this.storedDescriptors.get(Fe));let Qe=f.getResolutionDependencies(tt,E),Se=Object.fromEntries(await Mu(Object.entries(Qe).map(async([ct,Me])=>{let P=f.bindDescriptor(Me,U,E),w=await _(P);return K.add(w.locatorHash),[ct,w]}))),Te=(await JE(async()=>await f.getCandidates(tt,Se,E),ct=>`${ai(this.configuration,tt)}: ${ct}`))[0];if(typeof Te>"u")throw new Lt(82,`${ai(this.configuration,tt)}: No candidates found`);if(t.checkResolutions){let{locators:ct}=await p.getSatisfying(tt,Se,[Te],{...E,resolver:p});if(!ct.find(Me=>Me.locatorHash===Te.locatorHash))throw new Lt(78,`Invalid resolution ${QB(this.configuration,tt,Te)}`)}return C.set(tt.descriptorHash,tt),x.set(tt.descriptorHash,Te.locatorHash),be(Te)},_=tt=>{let Fe=N.get(tt.descriptorHash);if(typeof Fe<"u")return Fe;C.set(tt.descriptorHash,tt);let Qe=Promise.resolve().then(()=>it(tt));return N.set(tt.descriptorHash,Qe),Qe};for(let tt of this.workspaces){let Fe=tt.anchoredDescriptor;$.push(_(Fe))}for(;$.length>0;){let tt=[...$];$.length=0,await Mu(tt)}});let le=Xl(r.values(),ce=>this.tryWorkspaceByLocator(ce)?Xl.skip:ce);if(s.length>0||le.length>0){let ce=new Set(this.workspaces.flatMap(tt=>{let Fe=S.get(tt.anchoredLocator.locatorHash);if(!Fe)throw new Error("Assertion failed: The workspace should have been resolved");return Array.from(Fe.dependencies.values(),Qe=>{let Se=x.get(Qe.descriptorHash);if(!Se)throw new Error("Assertion failed: The resolution should have been registered");return Se})})),X=tt=>ce.has(tt.locatorHash)?"0":"1",be=tt=>ml(tt),ke=Ks(s,[X,be]),it=Ks(le,[X,be]),_=t.report.getRecommendedLength();ke.length>0&&t.report.reportInfo(85,`${Gt(this.configuration,"+",dt.ADDED)} ${nQ(this.configuration,ke,_)}`),it.length>0&&t.report.reportInfo(85,`${Gt(this.configuration,"-",dt.REMOVED)} ${nQ(this.configuration,it,_)}`)}let ge=new Set(this.resolutionAliases.values()),pe=new Set(S.keys()),De=new Set,ye=new Map,d=[],ve=new Map;Jit({project:this,accessibleLocators:De,volatileDescriptors:ge,optionalBuilds:pe,peerRequirements:ye,peerWarnings:d,peerRequirementNodes:ve,allDescriptors:C,allResolutions:x,allPackages:S});for(let ce of K)pe.delete(ce);for(let ce of ge)C.delete(ce),x.delete(ce);let Ie=new Set,me=new Set;for(let ce of S.values())ce.conditions!=null&&pe.has(ce.locatorHash)&&(OQ(ce,fe)||(OQ(ce,ie)&&t.report.reportWarningOnce(77,`${Vr(this.configuration,ce)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Gt(this.configuration,"supportedArchitectures",dt.SETTING)} setting`),me.add(ce.locatorHash)),Ie.add(ce.locatorHash));this.storedResolutions=x,this.storedDescriptors=C,this.storedPackages=S,this.accessibleLocators=De,this.conditionalLocators=Ie,this.disabledLocators=me,this.originalPackages=I,this.optionalBuilds=pe,this.peerRequirements=ye,this.peerWarnings=d,this.peerRequirementNodes=ve}async fetchEverything({cache:t,report:r,fetcher:s,mode:a,persistProject:n=!0}){let c={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},f=s||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:t,fetcher:f,report:r,cacheOptions:c},h=Array.from(new Set(Ks(this.storedResolutions.values(),[I=>{let R=this.storedPackages.get(I);if(!R)throw new Error("Assertion failed: The locator should have been registered");return ml(R)}])));a==="update-lockfile"&&(h=h.filter(I=>!this.storedChecksums.has(I)));let E=!1,C=Io.progressViaCounter(h.length);await r.reportProgress(C);let S=(0,RR.default)(Wit);if(await Mu(h.map(I=>S(async()=>{let R=this.storedPackages.get(I);if(!R)throw new Error("Assertion failed: The locator should have been registered");if(ju(R))return;let N;try{N=await f.fetch(R,p)}catch(U){U.message=`${Vr(this.configuration,R)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}N.checksum!=null?this.storedChecksums.set(R.locatorHash,N.checksum):this.storedChecksums.delete(R.locatorHash),N.releaseFs&&N.releaseFs()}).finally(()=>{C.tick()}))),E)throw E;let x=n&&a!=="update-lockfile"?await this.cacheCleanup({cache:t,report:r}):null;if(r.cacheMisses.size>0||x){let R=(await Promise.all([...r.cacheMisses].map(async le=>{let ge=this.storedPackages.get(le),pe=this.storedChecksums.get(le)??null,De=t.getLocatorPath(ge,pe);return(await ae.statPromise(De)).size}))).reduce((le,ge)=>le+ge,0)-(x?.size??0),N=r.cacheMisses.size,U=x?.count??0,K=`${Jk(N,{zero:"No new packages",one:"A package was",more:`${Gt(this.configuration,N,dt.NUMBER)} packages were`})} added to the project`,$=`${Jk(U,{zero:"none were",one:"one was",more:`${Gt(this.configuration,U,dt.NUMBER)} were`})} removed`,ie=R!==0?` (${Gt(this.configuration,R,dt.SIZE_DIFF)})`:"",fe=U>0?N>0?`${K}, and ${$}${ie}.`:`${K}, but ${$}${ie}.`:`${K}${ie}.`;r.reportInfo(13,fe)}}async linkEverything({cache:t,report:r,fetcher:s,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},c=s||this.configuration.makeFetcher(),f={checksums:this.storedChecksums,project:this,cache:t,fetcher:c,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(Ie=>{let me=Ie.makeInstaller(h),ce=Ie.getCustomDataKey(),X=this.linkersCustomData.get(ce);return typeof X<"u"&&me.attachCustomData(X),[Ie,me]})),C=new Map,S=new Map,x=new Map,I=new Map(await Mu([...this.accessibleLocators].map(async Ie=>{let me=this.storedPackages.get(Ie);if(!me)throw new Error("Assertion failed: The locator should have been registered");return[Ie,await c.fetch(me,f)]}))),R=[],N=new Set,U=[];for(let Ie of this.accessibleLocators){let me=this.storedPackages.get(Ie);if(typeof me>"u")throw new Error("Assertion failed: The locator should have been registered");let ce=I.get(me.locatorHash);if(typeof ce>"u")throw new Error("Assertion failed: The fetch result should have been registered");let X=[],be=it=>{X.push(it)},ke=this.tryWorkspaceByLocator(me);if(ke!==null){let it=[],{scripts:_}=ke.manifest;for(let Fe of["preinstall","install","postinstall"])_.has(Fe)&&it.push({type:0,script:Fe});try{for(let[Fe,Qe]of E)if(Fe.supportsPackage(me,h)&&(await Qe.installPackage(me,ce,{holdFetchResult:be})).buildRequest!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{X.length===0?ce.releaseFs?.():R.push(Mu(X).catch(()=>{}).then(()=>{ce.releaseFs?.()}))}let tt=Y.join(ce.packageFs.getRealPath(),ce.prefixPath);S.set(me.locatorHash,tt),!ju(me)&&it.length>0&&x.set(me.locatorHash,{buildDirectives:it,buildLocations:[tt]})}else{let it=p.find(Fe=>Fe.supportsPackage(me,h));if(!it)throw new Lt(12,`${Vr(this.configuration,me)} isn't supported by any available linker`);let _=E.get(it);if(!_)throw new Error("Assertion failed: The installer should have been registered");let tt;try{tt=await _.installPackage(me,ce,{holdFetchResult:be})}finally{X.length===0?ce.releaseFs?.():R.push(Mu(X).then(()=>{}).then(()=>{ce.releaseFs?.()}))}C.set(me.locatorHash,it),S.set(me.locatorHash,tt.packageLocation),tt.buildRequest&&tt.packageLocation&&(tt.buildRequest.skipped?(N.add(me.locatorHash),this.skippedBuilds.has(me.locatorHash)||U.push([me,tt.buildRequest.explain])):x.set(me.locatorHash,{buildDirectives:tt.buildRequest.directives,buildLocations:[tt.packageLocation]}))}}let K=new Map;for(let Ie of this.accessibleLocators){let me=this.storedPackages.get(Ie);if(!me)throw new Error("Assertion failed: The locator should have been registered");let ce=this.tryWorkspaceByLocator(me)!==null,X=async(be,ke)=>{let it=S.get(me.locatorHash);if(typeof it>"u")throw new Error(`Assertion failed: The package (${Vr(this.configuration,me)}) should have been registered`);let _=[];for(let tt of me.dependencies.values()){let Fe=this.storedResolutions.get(tt.descriptorHash);if(typeof Fe>"u")throw new Error(`Assertion failed: The resolution (${ai(this.configuration,tt)}, from ${Vr(this.configuration,me)})should have been registered`);let Qe=this.storedPackages.get(Fe);if(typeof Qe>"u")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ai(this.configuration,tt)}) should have been registered`);let Se=this.tryWorkspaceByLocator(Qe)===null?C.get(Fe):null;if(typeof Se>"u")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ai(this.configuration,tt)}) should have been registered`);Se===be||Se===null?S.get(Qe.locatorHash)!==null&&_.push([tt,Qe]):!ce&&it!==null&&bB(K,Fe).push(it)}it!==null&&await ke.attachInternalDependencies(me,_)};if(ce)for(let[be,ke]of E)be.supportsPackage(me,h)&&await X(be,ke);else{let be=C.get(me.locatorHash);if(!be)throw new Error("Assertion failed: The linker should have been found");let ke=E.get(be);if(!ke)throw new Error("Assertion failed: The installer should have been registered");await X(be,ke)}}for(let[Ie,me]of K){let ce=this.storedPackages.get(Ie);if(!ce)throw new Error("Assertion failed: The package should have been registered");let X=C.get(ce.locatorHash);if(!X)throw new Error("Assertion failed: The linker should have been found");let be=E.get(X);if(!be)throw new Error("Assertion failed: The installer should have been registered");await be.attachExternalDependents(ce,me)}let $=new Map;for(let[Ie,me]of E){let ce=await me.finalizeInstall();for(let X of ce?.records??[])X.buildRequest.skipped?(N.add(X.locator.locatorHash),this.skippedBuilds.has(X.locator.locatorHash)||U.push([X.locator,X.buildRequest.explain])):x.set(X.locator.locatorHash,{buildDirectives:X.buildRequest.directives,buildLocations:X.buildLocations});typeof ce?.customData<"u"&&$.set(Ie.getCustomDataKey(),ce.customData)}if(this.linkersCustomData=$,await Mu(R),a==="skip-build")return;for(let[,Ie]of Ks(U,([me])=>ml(me)))Ie(r);let ie=new Set(x.keys()),fe=(0,TR.createHash)("sha512");fe.update(process.versions.node),await this.configuration.triggerHook(Ie=>Ie.globalHashGeneration,this,Ie=>{fe.update("\0"),fe.update(Ie)});let le=fe.digest("hex"),ge=new Map,pe=Ie=>{let me=ge.get(Ie.locatorHash);if(typeof me<"u")return me;let ce=this.storedPackages.get(Ie.locatorHash);if(typeof ce>"u")throw new Error("Assertion failed: The package should have been registered");let X=(0,TR.createHash)("sha512");X.update(Ie.locatorHash),ge.set(Ie.locatorHash,"");for(let be of ce.dependencies.values()){let ke=this.storedResolutions.get(be.descriptorHash);if(typeof ke>"u")throw new Error(`Assertion failed: The resolution (${ai(this.configuration,be)}) should have been registered`);let it=this.storedPackages.get(ke);if(typeof it>"u")throw new Error("Assertion failed: The package should have been registered");X.update(pe(it))}return me=X.digest("hex"),ge.set(Ie.locatorHash,me),me},De=(Ie,me)=>{let ce=(0,TR.createHash)("sha512");ce.update(le),ce.update(pe(Ie));for(let X of me)ce.update(X);return ce.digest("hex")},ye=new Map,d=!1,ve=Ie=>{let me=new Set([Ie.locatorHash]);for(let ce of me){let X=this.storedPackages.get(ce);if(!X)throw new Error("Assertion failed: The package should have been registered");for(let be of X.dependencies.values()){let ke=this.storedResolutions.get(be.descriptorHash);if(!ke)throw new Error(`Assertion failed: The resolution (${ai(this.configuration,be)}) should have been registered`);if(ke!==Ie.locatorHash&&ie.has(ke))return!1;let it=this.storedPackages.get(ke);if(!it)throw new Error("Assertion failed: The package should have been registered");let _=this.tryWorkspaceByLocator(it);if(_){if(_.anchoredLocator.locatorHash!==Ie.locatorHash&&ie.has(_.anchoredLocator.locatorHash))return!1;me.add(_.anchoredLocator.locatorHash)}me.add(ke)}}return!0};for(;ie.size>0;){let Ie=ie.size,me=[];for(let ce of ie){let X=this.storedPackages.get(ce);if(!X)throw new Error("Assertion failed: The package should have been registered");if(!ve(X))continue;let be=x.get(X.locatorHash);if(!be)throw new Error("Assertion failed: The build directive should have been registered");let ke=De(X,be.buildLocations);if(this.storedBuildState.get(X.locatorHash)===ke){ye.set(X.locatorHash,ke),ie.delete(ce);continue}d||(await this.persistInstallStateFile(),d=!0),this.storedBuildState.has(X.locatorHash)?r.reportInfo(8,`${Vr(this.configuration,X)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${Vr(this.configuration,X)} must be built because it never has been before or the last one failed`);let it=be.buildLocations.map(async _=>{if(!Y.isAbsolute(_))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${_})`);for(let tt of be.buildDirectives){let Fe=`# This file contains the result of Yarn building a package (${ml(X)}) +`;switch(tt.type){case 0:Fe+=`# Script name: ${tt.script} +`;break;case 1:Fe+=`# Script code: ${tt.script} +`;break}let Qe=null;if(!await ae.mktempPromise(async je=>{let Te=Y.join(je,"build.log"),{stdout:ct,stderr:Me}=this.configuration.getSubprocessStreams(Te,{header:Fe,prefix:Vr(this.configuration,X),report:r}),P;try{switch(tt.type){case 0:P=await HT(X,tt.script,[],{cwd:_,project:this,stdin:Qe,stdout:ct,stderr:Me});break;case 1:P=await Hj(X,tt.script,[],{cwd:_,project:this,stdin:Qe,stdout:ct,stderr:Me});break}}catch(y){Me.write(y.stack),P=1}if(ct.end(),Me.end(),P===0)return!0;ae.detachTemp(je);let w=`${Vr(this.configuration,X)} couldn't be built successfully (exit code ${Gt(this.configuration,P,dt.NUMBER)}, logs can be found here: ${Gt(this.configuration,Te,dt.PATH)})`,D=this.optionalBuilds.has(X.locatorHash);return D?r.reportInfo(9,w):r.reportError(9,w),Fpe&&r.reportFold(Ae.fromPortablePath(Te),ae.readFileSync(Te,"utf8")),D}))return!1}return!0});me.push(...it,Promise.allSettled(it).then(_=>{ie.delete(ce),_.every(tt=>tt.status==="fulfilled"&&tt.value===!0)&&ye.set(X.locatorHash,ke)}))}if(await Mu(me),Ie===ie.size){let ce=Array.from(ie).map(X=>{let be=this.storedPackages.get(X);if(!be)throw new Error("Assertion failed: The package should have been registered");return Vr(this.configuration,be)}).join(", ");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${ce})`);break}}this.storedBuildState=ye,this.skippedBuilds=N}async installWithNewReport(t,r){return(await Ft.start({configuration:this.configuration,json:t.json,stdout:t.stdout,forceSectionAlignment:!0,includeLogs:!t.json&&!t.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(t){let r=this.configuration.get("nodeLinker");Je.telemetry?.reportInstall(r);let s=!1;if(await t.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{this.configuration.get("enableOfflineMode")&&t.report.reportWarning(90,"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,C)=>{t.report.reportWarning(E,C)},reportError:(E,C)=>{t.report.reportError(E,C),s=!0}})}),s)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,C]of E)for(let S of C)S.status="inactive";let n=Y.join(this.cwd,yr.lockfile),c=null;if(t.immutable)try{c=await ae.readFilePromise(n,"utf8")}catch(E){throw E.code==="ENOENT"?new Lt(28,"The lockfile would have been created by this install, which is explicitly forbidden."):E}await t.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(t)}),await t.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{Zit(this,t.report);for(let[,E]of a)for(let[,C]of E)for(let S of C)if(S.userProvided){let x=Gt(this.configuration,S,dt.PACKAGE_EXTENSION);switch(S.status){case"inactive":t.report.reportWarning(68,`${x}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":t.report.reportWarning(69,`${x}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(c!==null){let E=I0(c,this.generateLockfile());if(E!==c){let C=Cde(n,n,c,E,void 0,void 0,{maxEditLength:100});if(C){t.report.reportSeparator();for(let S of C.hunks){t.report.reportInfo(null,`@@ -${S.oldStart},${S.oldLines} +${S.newStart},${S.newLines} @@`);for(let x of S.lines)x.startsWith("+")?t.report.reportError(28,Gt(this.configuration,x,dt.ADDED)):x.startsWith("-")?t.report.reportError(28,Gt(this.configuration,x,dt.REMOVED)):t.report.reportInfo(null,Gt(this.configuration,x,"grey"))}t.report.reportSeparator()}throw new Lt(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let E of a.values())for(let[,C]of E)for(let S of C)S.userProvided&&S.status==="active"&&Je.telemetry?.reportPackageExtension(X0(S,dt.PACKAGE_EXTENSION));await t.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(t)});let f=t.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],p=await Promise.all(f.map(async E=>kQ(E,{cwd:this.cwd})));(typeof t.persistProject>"u"||t.persistProject)&&await this.persist(),await t.report.startTimerPromise("Link step",async()=>{if(t.mode==="update-lockfile"){t.report.reportWarning(73,`Skipped due to ${Gt(this.configuration,"mode=update-lockfile",dt.CODE)}`);return}await this.linkEverything(t);let E=await Promise.all(f.map(async C=>kQ(C,{cwd:this.cwd})));for(let C=0;C{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,C)=>{t.report.reportWarning(E,C)},reportError:(E,C)=>{t.report.reportError(E,C),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,t)}generateLockfile(){let t=new Map;for(let[n,c]of this.storedResolutions.entries()){let f=t.get(c);f||t.set(c,f=new Set),f.add(n)}let r={},{cacheKey:s}=zr.getCacheKey(this.configuration);r.__metadata={version:FR,cacheKey:s};for(let[n,c]of t.entries()){let f=this.originalPackages.get(n);if(!f)continue;let p=[];for(let C of c){let S=this.storedDescriptors.get(C);if(!S)throw new Error("Assertion failed: The descriptor should have been registered");p.push(S)}let h=p.map(C=>gl(C)).sort().join(", "),E=new _t;E.version=f.linkType==="HARD"?f.version:"0.0.0-use.local",E.languageName=f.languageName,E.dependencies=new Map(f.dependencies),E.peerDependencies=new Map(f.peerDependencies),E.dependenciesMeta=new Map(f.dependenciesMeta),E.peerDependenciesMeta=new Map(f.peerDependenciesMeta),E.bin=new Map(f.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:f.linkType.toLowerCase(),resolution:ml(f),checksum:this.storedChecksums.get(f.locatorHash),conditions:f.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. +`,`# Manual changes might be lost - proceed with caution! +`].join("")} +`+Al(r)}async persistLockfile(){let t=Y.join(this.cwd,yr.lockfile),r="";try{r=await ae.readFilePromise(t,"utf8")}catch{}let s=this.generateLockfile(),a=I0(r,s);a!==r&&(await ae.writeFilePromise(t,a),this.lockFileChecksum=Sde(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let t=[];for(let c of Object.values(BG))t.push(...c);let r=z0(this,t),s=vG.default.serialize(r),a=As(s);if(this.installStateChecksum===a)return;let n=this.configuration.get("installStatePath");await ae.mkdirPromise(Y.dirname(n),{recursive:!0}),await ae.writeFilePromise(n,await Vit(s)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:t=!0,restoreResolutions:r=!0,restoreBuildState:s=!0}={}){let a=this.configuration.get("installStatePath"),n;try{let c=await Kit(await ae.readFilePromise(a));n=vG.default.deserialize(c),this.installStateChecksum=As(c)}catch{r&&await this.applyLightResolution();return}t&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),s&&Object.assign(this,z0(n,BG.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,z0(n,BG.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new Qi}),await this.persistInstallStateFile()}async persist(){let t=(0,RR.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>t(()=>r.persistManifest()))])}async cacheCleanup({cache:t,report:r}){if(this.configuration.get("enableGlobalCache"))return null;let s=new Set([".gitignore"]);if(!U8(t.cwd,this.cwd)||!await ae.existsPromise(t.cwd))return null;let a=[];for(let c of await ae.readdirPromise(t.cwd)){if(s.has(c))continue;let f=Y.resolve(t.cwd,c);t.markedFiles.has(f)||(t.immutable?r.reportError(56,`${Gt(this.configuration,Y.basename(f),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(ae.lstatPromise(f).then(async p=>(await ae.removePromise(f),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((c,f)=>c+f,0)}}}});function Xit(e){let s=Math.floor(e.timeNow/864e5),a=e.updateInterval*864e5,n=e.state.lastUpdate??e.timeNow+a+Math.floor(a*e.randomInitialInterval),c=n+a,f=e.state.lastTips??s*864e5,p=f+864e5+8*36e5-e.timeZone,h=c<=e.timeNow,E=p<=e.timeNow,C=null;return(h||E||!e.state.lastUpdate||!e.state.lastTips)&&(C={},C.lastUpdate=h?e.timeNow:n,C.lastTips=f,C.blocks=h?{}:e.state.blocks,C.displayedTips=e.state.displayedTips),{nextState:C,triggerUpdate:h,triggerTips:E,nextTips:E?s*864e5:f}}var YI,Pde=Ze(()=>{bt();dv();wd();mT();Qc();Lp();YI=class{constructor(t,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=t;let s=this.getRegistryPath();this.isNew=!ae.existsSync(s),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(t){let r=new Set(this.displayedTips),s=f=>f&&An?rA(An,f):!1,a=t.map((f,p)=>p).filter(f=>t[f]&&s(t[f]?.selector));if(a.length===0)return null;let n=a.filter(f=>!r.has(f));if(n.length===0){let f=Math.floor(a.length*.2);this.displayedTips=f>0?this.displayedTips.slice(-f):[],n=a.filter(p=>!r.has(p))}let c=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(c),this.commitTips(),t[c]}reportVersion(t){this.reportValue("version",t.replace(/-git\..*/,"-git"))}reportCommandName(t){this.reportValue("commandName",t||"")}reportPluginName(t){this.reportValue("pluginName",t)}reportProject(t){this.reportEnumerator("projectCount",t)}reportInstall(t){this.reportHit("installCount",t)}reportPackageExtension(t){this.reportValue("packageExtension",t)}reportWorkspaceCount(t){this.reportValue("workspaceCount",String(t))}reportDependencyCount(t){this.reportValue("dependencyCount",String(t))}reportValue(t,r){Qp(this.values,t).add(r)}reportEnumerator(t,r){Qp(this.enumerators,t).add(As(r))}reportHit(t,r="*"){let s=L4(this.hits,t),a=$l(s,r,()=>0);s.set(r,a+1)}getRegistryPath(){let t=this.configuration.get("globalFolder");return Y.join(t,"telemetry.json")}sendReport(t){let r=this.getRegistryPath(),s;try{s=ae.readJsonSync(r)}catch{s={}}let{nextState:a,triggerUpdate:n,triggerTips:c,nextTips:f}=Xit({state:s,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get("telemetryInterval")});if(this.nextTips=f,this.displayedTips=s.displayedTips??[],a!==null)try{ae.mkdirSync(Y.dirname(r),{recursive:!0}),ae.writeJsonSync(r,a)}catch{return!1}if(c&&this.configuration.get("enableTips")&&(this.shouldShowTips=!0),n){let p=s.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${t}?ddsource=yarn`,E=C=>ij(h,C,{configuration:this.configuration}).catch(()=>{});for(let[C,S]of Object.entries(s.blocks??{})){if(Object.keys(S).length===0)continue;let x=S;x.userId=C,x.reportType="primary";for(let N of Object.keys(x.enumerators??{}))x.enumerators[N]=x.enumerators[N].length;E(x);let I=new Map,R=20;for(let[N,U]of Object.entries(x.values))U.length>0&&I.set(N,U.slice(0,R));for(;I.size>0;){let N={};N.userId=C,N.reportType="secondary",N.metrics={};for(let[U,K]of I)N.metrics[U]=K.shift(),K.length===0&&I.delete(U);E(N)}}}}return!0}applyChanges(){let t=this.getRegistryPath(),r;try{r=ae.readJsonSync(t)}catch{r={}}let s=this.configuration.get("telemetryUserId")??"*",a=r.blocks=r.blocks??{},n=a[s]=a[s]??{};for(let c of this.hits.keys()){let f=n.hits=n.hits??{},p=f[c]=f[c]??{};for(let[h,E]of this.hits.get(c))p[h]=(p[h]??0)+E}for(let c of["values","enumerators"])for(let f of this[c].keys()){let p=n[c]=n[c]??{};p[f]=[...new Set([...p[f]??[],...this[c].get(f)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),ae.mkdirSync(Y.dirname(t),{recursive:!0}),ae.writeJsonSync(t,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}}});var Vv={};Vt(Vv,{BuildDirectiveType:()=>xR,CACHE_CHECKPOINT:()=>uG,CACHE_VERSION:()=>PR,Cache:()=>zr,Configuration:()=>Je,DEFAULT_RC_FILENAME:()=>fj,DurationUnit:()=>Aj,FormatType:()=>qAe,InstallMode:()=>La,LEGACY_PLUGINS:()=>nv,LOCKFILE_VERSION:()=>FR,LegacyMigrationResolver:()=>jI,LightReport:()=>fA,LinkType:()=>XE,LockfileResolver:()=>GI,Manifest:()=>_t,MessageName:()=>pr,MultiFetcher:()=>AI,PackageExtensionStatus:()=>H4,PackageExtensionType:()=>_4,PeerWarningType:()=>NR,Project:()=>Tt,Report:()=>Io,ReportError:()=>Lt,SettingsType:()=>DI,StreamReport:()=>Ft,TAG_REGEXP:()=>jp,TelemetryManager:()=>YI,ThrowReport:()=>Qi,VirtualFetcher:()=>pI,WindowsLinkType:()=>vT,Workspace:()=>qI,WorkspaceFetcher:()=>hI,WorkspaceResolver:()=>Ii,YarnVersion:()=>An,execUtils:()=>Yr,folderUtils:()=>_Q,formatUtils:()=>ue,hashUtils:()=>Mn,httpUtils:()=>nn,miscUtils:()=>qe,nodeUtils:()=>Ui,parseMessageName:()=>Vx,reportOptionDeprecations:()=>kI,scriptUtils:()=>wn,semverUtils:()=>kr,stringifyMessageName:()=>zf,structUtils:()=>H,tgzUtils:()=>ms,treeUtils:()=>ts});var Ge=Ze(()=>{IT();HQ();Tc();wd();mT();Qc();ET();Yj();Lp();$o();ode();pde();fG();iv();iv();gde();AG();mde();pG();fI();Kx();P8();Dde();Nc();gv();Pde();CG();k8();Q8();rm();wG();dv();Jae()});var Fde=G((T3t,Jv)=>{"use strict";var est=process.env.TERM_PROGRAM==="Hyper",tst=process.platform==="win32",Qde=process.platform==="linux",DG={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},Tde=Object.assign({},DG,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),Rde=Object.assign({},DG,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:Qde?"\u25B8":"\u276F",pointerSmall:Qde?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});Jv.exports=tst&&!est?Tde:Rde;Reflect.defineProperty(Jv.exports,"common",{enumerable:!1,value:DG});Reflect.defineProperty(Jv.exports,"windows",{enumerable:!1,value:Tde});Reflect.defineProperty(Jv.exports,"other",{enumerable:!1,value:Rde})});var Zu=G((R3t,PG)=>{"use strict";var rst=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),nst=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,Nde=()=>{let e={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(e.enabled=process.env.FORCE_COLOR!=="0");let t=n=>{let c=n.open=`\x1B[${n.codes[0]}m`,f=n.close=`\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\u001b\\[${n.codes[1]}m`,"g");return n.wrap=(h,E)=>{h.includes(f)&&(h=h.replace(p,f+c));let C=c+h+f;return E?C.replace(/\r*\n/g,`${f}$&${c}`):C},n},r=(n,c,f)=>typeof n=="function"?n(c):n.wrap(c,f),s=(n,c)=>{if(n===""||n==null)return"";if(e.enabled===!1)return n;if(e.visible===!1)return"";let f=""+n,p=f.includes(` +`),h=c.length;for(h>0&&c.includes("unstyle")&&(c=[...new Set(["unstyle",...c])].reverse());h-- >0;)f=r(e.styles[c[h]],f,p);return f},a=(n,c,f)=>{e.styles[n]=t({name:n,codes:c}),(e.keys[f]||(e.keys[f]=[])).push(n),Reflect.defineProperty(e,n,{configurable:!0,enumerable:!0,set(h){e.alias(n,h)},get(){let h=E=>s(E,h.stack);return Reflect.setPrototypeOf(h,e),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a("reset",[0,0],"modifier"),a("bold",[1,22],"modifier"),a("dim",[2,22],"modifier"),a("italic",[3,23],"modifier"),a("underline",[4,24],"modifier"),a("inverse",[7,27],"modifier"),a("hidden",[8,28],"modifier"),a("strikethrough",[9,29],"modifier"),a("black",[30,39],"color"),a("red",[31,39],"color"),a("green",[32,39],"color"),a("yellow",[33,39],"color"),a("blue",[34,39],"color"),a("magenta",[35,39],"color"),a("cyan",[36,39],"color"),a("white",[37,39],"color"),a("gray",[90,39],"color"),a("grey",[90,39],"color"),a("bgBlack",[40,49],"bg"),a("bgRed",[41,49],"bg"),a("bgGreen",[42,49],"bg"),a("bgYellow",[43,49],"bg"),a("bgBlue",[44,49],"bg"),a("bgMagenta",[45,49],"bg"),a("bgCyan",[46,49],"bg"),a("bgWhite",[47,49],"bg"),a("blackBright",[90,39],"bright"),a("redBright",[91,39],"bright"),a("greenBright",[92,39],"bright"),a("yellowBright",[93,39],"bright"),a("blueBright",[94,39],"bright"),a("magentaBright",[95,39],"bright"),a("cyanBright",[96,39],"bright"),a("whiteBright",[97,39],"bright"),a("bgBlackBright",[100,49],"bgBright"),a("bgRedBright",[101,49],"bgBright"),a("bgGreenBright",[102,49],"bgBright"),a("bgYellowBright",[103,49],"bgBright"),a("bgBlueBright",[104,49],"bgBright"),a("bgMagentaBright",[105,49],"bgBright"),a("bgCyanBright",[106,49],"bgBright"),a("bgWhiteBright",[107,49],"bgBright"),e.ansiRegex=nst,e.hasColor=e.hasAnsi=n=>(e.ansiRegex.lastIndex=0,typeof n=="string"&&n!==""&&e.ansiRegex.test(n)),e.alias=(n,c)=>{let f=typeof c=="string"?e[c]:c;if(typeof f!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");f.stack||(Reflect.defineProperty(f,"name",{value:n}),e.styles[n]=f,f.stack=[n]),Reflect.defineProperty(e,n,{configurable:!0,enumerable:!0,set(p){e.alias(n,p)},get(){let p=h=>s(h,p.stack);return Reflect.setPrototypeOf(p,e),p.stack=this.stack?this.stack.concat(f.stack):f.stack,p}})},e.theme=n=>{if(!rst(n))throw new TypeError("Expected theme to be an object");for(let c of Object.keys(n))e.alias(c,n[c]);return e},e.alias("unstyle",n=>typeof n=="string"&&n!==""?(e.ansiRegex.lastIndex=0,n.replace(e.ansiRegex,"")):""),e.alias("noop",n=>n),e.none=e.clear=e.noop,e.stripColor=e.unstyle,e.symbols=Fde(),e.define=a,e};PG.exports=Nde();PG.exports.create=Nde});var ia=G(hn=>{"use strict";var ist=Object.prototype.toString,jc=Zu(),Ode=!1,xG=[],Lde={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};hn.longest=(e,t)=>e.reduce((r,s)=>Math.max(r,t?s[t].length:s.length),0);hn.hasColor=e=>!!e&&jc.hasColor(e);var LR=hn.isObject=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);hn.nativeType=e=>ist.call(e).slice(8,-1).toLowerCase().replace(/\s/g,"");hn.isAsyncFn=e=>hn.nativeType(e)==="asyncfunction";hn.isPrimitive=e=>e!=null&&typeof e!="object"&&typeof e!="function";hn.resolve=(e,t,...r)=>typeof t=="function"?t.call(e,...r):t;hn.scrollDown=(e=[])=>[...e.slice(1),e[0]];hn.scrollUp=(e=[])=>[e.pop(),...e];hn.reorder=(e=[])=>{let t=e.slice();return t.sort((r,s)=>r.index>s.index?1:r.index{let s=e.length,a=r===s?0:r<0?s-1:r,n=e[t];e[t]=e[a],e[a]=n};hn.width=(e,t=80)=>{let r=e&&e.columns?e.columns:t;return e&&typeof e.getWindowSize=="function"&&(r=e.getWindowSize()[0]),process.platform==="win32"?r-1:r};hn.height=(e,t=20)=>{let r=e&&e.rows?e.rows:t;return e&&typeof e.getWindowSize=="function"&&(r=e.getWindowSize()[1]),r};hn.wordWrap=(e,t={})=>{if(!e)return e;typeof t=="number"&&(t={width:t});let{indent:r="",newline:s=` +`+r,width:a=80}=t,n=(s+r).match(/[^\S\n]/g)||[];a-=n.length;let c=`.{1,${a}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,f=e.trim(),p=new RegExp(c,"g"),h=f.match(p)||[];return h=h.map(E=>E.replace(/\n$/,"")),t.padEnd&&(h=h.map(E=>E.padEnd(a," "))),t.padStart&&(h=h.map(E=>E.padStart(a," "))),r+h.join(s)};hn.unmute=e=>{let t=e.stack.find(s=>jc.keys.color.includes(s));return t?jc[t]:e.stack.find(s=>s.slice(2)==="bg")?jc[t.slice(2)]:s=>s};hn.pascal=e=>e?e[0].toUpperCase()+e.slice(1):"";hn.inverse=e=>{if(!e||!e.stack)return e;let t=e.stack.find(s=>jc.keys.color.includes(s));if(t){let s=jc["bg"+hn.pascal(t)];return s?s.black:e}let r=e.stack.find(s=>s.slice(0,2)==="bg");return r?jc[r.slice(2).toLowerCase()]||e:jc.none};hn.complement=e=>{if(!e||!e.stack)return e;let t=e.stack.find(s=>jc.keys.color.includes(s)),r=e.stack.find(s=>s.slice(0,2)==="bg");if(t&&!r)return jc[Lde[t]||t];if(r){let s=r.slice(2).toLowerCase(),a=Lde[s];return a&&jc["bg"+hn.pascal(a)]||e}return jc.none};hn.meridiem=e=>{let t=e.getHours(),r=e.getMinutes(),s=t>=12?"pm":"am";t=t%12;let a=t===0?12:t,n=r<10?"0"+r:r;return a+":"+n+" "+s};hn.set=(e={},t="",r)=>t.split(".").reduce((s,a,n,c)=>{let f=c.length-1>n?s[a]||{}:r;return!hn.isObject(f)&&n{let s=e[t]==null?t.split(".").reduce((a,n)=>a&&a[n],e):e[t];return s??r};hn.mixin=(e,t)=>{if(!LR(e))return t;if(!LR(t))return e;for(let r of Object.keys(t)){let s=Object.getOwnPropertyDescriptor(t,r);if(s.hasOwnProperty("value"))if(e.hasOwnProperty(r)&&LR(s.value)){let a=Object.getOwnPropertyDescriptor(e,r);LR(a.value)?e[r]=hn.merge({},e[r],t[r]):Reflect.defineProperty(e,r,s)}else Reflect.defineProperty(e,r,s);else Reflect.defineProperty(e,r,s)}return e};hn.merge=(...e)=>{let t={};for(let r of e)hn.mixin(t,r);return t};hn.mixinEmitter=(e,t)=>{let r=t.constructor.prototype;for(let s of Object.keys(r)){let a=r[s];typeof a=="function"?hn.define(e,s,a.bind(t)):hn.define(e,s,a)}};hn.onExit=e=>{let t=(r,s)=>{Ode||(Ode=!0,xG.forEach(a=>a()),r===!0&&process.exit(128+s))};xG.length===0&&(process.once("SIGTERM",t.bind(null,!0,15)),process.once("SIGINT",t.bind(null,!0,2)),process.once("exit",t)),xG.push(e)};hn.define=(e,t,r)=>{Reflect.defineProperty(e,t,{value:r})};hn.defineExport=(e,t,r)=>{let s;Reflect.defineProperty(e,t,{enumerable:!0,configurable:!0,set(a){s=a},get(){return s?s():r()}})}});var Mde=G(JI=>{"use strict";JI.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};JI.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};JI.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};JI.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};JI.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var Hde=G((O3t,_de)=>{"use strict";var Ude=Ce("readline"),sst=Mde(),ost=/^(?:\x1b)([a-zA-Z0-9])$/,ast=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,lst={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function cst(e){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e)}function ust(e){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e)}var MR=(e="",t={})=>{let r,s={name:t.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:e,raw:e,...t};if(Buffer.isBuffer(e)?e[0]>127&&e[1]===void 0?(e[0]-=128,e="\x1B"+String(e)):e=String(e):e!==void 0&&typeof e!="string"?e=String(e):e||(e=s.sequence||""),s.sequence=s.sequence||e||s.name,e==="\r")s.raw=void 0,s.name="return";else if(e===` +`)s.name="enter";else if(e===" ")s.name="tab";else if(e==="\b"||e==="\x7F"||e==="\x1B\x7F"||e==="\x1B\b")s.name="backspace",s.meta=e.charAt(0)==="\x1B";else if(e==="\x1B"||e==="\x1B\x1B")s.name="escape",s.meta=e.length===2;else if(e===" "||e==="\x1B ")s.name="space",s.meta=e.length===2;else if(e<="")s.name=String.fromCharCode(e.charCodeAt(0)+97-1),s.ctrl=!0;else if(e.length===1&&e>="0"&&e<="9")s.name="number";else if(e.length===1&&e>="a"&&e<="z")s.name=e;else if(e.length===1&&e>="A"&&e<="Z")s.name=e.toLowerCase(),s.shift=!0;else if(r=ost.exec(e))s.meta=!0,s.shift=/^[A-Z]$/.test(r[1]);else if(r=ast.exec(e)){let a=[...e];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),c=(r[3]||r[5]||1)-1;s.ctrl=!!(c&4),s.meta=!!(c&10),s.shift=!!(c&1),s.code=n,s.name=lst[n],s.shift=cst(n)||s.shift,s.ctrl=ust(n)||s.ctrl}return s};MR.listen=(e={},t)=>{let{stdin:r}=e;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let s=Ude.createInterface({terminal:!0,input:r});Ude.emitKeypressEvents(r,s);let a=(f,p)=>t(f,MR(f,p),s),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",a),s.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener("keypress",a),s.pause(),s.close()}};MR.action=(e,t,r)=>{let s={...sst,...r};return t.ctrl?(t.action=s.ctrl[t.name],t):t.option&&s.option?(t.action=s.option[t.name],t):t.shift?(t.action=s.shift[t.name],t):(t.action=s.keys[t.name],t)};_de.exports=MR});var Gde=G((L3t,jde)=>{"use strict";jde.exports=e=>{e.timers=e.timers||{};let t=e.options.timers;if(t)for(let r of Object.keys(t)){let s=t[r];typeof s=="number"&&(s={interval:s}),fst(e,r,s)}};function fst(e,t,r={}){let s=e.timers[t]={name:t,start:Date.now(),ms:0,tick:0},a=r.interval||120;s.frames=r.frames||[],s.loading=!0;let n=setInterval(()=>{s.ms=Date.now()-s.start,s.tick++,e.render()},a);return s.stop=()=>{s.loading=!1,clearInterval(n)},Reflect.defineProperty(s,"interval",{value:n}),e.once("close",()=>s.stop()),s.stop}});var Yde=G((M3t,qde)=>{"use strict";var{define:Ast,width:pst}=ia(),kG=class{constructor(t){let r=t.options;Ast(this,"_prompt",t),this.type=t.type,this.name=t.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=pst(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=t.symbols,this.styles=t.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let t={...this};return t.status=this.status,t.buffer=Buffer.from(t.buffer),delete t.clone,t}set color(t){this._color=t}get color(){let t=this.prompt.styles;if(this.cancelled)return t.cancelled;if(this.submitted)return t.submitted;let r=this._color||t[this.status];return typeof r=="function"?r:t.pending}set loading(t){this._loading=t}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};qde.exports=kG});var Vde=G((U3t,Wde)=>{"use strict";var QG=ia(),wo=Zu(),TG={default:wo.noop,noop:wo.noop,set inverse(e){this._inverse=e},get inverse(){return this._inverse||QG.inverse(this.primary)},set complement(e){this._complement=e},get complement(){return this._complement||QG.complement(this.primary)},primary:wo.cyan,success:wo.green,danger:wo.magenta,strong:wo.bold,warning:wo.yellow,muted:wo.dim,disabled:wo.gray,dark:wo.dim.gray,underline:wo.underline,set info(e){this._info=e},get info(){return this._info||this.primary},set em(e){this._em=e},get em(){return this._em||this.primary.underline},set heading(e){this._heading=e},get heading(){return this._heading||this.muted.underline},set pending(e){this._pending=e},get pending(){return this._pending||this.primary},set submitted(e){this._submitted=e},get submitted(){return this._submitted||this.success},set cancelled(e){this._cancelled=e},get cancelled(){return this._cancelled||this.danger},set typing(e){this._typing=e},get typing(){return this._typing||this.dim},set placeholder(e){this._placeholder=e},get placeholder(){return this._placeholder||this.primary.dim},set highlight(e){this._highlight=e},get highlight(){return this._highlight||this.inverse}};TG.merge=(e={})=>{e.styles&&typeof e.styles.enabled=="boolean"&&(wo.enabled=e.styles.enabled),e.styles&&typeof e.styles.visible=="boolean"&&(wo.visible=e.styles.visible);let t=QG.merge({},TG,e.styles);delete t.merge;for(let r of Object.keys(wo))t.hasOwnProperty(r)||Reflect.defineProperty(t,r,{get:()=>wo[r]});for(let r of Object.keys(wo.styles))t.hasOwnProperty(r)||Reflect.defineProperty(t,r,{get:()=>wo[r]});return t};Wde.exports=TG});var Jde=G((_3t,Kde)=>{"use strict";var RG=process.platform==="win32",Zp=Zu(),hst=ia(),FG={...Zp.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Zp.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Zp.symbols.question,submitted:Zp.symbols.check,cancelled:Zp.symbols.cross},separator:{pending:Zp.symbols.pointerSmall,submitted:Zp.symbols.middot,cancelled:Zp.symbols.middot},radio:{off:RG?"( )":"\u25EF",on:RG?"(*)":"\u25C9",disabled:RG?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]};FG.merge=e=>{let t=hst.merge({},Zp.symbols,FG,e.symbols);return delete t.merge,t};Kde.exports=FG});var Zde=G((H3t,zde)=>{"use strict";var dst=Vde(),gst=Jde(),mst=ia();zde.exports=e=>{e.options=mst.merge({},e.options.theme,e.options),e.symbols=gst.merge(e.options),e.styles=dst.merge(e.options)}});var rge=G((ege,tge)=>{"use strict";var Xde=process.env.TERM_PROGRAM==="Apple_Terminal",yst=Zu(),NG=ia(),Xu=tge.exports=ege,_i="\x1B[",$de="\x07",OG=!1,qd=Xu.code={bell:$de,beep:$de,beginning:`${_i}G`,down:`${_i}J`,esc:_i,getPosition:`${_i}6n`,hide:`${_i}?25l`,line:`${_i}2K`,lineEnd:`${_i}K`,lineStart:`${_i}1K`,restorePosition:_i+(Xde?"8":"u"),savePosition:_i+(Xde?"7":"s"),screen:`${_i}2J`,show:`${_i}?25h`,up:`${_i}1J`},Pm=Xu.cursor={get hidden(){return OG},hide(){return OG=!0,qd.hide},show(){return OG=!1,qd.show},forward:(e=1)=>`${_i}${e}C`,backward:(e=1)=>`${_i}${e}D`,nextLine:(e=1)=>`${_i}E`.repeat(e),prevLine:(e=1)=>`${_i}F`.repeat(e),up:(e=1)=>e?`${_i}${e}A`:"",down:(e=1)=>e?`${_i}${e}B`:"",right:(e=1)=>e?`${_i}${e}C`:"",left:(e=1)=>e?`${_i}${e}D`:"",to(e,t){return t?`${_i}${t+1};${e+1}H`:`${_i}${e+1}G`},move(e=0,t=0){let r="";return r+=e<0?Pm.left(-e):e>0?Pm.right(e):"",r+=t<0?Pm.up(-t):t>0?Pm.down(t):"",r},restore(e={}){let{after:t,cursor:r,initial:s,input:a,prompt:n,size:c,value:f}=e;if(s=NG.isPrimitive(s)?String(s):"",a=NG.isPrimitive(a)?String(a):"",f=NG.isPrimitive(f)?String(f):"",c){let p=Xu.cursor.up(c)+Xu.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Xu.cursor.left(h)),p}if(f||t){let p=!a&&s?-s.length:-a.length+r;return t&&(p-=t.length),a===""&&s&&!n.includes(s)&&(p+=s.length),Xu.cursor.move(p)}}},LG=Xu.erase={screen:qd.screen,up:qd.up,down:qd.down,line:qd.line,lineEnd:qd.lineEnd,lineStart:qd.lineStart,lines(e){let t="";for(let r=0;r{if(!t)return LG.line+Pm.to(0);let r=n=>[...yst.unstyle(n)].length,s=e.split(/\r?\n/),a=0;for(let n of s)a+=1+Math.floor(Math.max(r(n)-1,0)/t);return(LG.line+Pm.prevLine()).repeat(a-1)+LG.line+Pm.to(0)}});var zI=G((j3t,ige)=>{"use strict";var Est=Ce("events"),nge=Zu(),MG=Hde(),Ist=Gde(),Cst=Yde(),wst=Zde(),Cl=ia(),xm=rge(),UG=class e extends Est{constructor(t={}){super(),this.name=t.name,this.type=t.type,this.options=t,wst(this),Ist(this),this.state=new Cst(this),this.initial=[t.initial,t.default].find(r=>r!=null),this.stdout=t.stdout||process.stdout,this.stdin=t.stdin||process.stdin,this.scale=t.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=vst(this.options.margin),this.setMaxListeners(0),Bst(this)}async keypress(t,r={}){this.keypressed=!0;let s=MG.action(t,MG(t,r),this.options.actions);this.state.keypress=s,this.emit("keypress",t,s),this.emit("state",this.state.clone());let a=this.options[s.action]||this[s.action]||this.dispatch;if(typeof a=="function")return await a.call(this,t,s);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(xm.code.beep)}cursorHide(){this.stdout.write(xm.cursor.hide()),Cl.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(xm.cursor.show())}write(t){t&&(this.stdout&&this.state.show!==!1&&this.stdout.write(t),this.state.buffer+=t)}clear(t=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!t||this.options.show===!1)&&this.stdout.write(xm.cursor.down(t)+xm.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:t,after:r,rest:s}=this.sections(),{cursor:a,initial:n="",input:c="",value:f=""}=this,p=this.state.size=s.length,h={after:r,cursor:a,initial:n,input:c,prompt:t,size:p,value:f},E=xm.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:t,input:r,prompt:s}=this.state;s=nge.unstyle(s);let a=nge.unstyle(t),n=a.indexOf(s),c=a.slice(0,n),p=a.slice(n).split(` +`),h=p[0],E=p[p.length-1],S=(s+(r?" "+r:"")).length,x=St.call(this,this.value),this.result=()=>s.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(t,r)=>{if(this.once("submit",t),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(t,r,s){let{options:a,state:n,symbols:c,timers:f}=this,p=f&&f[t];n.timer=p;let h=a[t]||n[t]||c[t],E=r&&r[t]!=null?r[t]:await h;if(E==="")return E;let C=await this.resolve(E,n,r,s);return!C&&r&&r[t]?this.resolve(h,n,r,s):C}async prefix(){let t=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,s=this.state;return s.timer=r,Cl.isObject(t)&&(t=t[s.status]||t.pending),Cl.hasColor(t)?t:(this.styles[s.status]||this.styles.pending)(t)}async message(){let t=await this.element("message");return Cl.hasColor(t)?t:this.styles.strong(t)}async separator(){let t=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,s=this.state;s.timer=r;let a=t[s.status]||t.pending||s.separator,n=await this.resolve(a,s);return Cl.isObject(n)&&(n=n[s.status]||n.pending),Cl.hasColor(n)?n:this.styles.muted(n)}async pointer(t,r){let s=await this.element("pointer",t,r);if(typeof s=="string"&&Cl.hasColor(s))return s;if(s){let a=this.styles,n=this.index===r,c=n?a.primary:h=>h,f=await this.resolve(s[n?"on":"off"]||s,this.state),p=Cl.hasColor(f)?f:c(f);return n?p:" ".repeat(f.length)}}async indicator(t,r){let s=await this.element("indicator",t,r);if(typeof s=="string"&&Cl.hasColor(s))return s;if(s){let a=this.styles,n=t.enabled===!0,c=n?a.success:a.dark,f=s[n?"on":"off"]||s;return Cl.hasColor(f)?f:c(f)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let t=await this.element("hint");return Cl.hasColor(t)?t:this.styles.muted(t)}}error(t){return this.state.submitted?"":t||this.state.error}format(t){return t}result(t){return t}validate(t){return this.options.required===!0?this.isValue(t):!0}isValue(t){return t!=null&&t!==""}resolve(t,...r){return Cl.resolve(this,t,...r)}get base(){return e.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Cl.height(this.stdout,25)}get width(){return this.options.columns||Cl.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(t){this.state.cursor=t}get cursor(){return this.state.cursor}set input(t){this.state.input=t}get input(){return this.state.input}set value(t){this.state.value=t}get value(){let{input:t,value:r}=this.state,s=[r,t].find(this.isValue.bind(this));return this.isValue(s)?s:this.initial}static get prompt(){return t=>new this(t).run()}};function Bst(e){let t=a=>e[a]===void 0||typeof e[a]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],s=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let a of Object.keys(e.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=e.options[a];typeof n=="function"&&t(a)?s.includes(a)||(e[a]=n.bind(e)):typeof e[a]!="function"&&(e[a]=n)}}function vst(e){typeof e=="number"&&(e=[e,e,e,e]);let t=[].concat(e||[]),r=a=>a%2===0?` +`:" ",s=[];for(let a=0;a<4;a++){let n=r(a);t[a]?s.push(n.repeat(t[a])):s.push("")}return s}ige.exports=UG});var age=G((G3t,oge)=>{"use strict";var Sst=ia(),sge={default(e,t){return t},checkbox(e,t){throw new Error("checkbox role is not implemented yet")},editable(e,t){throw new Error("editable role is not implemented yet")},expandable(e,t){throw new Error("expandable role is not implemented yet")},heading(e,t){return t.disabled="",t.indicator=[t.indicator," "].find(r=>r!=null),t.message=t.message||"",t},input(e,t){throw new Error("input role is not implemented yet")},option(e,t){return sge.default(e,t)},radio(e,t){throw new Error("radio role is not implemented yet")},separator(e,t){return t.disabled="",t.indicator=[t.indicator," "].find(r=>r!=null),t.message=t.message||e.symbols.line.repeat(5),t},spacer(e,t){return t}};oge.exports=(e,t={})=>{let r=Sst.merge({},sge,t.roles);return r[e]||r.default}});var zv=G((q3t,uge)=>{"use strict";var bst=Zu(),Dst=zI(),Pst=age(),UR=ia(),{reorder:_G,scrollUp:xst,scrollDown:kst,isObject:lge,swap:Qst}=UR,HG=class extends Dst{constructor(t){super(t),this.cursorHide(),this.maxSelected=t.maxSelected||1/0,this.multiple=t.multiple||!1,this.initial=t.initial||0,this.delay=t.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:t,initial:r,autofocus:s,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(t)),this.choices.forEach(n=>n.enabled=!1),typeof a!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");lge(r)&&(r=Object.keys(r)),Array.isArray(r)?(s!=null&&(this.index=this.findIndex(s)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(s!=null&&(r=s),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(t,r){this.state.loadingChoices=!0;let s=[],a=0,n=async(c,f)=>{typeof c=="function"&&(c=await c.call(this)),c instanceof Promise&&(c=await c);for(let p=0;p(this.state.loadingChoices=!1,c))}async toChoice(t,r,s){if(typeof t=="function"&&(t=await t.call(this,this)),t instanceof Promise&&(t=await t),typeof t=="string"&&(t={name:t}),t.normalized)return t;t.normalized=!0;let a=t.value;if(t=Pst(t.role,this.options)(this,t),typeof t.disabled=="string"&&!t.hint&&(t.hint=t.disabled,t.disabled=!0),t.disabled===!0&&t.hint==null&&(t.hint="(disabled)"),t.index!=null)return t;t.name=t.name||t.key||t.title||t.value||t.message,t.message=t.message||t.name||"",t.value=[t.value,t.name].find(this.isValue.bind(this)),t.input="",t.index=r,t.cursor=0,UR.define(t,"parent",s),t.level=s?s.level+1:1,t.indent==null&&(t.indent=s?s.indent+" ":t.indent||""),t.path=s?s.path+"."+t.name:t.name,t.enabled=!!(this.multiple&&!this.isDisabled(t)&&(t.enabled||this.isSelected(t))),this.isDisabled(t)||(this.longest=Math.max(this.longest,bst.unstyle(t.message).length));let c={...t};return t.reset=(f=c.input,p=c.value)=>{for(let h of Object.keys(c))t[h]=c[h];t.input=f,t.value=p},a==null&&typeof t.initial=="function"&&(t.input=await t.initial.call(this,this.state,t,r)),t}async onChoice(t,r){this.emit("choice",t,r,this),typeof t.onChoice=="function"&&await t.onChoice.call(this,this.state,t,r)}async addChoice(t,r,s){let a=await this.toChoice(t,r,s);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(t,r,s){let a={name:"New choice name?",editable:!0,newChoice:!0,...t},n=await this.addChoice(a,r,s);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input="",n.cursor=0},this.render()}indent(t){return t.indent==null?t.level>1?" ".repeat(t.level-1):"":t.indent}dispatch(t,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(t,r){return typeof r!="boolean"&&(r=t.enabled),r&&!t.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=t.index,t.enabled=r&&!this.isDisabled(t),t)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!t),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(t=>t.enabled=!t.enabled),this.render())}g(t=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(t.parent&&!t.choices?t.parent:t),this.render()):this.a()}toggle(t,r){if(!t.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!t.enabled),t.enabled=r,t.choices&&t.choices.forEach(a=>this.toggle(a,r));let s=t.parent;for(;s;){let a=s.choices.filter(n=>this.isDisabled(n));s.enabled=a.every(n=>n.enabled===!0),s=s.parent}return cge(this,this.choices),this.emit("toggle",t,this),t}enable(t){return this.selected.length>=this.maxSelected?this.alert():(t.enabled=!this.isDisabled(t),t.choices&&t.choices.forEach(this.enable.bind(this)),t)}disable(t){return t.enabled=!1,t.choices&&t.choices.forEach(this.disable.bind(this)),t}number(t){this.num+=t;let r=s=>{let a=Number(s);if(a>this.choices.length-1)return this.alert();let n=this.focused,c=this.choices.find(f=>a===f.index);if(!c.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(c)===-1){let f=_G(this.choices),p=f.indexOf(c);if(n.index>p){let h=f.slice(p,p+this.limit),E=f.filter(C=>!h.includes(C));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=f.slice(h).concat(f.slice(0,h))}}return this.index=this.choices.indexOf(c),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(s=>{let a=this.choices.length,n=this.num,c=(f=!1,p)=>{clearTimeout(this.numberTimeout),f&&(p=r(n)),this.num="",s(p)};if(n==="0"||n.length===1&&+(n+"0")>a)return c(!0);if(Number(n)>a)return c(!1,this.alert());this.numberTimeout=setTimeout(()=>c(!0),this.delay)})}home(){return this.choices=_G(this.choices),this.index=0,this.render()}end(){let t=this.choices.length-this.limit,r=_G(this.choices);return this.choices=r.slice(t).concat(r.slice(0,t)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let t=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===0?this.alert():t>r&&s===0?this.scrollUp():(this.index=(s-1%t+t)%t,this.isDisabled()?this.up():this.render())}down(){let t=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===r-1?this.alert():t>r&&s===r-1?this.scrollDown():(this.index=(s+1)%t,this.isDisabled()?this.down():this.render())}scrollUp(t=0){return this.choices=xst(this.choices),this.index=t,this.isDisabled()?this.up():this.render()}scrollDown(t=this.visible.length-1){return this.choices=kst(this.choices),this.index=t,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(t){Qst(this.choices,this.index,t)}isDisabled(t=this.focused){return t&&["disabled","collapsed","hidden","completing","readonly"].some(s=>t[s]===!0)?!0:t&&t.role==="heading"}isEnabled(t=this.focused){if(Array.isArray(t))return t.every(r=>this.isEnabled(r));if(t.choices){let r=t.choices.filter(s=>!this.isDisabled(s));return t.enabled&&r.every(s=>this.isEnabled(s))}return t.enabled&&!this.isDisabled(t)}isChoice(t,r){return t.name===r||t.index===Number(r)}isSelected(t){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(t,r)):this.isChoice(t,this.initial)}map(t=[],r="value"){return[].concat(t||[]).reduce((s,a)=>(s[a]=this.find(a,r),s),{})}filter(t,r){let a=typeof t=="function"?t:(f,p)=>[f.name,p].includes(t),c=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?c.map(f=>f[r]):c}find(t,r){if(lge(t))return r?t[r]:t;let a=typeof t=="function"?t:(c,f)=>[c.name,f].includes(t),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(t){return this.choices.indexOf(this.find(t))}async submit(){let t=this.focused;if(!t)return this.alert();if(t.newChoice)return t.input?(t.updateChoice(),this.render()):this.alert();if(this.choices.some(c=>c.newChoice))return this.alert();let{reorder:r,sort:s}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&s!==!0&&(n=UR.reorder(n)),this.value=a?n.map(c=>c.name):n.name,super.submit())}set choices(t=[]){this.state._choices=this.state._choices||[],this.state.choices=t;for(let r of t)this.state._choices.some(s=>s.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let s=this.find(r);s&&(this.initial=s.index,this.focus(s,!0))}}}get choices(){return cge(this,this.state.choices||[])}set visible(t){this.state.visible=t}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(t){this.state.limit=t}get limit(){let{state:t,options:r,choices:s}=this,a=t.limit||this._limit||r.limit||s.length;return Math.min(a,this.height)}set value(t){super.value=t}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(t){this.state.index=t}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let t=this.choices[this.index];return t&&this.state.submitted&&this.multiple!==!0&&(t.enabled=!0),t}get selectable(){return this.choices.filter(t=>!this.isDisabled(t))}get selected(){return this.multiple?this.enabled:this.focused}};function cge(e,t){if(t instanceof Promise)return t;if(typeof t=="function"){if(UR.isAsyncFn(t))return t;t=t.call(e,e)}for(let r of t){if(Array.isArray(r.choices)){let s=r.choices.filter(a=>!e.isDisabled(a));r.enabled=s.every(a=>a.enabled===!0)}e.isDisabled(r)===!0&&delete r.enabled}return t}uge.exports=HG});var Yd=G((Y3t,fge)=>{"use strict";var Tst=zv(),jG=ia(),GG=class extends Tst{constructor(t){super(t),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(t,r){if(this.multiple)return this[r.name]?await this[r.name](t,r):await super.dispatch(t,r);this.alert()}separator(){if(this.options.separator)return super.separator();let t=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():t}pointer(t,r){return!this.multiple||this.options.pointer?super.pointer(t,r):""}indicator(t,r){return this.multiple?super.indicator(t,r):""}choiceMessage(t,r){let s=this.resolve(t.message,this.state,t,r);return t.role==="heading"&&!jG.hasColor(s)&&(s=this.styles.strong(s)),this.resolve(s,this.state,t,r)}choiceSeparator(){return":"}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=await this.pointer(t,r),n=await this.indicator(t,r)+(t.pad||""),c=await this.resolve(t.hint,this.state,t,r);c&&!jG.hasColor(c)&&(c=this.styles.muted(c));let f=this.indent(t),p=await this.choiceMessage(t,r),h=()=>[this.margin[3],f+a+n,p,this.margin[1],c].filter(Boolean).join(" ");return t.role==="heading"?h():t.disabled?(jG.hasColor(p)||(p=this.styles.disabled(p)),h()):(s&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let t=this.visible.map(async(n,c)=>await this.renderChoice(n,c)),r=await Promise.all(t);r.length||r.push(this.styles.danger("No matching choices"));let s=this.margin[0]+r.join(` +`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,s].filter(Boolean).join(` +`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(t=>this.styles.primary(t.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:t,size:r}=this.state,s="",a=await this.header(),n=await this.prefix(),c=await this.separator(),f=await this.message();this.options.promptLine!==!1&&(s=[n,f,c,""].join(" "),this.state.prompt=s);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();p&&(s+=p),h&&!s.includes(h)&&(s+=" "+h),t&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(s+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,s,E,C].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};fge.exports=GG});var pge=G((W3t,Age)=>{"use strict";var Rst=Yd(),Fst=(e,t)=>{let r=e.toLowerCase();return s=>{let n=s.toLowerCase().indexOf(r),c=t(s.slice(n,n+r.length));return n>=0?s.slice(0,n)+c+s.slice(n+r.length):s}},qG=class extends Rst{constructor(t){super(t),this.cursorShow()}moveCursor(t){this.state.cursor+=t}dispatch(t){return this.append(t)}space(t){return this.options.multiple?super.space(t):this.append(t)}append(t){let{cursor:r,input:s}=this.state;return this.input=s.slice(0,r)+t+s.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:t,input:r}=this.state;return r?(this.input=r.slice(0,t-1)+r.slice(t),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:t,input:r}=this.state;return r[t]===void 0?this.alert():(this.input=`${r}`.slice(0,t)+`${r}`.slice(t+1),this.complete())}number(t){return this.append(t)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(t=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,t,r);let s=t.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(s))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(t=>this.styles.primary(t.message)).join(", ");if(this.state.submitted){let t=this.value=this.input=this.focused.value;return this.styles.primary(t)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let t=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=Fst(this.input,t),s=this.choices;this.choices=s.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=s}submit(){return this.options.multiple&&(this.value=this.selected.map(t=>t.name)),super.submit()}};Age.exports=qG});var WG=G((V3t,hge)=>{"use strict";var YG=ia();hge.exports=(e,t={})=>{e.cursorHide();let{input:r="",initial:s="",pos:a,showCursor:n=!0,color:c}=t,f=c||e.styles.placeholder,p=YG.inverse(e.styles.primary),h=R=>p(e.styles.black(R)),E=r,C=" ",S=h(C);if(e.blink&&e.blink.off===!0&&(h=R=>R,S=""),n&&a===0&&s===""&&r==="")return h(C);if(n&&a===0&&(r===s||r===""))return h(s[0])+f(s.slice(1));s=YG.isPrimitive(s)?`${s}`:"",r=YG.isPrimitive(r)?`${r}`:"";let x=s&&s.startsWith(r)&&s!==r,I=x?h(s[r.length]):S;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),I=""),n===!1&&(I=""),x){let R=e.styles.unstyle(E+I);return E+I+f(s.slice(R.length))}return E+I}});var _R=G((K3t,dge)=>{"use strict";var Nst=Zu(),Ost=Yd(),Lst=WG(),VG=class extends Ost{constructor(t){super({...t,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(t){return await super.reset(),t===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(t){return!!t&&this.append(t)}append(t){let r=this.focused;if(!r)return this.alert();let{cursor:s,input:a}=r;return r.value=r.input=a.slice(0,s)+t+a.slice(s),r.cursor++,this.render()}delete(){let t=this.focused;if(!t||t.cursor<=0)return this.alert();let{cursor:r,input:s}=t;return t.value=t.input=s.slice(0,r-1)+s.slice(r),t.cursor--,this.render()}deleteForward(){let t=this.focused;if(!t)return this.alert();let{cursor:r,input:s}=t;if(s[r]===void 0)return this.alert();let a=`${s}`.slice(0,r)+`${s}`.slice(r+1);return t.value=t.input=a,this.render()}right(){let t=this.focused;return t?t.cursor>=t.input.length?this.alert():(t.cursor++,this.render()):this.alert()}left(){let t=this.focused;return t?t.cursor<=0?this.alert():(t.cursor--,this.render()):this.alert()}space(t,r){return this.dispatch(t,r)}number(t,r){return this.dispatch(t,r)}next(){let t=this.focused;if(!t)return this.alert();let{initial:r,input:s}=t;return r&&r.startsWith(s)&&s!==r?(t.value=t.input=r,t.cursor=t.value.length,this.render()):super.next()}prev(){let t=this.focused;return t?t.cursor===0?super.prev():(t.value=t.input="",t.cursor=0,this.render()):this.alert()}separator(){return""}format(t){return this.state.submitted?"":super.format(t)}pointer(){return""}indicator(t){return t.input?"\u29BF":"\u2299"}async choiceSeparator(t,r){let s=await this.resolve(t.separator,this.state,t,r)||":";return s?" "+this.styles.disabled(s):""}async renderChoice(t,r){await this.onChoice(t,r);let{state:s,styles:a}=this,{cursor:n,initial:c="",name:f,hint:p,input:h=""}=t,{muted:E,submitted:C,primary:S,danger:x}=a,I=p,R=this.index===r,N=t.validate||(()=>!0),U=await this.choiceSeparator(t,r),K=t.message;this.align==="right"&&(K=K.padStart(this.longest+1," ")),this.align==="left"&&(K=K.padEnd(this.longest+1," "));let $=this.values[f]=h||c,ie=h?"success":"dark";await N.call(t,$,this.state)!==!0&&(ie="danger");let fe=a[ie],le=fe(await this.indicator(t,r))+(t.pad||""),ge=this.indent(t),pe=()=>[ge,le,K+U,h,I].filter(Boolean).join(" ");if(s.submitted)return K=Nst.unstyle(K),h=C(h),I="",pe();if(t.format)h=await t.format.call(this,h,t,r);else{let De=this.styles.muted;h=Lst(this,{input:h,initial:c,pos:n,showCursor:R,color:De})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),t.result&&(this.values[f]=await t.result.call(this,$,t,r)),R&&(K=S(K)),t.error?h+=(h?" ":"")+x(t.error.trim()):t.hint&&(h+=(h?" ":"")+E(t.hint.trim())),pe()}async submit(){return this.value=this.values,super.base.submit.call(this)}};dge.exports=VG});var KG=G((J3t,mge)=>{"use strict";var Mst=_R(),Ust=()=>{throw new Error("expected prompt to have a custom authenticate method")},gge=(e=Ust)=>{class t extends Mst{constructor(s){super(s)}async submit(){this.value=await e.call(this,this.values,this.state),super.base.submit.call(this)}static create(s){return gge(s)}}return t};mge.exports=gge()});var Ige=G((z3t,Ege)=>{"use strict";var _st=KG();function Hst(e,t){return e.username===this.options.username&&e.password===this.options.password}var yge=(e=Hst)=>{let t=[{name:"username",message:"username"},{name:"password",message:"password",format(s){return this.options.showPassword?s:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(s.length))}}];class r extends _st.create(e){constructor(a){super({...a,choices:t})}static create(a){return yge(a)}}return r};Ege.exports=yge()});var HR=G((Z3t,Cge)=>{"use strict";var jst=zI(),{isPrimitive:Gst,hasColor:qst}=ia(),JG=class extends jst{constructor(t){super(t),this.cursorHide()}async initialize(){let t=await this.resolve(this.initial,this.state);this.input=await this.cast(t),await super.initialize()}dispatch(t){return this.isValue(t)?(this.input=t,this.submit()):this.alert()}format(t){let{styles:r,state:s}=this;return s.submitted?r.success(t):r.primary(t)}cast(t){return this.isTrue(t)}isTrue(t){return/^[ty1]/i.test(t)}isFalse(t){return/^[fn0]/i.test(t)}isValue(t){return Gst(t)&&(this.isTrue(t)||this.isFalse(t))}async hint(){if(this.state.status==="pending"){let t=await this.element("hint");return qst(t)?t:this.styles.muted(t)}}async render(){let{input:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=this.styles.muted(this.default),f=[s,n,c,a].filter(Boolean).join(" ");this.state.prompt=f;let p=await this.header(),h=this.value=this.cast(t),E=await this.format(h),C=await this.error()||await this.hint(),S=await this.footer();C&&!f.includes(C)&&(E+=" "+C),f+=" "+E,this.clear(r),this.write([p,f,S].filter(Boolean).join(` +`)),this.restore()}set value(t){super.value=t}get value(){return this.cast(super.value)}};Cge.exports=JG});var Bge=G((X3t,wge)=>{"use strict";var Yst=HR(),zG=class extends Yst{constructor(t){super(t),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};wge.exports=zG});var Sge=G(($3t,vge)=>{"use strict";var Wst=Yd(),Vst=_R(),ZI=Vst.prototype,ZG=class extends Wst{constructor(t){super({...t,multiple:!0}),this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(t,r){let s=this.focused,a=s.parent||{};return!s.editable&&!a.editable&&(t==="a"||t==="i")?super[t]():ZI.dispatch.call(this,t,r)}append(t,r){return ZI.append.call(this,t,r)}delete(t,r){return ZI.delete.call(this,t,r)}space(t){return this.focused.editable?this.append(t):super.space()}number(t){return this.focused.editable?this.append(t):super.number(t)}next(){return this.focused.editable?ZI.next.call(this):super.next()}prev(){return this.focused.editable?ZI.prev.call(this):super.prev()}async indicator(t,r){let s=t.indicator||"",a=t.editable?s:super.indicator(t,r);return await this.resolve(a,this.state,t,r)||""}indent(t){return t.role==="heading"?"":t.editable?" ":" "}async renderChoice(t,r){return t.indent="",t.editable?ZI.renderChoice.call(this,t,r):super.renderChoice(t,r)}error(){return""}footer(){return this.state.error}async validate(){let t=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let s=r.parent?this.value[r.parent.name]:this.value;if(r.editable?s=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(s=r.enabled===!0),t=await r.validate(s,this.state),t!==!0)break}return t!==!0&&(this.state.error=typeof t=="string"?t:"Invalid Input"),t}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(t=>t.newChoice))return this.alert();this.value={};for(let t of this.choices){let r=t.parent?this.value[t.parent.name]:this.value;if(t.role==="heading"){this.value[t.name]={};continue}t.editable?r[t.name]=t.value===t.name?t.initial||"":t.value:this.isDisabled(t)||(r[t.name]=t.enabled===!0)}return this.base.submit.call(this)}};vge.exports=ZG});var km=G((e8t,bge)=>{"use strict";var Kst=zI(),Jst=WG(),{isPrimitive:zst}=ia(),XG=class extends Kst{constructor(t){super(t),this.initial=zst(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(t,r={}){let s=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!s||s.name!=="return")?this.append(` +`,r):super.keypress(t,r)}moveCursor(t){this.cursor+=t}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(t,r){if(!t||r.ctrl||r.code)return this.alert();this.append(t)}append(t){let{cursor:r,input:s}=this.state;this.input=`${s}`.slice(0,r)+t+`${s}`.slice(r),this.moveCursor(String(t).length),this.render()}insert(t){this.append(t)}delete(){let{cursor:t,input:r}=this.state;if(t<=0)return this.alert();this.input=`${r}`.slice(0,t-1)+`${r}`.slice(t),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:t,input:r}=this.state;if(r[t]===void 0)return this.alert();this.input=`${r}`.slice(0,t)+`${r}`.slice(t+1),this.render()}cutForward(){let t=this.cursor;if(this.input.length<=t)return this.alert();this.state.clipboard.push(this.input.slice(t)),this.input=this.input.slice(0,t),this.render()}cutLeft(){let t=this.cursor;if(t===0)return this.alert();let r=this.input.slice(0,t),s=this.input.slice(t),a=r.split(" ");this.state.clipboard.push(a.pop()),this.input=a.join(" "),this.cursor=this.input.length,this.input+=s,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let t=this.initial!=null?String(this.initial):"";if(!t||!t.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(t){return!!t}async format(t=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(t||r):Jst(this,{input:t,initial:r,pos:this.cursor})}async render(){let t=this.state.size,r=await this.prefix(),s=await this.separator(),a=await this.message(),n=[r,a,s].filter(Boolean).join(" ");this.state.prompt=n;let c=await this.header(),f=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!f.includes(p)&&(f+=" "+p),n+=" "+f,this.clear(t),this.write([c,n,h].filter(Boolean).join(` +`)),this.restore()}};bge.exports=XG});var Pge=G((t8t,Dge)=>{"use strict";var Zst=e=>e.filter((t,r)=>e.lastIndexOf(t)===r),jR=e=>Zst(e).filter(Boolean);Dge.exports=(e,t={},r="")=>{let{past:s=[],present:a=""}=t,n,c;switch(e){case"prev":case"undo":return n=s.slice(0,s.length-1),c=s[s.length-1]||"",{past:jR([r,...n]),present:c};case"next":case"redo":return n=s.slice(1),c=s[0]||"",{past:jR([...n,r]),present:c};case"save":return{past:jR([...s,r]),present:""};case"remove":return c=jR(s.filter(f=>f!==r)),a="",c.length&&(a=c.pop()),{past:c,present:a};default:throw new Error(`Invalid action: "${e}"`)}}});var e5=G((r8t,kge)=>{"use strict";var Xst=km(),xge=Pge(),$G=class extends Xst{constructor(t){super(t);let r=this.options.history;if(r&&r.store){let s=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:s},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(t){return this.store?(this.data=xge(t,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){this.store&&(this.data=xge("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};kge.exports=$G});var Tge=G((n8t,Qge)=>{"use strict";var $st=km(),t5=class extends $st{format(){return""}};Qge.exports=t5});var Fge=G((i8t,Rge)=>{"use strict";var eot=km(),r5=class extends eot{constructor(t={}){super(t),this.sep=this.options.separator||/, */,this.initial=t.initial||""}split(t=this.value){return t?String(t).split(this.sep):[]}format(){let t=this.state.submitted?this.styles.primary:r=>r;return this.list.map(t).join(", ")}async submit(t){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};Rge.exports=r5});var Oge=G((s8t,Nge)=>{"use strict";var tot=Yd(),n5=class extends tot{constructor(t){super({...t,multiple:!0})}};Nge.exports=n5});var s5=G((o8t,Lge)=>{"use strict";var rot=km(),i5=class extends rot{constructor(t={}){super({style:"number",...t}),this.min=this.isValue(t.min)?this.toNumber(t.min):-1/0,this.max=this.isValue(t.max)?this.toNumber(t.max):1/0,this.delay=t.delay!=null?t.delay:1e3,this.float=t.float!==!1,this.round=t.round===!0||t.float===!1,this.major=t.major||10,this.minor=t.minor||1,this.initial=t.initial!=null?t.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(t){return!/[-+.]/.test(t)||t==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(t)}number(t){return super.append(t)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(t){let r=t||this.minor,s=this.toNumber(this.input);return s>this.max+r?this.alert():(this.input=`${s+r}`,this.render())}down(t){let r=t||this.minor,s=this.toNumber(this.input);return sthis.isValue(r));return this.value=this.toNumber(t||0),super.submit()}};Lge.exports=i5});var Uge=G((a8t,Mge)=>{Mge.exports=s5()});var Hge=G((l8t,_ge)=>{"use strict";var not=km(),o5=class extends not{constructor(t){super(t),this.cursorShow()}format(t=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(t.length)):""}};_ge.exports=o5});var qge=G((c8t,Gge)=>{"use strict";var iot=Zu(),sot=zv(),jge=ia(),a5=class extends sot{constructor(t={}){super(t),this.widths=[].concat(t.messageWidth||50),this.align=[].concat(t.align||"left"),this.linebreak=t.linebreak||!1,this.edgeLength=t.edgeLength||3,this.newline=t.newline||` + `;let r=t.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((s,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let t=0;for(let r of this.choices){t=Math.max(t,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let s=0;s=this.scale.length-1?this.alert():(t.scaleIndex++,this.render())}left(){let t=this.focused;return t.scaleIndex<=0?this.alert():(t.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?"":["",...this.scale.map(s=>` ${s.name} - ${s.message}`)].map(s=>this.styles.muted(s)).join(` +`)}renderScaleHeading(t){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,t));let s=this.scaleLength-r.join("").length,a=Math.round(s/(r.length-1)),c=r.map(p=>this.styles.strong(p)).join(" ".repeat(a)),f=" ".repeat(this.widths[0]);return this.margin[3]+f+this.margin[1]+c}scaleIndicator(t,r,s){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,t,r,s);let a=t.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(t,r){let s=t.scale.map(n=>this.scaleIndicator(t,n,r)),a=this.term==="Hyper"?"":" ";return s.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=await this.pointer(t,r),n=await t.hint;n&&!jge.hasColor(n)&&(n=this.styles.muted(n));let c=I=>this.margin[3]+I.replace(/\s+$/,"").padEnd(this.widths[0]," "),f=this.newline,p=this.indent(t),h=await this.resolve(t.message,this.state,t,r),E=await this.renderScale(t,r),C=this.margin[1]+this.margin[3];this.scaleLength=iot.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-C.length);let x=jge.wordWrap(h,{width:this.widths[0],newline:f}).split(` +`).map(I=>c(I)+this.margin[1]);return s&&(E=this.styles.info(E),x=x.map(I=>this.styles.info(I))),x[0]+=E,this.linebreak&&x.push(""),[p+a,x.join(` +`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let t=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(t),s=await this.renderScaleHeading();return this.margin[0]+[s,...r.map(a=>a.join(" "))].join(` +`)}async render(){let{submitted:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c="";this.options.promptLine!==!1&&(c=[s,n,a,""].join(" "),this.state.prompt=c);let f=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),C=await this.renderChoices(),S=await this.footer(),x=this.emptyError;p&&(c+=p),E&&!c.includes(E)&&(c+=" "+E),t&&!p&&!C.trim()&&this.multiple&&x!=null&&(c+=this.styles.danger(x)),this.clear(r),this.write([f,c,h,C,S].filter(Boolean).join(` +`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let t of this.choices)this.value[t.name]=t.scaleIndex;return this.base.submit.call(this)}};Gge.exports=a5});var Vge=G((u8t,Wge)=>{"use strict";var Yge=Zu(),oot=(e="")=>typeof e=="string"?e.replace(/^['"]|['"]$/g,""):"",c5=class{constructor(t){this.name=t.key,this.field=t.field||{},this.value=oot(t.initial||this.field.initial||""),this.message=t.message||this.name,this.cursor=0,this.input="",this.lines=[]}},aot=async(e={},t={},r=s=>s)=>{let s=new Set,a=e.fields||[],n=e.template,c=[],f=[],p=[],h=1;typeof n=="function"&&(n=await n());let E=-1,C=()=>n[++E],S=()=>n[E+1],x=I=>{I.line=h,c.push(I)};for(x({type:"bos",value:""});Eie.name===U.key);U.field=a.find(ie=>ie.name===U.key),$||($=new c5(U),f.push($)),$.lines.push(U.line-1);continue}let R=c[c.length-1];R.type==="text"&&R.line===h?R.value+=I:x({type:"text",value:I})}return x({type:"eos",value:""}),{input:n,tabstops:c,unique:s,keys:p,items:f}};Wge.exports=async e=>{let t=e.options,r=new Set(t.required===!0?[]:t.required||[]),s={...t.values,...t.initial},{tabstops:a,items:n,keys:c}=await aot(t,s),f=l5("result",e,t),p=l5("format",e,t),h=l5("validate",e,t,!0),E=e.isValue.bind(e);return async(C={},S=!1)=>{let x=0;C.required=r,C.items=n,C.keys=c,C.output="";let I=async(K,$,ie,fe)=>{let le=await h(K,$,ie,fe);return le===!1?"Invalid field "+ie.name:le};for(let K of a){let $=K.value,ie=K.key;if(K.type!=="template"){$&&(C.output+=$);continue}if(K.type==="template"){let fe=n.find(ye=>ye.name===ie);t.required===!0&&C.required.add(fe.name);let le=[fe.input,C.values[fe.value],fe.value,$].find(E),pe=(fe.field||{}).message||K.inner;if(S){let ye=await I(C.values[ie],C,fe,x);if(ye&&typeof ye=="string"||ye===!1){C.invalid.set(ie,ye);continue}C.invalid.delete(ie);let d=await f(C.values[ie],C,fe,x);C.output+=Yge.unstyle(d);continue}fe.placeholder=!1;let De=$;$=await p($,C,fe,x),le!==$?(C.values[ie]=le,$=e.styles.typing(le),C.missing.delete(pe)):(C.values[ie]=void 0,le=`<${pe}>`,$=e.styles.primary(le),fe.placeholder=!0,C.required.has(ie)&&C.missing.add(pe)),C.missing.has(pe)&&C.validating&&($=e.styles.warning(le)),C.invalid.has(ie)&&C.validating&&($=e.styles.danger(le)),x===C.index&&(De!==$?$=e.styles.underline($):$=e.styles.heading(Yge.unstyle($))),x++}$&&(C.output+=$)}let R=C.output.split(` +`).map(K=>" "+K),N=n.length,U=0;for(let K of n)C.invalid.has(K.name)&&K.lines.forEach($=>{R[$][0]===" "&&(R[$]=C.styles.danger(C.symbols.bullet)+R[$].slice(1))}),e.isValue(C.values[K.name])&&U++;return C.completed=(U/N*100).toFixed(0),C.output=R.join(` +`),C.output}};function l5(e,t,r,s){return(a,n,c,f)=>typeof c.field[e]=="function"?c.field[e].call(t,a,n,c,f):[s,a].find(p=>t.isValue(p))}});var Jge=G((f8t,Kge)=>{"use strict";var lot=Zu(),cot=Vge(),uot=zI(),u5=class extends uot{constructor(t){super(t),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await cot(this),await super.initialize()}async reset(t){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},t!==!0&&(await this.initialize(),await this.render())}moveCursor(t){let r=this.getItem();this.cursor+=t,r.cursor+=t}dispatch(t,r){if(!r.code&&!r.ctrl&&t!=null&&this.getItem()){this.append(t,r);return}this.alert()}append(t,r){let s=this.getItem(),a=s.input.slice(0,this.cursor),n=s.input.slice(this.cursor);this.input=s.input=`${a}${t}${n}`,this.moveCursor(1),this.render()}delete(){let t=this.getItem();if(this.cursor<=0||!t.input)return this.alert();let r=t.input.slice(this.cursor),s=t.input.slice(0,this.cursor-1);this.input=t.input=`${s}${r}`,this.moveCursor(-1),this.render()}increment(t){return t>=this.state.keys.length-1?0:t+1}decrement(t){return t<=0?this.state.keys.length-1:t-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(t){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:t,keys:r=[],submitted:s,size:a}=this.state,n=[this.options.newline,` +`].find(K=>K!=null),c=await this.prefix(),f=await this.separator(),p=await this.message(),h=[c,p,f].filter(Boolean).join(" ");this.state.prompt=h;let E=await this.header(),C=await this.error()||"",S=await this.hint()||"",x=s?"":await this.interpolate(this.state),I=this.state.key=r[t]||"",R=await this.format(I),N=await this.footer();R&&(h+=" "+R),S&&!R&&this.state.completed===0&&(h+=" "+S),this.clear(a);let U=[E,h,x,N,C.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(t){let{items:r,keys:s,index:a}=this.state,n=r.find(c=>c.name===s[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:t,missing:r,output:s,values:a}=this.state;if(t.size){let f="";for(let[p,h]of t)f+=`Invalid ${p}: ${h} +`;return this.state.error=f,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let c=lot.unstyle(s).split(` +`).map(f=>f.slice(1)).join(` +`);return this.value={values:a,result:c},super.submit()}};Kge.exports=u5});var Zge=G((A8t,zge)=>{"use strict";var fot="(Use + to sort)",Aot=Yd(),f5=class extends Aot{constructor(t){super({...t,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,fot].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(t,r){let s=await super.renderChoice(t,r),a=this.symbols.identicalTo+" ",n=this.index===r&&this.sorting?this.styles.muted(a):" ";return this.options.drag===!1&&(n=""),this.options.numbered===!0?n+`${r+1} - `+s:n+s}get selected(){return this.choices}submit(){return this.value=this.choices.map(t=>t.value),super.submit()}};zge.exports=f5});var $ge=G((p8t,Xge)=>{"use strict";var pot=zv(),A5=class extends pot{constructor(t={}){if(super(t),this.emptyError=t.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(s=>this.styles.muted(s)),this.state.header=r.join(` + `)}}async toChoices(...t){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...t);for(let s of r)s.scale=hot(5,this.options),s.scaleIdx=2;return r}dispatch(){this.alert()}space(){let t=this.focused,r=t.scale[t.scaleIdx],s=r.selected;return t.scale.forEach(a=>a.selected=!1),r.selected=!s,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let t=this.focused;return t.scaleIdx>=t.scale.length-1?this.alert():(t.scaleIdx++,this.render())}left(){let t=this.focused;return t.scaleIdx<=0?this.alert():(t.scaleIdx--,this.render())}indent(){return" "}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=this.term==="Hyper",n=a?9:8,c=a?"":" ",f=this.symbols.line.repeat(n),p=" ".repeat(n+(a?0:1)),h=$=>($?this.styles.success("\u25C9"):"\u25EF")+c,E=r+1+".",C=s?this.styles.heading:this.styles.noop,S=await this.resolve(t.message,this.state,t,r),x=this.indent(t),I=x+t.scale.map(($,ie)=>h(ie===t.scaleIdx)).join(f),R=$=>$===t.scaleIdx?C($):$,N=x+t.scale.map(($,ie)=>R(ie)).join(p),U=()=>[E,S].filter(Boolean).join(" "),K=()=>[U(),I,N," "].filter(Boolean).join(` +`);return s&&(I=this.styles.cyan(I),N=this.styles.cyan(N)),K()}async renderChoices(){if(this.state.submitted)return"";let t=this.visible.map(async(s,a)=>await this.renderChoice(s,a)),r=await Promise.all(t);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` +`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=[s,n,a].filter(Boolean).join(" ");this.state.prompt=c;let f=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();(p||!h)&&(c+=" "+p),h&&!c.includes(h)&&(c+=" "+h),t&&!p&&!E&&this.multiple&&this.type!=="form"&&(c+=this.styles.danger(this.emptyError)),this.clear(r),this.write([c,f,E,C].filter(Boolean).join(` +`)),this.restore()}submit(){this.value={};for(let t of this.choices)this.value[t.name]=t.scaleIdx;return this.base.submit.call(this)}};function hot(e,t={}){if(Array.isArray(t.scale))return t.scale.map(s=>({...s}));let r=[];for(let s=1;s{e0e.exports=e5()});var n0e=G((d8t,r0e)=>{"use strict";var dot=HR(),p5=class extends dot{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(t="",r){switch(t.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let t=s=>this.styles.primary.underline(s);return[this.value?this.disabled:t(this.disabled),this.value?t(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:t}=this.state,r=await this.header(),s=await this.prefix(),a=await this.separator(),n=await this.message(),c=await this.format(),f=await this.error()||await this.hint(),p=await this.footer(),h=[s,n,a,c].join(" ");this.state.prompt=h,f&&!h.includes(f)&&(h+=" "+f),this.clear(t),this.write([r,h,p].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};r0e.exports=p5});var s0e=G((g8t,i0e)=>{"use strict";var got=Yd(),h5=class extends got{constructor(t){if(super(t),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(t,r){let s=await super.toChoices(t,r);if(s.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>s.length)throw new Error("Please specify the index of the correct answer from the list of choices");return s}check(t){return t.index===this.options.correctChoice}async result(t){return{selectedAnswer:t,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};i0e.exports=h5});var a0e=G(d5=>{"use strict";var o0e=ia(),Rs=(e,t)=>{o0e.defineExport(d5,e,t),o0e.defineExport(d5,e.toLowerCase(),t)};Rs("AutoComplete",()=>pge());Rs("BasicAuth",()=>Ige());Rs("Confirm",()=>Bge());Rs("Editable",()=>Sge());Rs("Form",()=>_R());Rs("Input",()=>e5());Rs("Invisible",()=>Tge());Rs("List",()=>Fge());Rs("MultiSelect",()=>Oge());Rs("Numeral",()=>Uge());Rs("Password",()=>Hge());Rs("Scale",()=>qge());Rs("Select",()=>Yd());Rs("Snippet",()=>Jge());Rs("Sort",()=>Zge());Rs("Survey",()=>$ge());Rs("Text",()=>t0e());Rs("Toggle",()=>n0e());Rs("Quiz",()=>s0e())});var c0e=G((y8t,l0e)=>{l0e.exports={ArrayPrompt:zv(),AuthPrompt:KG(),BooleanPrompt:HR(),NumberPrompt:s5(),StringPrompt:km()}});var Xv=G((E8t,f0e)=>{"use strict";var u0e=Ce("assert"),m5=Ce("events"),Wd=ia(),$u=class extends m5{constructor(t,r){super(),this.options=Wd.merge({},t),this.answers={...r}}register(t,r){if(Wd.isObject(t)){for(let a of Object.keys(t))this.register(a,t[a]);return this}u0e.equal(typeof r,"function","expected a function");let s=t.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[s]=r:this.prompts[s]=r(this.Prompt,this),this}async prompt(t=[]){for(let r of[].concat(t))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(Wd.merge({},this.options,r))}catch(s){return Promise.reject(s)}return this.answers}async ask(t){typeof t=="function"&&(t=await t.call(this));let r=Wd.merge({},this.options,t),{type:s,name:a}=t,{set:n,get:c}=Wd;if(typeof s=="function"&&(s=await s.call(this,t,this.answers)),!s)return this.answers[a];u0e(this.prompts[s],`Prompt "${s}" is not registered`);let f=new this.prompts[s](r),p=c(this.answers,a);f.state.answers=this.answers,f.enquirer=this,a&&f.on("submit",E=>{this.emit("answer",a,E,f),n(this.answers,a,E)});let h=f.emit.bind(f);return f.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit("prompt",f,this),r.autofill&&p!=null?(f.value=f.input=p,r.autofill==="show"&&await f.submit()):p=f.value=await f.run(),p}use(t){return t.call(this,this),this}set Prompt(t){this._Prompt=t}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(t){this._Prompt=t}static get Prompt(){return this._Prompt||zI()}static get prompts(){return a0e()}static get types(){return c0e()}static get prompt(){let t=(r,...s)=>{let a=new this(...s),n=a.emit.bind(a);return a.emit=(...c)=>(t.emit(...c),n(...c)),a.prompt(r)};return Wd.mixinEmitter(t,new m5),t}};Wd.mixinEmitter($u,new m5);var g5=$u.prompts;for(let e of Object.keys(g5)){let t=e.toLowerCase(),r=s=>new g5[e](s).run();$u.prompt[t]=r,$u[t]=r,$u[e]||Reflect.defineProperty($u,e,{get:()=>g5[e]})}var Zv=e=>{Wd.defineExport($u,e,()=>$u.types[e])};Zv("ArrayPrompt");Zv("AuthPrompt");Zv("BooleanPrompt");Zv("NumberPrompt");Zv("StringPrompt");f0e.exports=$u});var E0e=G((jHt,Sot)=>{Sot.exports={name:"@yarnpkg/cli",version:"4.17.1",license:"BSD-2-Clause",main:"./sources/index.ts",exports:{".":"./sources/index.ts","./polyfills":"./sources/polyfills.ts","./package.json":"./package.json"},dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-catalog":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-constraints":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-exec":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-interactive-tools":"workspace:^","@yarnpkg/plugin-jsr":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/plugin-stage":"workspace:^","@yarnpkg/plugin-typescript":"workspace:^","@yarnpkg/plugin-version":"workspace:^","@yarnpkg/plugin-workspace-tools":"workspace:^","@yarnpkg/shell":"workspace:^","ci-info":"^4.0.0",clipanion:"^4.0.0-rc.2",semver:"^7.1.2",tslib:"^2.4.0",typanion:"^3.14.0"},devDependencies:{"@types/semver":"^7.1.0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",bin:null,exports:{".":"./lib/index.js","./package.json":"./package.json"}},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-catalog","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]}},repository:{type:"git",url:"git+https://github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=18.12.0"}}});var R5=G((y5t,Q0e)=>{"use strict";Q0e.exports=function(t,r){r===!0&&(r=0);var s="";if(typeof t=="string")try{s=new URL(t).protocol}catch{}else t&&t.constructor===URL&&(s=t.protocol);var a=s.split(/\:|\+/).filter(Boolean);return typeof r=="number"?a[r]:a}});var R0e=G((E5t,T0e)=>{"use strict";var Yot=R5();function Wot(e){var t={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:e,query:{},parse_failed:!1};try{var r=new URL(e);t.protocols=Yot(r),t.protocol=t.protocols[0],t.port=r.port,t.resource=r.hostname,t.host=r.host,t.user=r.username||"",t.password=r.password||"",t.pathname=r.pathname,t.hash=r.hash.slice(1),t.search=r.search.slice(1),t.href=r.href,t.query=Object.fromEntries(r.searchParams)}catch{t.protocols=["file"],t.protocol=t.protocols[0],t.port="",t.resource="",t.user="",t.pathname="",t.hash="",t.search="",t.href=e,t.query={},t.parse_failed=!0}return t}T0e.exports=Wot});var O0e=G((I5t,N0e)=>{"use strict";var Vot=R0e();function Kot(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var Jot=Kot(Vot),zot="text/plain",Zot="us-ascii",F0e=(e,t)=>t.some(r=>r instanceof RegExp?r.test(e):r===e),Xot=(e,{stripHash:t})=>{let r=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(e);if(!r)throw new Error(`Invalid URL: ${e}`);let{type:s,data:a,hash:n}=r.groups,c=s.split(";");n=t?"":n;let f=!1;c[c.length-1]==="base64"&&(c.pop(),f=!0);let p=(c.shift()||"").toLowerCase(),E=[...c.map(C=>{let[S,x=""]=C.split("=").map(I=>I.trim());return S==="charset"&&(x=x.toLowerCase(),x===Zot)?"":`${S}${x?`=${x}`:""}`}).filter(Boolean)];return f&&E.push("base64"),(E.length>0||p&&p!==zot)&&E.unshift(p),`data:${E.join(";")},${f?a.trim():a}${n?`#${n}`:""}`};function $ot(e,t){if(t={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},e=e.trim(),/^data:/i.test(e))return Xot(e,t);if(/^view-source:/i.test(e))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let r=e.startsWith("//");!r&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,t.defaultProtocol));let a=new URL(e);if(t.forceHttp&&t.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(t.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),t.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),t.stripAuthentication&&(a.username="",a.password=""),t.stripHash?a.hash="":t.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,"")),a.pathname){let c=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,f=0,p="";for(;;){let E=c.exec(a.pathname);if(!E)break;let C=E[0],S=E.index,x=a.pathname.slice(f,S);p+=x.replace(/\/{2,}/g,"/"),p+=C,f=S+C.length}let h=a.pathname.slice(f,a.pathname.length);p+=h.replace(/\/{2,}/g,"/"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let c=a.pathname.split("/"),f=c[c.length-1];F0e(f,t.removeDirectoryIndex)&&(c=c.slice(0,-1),a.pathname=c.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(let c of[...a.searchParams.keys()])F0e(c,t.removeQueryParameters)&&a.searchParams.delete(c);if(t.removeQueryParameters===!0&&(a.search=""),t.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}t.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,""));let n=e;return e=a.toString(),!t.removeSingleSlash&&a.pathname==="/"&&!n.endsWith("/")&&a.hash===""&&(e=e.replace(/\/$/,"")),(t.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&t.removeSingleSlash&&(e=e.replace(/\/$/,"")),r&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\/\//,"")),e}var F5=(e,t=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,s=n=>{let c=new Error(n);throw c.subject_url=e,c};(typeof e!="string"||!e.trim())&&s("Invalid url."),e.length>F5.MAX_INPUT_LENGTH&&s("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),t&&(typeof t!="object"&&(t={stripHash:!1}),e=$ot(e,t));let a=Jot.default(e);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=["ssh"],a.protocol="ssh",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):s("URL parsing failed.")}return a};F5.MAX_INPUT_LENGTH=2048;N0e.exports=F5});var U0e=G((C5t,M0e)=>{"use strict";var eat=R5();function L0e(e){if(Array.isArray(e))return e.indexOf("ssh")!==-1||e.indexOf("rsync")!==-1;if(typeof e!="string")return!1;var t=eat(e);if(e=e.substring(e.indexOf("://")+3),L0e(t))return!0;var r=new RegExp(".([a-zA-Z\\d]+):(\\d+)/");return!e.match(r)&&e.indexOf("@"){"use strict";var tat=O0e(),_0e=U0e();function rat(e){var t=tat(e);return t.token="",t.password==="x-oauth-basic"?t.token=t.user:t.user==="x-token-auth"&&(t.token=t.password),_0e(t.protocols)||t.protocols.length===0&&_0e(e)?t.protocol="ssh":t.protocols.length?t.protocol=t.protocols[0]:(t.protocol="file",t.protocols=["file"]),t.href=t.href.replace(/\/$/,""),t}H0e.exports=rat});var q0e=G((B5t,G0e)=>{"use strict";var nat=j0e();function N5(e){if(typeof e!="string")throw new Error("The url must be a string.");var t=/^([a-z\d-]{1,39})\/([-\.\w]{1,100})$/i;t.test(e)&&(e="https://github.com/"+e);var r=nat(e),s=r.resource.split("."),a=null;switch(r.toString=function(N){return N5.stringify(this,N)},r.source=s.length>2?s.slice(1-s.length).join("."):r.source=r.resource,r.git_suffix=/\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\/)|(\/$)/g,"").replace(/\.git$/,"")),r.owner=decodeURIComponent(r.user),r.source){case"git.cloudforge.com":r.owner=r.user,r.organization=s[0],r.source="cloudforge.com";break;case"visualstudio.com":if(r.resource==="vs-ssh.visualstudio.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+"/"+a[3]);break}else{a=r.name.split("/"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name);break}case"dev.azure.com":case"azure.com":if(r.resource==="ssh.dev.azure.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split("/"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\/+/g,"")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,""));break}default:a=r.name.split("/");var n=a.length-1;if(a.length>=2){var c=a.indexOf("-",2),f=a.indexOf("blob",2),p=a.indexOf("tree",2),h=a.indexOf("commit",2),E=a.indexOf("src",2),C=a.indexOf("raw",2),S=a.indexOf("edit",2);n=c>0?c-1:f>0?f-1:p>0?p-1:h>0?h-1:E>0?E-1:C>0?C-1:S>0?S-1:n,r.owner=a.slice(0,n).join("/"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref="",r.filepathtype="",r.filepath="";var x=a.length>n&&a[n+1]==="-"?n+1:n;a.length>x+2&&["raw","src","blob","tree","edit"].indexOf(a[x+1])>=0&&(r.filepathtype=a[x+1],r.ref=a[x+2],a.length>x+3&&(r.filepath=a.slice(x+3).join("/"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+="/"),r.full_name+=r.name)),r.owner.startsWith("scm/")&&(r.source="bitbucket-server",r.owner=r.owner.replace("scm/",""),r.organization=r.owner,r.full_name=r.owner+"/"+r.name);var I=/(projects|users)\/(.*?)\/repos\/(.*?)((\/.*$)|$)/,R=I.exec(r.pathname);return R!=null&&(r.source="bitbucket-server",R[1]==="users"?r.owner="~"+R[2]:r.owner=R[2],r.organization=r.owner,r.name=R[3],a=R[4].split("/"),a.length>1&&(["raw","browse"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join("/"))):a[1]==="commits"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+"/"+r.name,r.query.at?r.ref=r.query.at:r.ref=""),r}N5.stringify=function(e,t){t=t||(e.protocols&&e.protocols.length?e.protocols.join("+"):e.protocol);var r=e.port?":"+e.port:"",s=e.user||"git",a=e.git_suffix?".git":"";switch(t){case"ssh":return r?"ssh://"+s+"@"+e.resource+r+"/"+e.full_name+a:s+"@"+e.resource+":"+e.full_name+a;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return t+"://"+s+"@"+e.resource+r+"/"+e.full_name+a;case"http":case"https":var n=e.token?iat(e):e.user&&(e.protocols.includes("http")||e.protocols.includes("https"))?e.user+"@":"";return t+"://"+n+e.resource+r+"/"+sat(e)+a;default:return e.href}};function iat(e){switch(e.source){case"bitbucket.org":return"x-token-auth:"+e.token+"@";default:return e.token+"@"}}function sat(e){switch(e.source){case"bitbucket-server":return"scm/"+e.full_name;default:return""+e.full_name}}G0e.exports=N5});function Bat(e,t){return t===1&&wat.has(e[0])}function lS(e){let t=Array.isArray(e)?e:Lu(e);return t.map((s,a)=>Iat.test(s)?`[${s}]`:Cat.test(s)&&!Bat(t,a)?`.${s}`:`[${JSON.stringify(s)}]`).join("").replace(/^\./,"")}function vat(e,t){let r=[];if(t.methodName!==null&&r.push(ue.pretty(e,t.methodName,ue.Type.CODE)),t.file!==null){let s=[];s.push(ue.pretty(e,t.file,ue.Type.PATH)),t.line!==null&&(s.push(ue.pretty(e,t.line,ue.Type.NUMBER)),t.column!==null&&s.push(ue.pretty(e,t.column,ue.Type.NUMBER))),r.push(`(${s.join(ue.pretty(e,":","grey"))})`)}return r.join(" ")}function VR(e,{manifestUpdates:t,reportedErrors:r},{fix:s}={}){let a=new Map,n=new Map,c=[...r.keys()].map(f=>[f,new Map]);for(let[f,p]of[...c,...t]){let h=r.get(f)?.map(x=>({text:x,fixable:!1}))??[],E=!1,C=e.getWorkspaceByCwd(f),S=C.manifest.exportTo({});for(let[x,I]of p){if(I.size>1){let R=[...I].map(([N,U])=>{let K=ue.pretty(e.configuration,N,ue.Type.INSPECT),$=U.size>0?vat(e.configuration,U.values().next().value):null;return $!==null?` +${K} at ${$}`:` +${K}`}).join("");h.push({text:`Conflict detected in constraint targeting ${ue.pretty(e.configuration,x,ue.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=I,N=xa(S,x);if(JSON.stringify(N)===JSON.stringify(R))continue;if(!s){let U=typeof N>"u"?`Missing field ${ue.pretty(e.configuration,x,ue.Type.CODE)}; expected ${ue.pretty(e.configuration,R,ue.Type.INSPECT)}`:typeof R>"u"?`Extraneous field ${ue.pretty(e.configuration,x,ue.Type.CODE)} currently set to ${ue.pretty(e.configuration,N,ue.Type.INSPECT)}`:`Invalid field ${ue.pretty(e.configuration,x,ue.Type.CODE)}; expected ${ue.pretty(e.configuration,R,ue.Type.INSPECT)}, found ${ue.pretty(e.configuration,N,ue.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof R>"u"?hd(S,x):J0(S,x,R),E=!0}E&&a.set(C,S)}h.length>0&&n.set(C,h)}return{changedWorkspaces:a,remainingErrors:n}}function sme(e,{configuration:t}){let r={children:[]};for(let[s,a]of e){let n=[];for(let f of a){let p=f.text.split(/\n/);f.fixable&&(p[0]=`${ue.pretty(t,"\u2699","gray")} ${p[0]}`),n.push({value:ue.tuple(ue.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:ue.tuple(ue.Type.NO_HINT,h)}))})}let c={value:ue.tuple(ue.Type.LOCATOR,s.anchoredLocator),children:qe.sortMap(n,f=>f.value[1])};r.children.push(c)}return r.children=qe.sortMap(r.children,s=>s.value[1]),r}var UC,Iat,Cat,wat,cS=Ze(()=>{Ge();Zl();UC=class{constructor(t){this.indexedFields=t;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let t of this.indexedFields)this.indexes[t]=new Map}insert(t){this.items.push(t);for(let r of this.indexedFields){let s=Object.hasOwn(t,r)?t[r]:void 0;if(typeof s>"u")continue;qe.getArrayWithDefault(this.indexes[r],s).push(t)}return t}find(t){if(typeof t>"u")return this.items;let r=Object.entries(t);if(r.length===0)return this.items;let s=[],a;for(let[c,f]of r){let p=c,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>"u"){s.push([p,f]);continue}let E=new Set(h.get(f)??[]);if(E.size===0)return[];if(typeof a>"u")a=E;else for(let C of a)E.has(C)||a.delete(C);if(a.size===0)break}let n=[...a??[]];return s.length>0&&(n=n.filter(c=>{for(let[f,p]of s)if(!(typeof p<"u"?Object.hasOwn(c,f)&&c[f]===p:Object.hasOwn(c,f)===!1))return!1;return!0})),n}},Iat=/^[0-9]+$/,Cat=/^[a-zA-Z0-9_]+$/,wat=new Set(["scripts",..._t.allDependencies])});var ome=G((Sqt,$5)=>{var Sat;(function(e){var t=function(){return{"append/2":[new e.type.Rule(new e.type.Term("append",[new e.type.Var("X"),new e.type.Var("L")]),new e.type.Term("foldl",[new e.type.Term("append",[]),new e.type.Var("X"),new e.type.Term("[]",[]),new e.type.Var("L")]))],"append/3":[new e.type.Rule(new e.type.Term("append",[new e.type.Term("[]",[]),new e.type.Var("X"),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("append",[new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("S")])]),new e.type.Term("append",[new e.type.Var("T"),new e.type.Var("X"),new e.type.Var("S")]))],"member/2":[new e.type.Rule(new e.type.Term("member",[new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("_")])]),null),new e.type.Rule(new e.type.Term("member",[new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("_"),new e.type.Var("Xs")])]),new e.type.Term("member",[new e.type.Var("X"),new e.type.Var("Xs")]))],"permutation/2":[new e.type.Rule(new e.type.Term("permutation",[new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("permutation",[new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("permutation",[new e.type.Var("T"),new e.type.Var("P")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("P")]),new e.type.Term("append",[new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("Y")]),new e.type.Var("S")])])]))],"maplist/2":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("X")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("Xs")])]))],"maplist/3":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs")])]))],"maplist/4":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs")])]))],"maplist/5":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds")])]))],"maplist/6":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")]),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Es")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D"),new e.type.Var("E")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds"),new e.type.Var("Es")])]))],"maplist/7":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")]),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Es")]),new e.type.Term(".",[new e.type.Var("F"),new e.type.Var("Fs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D"),new e.type.Var("E"),new e.type.Var("F")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds"),new e.type.Var("Es"),new e.type.Var("Fs")])]))],"maplist/8":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")]),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Es")]),new e.type.Term(".",[new e.type.Var("F"),new e.type.Var("Fs")]),new e.type.Term(".",[new e.type.Var("G"),new e.type.Var("Gs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D"),new e.type.Var("E"),new e.type.Var("F"),new e.type.Var("G")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds"),new e.type.Var("Es"),new e.type.Var("Fs"),new e.type.Var("Gs")])]))],"include/3":[new e.type.Rule(new e.type.Term("include",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("include",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("L")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P"),new e.type.Var("A")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("A"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Term("[]",[])]),new e.type.Var("B")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("F"),new e.type.Var("B")]),new e.type.Term(",",[new e.type.Term(";",[new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("F")]),new e.type.Term(",",[new e.type.Term("=",[new e.type.Var("L"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("S")])]),new e.type.Term("!",[])])]),new e.type.Term("=",[new e.type.Var("L"),new e.type.Var("S")])]),new e.type.Term("include",[new e.type.Var("P"),new e.type.Var("T"),new e.type.Var("S")])])])])]))],"exclude/3":[new e.type.Rule(new e.type.Term("exclude",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("exclude",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("exclude",[new e.type.Var("P"),new e.type.Var("T"),new e.type.Var("E")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P"),new e.type.Var("L")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("L"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Term("[]",[])]),new e.type.Var("Q")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("R"),new e.type.Var("Q")]),new e.type.Term(";",[new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("R")]),new e.type.Term(",",[new e.type.Term("!",[]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("E")])])]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("E")])])])])])])]))],"foldl/4":[new e.type.Rule(new e.type.Term("foldl",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Var("I"),new e.type.Var("I")]),null),new e.type.Rule(new e.type.Term("foldl",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("I"),new e.type.Var("R")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P"),new e.type.Var("L")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("L"),new e.type.Term(".",[new e.type.Var("I"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])])])]),new e.type.Var("L2")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P2"),new e.type.Var("L2")]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P2")]),new e.type.Term("foldl",[new e.type.Var("P"),new e.type.Var("T"),new e.type.Var("X"),new e.type.Var("R")])])])])]))],"select/3":[new e.type.Rule(new e.type.Term("select",[new e.type.Var("E"),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Xs")]),new e.type.Var("Xs")]),null),new e.type.Rule(new e.type.Term("select",[new e.type.Var("E"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Ys")])]),new e.type.Term("select",[new e.type.Var("E"),new e.type.Var("Xs"),new e.type.Var("Ys")]))],"sum_list/2":[new e.type.Rule(new e.type.Term("sum_list",[new e.type.Term("[]",[]),new e.type.Num(0,!1)]),null),new e.type.Rule(new e.type.Term("sum_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("sum_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term("is",[new e.type.Var("S"),new e.type.Term("+",[new e.type.Var("X"),new e.type.Var("Y")])])]))],"max_list/2":[new e.type.Rule(new e.type.Term("max_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])]),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("max_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("max_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term(";",[new e.type.Term(",",[new e.type.Term(">=",[new e.type.Var("X"),new e.type.Var("Y")]),new e.type.Term(",",[new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("X")]),new e.type.Term("!",[])])]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("Y")])])]))],"min_list/2":[new e.type.Rule(new e.type.Term("min_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])]),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("min_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("min_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term(";",[new e.type.Term(",",[new e.type.Term("=<",[new e.type.Var("X"),new e.type.Var("Y")]),new e.type.Term(",",[new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("X")]),new e.type.Term("!",[])])]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("Y")])])]))],"prod_list/2":[new e.type.Rule(new e.type.Term("prod_list",[new e.type.Term("[]",[]),new e.type.Num(1,!1)]),null),new e.type.Rule(new e.type.Term("prod_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("prod_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term("is",[new e.type.Var("S"),new e.type.Term("*",[new e.type.Var("X"),new e.type.Var("Y")])])]))],"last/2":[new e.type.Rule(new e.type.Term("last",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])]),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("last",[new e.type.Term(".",[new e.type.Var("_"),new e.type.Var("Xs")]),new e.type.Var("X")]),new e.type.Term("last",[new e.type.Var("Xs"),new e.type.Var("X")]))],"prefix/2":[new e.type.Rule(new e.type.Term("prefix",[new e.type.Var("Part"),new e.type.Var("Whole")]),new e.type.Term("append",[new e.type.Var("Part"),new e.type.Var("_"),new e.type.Var("Whole")]))],"nth0/3":[new e.type.Rule(new e.type.Term("nth0",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")])]),new e.type.Term(",",[new e.type.Term(">=",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")]),new e.type.Term("!",[])])])]))],"nth1/3":[new e.type.Rule(new e.type.Term("nth1",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")])]),new e.type.Term(",",[new e.type.Term(">",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")]),new e.type.Term("!",[])])])]))],"nth0/4":[new e.type.Rule(new e.type.Term("nth0",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")])]),new e.type.Term(",",[new e.type.Term(">=",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term("!",[])])])]))],"nth1/4":[new e.type.Rule(new e.type.Term("nth1",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")])]),new e.type.Term(",",[new e.type.Term(">",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term("!",[])])])]))],"nth/5":[new e.type.Rule(new e.type.Term("nth",[new e.type.Var("N"),new e.type.Var("N"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("X"),new e.type.Var("Xs")]),null),new e.type.Rule(new e.type.Term("nth",[new e.type.Var("N"),new e.type.Var("O"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("Y"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Ys")])]),new e.type.Term(",",[new e.type.Term("is",[new e.type.Var("M"),new e.type.Term("+",[new e.type.Var("N"),new e.type.Num(1,!1)])]),new e.type.Term("nth",[new e.type.Var("M"),new e.type.Var("O"),new e.type.Var("Xs"),new e.type.Var("Y"),new e.type.Var("Ys")])]))],"length/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(!e.type.is_variable(f)&&!e.type.is_integer(f))s.throw_error(e.error.type("integer",f,n.indicator));else if(e.type.is_integer(f)&&f.value<0)s.throw_error(e.error.domain("not_less_than_zero",f,n.indicator));else{var p=new e.type.Term("length",[c,new e.type.Num(0,!1),f]);e.type.is_integer(f)&&(p=new e.type.Term(",",[p,new e.type.Term("!",[])])),s.prepend([new e.type.State(a.goal.replace(p),a.substitution,a)])}},"length/3":[new e.type.Rule(new e.type.Term("length",[new e.type.Term("[]",[]),new e.type.Var("N"),new e.type.Var("N")]),null),new e.type.Rule(new e.type.Term("length",[new e.type.Term(".",[new e.type.Var("_"),new e.type.Var("X")]),new e.type.Var("A"),new e.type.Var("N")]),new e.type.Term(",",[new e.type.Term("succ",[new e.type.Var("A"),new e.type.Var("B")]),new e.type.Term("length",[new e.type.Var("X"),new e.type.Var("B"),new e.type.Var("N")])]))],"replicate/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_integer(f))s.throw_error(e.error.type("integer",f,n.indicator));else if(f.value<0)s.throw_error(e.error.domain("not_less_than_zero",f,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type("list",p,n.indicator));else{for(var h=new e.type.Term("[]"),E=0;E0;C--)E[C].equals(E[C-1])&&E.splice(C,1);for(var S=new e.type.Term("[]"),C=E.length-1;C>=0;C--)S=new e.type.Term(".",[E[C],S]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[S,f])),a.substitution,a)])}}},"msort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type("list",f,n.indicator));else{for(var p=[],h=c;h.indicator==="./2";)p.push(h.args[0]),h=h.args[1];if(e.type.is_variable(h))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_empty_list(h))s.throw_error(e.error.type("list",c,n.indicator));else{for(var E=p.sort(e.compare),C=new e.type.Term("[]"),S=E.length-1;S>=0;S--)C=new e.type.Term(".",[E[S],C]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[C,f])),a.substitution,a)])}}},"keysort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type("list",f,n.indicator));else{for(var p=[],h,E=c;E.indicator==="./2";){if(h=E.args[0],e.type.is_variable(h)){s.throw_error(e.error.instantiation(n.indicator));return}else if(!e.type.is_term(h)||h.indicator!=="-/2"){s.throw_error(e.error.type("pair",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(e.type.is_variable(E))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_empty_list(E))s.throw_error(e.error.type("list",c,n.indicator));else{for(var C=p.sort(e.compare),S=new e.type.Term("[]"),x=C.length-1;x>=0;x--)S=new e.type.Term(".",[new e.type.Term("-",[C[x],C[x].pair]),S]),delete C[x].pair;s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[S,f])),a.substitution,a)])}}},"take/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f)||e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_list(f))s.throw_error(e.error.type("list",f,n.indicator));else if(!e.type.is_integer(c))s.throw_error(e.error.type("integer",c,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;if(h===0){for(var S=new e.type.Term("[]"),h=E.length-1;h>=0;h--)S=new e.type.Term(".",[E[h],S]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[S,p])),a.substitution,a)])}}},"drop/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f)||e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_list(f))s.throw_error(e.error.type("list",f,n.indicator));else if(!e.type.is_integer(c))s.throw_error(e.error.type("integer",c,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;h===0&&s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[C,p])),a.substitution,a)])}},"reverse/2":function(s,a,n){var c=n.args[0],f=n.args[1],p=e.type.is_instantiated_list(c),h=e.type.is_instantiated_list(f);if(e.type.is_variable(c)&&e.type.is_variable(f))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(c)&&!e.type.is_fully_list(c))s.throw_error(e.error.type("list",c,n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type("list",f,n.indicator));else if(!p&&!h)s.throw_error(e.error.instantiation(n.indicator));else{for(var E=p?c:f,C=new e.type.Term("[]",[]);E.indicator==="./2";)C=new e.type.Term(".",[E.args[0],C]),E=E.args[1];s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[C,p?f:c])),a.substitution,a)])}},"list_to_set/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else{for(var p=c,h=[];p.indicator==="./2";)h.push(p.args[0]),p=p.args[1];if(e.type.is_variable(p))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_term(p)||p.indicator!=="[]/0")s.throw_error(e.error.type("list",c,n.indicator));else{for(var E=[],C=new e.type.Term("[]",[]),S,x=0;x=0;x--)C=new e.type.Term(".",[E[x],C]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[f,C])),a.substitution,a)])}}}}},r=["append/2","append/3","member/2","permutation/2","maplist/2","maplist/3","maplist/4","maplist/5","maplist/6","maplist/7","maplist/8","include/3","exclude/3","foldl/4","sum_list/2","max_list/2","min_list/2","prod_list/2","last/2","prefix/2","nth0/3","nth1/3","nth0/4","nth1/4","length/2","replicate/3","select/3","sort/2","msort/2","keysort/2","take/3","drop/3","reverse/2","list_to_set/2"];typeof $5<"u"?$5.exports=function(s){e=s,new e.type.Module("lists",t(),r)}:new e.type.Module("lists",t(),r)})(Sat)});var Cme=G(en=>{"use strict";var Rm=process.platform==="win32",e9="aes-256-cbc",bat="sha256",cme="The current environment doesn't support interactive reading from TTY.",li=Ce("fs"),ame=process.binding("tty_wrap").TTY,r9=Ce("child_process"),Kd=Ce("path"),n9={prompt:"> ",hideEchoBack:!1,mask:"*",limit:[],limitMessage:"Input another, please.$<( [)limit(])>",defaultInput:"",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:"utf8",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},$p="none",tf,HC,lme=!1,Vd,JR,t9,Dat=0,l9="",Tm=[],zR,ume=!1,i9=!1,uS=!1;function fme(e){function t(r){return r.replace(/[^\w\u0080-\uFFFF]/g,function(s){return"#"+s.charCodeAt(0)+";"})}return JR.concat(function(r){var s=[];return Object.keys(r).forEach(function(a){r[a]==="boolean"?e[a]&&s.push("--"+a):r[a]==="string"&&e[a]&&s.push("--"+a,t(e[a]))}),s}({display:"string",displayOnly:"boolean",keyIn:"boolean",hideEchoBack:"boolean",mask:"string",limit:"string",caseSensitive:"boolean"}))}function Pat(e,t){function r(U){var K,$="",ie;for(t9=t9||Ce("os").tmpdir();;){K=Kd.join(t9,U+$);try{ie=li.openSync(K,"wx")}catch(fe){if(fe.code==="EEXIST"){$++;continue}else throw fe}li.closeSync(ie);break}return K}var s,a,n,c={},f,p,h=r("readline-sync.stdout"),E=r("readline-sync.stderr"),C=r("readline-sync.exit"),S=r("readline-sync.done"),x=Ce("crypto"),I,R,N;I=x.createHash(bat),I.update(""+process.pid+Dat+++Math.random()),N=I.digest("hex"),R=x.createDecipher(e9,N),s=fme(e),Rm?(a=process.env.ComSpec||"cmd.exe",process.env.Q='"',n=["/V:ON","/S","/C","(%Q%"+a+"%Q% /V:ON /S /C %Q%%Q%"+Vd+"%Q%"+s.map(function(U){return" %Q%"+U+"%Q%"}).join("")+" & (echo !ERRORLEVEL!)>%Q%"+C+"%Q%%Q%) 2>%Q%"+E+"%Q% |%Q%"+process.execPath+"%Q% %Q%"+__dirname+"\\encrypt.js%Q% %Q%"+e9+"%Q% %Q%"+N+"%Q% >%Q%"+h+"%Q% & (echo 1)>%Q%"+S+"%Q%"]):(a="/bin/sh",n=["-c",'("'+Vd+'"'+s.map(function(U){return" '"+U.replace(/'/g,"'\\''")+"'"}).join("")+'; echo $?>"'+C+'") 2>"'+E+'" |"'+process.execPath+'" "'+__dirname+'/encrypt.js" "'+e9+'" "'+N+'" >"'+h+'"; echo 1 >"'+S+'"']),uS&&uS("_execFileSync",s);try{r9.spawn(a,n,t)}catch(U){c.error=new Error(U.message),c.error.method="_execFileSync - spawn",c.error.program=a,c.error.args=n}for(;li.readFileSync(S,{encoding:e.encoding}).trim()!=="1";);return(f=li.readFileSync(C,{encoding:e.encoding}).trim())==="0"?c.input=R.update(li.readFileSync(h,{encoding:"binary"}),"hex",e.encoding)+R.final(e.encoding):(p=li.readFileSync(E,{encoding:e.encoding}).trim(),c.error=new Error(cme+(p?` +`+p:"")),c.error.method="_execFileSync",c.error.program=a,c.error.args=n,c.error.extMessage=p,c.error.exitCode=+f),li.unlinkSync(h),li.unlinkSync(E),li.unlinkSync(C),li.unlinkSync(S),c}function xat(e){var t,r={},s,a={env:process.env,encoding:e.encoding};if(Vd||(Rm?process.env.PSModulePath?(Vd="powershell.exe",JR=["-ExecutionPolicy","Bypass","-File",__dirname+"\\read.ps1"]):(Vd="cscript.exe",JR=["//nologo",__dirname+"\\read.cs.js"]):(Vd="/bin/sh",JR=[__dirname+"/read.sh"])),Rm&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),r9.execFileSync){t=fme(e),uS&&uS("execFileSync",t);try{r.input=r9.execFileSync(Vd,t,a)}catch(n){s=n.stderr?(n.stderr+"").trim():"",r.error=new Error(cme+(s?` +`+s:"")),r.error.method="execFileSync",r.error.program=Vd,r.error.args=t,r.error.extMessage=s,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=Pat(e,a);return r.error||(r.input=r.input.replace(/^\s*'|'\s*$/g,""),e.display=""),r}function s9(e){var t="",r=e.display,s=!e.display&&e.keyIn&&e.hideEchoBack&&!e.mask;function a(){var n=xat(e);if(n.error)throw n.error;return n.input}return i9&&i9(e),function(){var n,c,f;function p(){return n||(n=process.binding("fs"),c=process.binding("constants")),n}if(typeof $p=="string")if($p=null,Rm){if(f=function(h){var E=h.replace(/^\D+/,"").split("."),C=0;return(E[0]=+E[0])&&(C+=E[0]*1e4),(E[1]=+E[1])&&(C+=E[1]*100),(E[2]=+E[2])&&(C+=E[2]),C}(process.version),!(f>=20302&&f<40204||f>=5e4&&f<50100||f>=50600&&f<60200)&&process.stdin.isTTY)process.stdin.pause(),$p=process.stdin.fd,HC=process.stdin._handle;else try{$p=p().open("CONIN$",c.O_RDWR,parseInt("0666",8)),HC=new ame($p,!0)}catch{}if(process.stdout.isTTY)tf=process.stdout.fd;else{try{tf=li.openSync("\\\\.\\CON","w")}catch{}if(typeof tf!="number")try{tf=p().open("CONOUT$",c.O_RDWR,parseInt("0666",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{$p=li.openSync("/dev/tty","r"),HC=process.stdin._handle}catch{}}else try{$p=li.openSync("/dev/tty","r"),HC=new ame($p,!1)}catch{}if(process.stdout.isTTY)tf=process.stdout.fd;else try{tf=li.openSync("/dev/tty","w")}catch{}}}(),function(){var n,c,f=!e.hideEchoBack&&!e.keyIn,p,h,E,C,S;zR="";function x(I){return I===lme?!0:HC.setRawMode(I)!==0?!1:(lme=I,!0)}if(ume||!HC||typeof tf!="number"&&(e.display||!f)){t=a();return}if(e.display&&(li.writeSync(tf,e.display),e.display=""),!e.displayOnly){if(!x(!f)){t=a();return}for(h=e.keyIn?1:e.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),e.keyIn&&e.limit&&(c=new RegExp("[^"+e.limit+"]","g"+(e.caseSensitive?"":"i")));;){E=0;try{E=li.readSync($p,p,0,h)}catch(I){if(I.code!=="EOF"){x(!1),t+=a();return}}if(E>0?(C=p.toString(e.encoding,0,E),zR+=C):(C=` +`,zR+="\0"),C&&typeof(S=(C.match(/^(.*?)[\r\n]/)||[])[1])=="string"&&(C=S,n=!0),C&&(C=C.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"")),C&&c&&(C=C.replace(c,"")),C&&(f||(e.hideEchoBack?e.mask&&li.writeSync(tf,new Array(C.length+1).join(e.mask)):li.writeSync(tf,C)),t+=C),!e.keyIn&&n||e.keyIn&&t.length>=h)break}!f&&!s&&li.writeSync(tf,` +`),x(!1)}}(),e.print&&!s&&e.print(r+(e.displayOnly?"":(e.hideEchoBack?new Array(t.length+1).join(e.mask):t)+` +`),e.encoding),e.displayOnly?"":l9=e.keepWhitespace||e.keyIn?t:t.trim()}function kat(e,t){var r=[];function s(a){a!=null&&(Array.isArray(a)?a.forEach(s):(!t||t(a))&&r.push(a))}return s(e),r}function c9(e){return e.replace(/[\x00-\x7f]/g,function(t){return"\\x"+("00"+t.charCodeAt().toString(16)).substr(-2)})}function eo(){var e=Array.prototype.slice.call(arguments),t,r;return e.length&&typeof e[0]=="boolean"&&(r=e.shift(),r&&(t=Object.keys(n9),e.unshift(n9))),e.reduce(function(s,a){return a==null||(a.hasOwnProperty("noEchoBack")&&!a.hasOwnProperty("hideEchoBack")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty("noTrim")&&!a.hasOwnProperty("keepWhitespace")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(t=Object.keys(a)),t.forEach(function(n){var c;if(a.hasOwnProperty(n))switch(c=a[n],n){case"mask":case"limitMessage":case"defaultInput":case"encoding":c=c!=null?c+"":"",c&&n!=="limitMessage"&&(c=c.replace(/[\r\n]/g,"")),s[n]=c;break;case"bufferSize":!isNaN(c=parseInt(c,10))&&typeof c=="number"&&(s[n]=c);break;case"displayOnly":case"keyIn":case"hideEchoBack":case"caseSensitive":case"keepWhitespace":case"history":case"cd":s[n]=!!c;break;case"limit":case"trueValue":case"falseValue":s[n]=kat(c,function(f){var p=typeof f;return p==="string"||p==="number"||p==="function"||f instanceof RegExp}).map(function(f){return typeof f=="string"?f.replace(/[\r\n]/g,""):f});break;case"print":case"phContent":case"preCheck":s[n]=typeof c=="function"?c:void 0;break;case"prompt":case"display":s[n]=c??"";break}})),s},{})}function o9(e,t,r){return t.some(function(s){var a=typeof s;return a==="string"?r?e===s:e.toLowerCase()===s.toLowerCase():a==="number"?parseFloat(e)===s:a==="function"?s(e):s instanceof RegExp?s.test(e):!1})}function u9(e,t){var r=Kd.normalize(Rm?(process.env.HOMEDRIVE||"")+(process.env.HOMEPATH||""):process.env.HOME||"").replace(/[\/\\]+$/,"");return e=Kd.normalize(e),t?e.replace(/^~(?=\/|\\|$)/,r):e.replace(new RegExp("^"+c9(r)+"(?=\\/|\\\\|$)",Rm?"i":""),"~")}function jC(e,t){var r="(?:\\(([\\s\\S]*?)\\))?(\\w+|.-.)(?:\\(([\\s\\S]*?)\\))?",s=new RegExp("(\\$)?(\\$<"+r+">)","g"),a=new RegExp("(\\$)?(\\$\\{"+r+"\\})","g");function n(c,f,p,h,E,C){var S;return f||typeof(S=t(E))!="string"?p:S?(h||"")+S+(C||""):""}return e.replace(s,n).replace(a,n)}function Ame(e,t,r){var s,a=[],n=-1,c=0,f="",p;function h(E,C){return C.length>3?(E.push(C[0]+"..."+C[C.length-1]),p=!0):C.length&&(E=E.concat(C)),E}return s=e.reduce(function(E,C){return E.concat((C+"").split(""))},[]).reduce(function(E,C){var S,x;return t||(C=C.toLowerCase()),S=/^\d$/.test(C)?1:/^[A-Z]$/.test(C)?2:/^[a-z]$/.test(C)?3:0,r&&S===0?f+=C:(x=C.charCodeAt(0),S&&S===n&&x===c+1?a.push(C):(E=h(E,a),a=[C],n=S),c=x),E},[]),s=h(s,a),f&&(s.push(f),p=!0),{values:s,suppressed:p}}function pme(e,t){return e.join(e.length>2?", ":t?" / ":"/")}function hme(e,t){var r,s,a={},n;if(t.phContent&&(r=t.phContent(e,t)),typeof r!="string")switch(e){case"hideEchoBack":case"mask":case"defaultInput":case"caseSensitive":case"keepWhitespace":case"encoding":case"bufferSize":case"history":case"cd":r=t.hasOwnProperty(e)?typeof t[e]=="boolean"?t[e]?"on":"off":t[e]+"":"";break;case"limit":case"trueValue":case"falseValue":s=t[t.hasOwnProperty(e+"Src")?e+"Src":e],t.keyIn?(a=Ame(s,t.caseSensitive),s=a.values):s=s.filter(function(c){var f=typeof c;return f==="string"||f==="number"}),r=pme(s,a.suppressed);break;case"limitCount":case"limitCountNotZero":r=t[t.hasOwnProperty("limitSrc")?"limitSrc":"limit"].length,r=r||e!=="limitCountNotZero"?r+"":"";break;case"lastInput":r=l9;break;case"cwd":case"CWD":case"cwdHome":r=process.cwd(),e==="CWD"?r=Kd.basename(r):e==="cwdHome"&&(r=u9(r));break;case"date":case"time":case"localeDate":case"localeTime":r=new Date()["to"+e.replace(/^./,function(c){return c.toUpperCase()})+"String"]();break;default:typeof(n=(e.match(/^history_m(\d+)$/)||[])[1])=="string"&&(r=Tm[Tm.length-n]||"")}return r}function dme(e){var t=/^(.)-(.)$/.exec(e),r="",s,a,n,c;if(!t)return null;for(s=t[1].charCodeAt(0),a=t[2].charCodeAt(0),c=s +And the length must be: $`,trueValue:null,falseValue:null,caseSensitive:!0},t,{history:!1,cd:!1,phContent:function(x){return x==="charlist"?r.text:x==="length"?s+"..."+a:null}}),c,f,p,h,E,C,S;for(t=t||{},c=jC(t.charlist?t.charlist+"":"$",dme),(isNaN(s=parseInt(t.min,10))||typeof s!="number")&&(s=12),(isNaN(a=parseInt(t.max,10))||typeof a!="number")&&(a=24),h=new RegExp("^["+c9(c)+"]{"+s+","+a+"}$"),r=Ame([c],n.caseSensitive,!0),r.text=pme(r.values,r.suppressed),f=t.confirmMessage!=null?t.confirmMessage:"Reinput a same one to confirm it: ",p=t.unmatchMessage!=null?t.unmatchMessage:"It differs from first one. Hit only the Enter key if you want to retry from first one.",e==null&&(e="Input new password: "),E=n.limitMessage;!S;)n.limit=h,n.limitMessage=E,C=en.question(e,n),n.limit=[C,""],n.limitMessage=p,S=en.question(f,n);return C};function yme(e,t,r){var s;function a(n){return s=r(n),!isNaN(s)&&typeof s=="number"}return en.question(e,eo({limitMessage:"Input valid number, please."},t,{limit:a,cd:!1})),s}en.questionInt=function(e,t){return yme(e,t,function(r){return parseInt(r,10)})};en.questionFloat=function(e,t){return yme(e,t,parseFloat)};en.questionPath=function(e,t){var r,s="",a=eo({hideEchoBack:!1,limitMessage:`$Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},t,{keepWhitespace:!1,limit:function(n){var c,f,p;n=u9(n,!0),s="";function h(E){E.split(/\/|\\/).reduce(function(C,S){var x=Kd.resolve(C+=S+Kd.sep);if(!li.existsSync(x))li.mkdirSync(x);else if(!li.statSync(x).isDirectory())throw new Error("Non directory already exists: "+x);return C},"")}try{if(c=li.existsSync(n),r=c?li.realpathSync(n):Kd.resolve(n),!t.hasOwnProperty("exists")&&!c||typeof t.exists=="boolean"&&t.exists!==c)return s=(c?"Already exists":"No such file or directory")+": "+r,!1;if(!c&&t.create&&(t.isDirectory?h(r):(h(Kd.dirname(r)),li.closeSync(li.openSync(r,"w"))),r=li.realpathSync(r)),c&&(t.min||t.max||t.isFile||t.isDirectory)){if(f=li.statSync(r),t.isFile&&!f.isFile())return s="Not file: "+r,!1;if(t.isDirectory&&!f.isDirectory())return s="Not directory: "+r,!1;if(t.min&&f.size<+t.min||t.max&&f.size>+t.max)return s="Size "+f.size+" is out of range: "+r,!1}if(typeof t.validate=="function"&&(p=t.validate(r))!==!0)return typeof p=="string"&&(s=p),!1}catch(E){return s=E+"",!1}return!0},phContent:function(n){return n==="error"?s:n!=="min"&&n!=="max"?null:t.hasOwnProperty(n)?t[n]+"":""}});return t=t||{},e==null&&(e='Input path (you can "cd" and "pwd"): '),en.question(e,a),r};function Eme(e,t){var r={},s={};return typeof e=="object"?(Object.keys(e).forEach(function(a){typeof e[a]=="function"&&(s[t.caseSensitive?a:a.toLowerCase()]=e[a])}),r.preCheck=function(a){var n;return r.args=a9(a),n=r.args[0]||"",t.caseSensitive||(n=n.toLowerCase()),r.hRes=n!=="_"&&s.hasOwnProperty(n)?s[n].apply(a,r.args.slice(1)):s.hasOwnProperty("_")?s._.apply(a,r.args):null,{res:a,forceNext:!1}},s.hasOwnProperty("_")||(r.limit=function(){var a=r.args[0]||"";return t.caseSensitive||(a=a.toLowerCase()),s.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=a9(a),r.hRes=typeof e=="function"?e.apply(a,r.args):!0,{res:a,forceNext:!1}},r}en.promptCL=function(e,t){var r=eo({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},t),s=Eme(e,r);return r.limit=s.limit,r.preCheck=s.preCheck,en.prompt(r),s.args};en.promptLoop=function(e,t){for(var r=eo({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},t);!e(en.prompt(r)););};en.promptCLLoop=function(e,t){var r=eo({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},t),s=Eme(e,r);for(r.limit=s.limit,r.preCheck=s.preCheck;en.prompt(r),!s.hRes;);};en.promptSimShell=function(e){return en.prompt(eo({hideEchoBack:!1,history:!0},e,{prompt:function(){return Rm?"$>":(process.env.USER||"")+(process.env.HOSTNAME?"@"+process.env.HOSTNAME.replace(/\..*$/,""):"")+":$$ "}()}))};function Ime(e,t,r){var s;return e==null&&(e="Are you sure? "),(!t||t.guide!==!1)&&(e+="")&&(e=e.replace(/\s*:?\s*$/,"")+" [y/n]: "),s=en.keyIn(e,eo(t,{hideEchoBack:!1,limit:r,trueValue:"y",falseValue:"n",caseSensitive:!1})),typeof s=="boolean"?s:""}en.keyInYN=function(e,t){return Ime(e,t)};en.keyInYNStrict=function(e,t){return Ime(e,t,"yn")};en.keyInPause=function(e,t){e==null&&(e="Continue..."),(!t||t.guide!==!1)&&(e+="")&&(e=e.replace(/\s+$/,"")+" (Hit any key)"),en.keyIn(e,eo({limit:null},t,{hideEchoBack:!0,mask:""}))};en.keyInSelect=function(e,t,r){var s=eo({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p==="itemsCount"?e.length+"":p==="firstItem"?(e[0]+"").trim():p==="lastItem"?(e[e.length-1]+"").trim():null}}),a="",n={},c=49,f=` +`;if(!Array.isArray(e)||!e.length||e.length>35)throw"`items` must be Array (max length: 35).";return e.forEach(function(p,h){var E=String.fromCharCode(c);a+=E,n[E]=h,f+="["+E+"] "+(p+"").trim()+` +`,c=c===57?97:c+1}),(!r||r.cancel!==!1)&&(a+="0",n[0]=-1,f+="[0] "+(r&&r.cancel!=null&&typeof r.cancel!="boolean"?(r.cancel+"").trim():"CANCEL")+` +`),s.limit=a,f+=` +`,t==null&&(t="Choose one from list: "),(t+="")&&((!r||r.guide!==!1)&&(t=t.replace(/\s*:?\s*$/,"")+" [$]: "),f+=t),n[en.keyIn(f,s).toLowerCase()]};en.getRawInput=function(){return zR};function fS(e,t){var r;return t.length&&(r={},r[e]=t[0]),en.setDefaultOptions(r)[e]}en.setPrint=function(){return fS("print",arguments)};en.setPrompt=function(){return fS("prompt",arguments)};en.setEncoding=function(){return fS("encoding",arguments)};en.setMask=function(){return fS("mask",arguments)};en.setBufferSize=function(){return fS("bufferSize",arguments)}});var f9=G((Dqt,nc)=>{(function(){var e={major:0,minor:2,patch:66,status:"beta"};tau_file_system={files:{},open:function(w,D,y){var F=tau_file_system.files[w];if(!F){if(y==="read")return null;F={path:w,text:"",type:D,get:function(z,Z){return Z===this.text.length||Z>this.text.length?"end_of_file":this.text.substring(Z,Z+z)},put:function(z,Z){return Z==="end_of_file"?(this.text+=z,!0):Z==="past_end_of_file"?null:(this.text=this.text.substring(0,Z)+z+this.text.substring(Z+z.length),!0)},get_byte:function(z){if(z==="end_of_stream")return-1;var Z=Math.floor(z/2);if(this.text.length<=Z)return-1;var ee=n(this.text[Math.floor(z/2)],0);return z%2===0?ee&255:ee/256>>>0},put_byte:function(z,Z){var ee=Z==="end_of_stream"?this.text.length:Math.floor(Z/2);if(this.text.length>>0,se=(se&255)<<8|z&255):(se=se&255,se=(z&255)<<8|se&255),this.text.length===ee?this.text+=c(se):this.text=this.text.substring(0,ee)+c(se)+this.text.substring(ee+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y==="write"&&(F.text=""),F}},tau_user_input={buffer:"",get:function(w,D){for(var y;tau_user_input.buffer.length\?\@\^\~\\]+|'(?:[^']*?(?:\\(?:x?\d+)?\\)*(?:'')*(?:\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\[abfnrtv\\'"`]|\\x?\d+\\|[^\\])|\d+(?:\.\d+(?:[eE][+-]?\d+)?)?)/,string:/^(?:"([^"]|""|\\")*"|`([^`]|``|\\`)*`)/,l_brace:/^(?:\[)/,r_brace:/^(?:\])/,l_bracket:/^(?:\{)/,r_bracket:/^(?:\})/,bar:/^(?:\|)/,l_paren:/^(?:\()/,r_paren:/^(?:\))/};function N(w,D){return w.get_flag("char_conversion").id==="on"?D.replace(/./g,function(y){return w.get_char_conversion(y)}):D}function U(w){this.thread=w,this.text="",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var D,y=0,F=0,z=0,Z=[],ee=!1;if(w){var se=this.tokens[w-1];y=se.len,D=N(this.thread,this.text.substr(se.len)),F=se.line,z=se.start}else D=this.text;if(/^\s*$/.test(D))return null;for(;D!=="";){var xe=[],Ne=!1;if(/^\n/.exec(D)!==null){F++,z=0,y++,D=D.replace(/\n/,""),ee=!0;continue}for(var ut in R)if(R.hasOwnProperty(ut)){var Ct=R[ut].exec(D);Ct&&xe.push({value:Ct[0],name:ut,matches:Ct})}if(!xe.length)return this.set_last_tokens([{value:D,matches:[],name:"lexical",line:F,start:z}]);var se=r(xe,function(Pr,Cr){return Pr.value.length>=Cr.value.length?Pr:Cr});switch(se.start=z,se.line=F,D=D.replace(se.value,""),z+=se.value.length,y+=se.value.length,se.name){case"atom":se.raw=se.value,se.value.charAt(0)==="'"&&(se.value=S(se.value.substr(1,se.value.length-2),"'"),se.value===null&&(se.name="lexical",se.value="unknown escape sequence"));break;case"number":se.float=se.value.substring(0,2)!=="0x"&&se.value.match(/[.eE]/)!==null&&se.value!=="0'.",se.value=I(se.value),se.blank=Ne;break;case"string":var Yt=se.value.charAt(0);se.value=S(se.value.substr(1,se.value.length-2),Yt),se.value===null&&(se.name="lexical",se.value="unknown escape sequence");break;case"whitespace":var ir=Z[Z.length-1];ir&&(ir.space=!0),Ne=!0;continue;case"r_bracket":Z.length>0&&Z[Z.length-1].name==="l_bracket"&&(se=Z.pop(),se.name="atom",se.value="{}",se.raw="{}",se.space=!1);break;case"r_brace":Z.length>0&&Z[Z.length-1].name==="l_brace"&&(se=Z.pop(),se.name="atom",se.value="[]",se.raw="[]",se.space=!1);break}se.len=y,Z.push(se),Ne=!1}var Pt=this.set_last_tokens(Z);return Pt.length===0?null:Pt};function K(w,D,y,F,z){if(!D[y])return{type:f,value:P.error.syntax(D[y-1],"expression expected",!0)};var Z;if(F==="0"){var ee=D[y];switch(ee.name){case"number":return{type:p,len:y+1,value:new P.type.Num(ee.value,ee.float)};case"variable":return{type:p,len:y+1,value:new P.type.Var(ee.value)};case"string":var se;switch(w.get_flag("double_quotes").id){case"atom":se=new _(ee.value,[]);break;case"codes":se=new _("[]",[]);for(var xe=ee.value.length-1;xe>=0;xe--)se=new _(".",[new P.type.Num(n(ee.value,xe),!1),se]);break;case"chars":se=new _("[]",[]);for(var xe=ee.value.length-1;xe>=0;xe--)se=new _(".",[new P.type.Term(ee.value.charAt(xe),[]),se]);break}return{type:p,len:y+1,value:se};case"l_paren":var Pt=K(w,D,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:D[Pt.len]&&D[Pt.len].name==="r_paren"?(Pt.len++,Pt):{type:f,derived:!0,value:P.error.syntax(D[Pt.len]?D[Pt.len]:D[Pt.len-1],") or operator expected",!D[Pt.len])};case"l_bracket":var Pt=K(w,D,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:D[Pt.len]&&D[Pt.len].name==="r_bracket"?(Pt.len++,Pt.value=new _("{}",[Pt.value]),Pt):{type:f,derived:!0,value:P.error.syntax(D[Pt.len]?D[Pt.len]:D[Pt.len-1],"} or operator expected",!D[Pt.len])}}var Ne=$(w,D,y,z);return Ne.type===p||Ne.derived||(Ne=ie(w,D,y),Ne.type===p||Ne.derived)?Ne:{type:f,derived:!1,value:P.error.syntax(D[y],"unexpected token")}}var ut=w.__get_max_priority(),Ct=w.__get_next_priority(F),Yt=y;if(D[y].name==="atom"&&D[y+1]&&(D[y].space||D[y+1].name!=="l_paren")){var ee=D[y++],ir=w.__lookup_operator_classes(F,ee.value);if(ir&&ir.indexOf("fy")>-1){var Pt=K(w,D,y,F,z);if(Pt.type!==f)return ee.value==="-"&&!ee.space&&P.type.is_number(Pt.value)?{value:new P.type.Num(-Pt.value.value,Pt.value.is_float),len:Pt.len,type:p}:{value:new P.type.Term(ee.value,[Pt.value]),len:Pt.len,type:p};Z=Pt}else if(ir&&ir.indexOf("fx")>-1){var Pt=K(w,D,y,Ct,z);if(Pt.type!==f)return{value:new P.type.Term(ee.value,[Pt.value]),len:Pt.len,type:p};Z=Pt}}y=Yt;var Pt=K(w,D,y,Ct,z);if(Pt.type===p){y=Pt.len;var ee=D[y];if(D[y]&&(D[y].name==="atom"&&w.__lookup_operator_classes(F,ee.value)||D[y].name==="bar"&&w.__lookup_operator_classes(F,"|"))){var mn=Ct,Pr=F,ir=w.__lookup_operator_classes(F,ee.value);if(ir.indexOf("xf")>-1)return{value:new P.type.Term(ee.value,[Pt.value]),len:++Pt.len,type:p};if(ir.indexOf("xfx")>-1){var Cr=K(w,D,y+1,mn,z);return Cr.type===p?{value:new P.type.Term(ee.value,[Pt.value,Cr.value]),len:Cr.len,type:p}:(Cr.derived=!0,Cr)}else if(ir.indexOf("xfy")>-1){var Cr=K(w,D,y+1,Pr,z);return Cr.type===p?{value:new P.type.Term(ee.value,[Pt.value,Cr.value]),len:Cr.len,type:p}:(Cr.derived=!0,Cr)}else if(Pt.type!==f)for(;;){y=Pt.len;var ee=D[y];if(ee&&ee.name==="atom"&&w.__lookup_operator_classes(F,ee.value)){var ir=w.__lookup_operator_classes(F,ee.value);if(ir.indexOf("yf")>-1)Pt={value:new P.type.Term(ee.value,[Pt.value]),len:++y,type:p};else if(ir.indexOf("yfx")>-1){var Cr=K(w,D,++y,mn,z);if(Cr.type===f)return Cr.derived=!0,Cr;y=Cr.len,Pt={value:new P.type.Term(ee.value,[Pt.value,Cr.value]),len:y,type:p}}else break}else break}}else Z={type:f,value:P.error.syntax(D[Pt.len-1],"operator expected")};return Pt}return Pt}function $(w,D,y,F){if(!D[y]||D[y].name==="atom"&&D[y].raw==="."&&!F&&(D[y].space||!D[y+1]||D[y+1].name!=="l_paren"))return{type:f,derived:!1,value:P.error.syntax(D[y-1],"unfounded token")};var z=D[y],Z=[];if(D[y].name==="atom"&&D[y].raw!==","){if(y++,D[y-1].space)return{type:p,len:y,value:new P.type.Term(z.value,Z)};if(D[y]&&D[y].name==="l_paren"){if(D[y+1]&&D[y+1].name==="r_paren")return{type:f,derived:!0,value:P.error.syntax(D[y+1],"argument expected")};var ee=K(w,D,++y,"999",!0);if(ee.type===f)return ee.derived?ee:{type:f,derived:!0,value:P.error.syntax(D[y]?D[y]:D[y-1],"argument expected",!D[y])};for(Z.push(ee.value),y=ee.len;D[y]&&D[y].name==="atom"&&D[y].value===",";){if(ee=K(w,D,y+1,"999",!0),ee.type===f)return ee.derived?ee:{type:f,derived:!0,value:P.error.syntax(D[y+1]?D[y+1]:D[y],"argument expected",!D[y+1])};Z.push(ee.value),y=ee.len}if(D[y]&&D[y].name==="r_paren")y++;else return{type:f,derived:!0,value:P.error.syntax(D[y]?D[y]:D[y-1],", or ) expected",!D[y])}}return{type:p,len:y,value:new P.type.Term(z.value,Z)}}return{type:f,derived:!1,value:P.error.syntax(D[y],"term expected")}}function ie(w,D,y){if(!D[y])return{type:f,derived:!1,value:P.error.syntax(D[y-1],"[ expected")};if(D[y]&&D[y].name==="l_brace"){var F=K(w,D,++y,"999",!0),z=[F.value],Z=void 0;if(F.type===f)return D[y]&&D[y].name==="r_brace"?{type:p,len:y+1,value:new P.type.Term("[]",[])}:{type:f,derived:!0,value:P.error.syntax(D[y],"] expected")};for(y=F.len;D[y]&&D[y].name==="atom"&&D[y].value===",";){if(F=K(w,D,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:P.error.syntax(D[y+1]?D[y+1]:D[y],"argument expected",!D[y+1])};z.push(F.value),y=F.len}var ee=!1;if(D[y]&&D[y].name==="bar"){if(ee=!0,F=K(w,D,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:P.error.syntax(D[y+1]?D[y+1]:D[y],"argument expected",!D[y+1])};Z=F.value,y=F.len}return D[y]&&D[y].name==="r_brace"?{type:p,len:y+1,value:d(z,Z)}:{type:f,derived:!0,value:P.error.syntax(D[y]?D[y]:D[y-1],ee?"] expected":", or | or ] expected",!D[y])}}return{type:f,derived:!1,value:P.error.syntax(D[y],"list expected")}}function fe(w,D,y){var F=D[y].line,z=K(w,D,y,w.__get_max_priority(),!1),Z=null,ee;if(z.type!==f)if(y=z.len,D[y]&&D[y].name==="atom"&&D[y].raw===".")if(y++,P.type.is_term(z.value)){if(z.value.indicator===":-/2"?(Z=new P.type.Rule(z.value.args[0],ye(z.value.args[1])),ee={value:Z,len:y,type:p}):z.value.indicator==="-->/2"?(Z=pe(new P.type.Rule(z.value.args[0],z.value.args[1]),w),Z.body=ye(Z.body),ee={value:Z,len:y,type:P.type.is_rule(Z)?p:f}):(Z=new P.type.Rule(z.value,null),ee={value:Z,len:y,type:p}),Z){var se=Z.singleton_variables();se.length>0&&w.throw_warning(P.warning.singleton(se,Z.head.indicator,F))}return ee}else return{type:f,value:P.error.syntax(D[y],"callable expected")};else return{type:f,value:P.error.syntax(D[y]?D[y]:D[y-1],". or operator expected")};return z}function le(w,D,y){y=y||{},y.from=y.from?y.from:"$tau-js",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},Z;F.new_text(D);var ee=0,se=F.get_tokens(ee);do{if(se===null||!se[ee])break;var xe=fe(w,se,ee);if(xe.type===f)return new _("throw",[xe.value]);if(xe.value.body===null&&xe.value.head.indicator==="?-/1"){var Ne=new ct(w.session);Ne.add_goal(xe.value.head.args[0]),Ne.answer(function(Ct){P.type.is_error(Ct)?w.throw_warning(Ct.args[0]):(Ct===!1||Ct===null)&&w.throw_warning(P.warning.failed_goal(xe.value.head.args[0],xe.len))}),ee=xe.len;var ut=!0}else if(xe.value.body===null&&xe.value.head.indicator===":-/1"){var ut=w.run_directive(xe.value.head.args[0]);ee=xe.len,xe.value.head.args[0].indicator==="char_conversion/2"&&(se=F.get_tokens(ee),ee=0)}else{Z=xe.value.head.indicator,y.reconsult!==!1&&z[Z]!==!0&&!w.is_multifile_predicate(Z)&&(w.session.rules[Z]=a(w.session.rules[Z]||[],function(Yt){return Yt.dynamic}),z[Z]=!0);var ut=w.add_rule(xe.value,y);ee=xe.len}if(!ut)return ut}while(!0);return!0}function ge(w,D){var y=new U(w);y.new_text(D);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var Z=K(w,z,0,w.__get_max_priority(),!1);if(Z.type!==f){var ee=Z.len,se=ee;if(z[ee]&&z[ee].name==="atom"&&z[ee].raw===".")w.add_goal(ye(Z.value));else{var xe=z[ee];return new _("throw",[P.error.syntax(xe||z[ee-1],". or operator expected",!xe)])}F=Z.len+1}else return new _("throw",[Z.value])}while(!0);return!0}function pe(w,D){w=w.rename(D);var y=D.next_free_variable(),F=De(w.body,y,D);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new _(w.head.id,w.head.args),w)}function De(w,D,y){var F;if(P.type.is_term(w)&&w.indicator==="!/0")return{value:w,variable:D,error:!1};if(P.type.is_term(w)&&w.indicator===",/2"){var z=De(w.args[0],D,y);if(z.error)return z;var Z=De(w.args[1],z.variable,y);return Z.error?Z:{value:new _(",",[z.value,Z.value]),variable:Z.variable,error:!1}}else{if(P.type.is_term(w)&&w.indicator==="{}/1")return{value:w.args[0],variable:D,error:!1};if(P.type.is_empty_list(w))return{value:new _("true",[]),variable:D,error:!1};if(P.type.is_list(w)){F=y.next_free_variable();for(var ee=w,se;ee.indicator==="./2";)se=ee,ee=ee.args[1];return P.type.is_variable(ee)?{value:P.error.instantiation("DCG"),variable:D,error:!0}:P.type.is_empty_list(ee)?(se.args[1]=F,{value:new _("=",[D,w]),variable:F,error:!1}):{value:P.error.type("list",w,"DCG"),variable:D,error:!0}}else return P.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([D,F]),w=new _(w.id,w.args),{value:w,variable:F,error:!1}):{value:P.error.type("callable",w,"DCG"),variable:D,error:!0}}}function ye(w){return P.type.is_variable(w)?new _("call",[w]):P.type.is_term(w)&&[",/2",";/2","->/2"].indexOf(w.indicator)!==-1?new _(w.id,[ye(w.args[0]),ye(w.args[1])]):w}function d(w,D){for(var y=D||new P.type.Term("[]",[]),F=w.length-1;F>=0;F--)y=new P.type.Term(".",[w[F],y]);return y}function ve(w,D){for(var y=w.length-1;y>=0;y--)w[y]===D&&w.splice(y,1)}function Ie(w){for(var D={},y=[],F=0;F=0;D--)if(w.charAt(D)==="/")return new _("/",[new _(w.substring(0,D)),new ke(parseInt(w.substring(D+1)),!1)])}function be(w){this.id=w}function ke(w,D){this.is_float=D!==void 0?D:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var it=0;function _(w,D,y){this.ref=y||++it,this.id=w,this.args=D||[],this.indicator=w+"/"+this.args.length}var tt=0;function Fe(w,D,y,F,z,Z){this.id=tt++,this.stream=w,this.mode=D,this.alias=y,this.type=F!==void 0?F:"text",this.reposition=z!==void 0?z:!0,this.eof_action=Z!==void 0?Z:"eof_code",this.position=this.mode==="append"?"end_of_stream":0,this.output=this.mode==="write"||this.mode==="append",this.input=this.mode==="read"}function Qe(w){w=w||{},this.links=w}function Se(w,D,y){D=D||new Qe,y=y||null,this.goal=w,this.substitution=D,this.parent=y}function je(w,D,y){this.head=w,this.body=D,this.dynamic=y||!1}function Te(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new ct(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Fe(typeof nc<"u"&&nc.exports?nodejs_user_input:tau_user_input,"read","user_input","text",!1,"reset"),user_output:new Fe(typeof nc<"u"&&nc.exports?nodejs_user_output:tau_user_output,"write","user_output","text",!1,"eof_code")},this.file_system=typeof nc<"u"&&nc.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(D){return D.substitution},this.format_error=function(D){return D.goal},this.flag={bounded:P.flag.bounded.value,max_integer:P.flag.max_integer.value,min_integer:P.flag.min_integer.value,integer_rounding_function:P.flag.integer_rounding_function.value,char_conversion:P.flag.char_conversion.value,debug:P.flag.debug.value,max_arity:P.flag.max_arity.value,unknown:P.flag.unknown.value,double_quotes:P.flag.double_quotes.value,occurs_check:P.flag.occurs_check.value,dialect:P.flag.dialect.value,version_data:P.flag.version_data.value,nodejs:P.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{":-":["fx","xfx"],"-->":["xfx"],"?-":["fx"]},1100:{";":["xfy"]},1050:{"->":["xfy"]},1e3:{",":["xfy"]},900:{"\\+":["fy"]},700:{"=":["xfx"],"\\=":["xfx"],"==":["xfx"],"\\==":["xfx"],"@<":["xfx"],"@=<":["xfx"],"@>":["xfx"],"@>=":["xfx"],"=..":["xfx"],is:["xfx"],"=:=":["xfx"],"=\\=":["xfx"],"<":["xfx"],"=<":["xfx"],">":["xfx"],">=":["xfx"]},600:{":":["xfy"]},500:{"+":["yfx"],"-":["yfx"],"/\\":["yfx"],"\\/":["yfx"]},400:{"*":["yfx"],"/":["yfx"],"//":["yfx"],rem:["yfx"],mod:["yfx"],"<<":["yfx"],">>":["yfx"]},200:{"**":["xfx"],"^":["xfy"],"-":["fy"],"+":["fy"],"\\":["fy"]}}}function ct(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level="top_level/0",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function Me(w,D,y){this.id=w,this.rules=D,this.exports=y,P.module[w]=this}Me.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},be.prototype.unify=function(w,D){if(D&&t(w.variables(),this.id)!==-1&&!P.type.is_variable(w))return null;var y={};return y[this.id]=w,new Qe(y)},ke.prototype.unify=function(w,D){return P.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new Qe:null},_.prototype.unify=function(w,D){if(P.type.is_term(w)&&this.indicator===w.indicator){for(var y=new Qe,F=0;F=0){var F=this.args[0].value,z=Math.floor(F/26),Z=F%26;return"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[Z]+(z!==0?z:"")}switch(this.indicator){case"[]/0":case"{}/0":case"!/0":return this.id;case"{}/1":return"{"+this.args[0].toString(w)+"}";case"./2":for(var ee="["+this.args[0].toString(w),se=this.args[1];se.indicator==="./2";)ee+=", "+se.args[0].toString(w),se=se.args[1];return se.indicator!=="[]/0"&&(ee+="|"+se.toString(w)),ee+="]",ee;case",/2":return"("+this.args[0].toString(w)+", "+this.args[1].toString(w)+")";default:var xe=this.id,Ne=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Ne===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(xe)&&xe!=="{}"&&xe!=="[]"&&(xe="'"+x(xe)+"'"),xe+(this.args.length?"("+s(this.args,function(ir){return ir.toString(w)}).join(", ")+")":"");var ut=Ne.priority>D.priority||Ne.priority===D.priority&&(Ne.class==="xfy"&&this.indicator!==D.indicator||Ne.class==="yfx"&&this.indicator!==D.indicator||this.indicator===D.indicator&&Ne.class==="yfx"&&y==="right"||this.indicator===D.indicator&&Ne.class==="xfy"&&y==="left");Ne.indicator=this.indicator;var Ct=ut?"(":"",Yt=ut?")":"";return this.args.length===0?"("+this.id+")":["fy","fx"].indexOf(Ne.class)!==-1?Ct+xe+" "+this.args[0].toString(w,Ne)+Yt:["yf","xf"].indexOf(Ne.class)!==-1?Ct+this.args[0].toString(w,Ne)+" "+xe+Yt:Ct+this.args[0].toString(w,Ne,"left")+" "+this.id+" "+this.args[1].toString(w,Ne,"right")+Yt}},Fe.prototype.toString=function(w){return"("+this.id+")"},Qe.prototype.toString=function(w){var D="{";for(var y in this.links)this.links.hasOwnProperty(y)&&(D!=="{"&&(D+=", "),D+=y+"/"+this.links[y].toString(w));return D+="}",D},Se.prototype.toString=function(w){return this.goal===null?"<"+this.substitution.toString(w)+">":"<"+this.goal.toString(w)+", "+this.substitution.toString(w)+">"},je.prototype.toString=function(w){return this.body?this.head.toString(w)+" :- "+this.body.toString(w)+".":this.head.toString(w)+"."},Te.prototype.toString=function(w){for(var D="",y=0;y=0;z--)F=new _(".",[D[z],F]);return F}return new _(this.id,s(this.args,function(Z){return Z.apply(w)}),this.ref)},Fe.prototype.apply=function(w){return this},je.prototype.apply=function(w){return new je(this.head.apply(w),this.body!==null?this.body.apply(w):null)},Qe.prototype.apply=function(w){var D,y={};for(D in this.links)this.links.hasOwnProperty(D)&&(y[D]=this.links[D].apply(w));return new Qe(y)},_.prototype.select=function(){for(var w=this;w.indicator===",/2";)w=w.args[0];return w},_.prototype.replace=function(w){return this.indicator===",/2"?this.args[0].indicator===",/2"?new _(",",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new _(",",[w,this.args[1]]):w},_.prototype.search=function(w){if(P.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var D=0;DD&&F0&&(D=this.head_point().substitution.domain());t(D,P.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id==="_")return new be(P.format_variable(this.session.rename));this.session.renamed_variables[w.id]=P.format_variable(this.session.rename)}return new be(this.session.renamed_variables[w.id])},Te.prototype.next_free_variable=function(){return this.thread.next_free_variable()},ct.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());t(w,P.format_variable(this.session.rename))!==-1;)this.session.rename++;return new be(P.format_variable(this.session.rename))},Te.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},ct.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},Te.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},ct.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},Te.prototype.prepend=function(w){return this.thread.prepend(w)},ct.prototype.prepend=function(w){for(var D=w.length-1;D>=0;D--)this.points.push(w[D])},Te.prototype.success=function(w,D){return this.thread.success(w,D)},ct.prototype.success=function(w,y){var y=typeof y>"u"?w:y;this.prepend([new Se(w.goal.replace(null),w.substitution,y)])},Te.prototype.throw_error=function(w){return this.thread.throw_error(w)},ct.prototype.throw_error=function(w){this.prepend([new Se(new _("throw",[w]),new Qe,null,null)])},Te.prototype.step_rule=function(w,D){return this.thread.step_rule(w,D)},ct.prototype.step_rule=function(w,D){var y=D.indicator;if(w==="user"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:t(this.session.modules,w)===-1?[]:[w],z=0;z1)&&this.again()},Te.prototype.answers=function(w,D,y){return this.thread.answers(w,D,y)},ct.prototype.answers=function(w,D,y){var F=D||1e3,z=this;if(D<=0){y&&y();return}this.answer(function(Z){w(Z),Z!==!1?setTimeout(function(){z.answers(w,D-1,y)},1):y&&y()})},Te.prototype.again=function(w){return this.thread.again(w)},ct.prototype.again=function(w){for(var D,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!P.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):P.type.is_error(this.head_point().goal)?(D=this.session.format_error(this.points.pop()),this.points=[],z(D)):(this.debugger&&this.debugger_states.push(this.head_point()),D=this.session.format_success(this.points.pop()),z(D))}},Te.prototype.unfold=function(w){if(w.body===null)return!1;var D=w.head,y=w.body,F=y.select(),z=new ct(this),Z=[];z.add_goal(F),z.step();for(var ee=z.points.length-1;ee>=0;ee--){var se=z.points[ee],xe=D.apply(se.substitution),Ne=y.replace(se.goal);Ne!==null&&(Ne=Ne.apply(se.substitution)),Z.push(new je(xe,Ne))}var ut=this.rules[D.indicator],Ct=t(ut,w);return Z.length>0&&Ct!==-1?(ut.splice.apply(ut,[Ct,1].concat(Z)),!0):!1},ct.prototype.unfold=function(w){return this.session.unfold(w)},be.prototype.interpret=function(w){return P.error.instantiation(w.level)},ke.prototype.interpret=function(w){return this},_.prototype.interpret=function(w){return P.type.is_unitary_list(this)?this.args[0].interpret(w):P.operate(w,this)},be.prototype.compare=function(w){return this.idw.id?1:0},ke.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.valuew.value)return 1},_.prototype.compare=function(w){if(this.args.lengthw.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var D=0;DF)return 1;if(w.constructor===ke){if(w.is_float&&D.is_float)return 0;if(w.is_float)return-1;if(D.is_float)return 1}return 0},is_substitution:function(w){return w instanceof Qe},is_state:function(w){return w instanceof Se},is_rule:function(w){return w instanceof je},is_variable:function(w){return w instanceof be},is_stream:function(w){return w instanceof Fe},is_anonymous_var:function(w){return w instanceof be&&w.id==="_"},is_callable:function(w){return w instanceof _},is_number:function(w){return w instanceof ke},is_integer:function(w){return w instanceof ke&&!w.is_float},is_float:function(w){return w instanceof ke&&w.is_float},is_term:function(w){return w instanceof _},is_atom:function(w){return w instanceof _&&w.args.length===0},is_ground:function(w){if(w instanceof be)return!1;if(w instanceof _){for(var D=0;D0},is_list:function(w){return w instanceof _&&(w.indicator==="[]/0"||w.indicator==="./2")},is_empty_list:function(w){return w instanceof _&&w.indicator==="[]/0"},is_non_empty_list:function(w){return w instanceof _&&w.indicator==="./2"},is_fully_list:function(w){for(;w instanceof _&&w.indicator==="./2";)w=w.args[1];return w instanceof be||w instanceof _&&w.indicator==="[]/0"},is_instantiated_list:function(w){for(;w instanceof _&&w.indicator==="./2";)w=w.args[1];return w instanceof _&&w.indicator==="[]/0"},is_unitary_list:function(w){return w instanceof _&&w.indicator==="./2"&&w.args[1]instanceof _&&w.args[1].indicator==="[]/0"},is_character:function(w){return w instanceof _&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof ke&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof ke&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof _&&P.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof _&&P.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof _&&P.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof _&&w.indicator==="throw/1"},is_predicate_indicator:function(w){return w instanceof _&&w.indicator==="//2"&&w.args[0]instanceof _&&w.args[0].args.length===0&&w.args[1]instanceof ke&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof _&&w.args.length===0&&P.flag[w.id]!==void 0},is_value_flag:function(w,D){if(!P.type.is_flag(w))return!1;for(var y in P.flag[w.id].allowed)if(P.flag[w.id].allowed.hasOwnProperty(y)&&P.flag[w.id].allowed[y].equals(D))return!0;return!1},is_io_mode:function(w){return P.type.is_atom(w)&&["read","write","append"].indexOf(w.id)!==-1},is_stream_option:function(w){return P.type.is_term(w)&&(w.indicator==="alias/1"&&P.type.is_atom(w.args[0])||w.indicator==="reposition/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="type/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary")||w.indicator==="eof_action/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))},is_stream_position:function(w){return P.type.is_integer(w)&&w.value>=0||P.type.is_atom(w)&&(w.id==="end_of_stream"||w.id==="past_end_of_stream")},is_stream_property:function(w){return P.type.is_term(w)&&(w.indicator==="input/0"||w.indicator==="output/0"||w.indicator==="alias/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0]))||w.indicator==="file_name/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0]))||w.indicator==="position/1"&&(P.type.is_variable(w.args[0])||P.type.is_stream_position(w.args[0]))||w.indicator==="reposition/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))||w.indicator==="type/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary"))||w.indicator==="mode/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="read"||w.args[0].id==="write"||w.args[0].id==="append"))||w.indicator==="eof_action/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))||w.indicator==="end_of_stream/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="at"||w.args[0].id==="past"||w.args[0].id==="not")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return P.type.is_term(w)&&["variables/1","variable_names/1","singletons/1"].indexOf(w.indicator)!==-1},is_write_option:function(w){return P.type.is_term(w)&&(w.indicator==="quoted/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="ignore_ops/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="numbervars/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))},is_close_option:function(w){return P.type.is_term(w)&&w.indicator==="force/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")},is_modifiable_flag:function(w){return P.type.is_flag(w)&&P.flag[w.id].changeable},is_module:function(w){return w instanceof _&&w.indicator==="library/1"&&w.args[0]instanceof _&&w.args[0].args.length===0&&P.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{"e/0":{type_args:null,type_result:!0,fn:function(w){return Math.E}},"pi/0":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},"tau/0":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},"epsilon/0":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},"+/1":{type_args:null,type_result:null,fn:function(w,D){return w}},"-/1":{type_args:null,type_result:null,fn:function(w,D){return-w}},"\\/1":{type_args:!1,type_result:!1,fn:function(w,D){return~w}},"abs/1":{type_args:null,type_result:null,fn:function(w,D){return Math.abs(w)}},"sign/1":{type_args:null,type_result:null,fn:function(w,D){return Math.sign(w)}},"float_integer_part/1":{type_args:!0,type_result:!1,fn:function(w,D){return parseInt(w)}},"float_fractional_part/1":{type_args:!0,type_result:!0,fn:function(w,D){return w-parseInt(w)}},"float/1":{type_args:null,type_result:!0,fn:function(w,D){return parseFloat(w)}},"floor/1":{type_args:!0,type_result:!1,fn:function(w,D){return Math.floor(w)}},"truncate/1":{type_args:!0,type_result:!1,fn:function(w,D){return parseInt(w)}},"round/1":{type_args:!0,type_result:!1,fn:function(w,D){return Math.round(w)}},"ceiling/1":{type_args:!0,type_result:!1,fn:function(w,D){return Math.ceil(w)}},"sin/1":{type_args:null,type_result:!0,fn:function(w,D){return Math.sin(w)}},"cos/1":{type_args:null,type_result:!0,fn:function(w,D){return Math.cos(w)}},"tan/1":{type_args:null,type_result:!0,fn:function(w,D){return Math.tan(w)}},"asin/1":{type_args:null,type_result:!0,fn:function(w,D){return Math.asin(w)}},"acos/1":{type_args:null,type_result:!0,fn:function(w,D){return Math.acos(w)}},"atan/1":{type_args:null,type_result:!0,fn:function(w,D){return Math.atan(w)}},"atan2/2":{type_args:null,type_result:!0,fn:function(w,D,y){return Math.atan2(w,D)}},"exp/1":{type_args:null,type_result:!0,fn:function(w,D){return Math.exp(w)}},"sqrt/1":{type_args:null,type_result:!0,fn:function(w,D){return Math.sqrt(w)}},"log/1":{type_args:null,type_result:!0,fn:function(w,D){return w>0?Math.log(w):P.error.evaluation("undefined",D.__call_indicator)}},"+/2":{type_args:null,type_result:null,fn:function(w,D,y){return w+D}},"-/2":{type_args:null,type_result:null,fn:function(w,D,y){return w-D}},"*/2":{type_args:null,type_result:null,fn:function(w,D,y){return w*D}},"//2":{type_args:null,type_result:!0,fn:function(w,D,y){return D?w/D:P.error.evaluation("zero_division",y.__call_indicator)}},"///2":{type_args:!1,type_result:!1,fn:function(w,D,y){return D?parseInt(w/D):P.error.evaluation("zero_division",y.__call_indicator)}},"**/2":{type_args:null,type_result:!0,fn:function(w,D,y){return Math.pow(w,D)}},"^/2":{type_args:null,type_result:null,fn:function(w,D,y){return Math.pow(w,D)}},"<>/2":{type_args:!1,type_result:!1,fn:function(w,D,y){return w>>D}},"/\\/2":{type_args:!1,type_result:!1,fn:function(w,D,y){return w&D}},"\\//2":{type_args:!1,type_result:!1,fn:function(w,D,y){return w|D}},"xor/2":{type_args:!1,type_result:!1,fn:function(w,D,y){return w^D}},"rem/2":{type_args:!1,type_result:!1,fn:function(w,D,y){return D?w%D:P.error.evaluation("zero_division",y.__call_indicator)}},"mod/2":{type_args:!1,type_result:!1,fn:function(w,D,y){return D?w-parseInt(w/D)*D:P.error.evaluation("zero_division",y.__call_indicator)}},"max/2":{type_args:null,type_result:null,fn:function(w,D,y){return Math.max(w,D)}},"min/2":{type_args:null,type_result:null,fn:function(w,D,y){return Math.min(w,D)}}}},directive:{"dynamic/1":function(w,D){var y=D.args[0];if(P.type.is_variable(y))w.throw_error(P.error.instantiation(D.indicator));else if(!P.type.is_compound(y)||y.indicator!=="//2")w.throw_error(P.error.type("predicate_indicator",y,D.indicator));else if(P.type.is_variable(y.args[0])||P.type.is_variable(y.args[1]))w.throw_error(P.error.instantiation(D.indicator));else if(!P.type.is_atom(y.args[0]))w.throw_error(P.error.type("atom",y.args[0],D.indicator));else if(!P.type.is_integer(y.args[1]))w.throw_error(P.error.type("integer",y.args[1],D.indicator));else{var F=D.args[0].args[0].id+"/"+D.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},"multifile/1":function(w,D){var y=D.args[0];P.type.is_variable(y)?w.throw_error(P.error.instantiation(D.indicator)):!P.type.is_compound(y)||y.indicator!=="//2"?w.throw_error(P.error.type("predicate_indicator",y,D.indicator)):P.type.is_variable(y.args[0])||P.type.is_variable(y.args[1])?w.throw_error(P.error.instantiation(D.indicator)):P.type.is_atom(y.args[0])?P.type.is_integer(y.args[1])?w.session.multifile_predicates[D.args[0].args[0].id+"/"+D.args[0].args[1].value]=!0:w.throw_error(P.error.type("integer",y.args[1],D.indicator)):w.throw_error(P.error.type("atom",y.args[0],D.indicator))},"set_prolog_flag/2":function(w,D){var y=D.args[0],F=D.args[1];P.type.is_variable(y)||P.type.is_variable(F)?w.throw_error(P.error.instantiation(D.indicator)):P.type.is_atom(y)?P.type.is_flag(y)?P.type.is_value_flag(y,F)?P.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(P.error.permission("modify","flag",y)):w.throw_error(P.error.domain("flag_value",new _("+",[y,F]),D.indicator)):w.throw_error(P.error.domain("prolog_flag",y,D.indicator)):w.throw_error(P.error.type("atom",y,D.indicator))},"use_module/1":function(w,D){var y=D.args[0];if(P.type.is_variable(y))w.throw_error(P.error.instantiation(D.indicator));else if(!P.type.is_term(y))w.throw_error(P.error.type("term",y,D.indicator));else if(P.type.is_module(y)){var F=y.args[0].id;t(w.session.modules,F)===-1&&w.session.modules.push(F)}},"char_conversion/2":function(w,D){var y=D.args[0],F=D.args[1];P.type.is_variable(y)||P.type.is_variable(F)?w.throw_error(P.error.instantiation(D.indicator)):P.type.is_character(y)?P.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(P.error.type("character",F,D.indicator)):w.throw_error(P.error.type("character",y,D.indicator))},"op/3":function(w,D){var y=D.args[0],F=D.args[1],z=D.args[2];if(P.type.is_variable(y)||P.type.is_variable(F)||P.type.is_variable(z))w.throw_error(P.error.instantiation(D.indicator));else if(!P.type.is_integer(y))w.throw_error(P.error.type("integer",y,D.indicator));else if(!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,D.indicator));else if(!P.type.is_atom(z))w.throw_error(P.error.type("atom",z,D.indicator));else if(y.value<0||y.value>1200)w.throw_error(P.error.domain("operator_priority",y,D.indicator));else if(z.id===",")w.throw_error(P.error.permission("modify","operator",z,D.indicator));else if(z.id==="|"&&(y.value<1001||F.id.length!==3))w.throw_error(P.error.permission("modify","operator",z,D.indicator));else if(["fy","fx","yf","xf","xfx","yfx","xfy"].indexOf(F.id)===-1)w.throw_error(P.error.domain("operator_specifier",F,D.indicator));else{var Z={prefix:null,infix:null,postfix:null};for(var ee in w.session.__operators)if(w.session.__operators.hasOwnProperty(ee)){var se=w.session.__operators[ee][z.id];se&&(t(se,"fx")!==-1&&(Z.prefix={priority:ee,type:"fx"}),t(se,"fy")!==-1&&(Z.prefix={priority:ee,type:"fy"}),t(se,"xf")!==-1&&(Z.postfix={priority:ee,type:"xf"}),t(se,"yf")!==-1&&(Z.postfix={priority:ee,type:"yf"}),t(se,"xfx")!==-1&&(Z.infix={priority:ee,type:"xfx"}),t(se,"xfy")!==-1&&(Z.infix={priority:ee,type:"xfy"}),t(se,"yfx")!==-1&&(Z.infix={priority:ee,type:"yfx"}))}var xe;switch(F.id){case"fy":case"fx":xe="prefix";break;case"yf":case"xf":xe="postfix";break;default:xe="infix";break}if(((Z.prefix&&xe==="prefix"||Z.postfix&&xe==="postfix"||Z.infix&&xe==="infix")&&Z[xe].type!==F.id||Z.infix&&xe==="postfix"||Z.postfix&&xe==="infix")&&y.value!==0)w.throw_error(P.error.permission("create","operator",z,D.indicator));else return Z[xe]&&(ve(w.session.__operators[Z[xe].priority][z.id],F.id),w.session.__operators[Z[xe].priority][z.id].length===0&&delete w.session.__operators[Z[xe].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{"op/3":function(w,D,y){P.directive["op/3"](w,y)&&w.success(D)},"current_op/3":function(w,D,y){var F=y.args[0],z=y.args[1],Z=y.args[2],ee=[];for(var se in w.session.__operators)for(var xe in w.session.__operators[se])for(var Ne=0;Ne/2"){var F=w.points,z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(Ne){return Ne.substitution},w.session.format_error=function(Ne){return Ne.goal},w.points=[new Se(y.args[0].args[0],D.substitution,D)];var ee=function(Ne){w.points=F,w.session.format_success=z,w.session.format_error=Z,Ne===!1?w.prepend([new Se(D.goal.replace(y.args[1]),D.substitution,D)]):P.type.is_error(Ne)?w.throw_error(Ne.args[0]):Ne===null?(w.prepend([D]),w.__calls.shift()(null)):w.prepend([new Se(D.goal.replace(y.args[0].args[1]).apply(Ne),D.substitution.apply(Ne),D)])};w.__calls.unshift(ee)}else{var se=new Se(D.goal.replace(y.args[0]),D.substitution,D),xe=new Se(D.goal.replace(y.args[1]),D.substitution,D);w.prepend([se,xe])}},"!/0":function(w,D,y){var F,z,Z=[];for(F=D,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var ee=F.goal.select();if(ee&&ee.id==="call"&&ee.search(y)){F=z;break}}for(var se=w.points.length-1;se>=0;se--){for(var xe=w.points[se],Ne=xe.parent;Ne!==null&&Ne!==F.parent;)Ne=Ne.parent;Ne===null&&Ne!==F.parent&&Z.push(xe)}w.points=Z.reverse(),w.success(D)},"\\+/1":function(w,D,y){var F=y.args[0];P.type.is_variable(F)?w.throw_error(P.error.instantiation(w.level)):P.type.is_callable(F)?w.prepend([new Se(D.goal.replace(new _(",",[new _(",",[new _("call",[F]),new _("!",[])]),new _("fail",[])])),D.substitution,D),new Se(D.goal.replace(null),D.substitution,D)]):w.throw_error(P.error.type("callable",F,w.level))},"->/2":function(w,D,y){var F=D.goal.replace(new _(",",[y.args[0],new _(",",[new _("!"),y.args[1]])]));w.prepend([new Se(F,D.substitution,D)])},"fail/0":function(w,D,y){},"false/0":function(w,D,y){},"true/0":function(w,D,y){w.success(D)},"call/1":ce(1),"call/2":ce(2),"call/3":ce(3),"call/4":ce(4),"call/5":ce(5),"call/6":ce(6),"call/7":ce(7),"call/8":ce(8),"once/1":function(w,D,y){var F=y.args[0];w.prepend([new Se(D.goal.replace(new _(",",[new _("call",[F]),new _("!",[])])),D.substitution,D)])},"forall/2":function(w,D,y){var F=y.args[0],z=y.args[1];w.prepend([new Se(D.goal.replace(new _("\\+",[new _(",",[new _("call",[F]),new _("\\+",[new _("call",[z])])])])),D.substitution,D)])},"repeat/0":function(w,D,y){w.prepend([new Se(D.goal.replace(null),D.substitution,D),D])},"throw/1":function(w,D,y){P.type.is_variable(y.args[0])?w.throw_error(P.error.instantiation(w.level)):w.throw_error(y.args[0])},"catch/3":function(w,D,y){var F=w.points;w.points=[],w.prepend([new Se(y.args[0],D.substitution,D)]);var z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(se){return se.substitution},w.session.format_error=function(se){return se.goal};var ee=function(se){var xe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=Z,P.type.is_error(se)){for(var Ne=[],ut=w.points.length-1;ut>=0;ut--){for(var ir=w.points[ut],Ct=ir.parent;Ct!==null&&Ct!==D.parent;)Ct=Ct.parent;Ct===null&&Ct!==D.parent&&Ne.push(ir)}w.points=Ne;var Yt=w.get_flag("occurs_check").indicator==="true/0",ir=new Se,Pt=P.unify(se.args[0],y.args[1],Yt);Pt!==null?(ir.substitution=D.substitution.apply(Pt),ir.goal=D.goal.replace(y.args[2]).apply(Pt),ir.parent=D,w.prepend([ir])):w.throw_error(se.args[0])}else if(se!==!1){for(var mn=se===null?[]:[new Se(D.goal.apply(se).replace(null),D.substitution.apply(se),D)],Pr=[],ut=xe.length-1;ut>=0;ut--){Pr.push(xe[ut]);var Cr=xe[ut].goal!==null?xe[ut].goal.select():null;if(P.type.is_term(Cr)&&Cr.indicator==="!/0")break}var Lr=s(Pr,function(on){return on.goal===null&&(on.goal=new _("true",[])),on=new Se(D.goal.replace(new _("catch",[on.goal,y.args[1],y.args[2]])),D.substitution.apply(on.substitution),on.parent),on.exclude=y.args[0].variables(),on}).reverse();w.prepend(Lr),w.prepend(mn),se===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift(ee)},"=/2":function(w,D,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=new Se,Z=P.unify(y.args[0],y.args[1],F);Z!==null&&(z.goal=D.goal.apply(Z).replace(null),z.substitution=D.substitution.apply(Z),z.parent=D,w.prepend([z]))},"unify_with_occurs_check/2":function(w,D,y){var F=new Se,z=P.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=D.goal.apply(z).replace(null),F.substitution=D.substitution.apply(z),F.parent=D,w.prepend([F]))},"\\=/2":function(w,D,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=P.unify(y.args[0],y.args[1],F);z===null&&w.success(D)},"subsumes_term/2":function(w,D,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=P.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(D)},"findall/3":function(w,D,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(z))w.throw_error(P.error.type("callable",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_list(Z))w.throw_error(P.error.type("list",Z,y.indicator));else{var ee=w.next_free_variable(),se=new _(",",[z,new _("=",[ee,F])]),xe=w.points,Ne=w.session.limit,ut=w.session.format_success;w.session.format_success=function(ir){return ir.substitution},w.add_goal(se,!0,D);var Ct=[],Yt=function(ir){if(ir!==!1&&ir!==null&&!P.type.is_error(ir))w.__calls.unshift(Yt),Ct.push(ir.links[ee.id]),w.session.limit=w.current_limit;else if(w.points=xe,w.session.limit=Ne,w.session.format_success=ut,P.type.is_error(ir))w.throw_error(ir.args[0]);else if(w.current_limit>0){for(var Pt=new _("[]"),mn=Ct.length-1;mn>=0;mn--)Pt=new _(".",[Ct[mn],Pt]);w.prepend([new Se(D.goal.replace(new _("=",[Z,Pt])),D.substitution,D)])}};w.__calls.unshift(Yt)}},"bagof/3":function(w,D,y){var F,z=y.args[0],Z=y.args[1],ee=y.args[2];if(P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(Z))w.throw_error(P.error.type("callable",Z,y.indicator));else if(!P.type.is_variable(ee)&&!P.type.is_list(ee))w.throw_error(P.error.type("list",ee,y.indicator));else{var se=w.next_free_variable(),xe;Z.indicator==="^/2"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Ne=Z.variables().filter(function(Lr){return t(xe,Lr)===-1}),ut=new _("[]"),Ct=Ne.length-1;Ct>=0;Ct--)ut=new _(".",[new be(Ne[Ct]),ut]);var Yt=new _(",",[Z,new _("=",[se,new _(",",[ut,z])])]),ir=w.points,Pt=w.session.limit,mn=w.session.format_success;w.session.format_success=function(Lr){return Lr.substitution},w.add_goal(Yt,!0,D);var Pr=[],Cr=function(Lr){if(Lr!==!1&&Lr!==null&&!P.type.is_error(Lr)){w.__calls.unshift(Cr);var on=!1,ci=Lr.links[se.id].args[0],Do=Lr.links[se.id].args[1];for(var is in Pr)if(Pr.hasOwnProperty(is)){var ao=Pr[is];if(ao.variables.equals(ci)){ao.answers.push(Do),on=!0;break}}on||Pr.push({variables:ci,answers:[Do]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=mn,P.type.is_error(Lr))w.throw_error(Lr.args[0]);else if(w.current_limit>0){for(var Po=[],ji=0;ji=0;xo--)lo=new _(".",[Lr[xo],lo]);Po.push(new Se(D.goal.replace(new _(",",[new _("=",[ut,Pr[ji].variables]),new _("=",[ee,lo])])),D.substitution,D))}w.prepend(Po)}};w.__calls.unshift(Cr)}},"setof/3":function(w,D,y){var F,z=y.args[0],Z=y.args[1],ee=y.args[2];if(P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(Z))w.throw_error(P.error.type("callable",Z,y.indicator));else if(!P.type.is_variable(ee)&&!P.type.is_list(ee))w.throw_error(P.error.type("list",ee,y.indicator));else{var se=w.next_free_variable(),xe;Z.indicator==="^/2"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Ne=Z.variables().filter(function(Lr){return t(xe,Lr)===-1}),ut=new _("[]"),Ct=Ne.length-1;Ct>=0;Ct--)ut=new _(".",[new be(Ne[Ct]),ut]);var Yt=new _(",",[Z,new _("=",[se,new _(",",[ut,z])])]),ir=w.points,Pt=w.session.limit,mn=w.session.format_success;w.session.format_success=function(Lr){return Lr.substitution},w.add_goal(Yt,!0,D);var Pr=[],Cr=function(Lr){if(Lr!==!1&&Lr!==null&&!P.type.is_error(Lr)){w.__calls.unshift(Cr);var on=!1,ci=Lr.links[se.id].args[0],Do=Lr.links[se.id].args[1];for(var is in Pr)if(Pr.hasOwnProperty(is)){var ao=Pr[is];if(ao.variables.equals(ci)){ao.answers.push(Do),on=!0;break}}on||Pr.push({variables:ci,answers:[Do]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=mn,P.type.is_error(Lr))w.throw_error(Lr.args[0]);else if(w.current_limit>0){for(var Po=[],ji=0;ji=0;xo--)lo=new _(".",[Lr[xo],lo]);Po.push(new Se(D.goal.replace(new _(",",[new _("=",[ut,Pr[ji].variables]),new _("=",[ee,lo])])),D.substitution,D))}w.prepend(Po)}};w.__calls.unshift(Cr)}},"functor/3":function(w,D,y){var F,z=y.args[0],Z=y.args[1],ee=y.args[2];if(P.type.is_variable(z)&&(P.type.is_variable(Z)||P.type.is_variable(ee)))w.throw_error(P.error.instantiation("functor/3"));else if(!P.type.is_variable(ee)&&!P.type.is_integer(ee))w.throw_error(P.error.type("integer",y.args[2],"functor/3"));else if(!P.type.is_variable(Z)&&!P.type.is_atomic(Z))w.throw_error(P.error.type("atomic",y.args[1],"functor/3"));else if(P.type.is_integer(Z)&&P.type.is_integer(ee)&&ee.value!==0)w.throw_error(P.error.type("atom",y.args[1],"functor/3"));else if(P.type.is_variable(z)){if(y.args[2].value>=0){for(var se=[],xe=0;xe0&&F<=y.args[1].args.length){var z=new _("=",[y.args[1].args[F-1],y.args[2]]);w.prepend([new Se(D.goal.replace(z),D.substitution,D)])}}},"=../2":function(w,D,y){var F;if(P.type.is_variable(y.args[0])&&(P.type.is_variable(y.args[1])||P.type.is_non_empty_list(y.args[1])&&P.type.is_variable(y.args[1].args[0])))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_fully_list(y.args[1]))w.throw_error(P.error.type("list",y.args[1],y.indicator));else if(P.type.is_variable(y.args[0])){if(!P.type.is_variable(y.args[1])){var Z=[];for(F=y.args[1].args[1];F.indicator==="./2";)Z.push(F.args[0]),F=F.args[1];P.type.is_variable(y.args[0])&&P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):Z.length===0&&P.type.is_compound(y.args[1].args[0])?w.throw_error(P.error.type("atomic",y.args[1].args[0],y.indicator)):Z.length>0&&(P.type.is_compound(y.args[1].args[0])||P.type.is_number(y.args[1].args[0]))?w.throw_error(P.error.type("atom",y.args[1].args[0],y.indicator)):Z.length===0?w.prepend([new Se(D.goal.replace(new _("=",[y.args[1].args[0],y.args[0]],D)),D.substitution,D)]):w.prepend([new Se(D.goal.replace(new _("=",[new _(y.args[1].args[0].id,Z),y.args[0]])),D.substitution,D)])}}else{if(P.type.is_atomic(y.args[0]))F=new _(".",[y.args[0],new _("[]")]);else{F=new _("[]");for(var z=y.args[0].args.length-1;z>=0;z--)F=new _(".",[y.args[0].args[z],F]);F=new _(".",[new _(y.args[0].id),F])}w.prepend([new Se(D.goal.replace(new _("=",[F,y.args[1]])),D.substitution,D)])}},"copy_term/2":function(w,D,y){var F=y.args[0].rename(w);w.prepend([new Se(D.goal.replace(new _("=",[F,y.args[1]])),D.substitution,D.parent)])},"term_variables/2":function(w,D,y){var F=y.args[0],z=y.args[1];if(!P.type.is_fully_list(z))w.throw_error(P.error.type("list",z,y.indicator));else{var Z=d(s(Ie(F.variables()),function(ee){return new be(ee)}));w.prepend([new Se(D.goal.replace(new _("=",[z,Z])),D.substitution,D)])}},"clause/2":function(w,D,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else if(!P.type.is_variable(y.args[1])&&!P.type.is_callable(y.args[1]))w.throw_error(P.error.type("callable",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var Z=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},Z=Z.rename(w),Z.body===null&&(Z.body=new _("true"));var ee=new _(",",[new _("=",[Z.head,y.args[0]]),new _("=",[Z.body,y.args[1]])]);F.push(new Se(D.goal.replace(ee),D.substitution,D))}w.prepend(F)}else w.throw_error(P.error.permission("access","private_procedure",y.args[0].indicator,y.indicator))},"current_predicate/1":function(w,D,y){var F=y.args[0];if(!P.type.is_variable(F)&&(!P.type.is_compound(F)||F.indicator!=="//2"))w.throw_error(P.error.type("predicate_indicator",F,y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_variable(F.args[0])&&!P.type.is_atom(F.args[0]))w.throw_error(P.error.type("atom",F.args[0],y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_variable(F.args[1])&&!P.type.is_integer(F.args[1]))w.throw_error(P.error.type("integer",F.args[1],y.indicator));else{var z=[];for(var Z in w.session.rules)if(w.session.rules.hasOwnProperty(Z)){var ee=Z.lastIndexOf("/"),se=Z.substr(0,ee),xe=parseInt(Z.substr(ee+1,Z.length-(ee+1))),Ne=new _("/",[new _(se),new ke(xe,!1)]),ut=new _("=",[Ne,F]);z.push(new Se(D.goal.replace(ut),D.substitution,D))}w.prepend(z)}},"asserta/1":function(w,D,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=ye(y.args[0].args[1])):(F=y.args[0],z=null),P.type.is_callable(F)?z!==null&&!P.type.is_callable(z)?w.throw_error(P.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new je(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(D)):w.throw_error(P.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(P.error.type("callable",F,y.indicator))}},"assertz/1":function(w,D,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=ye(y.args[0].args[1])):(F=y.args[0],z=null),P.type.is_callable(F)?z!==null&&!P.type.is_callable(z)?w.throw_error(P.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new je(F,z,!0)),w.success(D)):w.throw_error(P.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(P.error.type("callable",F,y.indicator))}},"retract/1":function(w,D,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new _("true")),typeof D.retract>"u")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var Z=[],ee=0;eew.get_flag("max_arity").value)w.throw_error(P.error.representation("max_arity",y.indicator));else{var F=y.args[0].args[0].id+"/"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(D)):w.throw_error(P.error.permission("modify","static_procedure",F,y.indicator))}},"atom_length/2":function(w,D,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_atom(y.args[0]))w.throw_error(P.error.type("atom",y.args[0],y.indicator));else if(!P.type.is_variable(y.args[1])&&!P.type.is_integer(y.args[1]))w.throw_error(P.error.type("integer",y.args[1],y.indicator));else if(P.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(P.error.domain("not_less_than_zero",y.args[1],y.indicator));else{var F=new ke(y.args[0].id.length,!1);w.prepend([new Se(D.goal.replace(new _("=",[F,y.args[1]])),D.substitution,D)])}},"atom_concat/3":function(w,D,y){var F,z,Z=y.args[0],ee=y.args[1],se=y.args[2];if(P.type.is_variable(se)&&(P.type.is_variable(Z)||P.type.is_variable(ee)))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_atom(Z))w.throw_error(P.error.type("atom",Z,y.indicator));else if(!P.type.is_variable(ee)&&!P.type.is_atom(ee))w.throw_error(P.error.type("atom",ee,y.indicator));else if(!P.type.is_variable(se)&&!P.type.is_atom(se))w.throw_error(P.error.type("atom",se,y.indicator));else{var xe=P.type.is_variable(Z),Ne=P.type.is_variable(ee);if(!xe&&!Ne)z=new _("=",[se,new _(Z.id+ee.id)]),w.prepend([new Se(D.goal.replace(z),D.substitution,D)]);else if(xe&&!Ne)F=se.id.substr(0,se.id.length-ee.id.length),F+ee.id===se.id&&(z=new _("=",[Z,new _(F)]),w.prepend([new Se(D.goal.replace(z),D.substitution,D)]));else if(Ne&&!xe)F=se.id.substr(Z.id.length),Z.id+F===se.id&&(z=new _("=",[ee,new _(F)]),w.prepend([new Se(D.goal.replace(z),D.substitution,D)]));else{for(var ut=[],Ct=0;Ct<=se.id.length;Ct++){var Yt=new _(se.id.substr(0,Ct)),ir=new _(se.id.substr(Ct));z=new _(",",[new _("=",[Yt,Z]),new _("=",[ir,ee])]),ut.push(new Se(D.goal.replace(z),D.substitution,D))}w.prepend(ut)}}},"sub_atom/5":function(w,D,y){var F,z=y.args[0],Z=y.args[1],ee=y.args[2],se=y.args[3],xe=y.args[4];if(P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_integer(Z))w.throw_error(P.error.type("integer",Z,y.indicator));else if(!P.type.is_variable(ee)&&!P.type.is_integer(ee))w.throw_error(P.error.type("integer",ee,y.indicator));else if(!P.type.is_variable(se)&&!P.type.is_integer(se))w.throw_error(P.error.type("integer",se,y.indicator));else if(P.type.is_integer(Z)&&Z.value<0)w.throw_error(P.error.domain("not_less_than_zero",Z,y.indicator));else if(P.type.is_integer(ee)&&ee.value<0)w.throw_error(P.error.domain("not_less_than_zero",ee,y.indicator));else if(P.type.is_integer(se)&&se.value<0)w.throw_error(P.error.domain("not_less_than_zero",se,y.indicator));else{var Ne=[],ut=[],Ct=[];if(P.type.is_variable(Z))for(F=0;F<=z.id.length;F++)Ne.push(F);else Ne.push(Z.value);if(P.type.is_variable(ee))for(F=0;F<=z.id.length;F++)ut.push(F);else ut.push(ee.value);if(P.type.is_variable(se))for(F=0;F<=z.id.length;F++)Ct.push(F);else Ct.push(se.value);var Yt=[];for(var ir in Ne)if(Ne.hasOwnProperty(ir)){F=Ne[ir];for(var Pt in ut)if(ut.hasOwnProperty(Pt)){var mn=ut[Pt],Pr=z.id.length-F-mn;if(t(Ct,Pr)!==-1&&F+mn+Pr===z.id.length){var Cr=z.id.substr(F,mn);if(z.id===z.id.substr(0,F)+Cr+z.id.substr(F+mn,Pr)){var Lr=new _("=",[new _(Cr),xe]),on=new _("=",[Z,new ke(F)]),ci=new _("=",[ee,new ke(mn)]),Do=new _("=",[se,new ke(Pr)]),is=new _(",",[new _(",",[new _(",",[on,ci]),Do]),Lr]);Yt.push(new Se(D.goal.replace(is),D.substitution,D))}}}}w.prepend(Yt)}},"atom_chars/2":function(w,D,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(P.type.is_variable(F)){for(var se=z,xe=P.type.is_variable(F),Ne="";se.indicator==="./2";){if(P.type.is_character(se.args[0]))Ne+=se.args[0].id;else if(P.type.is_variable(se.args[0])&&xe){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type("character",se.args[0],y.indicator));return}se=se.args[1]}P.type.is_variable(se)&&xe?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_empty_list(se)&&!P.type.is_variable(se)?w.throw_error(P.error.type("list",z,y.indicator)):w.prepend([new Se(D.goal.replace(new _("=",[new _(Ne),F])),D.substitution,D)])}else{for(var Z=new _("[]"),ee=F.id.length-1;ee>=0;ee--)Z=new _(".",[new _(F.id.charAt(ee)),Z]);w.prepend([new Se(D.goal.replace(new _("=",[z,Z])),D.substitution,D)])}},"atom_codes/2":function(w,D,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(P.type.is_variable(F)){for(var se=z,xe=P.type.is_variable(F),Ne="";se.indicator==="./2";){if(P.type.is_character_code(se.args[0]))Ne+=c(se.args[0].value);else if(P.type.is_variable(se.args[0])&&xe){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.representation("character_code",y.indicator));return}se=se.args[1]}P.type.is_variable(se)&&xe?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_empty_list(se)&&!P.type.is_variable(se)?w.throw_error(P.error.type("list",z,y.indicator)):w.prepend([new Se(D.goal.replace(new _("=",[new _(Ne),F])),D.substitution,D)])}else{for(var Z=new _("[]"),ee=F.id.length-1;ee>=0;ee--)Z=new _(".",[new ke(n(F.id,ee),!1),Z]);w.prepend([new Se(D.goal.replace(new _("=",[z,Z])),D.substitution,D)])}},"char_code/2":function(w,D,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_character(F))w.throw_error(P.error.type("character",F,y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_integer(z))w.throw_error(P.error.type("integer",z,y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_character_code(z))w.throw_error(P.error.representation("character_code",y.indicator));else if(P.type.is_variable(z)){var Z=new ke(n(F.id,0),!1);w.prepend([new Se(D.goal.replace(new _("=",[Z,z])),D.substitution,D)])}else{var ee=new _(c(z.value));w.prepend([new Se(D.goal.replace(new _("=",[ee,F])),D.substitution,D)])}},"number_chars/2":function(w,D,y){var F,z=y.args[0],Z=y.args[1];if(P.type.is_variable(z)&&P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_number(z))w.throw_error(P.error.type("number",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_list(Z))w.throw_error(P.error.type("list",Z,y.indicator));else{var ee=P.type.is_variable(z);if(!P.type.is_variable(Z)){var se=Z,xe=!0;for(F="";se.indicator==="./2";){if(P.type.is_character(se.args[0]))F+=se.args[0].id;else if(P.type.is_variable(se.args[0]))xe=!1;else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type("character",se.args[0],y.indicator));return}se=se.args[1]}if(xe=xe&&P.type.is_empty_list(se),!P.type.is_empty_list(se)&&!P.type.is_variable(se)){w.throw_error(P.error.type("list",Z,y.indicator));return}if(!xe&&ee){w.throw_error(P.error.instantiation(y.indicator));return}else if(xe)if(P.type.is_variable(se)&&ee){w.throw_error(P.error.instantiation(y.indicator));return}else{var Ne=w.parse(F),ut=Ne.value;!P.type.is_number(ut)||Ne.tokens[Ne.tokens.length-1].space?w.throw_error(P.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new Se(D.goal.replace(new _("=",[z,ut])),D.substitution,D)]);return}}if(!ee){F=z.toString();for(var Ct=new _("[]"),Yt=F.length-1;Yt>=0;Yt--)Ct=new _(".",[new _(F.charAt(Yt)),Ct]);w.prepend([new Se(D.goal.replace(new _("=",[Z,Ct])),D.substitution,D)])}}},"number_codes/2":function(w,D,y){var F,z=y.args[0],Z=y.args[1];if(P.type.is_variable(z)&&P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_number(z))w.throw_error(P.error.type("number",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_list(Z))w.throw_error(P.error.type("list",Z,y.indicator));else{var ee=P.type.is_variable(z);if(!P.type.is_variable(Z)){var se=Z,xe=!0;for(F="";se.indicator==="./2";){if(P.type.is_character_code(se.args[0]))F+=c(se.args[0].value);else if(P.type.is_variable(se.args[0]))xe=!1;else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type("character_code",se.args[0],y.indicator));return}se=se.args[1]}if(xe=xe&&P.type.is_empty_list(se),!P.type.is_empty_list(se)&&!P.type.is_variable(se)){w.throw_error(P.error.type("list",Z,y.indicator));return}if(!xe&&ee){w.throw_error(P.error.instantiation(y.indicator));return}else if(xe)if(P.type.is_variable(se)&&ee){w.throw_error(P.error.instantiation(y.indicator));return}else{var Ne=w.parse(F),ut=Ne.value;!P.type.is_number(ut)||Ne.tokens[Ne.tokens.length-1].space?w.throw_error(P.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new Se(D.goal.replace(new _("=",[z,ut])),D.substitution,D)]);return}}if(!ee){F=z.toString();for(var Ct=new _("[]"),Yt=F.length-1;Yt>=0;Yt--)Ct=new _(".",[new ke(n(F,Yt),!1),Ct]);w.prepend([new Se(D.goal.replace(new _("=",[Z,Ct])),D.substitution,D)])}}},"upcase_atom/2":function(w,D,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?!P.type.is_variable(z)&&!P.type.is_atom(z)?w.throw_error(P.error.type("atom",z,y.indicator)):w.prepend([new Se(D.goal.replace(new _("=",[z,new _(F.id.toUpperCase(),[])])),D.substitution,D)]):w.throw_error(P.error.type("atom",F,y.indicator))},"downcase_atom/2":function(w,D,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?!P.type.is_variable(z)&&!P.type.is_atom(z)?w.throw_error(P.error.type("atom",z,y.indicator)):w.prepend([new Se(D.goal.replace(new _("=",[z,new _(F.id.toLowerCase(),[])])),D.substitution,D)]):w.throw_error(P.error.type("atom",F,y.indicator))},"atomic_list_concat/2":function(w,D,y){var F=y.args[0],z=y.args[1];w.prepend([new Se(D.goal.replace(new _("atomic_list_concat",[F,new _("",[]),z])),D.substitution,D)])},"atomic_list_concat/3":function(w,D,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(P.type.is_variable(z)||P.type.is_variable(F)&&P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_list(F))w.throw_error(P.error.type("list",F,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_atom(Z))w.throw_error(P.error.type("atom",Z,y.indicator));else if(P.type.is_variable(Z)){for(var se="",xe=F;P.type.is_term(xe)&&xe.indicator==="./2";){if(!P.type.is_atom(xe.args[0])&&!P.type.is_number(xe.args[0])){w.throw_error(P.error.type("atomic",xe.args[0],y.indicator));return}se!==""&&(se+=z.id),P.type.is_atom(xe.args[0])?se+=xe.args[0].id:se+=""+xe.args[0].value,xe=xe.args[1]}se=new _(se,[]),P.type.is_variable(xe)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_term(xe)||xe.indicator!=="[]/0"?w.throw_error(P.error.type("list",F,y.indicator)):w.prepend([new Se(D.goal.replace(new _("=",[se,Z])),D.substitution,D)])}else{var ee=d(s(Z.id.split(z.id),function(Ne){return new _(Ne,[])}));w.prepend([new Se(D.goal.replace(new _("=",[ee,F])),D.substitution,D)])}},"@=/2":function(w,D,y){P.compare(y.args[0],y.args[1])>0&&w.success(D)},"@>=/2":function(w,D,y){P.compare(y.args[0],y.args[1])>=0&&w.success(D)},"compare/3":function(w,D,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(P.type.is_atom(F)&&["<",">","="].indexOf(F.id)===-1)w.throw_error(P.type.domain("order",F,y.indicator));else{var ee=P.compare(z,Z);ee=ee===0?"=":ee===-1?"<":">",w.prepend([new Se(D.goal.replace(new _("=",[F,new _(ee,[])])),D.substitution,D)])}},"is/2":function(w,D,y){var F=y.args[1].interpret(w);P.type.is_number(F)?w.prepend([new Se(D.goal.replace(new _("=",[y.args[0],F],w.level)),D.substitution,D)]):w.throw_error(F)},"between/3":function(w,D,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(P.type.is_variable(F)||P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_integer(F))w.throw_error(P.error.type("integer",F,y.indicator));else if(!P.type.is_integer(z))w.throw_error(P.error.type("integer",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_integer(Z))w.throw_error(P.error.type("integer",Z,y.indicator));else if(P.type.is_variable(Z)){var ee=[new Se(D.goal.replace(new _("=",[Z,F])),D.substitution,D)];F.value=Z.value&&w.success(D)},"succ/2":function(w,D,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)&&P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_variable(F)&&!P.type.is_integer(F)?w.throw_error(P.error.type("integer",F,y.indicator)):!P.type.is_variable(z)&&!P.type.is_integer(z)?w.throw_error(P.error.type("integer",z,y.indicator)):!P.type.is_variable(F)&&F.value<0?w.throw_error(P.error.domain("not_less_than_zero",F,y.indicator)):!P.type.is_variable(z)&&z.value<0?w.throw_error(P.error.domain("not_less_than_zero",z,y.indicator)):(P.type.is_variable(z)||z.value>0)&&(P.type.is_variable(F)?w.prepend([new Se(D.goal.replace(new _("=",[F,new ke(z.value-1,!1)])),D.substitution,D)]):w.prepend([new Se(D.goal.replace(new _("=",[z,new ke(F.value+1,!1)])),D.substitution,D)]))},"=:=/2":function(w,D,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F===0&&w.success(D)},"=\\=/2":function(w,D,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F!==0&&w.success(D)},"/2":function(w,D,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F>0&&w.success(D)},">=/2":function(w,D,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F>=0&&w.success(D)},"var/1":function(w,D,y){P.type.is_variable(y.args[0])&&w.success(D)},"atom/1":function(w,D,y){P.type.is_atom(y.args[0])&&w.success(D)},"atomic/1":function(w,D,y){P.type.is_atomic(y.args[0])&&w.success(D)},"compound/1":function(w,D,y){P.type.is_compound(y.args[0])&&w.success(D)},"integer/1":function(w,D,y){P.type.is_integer(y.args[0])&&w.success(D)},"float/1":function(w,D,y){P.type.is_float(y.args[0])&&w.success(D)},"number/1":function(w,D,y){P.type.is_number(y.args[0])&&w.success(D)},"nonvar/1":function(w,D,y){P.type.is_variable(y.args[0])||w.success(D)},"ground/1":function(w,D,y){y.variables().length===0&&w.success(D)},"acyclic_term/1":function(w,D,y){for(var F=D.substitution.apply(D.substitution),z=y.args[0].variables(),Z=0;Z0?Pt[Pt.length-1]:null,Pt!==null&&(Yt=K(w,Pt,0,w.__get_max_priority(),!1))}if(Yt.type===p&&Yt.len===Pt.length-1&&mn.value==="."){Yt=Yt.value.rename(w);var Pr=new _("=",[z,Yt]);if(se.variables){var Cr=d(s(Ie(Yt.variables()),function(Lr){return new be(Lr)}));Pr=new _(",",[Pr,new _("=",[se.variables,Cr])])}if(se.variable_names){var Cr=d(s(Ie(Yt.variables()),function(on){var ci;for(ci in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(ci)&&w.session.renamed_variables[ci]===on)break;return new _("=",[new _(ci,[]),new be(on)])}));Pr=new _(",",[Pr,new _("=",[se.variable_names,Cr])])}if(se.singletons){var Cr=d(s(new je(Yt,null).singleton_variables(),function(on){var ci;for(ci in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(ci)&&w.session.renamed_variables[ci]===on)break;return new _("=",[new _(ci,[]),new be(on)])}));Pr=new _(",",[Pr,new _("=",[se.singletons,Cr])])}w.prepend([new Se(D.goal.replace(Pr),D.substitution,D)])}else Yt.type===p?w.throw_error(P.error.syntax(Pt[Yt.len],"unexpected token",!1)):w.throw_error(Yt.value)}}},"write/1":function(w,D,y){var F=y.args[0];w.prepend([new Se(D.goal.replace(new _(",",[new _("current_output",[new be("S")]),new _("write",[new be("S"),F])])),D.substitution,D)])},"write/2":function(w,D,y){var F=y.args[0],z=y.args[1];w.prepend([new Se(D.goal.replace(new _("write_term",[F,z,new _(".",[new _("quoted",[new _("false",[])]),new _(".",[new _("ignore_ops",[new _("false")]),new _(".",[new _("numbervars",[new _("true")]),new _("[]",[])])])])])),D.substitution,D)])},"writeq/1":function(w,D,y){var F=y.args[0];w.prepend([new Se(D.goal.replace(new _(",",[new _("current_output",[new be("S")]),new _("writeq",[new be("S"),F])])),D.substitution,D)])},"writeq/2":function(w,D,y){var F=y.args[0],z=y.args[1];w.prepend([new Se(D.goal.replace(new _("write_term",[F,z,new _(".",[new _("quoted",[new _("true",[])]),new _(".",[new _("ignore_ops",[new _("false")]),new _(".",[new _("numbervars",[new _("true")]),new _("[]",[])])])])])),D.substitution,D)])},"write_canonical/1":function(w,D,y){var F=y.args[0];w.prepend([new Se(D.goal.replace(new _(",",[new _("current_output",[new be("S")]),new _("write_canonical",[new be("S"),F])])),D.substitution,D)])},"write_canonical/2":function(w,D,y){var F=y.args[0],z=y.args[1];w.prepend([new Se(D.goal.replace(new _("write_term",[F,z,new _(".",[new _("quoted",[new _("true",[])]),new _(".",[new _("ignore_ops",[new _("true")]),new _(".",[new _("numbervars",[new _("false")]),new _("[]",[])])])])])),D.substitution,D)])},"write_term/2":function(w,D,y){var F=y.args[0],z=y.args[1];w.prepend([new Se(D.goal.replace(new _(",",[new _("current_output",[new be("S")]),new _("write_term",[new be("S"),F,z])])),D.substitution,D)])},"write_term/3":function(w,D,y){var F=y.args[0],z=y.args[1],Z=y.args[2],ee=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F)||P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_list(Z))w.throw_error(P.error.type("list",Z,y.indicator));else if(!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain("stream_or_alias",F,y.indicator));else if(!P.type.is_stream(ee)||ee.stream===null)w.throw_error(P.error.existence("stream",F,y.indicator));else if(ee.input)w.throw_error(P.error.permission("output","stream",F,y.indicator));else if(ee.type==="binary")w.throw_error(P.error.permission("output","binary_stream",F,y.indicator));else if(ee.position==="past_end_of_stream"&&ee.eof_action==="error")w.throw_error(P.error.permission("output","past_end_of_stream",F,y.indicator));else{for(var se={},xe=Z,Ne;P.type.is_term(xe)&&xe.indicator==="./2";){if(Ne=xe.args[0],P.type.is_variable(Ne)){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_write_option(Ne)){w.throw_error(P.error.domain("write_option",Ne,y.indicator));return}se[Ne.id]=Ne.args[0].id==="true",xe=xe.args[1]}if(xe.indicator!=="[]/0"){P.type.is_variable(xe)?w.throw_error(P.error.instantiation(y.indicator)):w.throw_error(P.error.type("list",Z,y.indicator));return}else{se.session=w.session;var ut=z.toString(se);ee.stream.put(ut,ee.position),typeof ee.position=="number"&&(ee.position+=ut.length),w.success(D)}}},"halt/0":function(w,D,y){w.points=[]},"halt/1":function(w,D,y){var F=y.args[0];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_integer(F)?w.points=[]:w.throw_error(P.error.type("integer",F,y.indicator))},"current_prolog_flag/2":function(w,D,y){var F=y.args[0],z=y.args[1];if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_flag(F))w.throw_error(P.error.domain("prolog_flag",F,y.indicator));else{var Z=[];for(var ee in P.flag)if(P.flag.hasOwnProperty(ee)){var se=new _(",",[new _("=",[new _(ee),F]),new _("=",[w.get_flag(ee),z])]);Z.push(new Se(D.goal.replace(se),D.substitution,D))}w.prepend(Z)}},"set_prolog_flag/2":function(w,D,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)||P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?P.type.is_flag(F)?P.type.is_value_flag(F,z)?P.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(D)):w.throw_error(P.error.permission("modify","flag",F)):w.throw_error(P.error.domain("flag_value",new _("+",[F,z]),y.indicator)):w.throw_error(P.error.domain("prolog_flag",F,y.indicator)):w.throw_error(P.error.type("atom",F,y.indicator))}},flag:{bounded:{allowed:[new _("true"),new _("false")],value:new _("true"),changeable:!1},max_integer:{allowed:[new ke(Number.MAX_SAFE_INTEGER)],value:new ke(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new ke(Number.MIN_SAFE_INTEGER)],value:new ke(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new _("down"),new _("toward_zero")],value:new _("toward_zero"),changeable:!1},char_conversion:{allowed:[new _("on"),new _("off")],value:new _("on"),changeable:!0},debug:{allowed:[new _("on"),new _("off")],value:new _("off"),changeable:!0},max_arity:{allowed:[new _("unbounded")],value:new _("unbounded"),changeable:!1},unknown:{allowed:[new _("error"),new _("fail"),new _("warning")],value:new _("error"),changeable:!0},double_quotes:{allowed:[new _("chars"),new _("codes"),new _("atom")],value:new _("codes"),changeable:!0},occurs_check:{allowed:[new _("false"),new _("true")],value:new _("false"),changeable:!0},dialect:{allowed:[new _("tau")],value:new _("tau"),changeable:!1},version_data:{allowed:[new _("tau",[new ke(e.major,!1),new ke(e.minor,!1),new ke(e.patch,!1),new _(e.status)])],value:new _("tau",[new ke(e.major,!1),new ke(e.minor,!1),new ke(e.patch,!1),new _(e.status)]),changeable:!1},nodejs:{allowed:[new _("yes"),new _("no")],value:new _(typeof nc<"u"&&nc.exports?"yes":"no"),changeable:!1}},unify:function(w,D,y){y=y===void 0?!1:y;for(var F=[{left:w,right:D}],z={};F.length!==0;){var Z=F.pop();if(w=Z.left,D=Z.right,P.type.is_term(w)&&P.type.is_term(D)){if(w.indicator!==D.indicator)return null;for(var ee=0;eez.value?1:0:z}else return F},operate:function(w,D){if(P.type.is_operator(D)){for(var y=P.type.is_operator(D),F=[],z,Z=!1,ee=0;eew.get_flag("max_integer").value||z0?w.start+w.matches[0].length:w.start,z=y?new _("token_not_found"):new _("found",[new _(w.value.toString())]),Z=new _(".",[new _("line",[new ke(w.line+1)]),new _(".",[new _("column",[new ke(F+1)]),new _(".",[z,new _("[]",[])])])]);return new _("error",[new _("syntax_error",[new _(D)]),Z])},syntax_by_predicate:function(w,D){return new _("error",[new _("syntax_error",[new _(w)]),X(D)])}},warning:{singleton:function(w,D,y){for(var F=new _("[]"),z=w.length-1;z>=0;z--)F=new _(".",[new be(w[z]),F]);return new _("warning",[new _("singleton_variables",[F,X(D)]),new _(".",[new _("line",[new ke(y,!1)]),new _("[]")])])},failed_goal:function(w,D){return new _("warning",[new _("failed_goal",[w]),new _(".",[new _("line",[new ke(D,!1)]),new _("[]")])])}},format_variable:function(w){return"_"+w},format_answer:function(w,D,F){D instanceof Te&&(D=D.thread);var F=F||{};if(F.session=D?D.session:void 0,P.type.is_error(w))return"uncaught exception: "+w.args[0].toString();if(w===!1)return"false.";if(w===null)return"limit exceeded ;";var z=0,Z="";if(P.type.is_substitution(w)){var ee=w.domain(!0);w=w.filter(function(Ne,ut){return!P.type.is_variable(ut)||ee.indexOf(ut.id)!==-1&&Ne!==ut.id})}for(var se in w.links)w.links.hasOwnProperty(se)&&(z++,Z!==""&&(Z+=", "),Z+=se.toString(F)+" = "+w.links[se].toString(F));var xe=typeof D>"u"||D.points.length>0?" ;":".";return z===0?"true"+xe:Z+xe},flatten_error:function(w){if(!P.type.is_error(w))return null;w=w.args[0];var D={};return D.type=w.args[0].id,D.thrown=D.type==="syntax_error"?null:w.args[1].id,D.expected=null,D.found=null,D.representation=null,D.existence=null,D.existence_type=null,D.line=null,D.column=null,D.permission_operation=null,D.permission_type=null,D.evaluation_type=null,D.type==="type_error"||D.type==="domain_error"?(D.expected=w.args[0].args[0].id,D.found=w.args[0].args[1].toString()):D.type==="syntax_error"?w.args[1].indicator==="./2"?(D.expected=w.args[0].args[0].id,D.found=w.args[1].args[1].args[1].args[0],D.found=D.found.id==="token_not_found"?D.found.id:D.found.args[0].id,D.line=w.args[1].args[0].args[0].value,D.column=w.args[1].args[1].args[0].args[0].value):D.thrown=w.args[1].id:D.type==="permission_error"?(D.found=w.args[0].args[2].toString(),D.permission_operation=w.args[0].args[0].id,D.permission_type=w.args[0].args[1].id):D.type==="evaluation_error"?D.evaluation_type=w.args[0].args[0].id:D.type==="representation_error"?D.representation=w.args[0].args[0].id:D.type==="existence_error"&&(D.existence=w.args[0].args[1].toString(),D.existence_type=w.args[0].args[0].id),D},create:function(w){return new P.type.Session(w)}};typeof nc<"u"?nc.exports=P:window.pl=P})()});function wme(e,t,r){e.prepend(r.map(s=>new wl.default.type.State(t.goal.replace(s),t.substitution,t)))}function A9(e){let t=vme.get(e.session);if(t==null)throw new Error("Assertion failed: A project should have been registered for the active session");return t}function Sme(e,t){vme.set(e,t),e.consult(`:- use_module(library(${Rat.id})).`)}var wl,Bme,Jd,Qat,Tat,vme,Rat,bme=Ze(()=>{Ge();Zl();wl=et(f9()),Bme=et(Ce("vm")),{is_atom:Jd,is_variable:Qat,is_instantiated_list:Tat}=wl.default.type;vme=new WeakMap;Rat=new wl.default.type.Module("constraints",{"project_workspaces_by_descriptor/3":(e,t,r)=>{let[s,a,n]=r.args;if(!Jd(s)||!Jd(a)){e.throw_error(wl.default.error.instantiation(r.indicator));return}let c=H.parseIdent(s.id),f=H.makeDescriptor(c,a.id),h=A9(e).tryWorkspaceByDescriptor(f);Qat(n)&&h!==null&&wme(e,t,[new wl.default.type.Term("=",[n,new wl.default.type.Term(String(h.relativeCwd))])]),Jd(n)&&h!==null&&h.relativeCwd===n.id&&e.success(t)},"workspace_field/3":(e,t,r)=>{let[s,a,n]=r.args;if(!Jd(s)||!Jd(a)){e.throw_error(wl.default.error.instantiation(r.indicator));return}let f=A9(e).tryWorkspaceByCwd(s.id);if(f==null)return;let p=xa(f.manifest.raw,a.id);typeof p>"u"||wme(e,t,[new wl.default.type.Term("=",[n,new wl.default.type.Term(typeof p=="object"?JSON.stringify(p):p)])])},"workspace_field_test/3":(e,t,r)=>{let[s,a,n]=r.args;e.prepend([new wl.default.type.State(t.goal.replace(new wl.default.type.Term("workspace_field_test",[s,a,n,new wl.default.type.Term("[]",[])])),t.substitution,t)])},"workspace_field_test/4":(e,t,r)=>{let[s,a,n,c]=r.args;if(!Jd(s)||!Jd(a)||!Jd(n)||!Tat(c)){e.throw_error(wl.default.error.instantiation(r.indicator));return}let p=A9(e).tryWorkspaceByCwd(s.id);if(p==null)return;let h=xa(p.manifest.raw,a.id);if(typeof h>"u")return;let E={$$:h};for(let[S,x]of c.toJavaScript().entries())E[`$${S}`]=x;Bme.default.runInNewContext(n.id,E)&&e.success(t)}},["project_workspaces_by_descriptor/3","workspace_field/3","workspace_field_test/3","workspace_field_test/4"])});var AS={};Vt(AS,{Constraints:()=>h9,DependencyType:()=>kme});function Bo(e){if(e instanceof GC.default.type.Num)return e.value;if(e instanceof GC.default.type.Term)switch(e.indicator){case"throw/1":return Bo(e.args[0]);case"error/1":return Bo(e.args[0]);case"error/2":if(e.args[0]instanceof GC.default.type.Term&&e.args[0].indicator==="syntax_error/1")return Object.assign(Bo(e.args[0]),...Bo(e.args[1]));{let t=Bo(e.args[0]);return t.message+=` (in ${Bo(e.args[1])})`,t}case"syntax_error/1":return new Lt(43,`Syntax error: ${Bo(e.args[0])}`);case"existence_error/2":return new Lt(44,`Existence error: ${Bo(e.args[0])} ${Bo(e.args[1])} not found`);case"instantiation_error/0":return new Lt(75,"Instantiation error: an argument is variable when an instantiated argument was expected");case"line/1":return{line:Bo(e.args[0])};case"column/1":return{column:Bo(e.args[0])};case"found/1":return{found:Bo(e.args[0])};case"./2":return[Bo(e.args[0])].concat(Bo(e.args[1]));case"//2":return`${Bo(e.args[0])}/${Bo(e.args[1])}`;default:return e.id}throw`couldn't pretty print because of unsupported node ${e}`}function Pme(e){let t;try{t=Bo(e)}catch(r){throw typeof r=="string"?new Lt(42,`Unknown error: ${e} (note: ${r})`):r}return typeof t.line<"u"&&typeof t.column<"u"&&(t.message+=` at line ${t.line}, column ${t.column}`),t}function Fm(e){return e.id==="null"?null:`${e.toJavaScript()}`}function Fat(e){if(e.id==="null")return null;{let t=e.toJavaScript();if(typeof t!="string")return JSON.stringify(t);try{return JSON.stringify(JSON.parse(t))}catch{return JSON.stringify(t)}}}function zd(e){return typeof e=="string"?`'${e}'`:"[]"}var xme,GC,kme,Dme,p9,h9,pS=Ze(()=>{Ge();Ge();bt();xme=et(ome()),GC=et(f9());cS();bme();(0,xme.default)(GC.default);kme=(s=>(s.Dependencies="dependencies",s.DevDependencies="devDependencies",s.PeerDependencies="peerDependencies",s))(kme||{}),Dme=["dependencies","devDependencies","peerDependencies"];p9=class{constructor(t,r){let s=1e3*t.workspaces.length;this.session=GC.default.create(s),Sme(this.session,t),this.session.consult(":- use_module(library(lists))."),this.session.consult(r)}fetchNextAnswer(){return new Promise(t=>{this.session.answer(r=>{t(r)})})}async*makeQuery(t){let r=this.session.query(t);if(r!==!0)throw Pme(r);for(;;){let s=await this.fetchNextAnswer();if(s===null)throw new Lt(79,"Resolution limit exceeded");if(!s)break;if(s.id==="throw")throw Pme(s);yield s}}};h9=class e{constructor(t){this.source="";this.project=t;let r=t.configuration.get("constraintsPath");ae.existsSync(r)&&(this.source=ae.readFileSync(r,"utf8"))}static async find(t){return new e(t)}getProjectDatabase(){let t="";for(let r of Dme)t+=`dependency_type(${r}). +`;for(let r of this.project.workspacesByCwd.values()){let s=r.relativeCwd;t+=`workspace(${zd(s)}). +`,t+=`workspace_ident(${zd(s)}, ${zd(H.stringifyIdent(r.anchoredLocator))}). +`,t+=`workspace_version(${zd(s)}, ${zd(r.manifest.version)}). +`;for(let a of Dme)for(let n of r.manifest[a].values())t+=`workspace_has_dependency(${zd(s)}, ${zd(H.stringifyIdent(n))}, ${zd(n.range)}, ${a}). +`}return t+=`workspace(_) :- false. +`,t+=`workspace_ident(_, _) :- false. +`,t+=`workspace_version(_, _) :- false. +`,t+=`workspace_has_dependency(_, _, _, _) :- false. +`,t}getDeclarations(){let t="";return t+=`gen_enforced_dependency(_, _, _, _) :- false. +`,t+=`gen_enforced_field(_, _, _) :- false. +`,t}get fullSource(){return`${this.getProjectDatabase()} +${this.source} +${this.getDeclarations()}`}createSession(){return new p9(this.project,this.fullSource)}async processClassic(){let t=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(t),enforcedFields:await this.genEnforcedFields(t)}}async process(){let{enforcedDependencies:t,enforcedFields:r}=await this.processClassic(),s=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:c,dependencyType:f}of t){let p=lS([f,H.stringifyIdent(n)]),h=qe.getMapWithDefault(s,a.cwd);qe.getMapWithDefault(h,p).set(c??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:c}of r){let f=lS(n),p=qe.getMapWithDefault(s,a.cwd);qe.getMapWithDefault(p,f).set(JSON.parse(c)??void 0,new Set)}return{manifestUpdates:s,reportedErrors:new Map}}async genEnforcedDependencies(t){let r=[];for await(let s of t.makeQuery("workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).")){let a=Y.resolve(this.project.cwd,Fm(s.links.WorkspaceCwd)),n=Fm(s.links.DependencyIdent),c=Fm(s.links.DependencyRange),f=Fm(s.links.DependencyType);if(a===null||n===null)throw new Error("Invalid rule");let p=this.project.getWorkspaceByCwd(a),h=H.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:c,dependencyType:f})}return qe.sortMap(r,[({dependencyRange:s})=>s!==null?"0":"1",({workspace:s})=>H.stringifyIdent(s.anchoredLocator),({dependencyIdent:s})=>H.stringifyIdent(s)])}async genEnforcedFields(t){let r=[];for await(let s of t.makeQuery("workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).")){let a=Y.resolve(this.project.cwd,Fm(s.links.WorkspaceCwd)),n=Fm(s.links.FieldPath),c=Fat(s.links.FieldValue);if(a===null||n===null)throw new Error("Invalid rule");let f=this.project.getWorkspaceByCwd(a);r.push({workspace:f,fieldPath:n,fieldValue:c})}return qe.sortMap(r,[({workspace:s})=>H.stringifyIdent(s.anchoredLocator),({fieldPath:s})=>s])}async*query(t){let r=this.createSession();for await(let s of r.makeQuery(t)){let a={};for(let[n,c]of Object.entries(s.links))n!=="_"&&(a[n]=Fm(c));yield a}}}});var Ume=G(eF=>{"use strict";Object.defineProperty(eF,"__esModule",{value:!0});function PS(e){let t=[...e.caches],r=t.shift();return r===void 0?Mme():{get(s,a,n={miss:()=>Promise.resolve()}){return r.get(s,a,n).catch(()=>PS({caches:t}).get(s,a,n))},set(s,a){return r.set(s,a).catch(()=>PS({caches:t}).set(s,a))},delete(s){return r.delete(s).catch(()=>PS({caches:t}).delete(s))},clear(){return r.clear().catch(()=>PS({caches:t}).clear())}}}function Mme(){return{get(e,t,r={miss:()=>Promise.resolve()}){return t().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(e,t){return Promise.resolve(t)},delete(e){return Promise.resolve()},clear(){return Promise.resolve()}}}eF.createFallbackableCache=PS;eF.createNullCache=Mme});var Hme=G((uVt,_me)=>{_me.exports=Ume()});var jme=G(P9=>{"use strict";Object.defineProperty(P9,"__esModule",{value:!0});function $at(e={serializable:!0}){let t={};return{get(r,s,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in t)return Promise.resolve(e.serializable?JSON.parse(t[n]):t[n]);let c=s(),f=a&&a.miss||(()=>Promise.resolve());return c.then(p=>f(p)).then(()=>c)},set(r,s){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(r){return delete t[JSON.stringify(r)],Promise.resolve()},clear(){return t={},Promise.resolve()}}}P9.createInMemoryCache=$at});var qme=G((AVt,Gme)=>{Gme.exports=jme()});var Wme=G(rf=>{"use strict";Object.defineProperty(rf,"__esModule",{value:!0});function elt(e,t,r){let s={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers(){return e===x9.WithinHeaders?s:{}},queryParameters(){return e===x9.WithinQueryParameters?s:{}}}}function tlt(e){let t=0,r=()=>(t++,new Promise(s=>{setTimeout(()=>{s(e(r))},Math.min(100*t,1e3))}));return e(r)}function Yme(e,t=(r,s)=>Promise.resolve()){return Object.assign(e,{wait(r){return Yme(e.then(s=>Promise.all([t(s,r),s])).then(s=>s[1]))}})}function rlt(e){let t=e.length-1;for(t;t>0;t--){let r=Math.floor(Math.random()*(t+1)),s=e[t];e[t]=e[r],e[r]=s}return e}function nlt(e,t){return t&&Object.keys(t).forEach(r=>{e[r]=t[r](e)}),e}function ilt(e,...t){let r=0;return e.replace(/%s/g,()=>encodeURIComponent(t[r++]))}var slt="4.22.1",olt=e=>()=>e.transporter.requester.destroy(),x9={WithinQueryParameters:0,WithinHeaders:1};rf.AuthMode=x9;rf.addMethods=nlt;rf.createAuth=elt;rf.createRetryablePromise=tlt;rf.createWaitablePromise=Yme;rf.destroy=olt;rf.encode=ilt;rf.shuffle=rlt;rf.version=slt});var xS=G((hVt,Vme)=>{Vme.exports=Wme()});var Kme=G(k9=>{"use strict";Object.defineProperty(k9,"__esModule",{value:!0});var alt={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};k9.MethodEnum=alt});var kS=G((gVt,Jme)=>{Jme.exports=Kme()});var uye=G(Wi=>{"use strict";Object.defineProperty(Wi,"__esModule",{value:!0});var Zme=kS();function Q9(e,t){let r=e||{},s=r.data||{};return Object.keys(r).forEach(a=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(a)===-1&&(s[a]=r[a])}),{data:Object.entries(s).length>0?s:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var QS={Read:1,Write:2,Any:3},$C={Up:1,Down:2,Timeouted:3},Xme=2*60*1e3;function R9(e,t=$C.Up){return{...e,status:t,lastUpdate:Date.now()}}function $me(e){return e.status===$C.Up||Date.now()-e.lastUpdate>Xme}function eye(e){return e.status===$C.Timeouted&&Date.now()-e.lastUpdate<=Xme}function F9(e){return typeof e=="string"?{protocol:"https",url:e,accept:QS.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||QS.Any}}function llt(e,t){return Promise.all(t.map(r=>e.get(r,()=>Promise.resolve(R9(r))))).then(r=>{let s=r.filter(f=>$me(f)),a=r.filter(f=>eye(f)),n=[...s,...a],c=n.length>0?n.map(f=>F9(f)):t;return{getTimeout(f,p){return(a.length===0&&f===0?1:a.length+3+f)*p},statelessHosts:c}})}var clt=({isTimedOut:e,status:t})=>!e&&~~t===0,ult=e=>{let t=e.status;return e.isTimedOut||clt(e)||~~(t/100)!==2&&~~(t/100)!==4},flt=({status:e})=>~~(e/100)===2,Alt=(e,t)=>ult(e)?t.onRetry(e):flt(e)?t.onSuccess(e):t.onFail(e);function zme(e,t,r,s){let a=[],n=sye(r,s),c=oye(e,s),f=r.method,p=r.method!==Zme.MethodEnum.Get?{}:{...r.data,...s.data},h={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...p,...s.queryParameters},E=0,C=(S,x)=>{let I=S.pop();if(I===void 0)throw cye(T9(a));let R={data:n,headers:c,method:f,url:nye(I,r.path,h),connectTimeout:x(E,e.timeouts.connect),responseTimeout:x(E,s.timeout)},N=K=>{let $={request:R,response:K,host:I,triesLeft:S.length};return a.push($),$},U={onSuccess:K=>tye(K),onRetry(K){let $=N(K);return K.isTimedOut&&E++,Promise.all([e.logger.info("Retryable failure",N9($)),e.hostsCache.set(I,R9(I,K.isTimedOut?$C.Timeouted:$C.Down))]).then(()=>C(S,x))},onFail(K){throw N(K),rye(K,T9(a))}};return e.requester.send(R).then(K=>Alt(K,U))};return llt(e.hostsCache,t).then(S=>C([...S.statelessHosts].reverse(),S.getTimeout))}function plt(e){let{hostsCache:t,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,hosts:p,queryParameters:h,headers:E}=e,C={hostsCache:t,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,headers:E,queryParameters:h,hosts:p.map(S=>F9(S)),read(S,x){let I=Q9(x,C.timeouts.read),R=()=>zme(C,C.hosts.filter(K=>(K.accept&QS.Read)!==0),S,I);if((I.cacheable!==void 0?I.cacheable:S.cacheable)!==!0)return R();let U={request:S,mappedRequestOptions:I,transporter:{queryParameters:C.queryParameters,headers:C.headers}};return C.responsesCache.get(U,()=>C.requestsCache.get(U,()=>C.requestsCache.set(U,R()).then(K=>Promise.all([C.requestsCache.delete(U),K]),K=>Promise.all([C.requestsCache.delete(U),Promise.reject(K)])).then(([K,$])=>$)),{miss:K=>C.responsesCache.set(U,K)})},write(S,x){return zme(C,C.hosts.filter(I=>(I.accept&QS.Write)!==0),S,Q9(x,C.timeouts.write))}};return C}function hlt(e){let t={value:`Algolia for JavaScript (${e})`,add(r){let s=`; ${r.segment}${r.version!==void 0?` (${r.version})`:""}`;return t.value.indexOf(s)===-1&&(t.value=`${t.value}${s}`),t}};return t}function tye(e){try{return JSON.parse(e.content)}catch(t){throw lye(t.message,e)}}function rye({content:e,status:t},r){let s=e;try{s=JSON.parse(e).message}catch{}return aye(s,t,r)}function dlt(e,...t){let r=0;return e.replace(/%s/g,()=>encodeURIComponent(t[r++]))}function nye(e,t,r){let s=iye(r),a=`${e.protocol}://${e.url}/${t.charAt(0)==="/"?t.substr(1):t}`;return s.length&&(a+=`?${s}`),a}function iye(e){let t=r=>Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]";return Object.keys(e).map(r=>dlt("%s=%s",r,t(e[r])?JSON.stringify(e[r]):e[r])).join("&")}function sye(e,t){if(e.method===Zme.MethodEnum.Get||e.data===void 0&&t.data===void 0)return;let r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}function oye(e,t){let r={...e.headers,...t.headers},s={};return Object.keys(r).forEach(a=>{let n=r[a];s[a.toLowerCase()]=n}),s}function T9(e){return e.map(t=>N9(t))}function N9(e){let t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function aye(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}function lye(e,t){return{name:"DeserializationError",message:e,response:t}}function cye(e){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:e}}Wi.CallEnum=QS;Wi.HostStatusEnum=$C;Wi.createApiError=aye;Wi.createDeserializationError=lye;Wi.createMappedRequestOptions=Q9;Wi.createRetryError=cye;Wi.createStatefulHost=R9;Wi.createStatelessHost=F9;Wi.createTransporter=plt;Wi.createUserAgent=hlt;Wi.deserializeFailure=rye;Wi.deserializeSuccess=tye;Wi.isStatefulHostTimeouted=eye;Wi.isStatefulHostUp=$me;Wi.serializeData=sye;Wi.serializeHeaders=oye;Wi.serializeQueryParameters=iye;Wi.serializeUrl=nye;Wi.stackFrameWithoutCredentials=N9;Wi.stackTraceWithoutCredentials=T9});var TS=G((yVt,fye)=>{fye.exports=uye()});var Aye=G(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});var ew=xS(),glt=TS(),RS=kS(),mlt=e=>{let t=e.region||"us",r=ew.createAuth(ew.AuthMode.WithinHeaders,e.appId,e.apiKey),s=glt.createTransporter({hosts:[{url:`analytics.${t}.algolia.com`}],...e,headers:{...r.headers(),"content-type":"application/json",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),a=e.appId;return ew.addMethods({appId:a,transporter:s},e.methods)},ylt=e=>(t,r)=>e.transporter.write({method:RS.MethodEnum.Post,path:"2/abtests",data:t},r),Elt=e=>(t,r)=>e.transporter.write({method:RS.MethodEnum.Delete,path:ew.encode("2/abtests/%s",t)},r),Ilt=e=>(t,r)=>e.transporter.read({method:RS.MethodEnum.Get,path:ew.encode("2/abtests/%s",t)},r),Clt=e=>t=>e.transporter.read({method:RS.MethodEnum.Get,path:"2/abtests"},t),wlt=e=>(t,r)=>e.transporter.write({method:RS.MethodEnum.Post,path:ew.encode("2/abtests/%s/stop",t)},r);Xd.addABTest=ylt;Xd.createAnalyticsClient=mlt;Xd.deleteABTest=Elt;Xd.getABTest=Ilt;Xd.getABTests=Clt;Xd.stopABTest=wlt});var hye=G((IVt,pye)=>{pye.exports=Aye()});var gye=G(NS=>{"use strict";Object.defineProperty(NS,"__esModule",{value:!0});var O9=xS(),Blt=TS(),dye=kS(),vlt=e=>{let t=e.region||"us",r=O9.createAuth(O9.AuthMode.WithinHeaders,e.appId,e.apiKey),s=Blt.createTransporter({hosts:[{url:`personalization.${t}.algolia.com`}],...e,headers:{...r.headers(),"content-type":"application/json",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}});return O9.addMethods({appId:e.appId,transporter:s},e.methods)},Slt=e=>t=>e.transporter.read({method:dye.MethodEnum.Get,path:"1/strategies/personalization"},t),blt=e=>(t,r)=>e.transporter.write({method:dye.MethodEnum.Post,path:"1/strategies/personalization",data:t},r);NS.createPersonalizationClient=vlt;NS.getPersonalizationStrategy=Slt;NS.setPersonalizationStrategy=blt});var yye=G((wVt,mye)=>{mye.exports=gye()});var Tye=G(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});var Kt=xS(),Bl=TS(),Dr=kS(),Dlt=Ce("crypto");function tF(e){let t=r=>e.request(r).then(s=>{if(e.batch!==void 0&&e.batch(s.hits),!e.shouldStop(s))return s.cursor?t({cursor:s.cursor}):t({page:(r.page||0)+1})});return t({})}var Plt=e=>{let t=e.appId,r=Kt.createAuth(e.authMode!==void 0?e.authMode:Kt.AuthMode.WithinHeaders,t,e.apiKey),s=Bl.createTransporter({hosts:[{url:`${t}-dsn.algolia.net`,accept:Bl.CallEnum.Read},{url:`${t}.algolia.net`,accept:Bl.CallEnum.Write}].concat(Kt.shuffle([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),a={transporter:s,appId:t,addAlgoliaAgent(n,c){s.userAgent.add({segment:n,version:c})},clearCache(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then(()=>{})}};return Kt.addMethods(a,e.methods)};function Eye(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function Iye(){return{name:"ObjectNotFoundError",message:"Object not found."}}function Cye(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}var xlt=e=>(t,r)=>{let{queryParameters:s,...a}=r||{},n={acl:t,...s!==void 0?{queryParameters:s}:{}},c=(f,p)=>Kt.createRetryablePromise(h=>OS(e)(f.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:"1/keys",data:n},a),c)},klt=e=>(t,r,s)=>{let a=Bl.createMappedRequestOptions(s);return a.queryParameters["X-Algolia-User-ID"]=t,e.transporter.write({method:Dr.MethodEnum.Post,path:"1/clusters/mapping",data:{cluster:r}},a)},Qlt=e=>(t,r,s)=>e.transporter.write({method:Dr.MethodEnum.Post,path:"1/clusters/mapping/batch",data:{users:t,cluster:r}},s),Tlt=e=>(t,r)=>Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!0,requests:{action:"addEntry",body:[]}}},r),(s,a)=>tw(e)(s.taskID,a)),rF=e=>(t,r,s)=>{let a=(n,c)=>LS(e)(t,{methods:{waitTask:ys}}).waitTask(n.taskID,c);return Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/operation",t),data:{operation:"copy",destination:r}},s),a)},Rlt=e=>(t,r,s)=>rF(e)(t,r,{...s,scope:[iF.Rules]}),Flt=e=>(t,r,s)=>rF(e)(t,r,{...s,scope:[iF.Settings]}),Nlt=e=>(t,r,s)=>rF(e)(t,r,{...s,scope:[iF.Synonyms]}),Olt=e=>(t,r)=>t.method===Dr.MethodEnum.Get?e.transporter.read(t,r):e.transporter.write(t,r),Llt=e=>(t,r)=>{let s=(a,n)=>Kt.createRetryablePromise(c=>OS(e)(t,n).then(c).catch(f=>{if(f.status!==404)throw f}));return Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Delete,path:Kt.encode("1/keys/%s",t)},r),s)},Mlt=e=>(t,r,s)=>{let a=r.map(n=>({action:"deleteEntry",body:{objectID:n}}));return Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>tw(e)(n.taskID,c))},Ult=()=>(e,t)=>{let r=Bl.serializeQueryParameters(t),s=Dlt.createHmac("sha256",e).update(r).digest("hex");return Buffer.from(s+r).toString("base64")},OS=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Get,path:Kt.encode("1/keys/%s",t)},r),wye=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Get,path:Kt.encode("1/task/%s",t.toString())},r),_lt=e=>t=>e.transporter.read({method:Dr.MethodEnum.Get,path:"/1/dictionaries/*/settings"},t),Hlt=e=>t=>e.transporter.read({method:Dr.MethodEnum.Get,path:"1/logs"},t),jlt=()=>e=>{let t=Buffer.from(e,"base64").toString("ascii"),r=/validUntil=(\d+)/,s=t.match(r);if(s===null)throw Cye();return parseInt(s[1],10)-Math.round(new Date().getTime()/1e3)},Glt=e=>t=>e.transporter.read({method:Dr.MethodEnum.Get,path:"1/clusters/mapping/top"},t),qlt=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Get,path:Kt.encode("1/clusters/mapping/%s",t)},r),Ylt=e=>t=>{let{retrieveMappings:r,...s}=t||{};return r===!0&&(s.getClusters=!0),e.transporter.read({method:Dr.MethodEnum.Get,path:"1/clusters/mapping/pending"},s)},LS=e=>(t,r={})=>{let s={transporter:e.transporter,appId:e.appId,indexName:t};return Kt.addMethods(s,r.methods)},Wlt=e=>t=>e.transporter.read({method:Dr.MethodEnum.Get,path:"1/keys"},t),Vlt=e=>t=>e.transporter.read({method:Dr.MethodEnum.Get,path:"1/clusters"},t),Klt=e=>t=>e.transporter.read({method:Dr.MethodEnum.Get,path:"1/indexes"},t),Jlt=e=>t=>e.transporter.read({method:Dr.MethodEnum.Get,path:"1/clusters/mapping"},t),zlt=e=>(t,r,s)=>{let a=(n,c)=>LS(e)(t,{methods:{waitTask:ys}}).waitTask(n.taskID,c);return Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/operation",t),data:{operation:"move",destination:r}},s),a)},Zlt=e=>(t,r)=>{let s=(a,n)=>Promise.all(Object.keys(a.taskID).map(c=>LS(e)(c,{methods:{waitTask:ys}}).waitTask(a.taskID[c],n)));return Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:"1/indexes/*/batch",data:{requests:t}},r),s)},Xlt=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:t}},r),$lt=e=>(t,r)=>{let s=t.map(a=>({...a,params:Bl.serializeQueryParameters(a.params||{})}));return e.transporter.read({method:Dr.MethodEnum.Post,path:"1/indexes/*/queries",data:{requests:s},cacheable:!0},r)},ect=e=>(t,r)=>Promise.all(t.map(s=>{let{facetName:a,facetQuery:n,...c}=s.params;return LS(e)(s.indexName,{methods:{searchForFacetValues:xye}}).searchForFacetValues(a,n,{...r,...c})})),tct=e=>(t,r)=>{let s=Bl.createMappedRequestOptions(r);return s.queryParameters["X-Algolia-User-ID"]=t,e.transporter.write({method:Dr.MethodEnum.Delete,path:"1/clusters/mapping"},s)},rct=e=>(t,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!0,requests:a}},s),(n,c)=>tw(e)(n.taskID,c))},nct=e=>(t,r)=>{let s=(a,n)=>Kt.createRetryablePromise(c=>OS(e)(t,n).catch(f=>{if(f.status!==404)throw f;return c()}));return Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("1/keys/%s/restore",t)},r),s)},ict=e=>(t,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>tw(e)(n.taskID,c))},sct=e=>(t,r,s)=>e.transporter.read({method:Dr.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/search",t),data:{query:r},cacheable:!0},s),oct=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Post,path:"1/clusters/mapping/search",data:{query:t}},r),act=e=>(t,r)=>Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Put,path:"/1/dictionaries/*/settings",data:t},r),(s,a)=>tw(e)(s.taskID,a)),lct=e=>(t,r)=>{let s=Object.assign({},r),{queryParameters:a,...n}=r||{},c=a?{queryParameters:a}:{},f=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"],p=E=>Object.keys(s).filter(C=>f.indexOf(C)!==-1).every(C=>{if(Array.isArray(E[C])&&Array.isArray(s[C])){let S=E[C];return S.length===s[C].length&&S.every((x,I)=>x===s[C][I])}else return E[C]===s[C]}),h=(E,C)=>Kt.createRetryablePromise(S=>OS(e)(t,C).then(x=>p(x)?Promise.resolve():S()));return Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Put,path:Kt.encode("1/keys/%s",t),data:c},n),h)},tw=e=>(t,r)=>Kt.createRetryablePromise(s=>wye(e)(t,r).then(a=>a.status!=="published"?s():void 0)),Bye=e=>(t,r)=>{let s=(a,n)=>ys(e)(a.taskID,n);return Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/batch",e.indexName),data:{requests:t}},r),s)},cct=e=>t=>tF({shouldStop:r=>r.cursor===void 0,...t,request:r=>e.transporter.read({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/browse",e.indexName),data:r},t)}),uct=e=>t=>{let r={hitsPerPage:1e3,...t};return tF({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},fct=e=>t=>{let r={hitsPerPage:1e3,...t};return tF({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},nF=e=>(t,r,s)=>{let{batchSize:a,...n}=s||{},c={taskIDs:[],objectIDs:[]},f=(p=0)=>{let h=[],E;for(E=p;E({action:r,body:C})),n).then(C=>(c.objectIDs=c.objectIDs.concat(C.objectIDs),c.taskIDs.push(C.taskID),E++,f(E)))};return Kt.createWaitablePromise(f(),(p,h)=>Promise.all(p.taskIDs.map(E=>ys(e)(E,h))))},Act=e=>t=>Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/clear",e.indexName)},t),(r,s)=>ys(e)(r.taskID,s)),pct=e=>t=>{let{forwardToReplicas:r,...s}=t||{},a=Bl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/rules/clear",e.indexName)},a),(n,c)=>ys(e)(n.taskID,c))},hct=e=>t=>{let{forwardToReplicas:r,...s}=t||{},a=Bl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/synonyms/clear",e.indexName)},a),(n,c)=>ys(e)(n.taskID,c))},dct=e=>(t,r)=>Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/deleteByQuery",e.indexName),data:t},r),(s,a)=>ys(e)(s.taskID,a)),gct=e=>t=>Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Delete,path:Kt.encode("1/indexes/%s",e.indexName)},t),(r,s)=>ys(e)(r.taskID,s)),mct=e=>(t,r)=>Kt.createWaitablePromise(vye(e)([t],r).then(s=>({taskID:s.taskIDs[0]})),(s,a)=>ys(e)(s.taskID,a)),vye=e=>(t,r)=>{let s=t.map(a=>({objectID:a}));return nF(e)(s,Om.DeleteObject,r)},yct=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Bl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Delete,path:Kt.encode("1/indexes/%s/rules/%s",e.indexName,t)},n),(c,f)=>ys(e)(c.taskID,f))},Ect=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Bl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Delete,path:Kt.encode("1/indexes/%s/synonyms/%s",e.indexName,t)},n),(c,f)=>ys(e)(c.taskID,f))},Ict=e=>t=>Sye(e)(t).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),Cct=e=>(t,r,s)=>e.transporter.read({method:Dr.MethodEnum.Post,path:Kt.encode("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},s),wct=e=>(t,r)=>{let{query:s,paginate:a,...n}=r||{},c=0,f=()=>Pye(e)(s||"",{...n,page:c}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(t(E))return{object:E,position:parseInt(h,10),page:c};if(c++,a===!1||c>=p.nbPages)throw Iye();return f()});return f()},Bct=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Get,path:Kt.encode("1/indexes/%s/%s",e.indexName,t)},r),vct=()=>(e,t)=>{for(let[r,s]of Object.entries(e.hits))if(s.objectID===t)return parseInt(r,10);return-1},Sct=e=>(t,r)=>{let{attributesToRetrieve:s,...a}=r||{},n=t.map(c=>({indexName:e.indexName,objectID:c,...s?{attributesToRetrieve:s}:{}}));return e.transporter.read({method:Dr.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:n}},a)},bct=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Get,path:Kt.encode("1/indexes/%s/rules/%s",e.indexName,t)},r),Sye=e=>t=>e.transporter.read({method:Dr.MethodEnum.Get,path:Kt.encode("1/indexes/%s/settings",e.indexName),data:{getVersion:2}},t),Dct=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Get,path:Kt.encode("1/indexes/%s/synonyms/%s",e.indexName,t)},r),bye=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Get,path:Kt.encode("1/indexes/%s/task/%s",e.indexName,t.toString())},r),Pct=e=>(t,r)=>Kt.createWaitablePromise(Dye(e)([t],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>ys(e)(s.taskID,a)),Dye=e=>(t,r)=>{let{createIfNotExists:s,...a}=r||{},n=s?Om.PartialUpdateObject:Om.PartialUpdateObjectNoCreate;return nF(e)(t,n,a)},xct=e=>(t,r)=>{let{safe:s,autoGenerateObjectIDIfNotExist:a,batchSize:n,...c}=r||{},f=(I,R,N,U)=>Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/operation",I),data:{operation:N,destination:R}},U),(K,$)=>ys(e)(K.taskID,$)),p=Math.random().toString(36).substring(7),h=`${e.indexName}_tmp_${p}`,E=L9({appId:e.appId,transporter:e.transporter,indexName:h}),C=[],S=f(e.indexName,h,"copy",{...c,scope:["settings","synonyms","rules"]});C.push(S);let x=(s?S.wait(c):S).then(()=>{let I=E(t,{...c,autoGenerateObjectIDIfNotExist:a,batchSize:n});return C.push(I),s?I.wait(c):I}).then(()=>{let I=f(h,e.indexName,"move",c);return C.push(I),s?I.wait(c):I}).then(()=>Promise.all(C)).then(([I,R,N])=>({objectIDs:R.objectIDs,taskIDs:[I.taskID,...R.taskIDs,N.taskID]}));return Kt.createWaitablePromise(x,(I,R)=>Promise.all(C.map(N=>N.wait(R))))},kct=e=>(t,r)=>M9(e)(t,{...r,clearExistingRules:!0}),Qct=e=>(t,r)=>U9(e)(t,{...r,clearExistingSynonyms:!0}),Tct=e=>(t,r)=>Kt.createWaitablePromise(L9(e)([t],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>ys(e)(s.taskID,a)),L9=e=>(t,r)=>{let{autoGenerateObjectIDIfNotExist:s,...a}=r||{},n=s?Om.AddObject:Om.UpdateObject;if(n===Om.UpdateObject){for(let c of t)if(c.objectID===void 0)return Kt.createWaitablePromise(Promise.reject(Eye()))}return nF(e)(t,n,a)},Rct=e=>(t,r)=>M9(e)([t],r),M9=e=>(t,r)=>{let{forwardToReplicas:s,clearExistingRules:a,...n}=r||{},c=Bl.createMappedRequestOptions(n);return s&&(c.queryParameters.forwardToReplicas=1),a&&(c.queryParameters.clearExistingRules=1),Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/rules/batch",e.indexName),data:t},c),(f,p)=>ys(e)(f.taskID,p))},Fct=e=>(t,r)=>U9(e)([t],r),U9=e=>(t,r)=>{let{forwardToReplicas:s,clearExistingSynonyms:a,replaceExistingSynonyms:n,...c}=r||{},f=Bl.createMappedRequestOptions(c);return s&&(f.queryParameters.forwardToReplicas=1),(n||a)&&(f.queryParameters.replaceExistingSynonyms=1),Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/synonyms/batch",e.indexName),data:t},f),(p,h)=>ys(e)(p.taskID,h))},Pye=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r),xye=e=>(t,r,s)=>e.transporter.read({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},s),kye=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/rules/search",e.indexName),data:{query:t}},r),Qye=e=>(t,r)=>e.transporter.read({method:Dr.MethodEnum.Post,path:Kt.encode("1/indexes/%s/synonyms/search",e.indexName),data:{query:t}},r),Nct=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Bl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:Dr.MethodEnum.Put,path:Kt.encode("1/indexes/%s/settings",e.indexName),data:t},n),(c,f)=>ys(e)(c.taskID,f))},ys=e=>(t,r)=>Kt.createRetryablePromise(s=>bye(e)(t,r).then(a=>a.status!=="published"?s():void 0)),Oct={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",Inference:"inference",ListIndexes:"listIndexes",Logs:"logs",Personalization:"personalization",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},Om={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject",DeleteIndex:"delete",ClearIndex:"clear"},iF={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},Lct={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},Mct={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"};Nt.ApiKeyACLEnum=Oct;Nt.BatchActionEnum=Om;Nt.ScopeEnum=iF;Nt.StrategyEnum=Lct;Nt.SynonymEnum=Mct;Nt.addApiKey=xlt;Nt.assignUserID=klt;Nt.assignUserIDs=Qlt;Nt.batch=Bye;Nt.browseObjects=cct;Nt.browseRules=uct;Nt.browseSynonyms=fct;Nt.chunkedBatch=nF;Nt.clearDictionaryEntries=Tlt;Nt.clearObjects=Act;Nt.clearRules=pct;Nt.clearSynonyms=hct;Nt.copyIndex=rF;Nt.copyRules=Rlt;Nt.copySettings=Flt;Nt.copySynonyms=Nlt;Nt.createBrowsablePromise=tF;Nt.createMissingObjectIDError=Eye;Nt.createObjectNotFoundError=Iye;Nt.createSearchClient=Plt;Nt.createValidUntilNotFoundError=Cye;Nt.customRequest=Olt;Nt.deleteApiKey=Llt;Nt.deleteBy=dct;Nt.deleteDictionaryEntries=Mlt;Nt.deleteIndex=gct;Nt.deleteObject=mct;Nt.deleteObjects=vye;Nt.deleteRule=yct;Nt.deleteSynonym=Ect;Nt.exists=Ict;Nt.findAnswers=Cct;Nt.findObject=wct;Nt.generateSecuredApiKey=Ult;Nt.getApiKey=OS;Nt.getAppTask=wye;Nt.getDictionarySettings=_lt;Nt.getLogs=Hlt;Nt.getObject=Bct;Nt.getObjectPosition=vct;Nt.getObjects=Sct;Nt.getRule=bct;Nt.getSecuredApiKeyRemainingValidity=jlt;Nt.getSettings=Sye;Nt.getSynonym=Dct;Nt.getTask=bye;Nt.getTopUserIDs=Glt;Nt.getUserID=qlt;Nt.hasPendingMappings=Ylt;Nt.initIndex=LS;Nt.listApiKeys=Wlt;Nt.listClusters=Vlt;Nt.listIndices=Klt;Nt.listUserIDs=Jlt;Nt.moveIndex=zlt;Nt.multipleBatch=Zlt;Nt.multipleGetObjects=Xlt;Nt.multipleQueries=$lt;Nt.multipleSearchForFacetValues=ect;Nt.partialUpdateObject=Pct;Nt.partialUpdateObjects=Dye;Nt.removeUserID=tct;Nt.replaceAllObjects=xct;Nt.replaceAllRules=kct;Nt.replaceAllSynonyms=Qct;Nt.replaceDictionaryEntries=rct;Nt.restoreApiKey=nct;Nt.saveDictionaryEntries=ict;Nt.saveObject=Tct;Nt.saveObjects=L9;Nt.saveRule=Rct;Nt.saveRules=M9;Nt.saveSynonym=Fct;Nt.saveSynonyms=U9;Nt.search=Pye;Nt.searchDictionaryEntries=sct;Nt.searchForFacetValues=xye;Nt.searchRules=kye;Nt.searchSynonyms=Qye;Nt.searchUserIDs=oct;Nt.setDictionarySettings=act;Nt.setSettings=Nct;Nt.updateApiKey=lct;Nt.waitAppTask=tw;Nt.waitTask=ys});var Fye=G((vVt,Rye)=>{Rye.exports=Tye()});var Nye=G(sF=>{"use strict";Object.defineProperty(sF,"__esModule",{value:!0});function Uct(){return{debug(e,t){return Promise.resolve()},info(e,t){return Promise.resolve()},error(e,t){return Promise.resolve()}}}var _ct={Debug:1,Info:2,Error:3};sF.LogLevelEnum=_ct;sF.createNullLogger=Uct});var Lye=G((bVt,Oye)=>{Oye.exports=Nye()});var Hye=G(_9=>{"use strict";Object.defineProperty(_9,"__esModule",{value:!0});var Mye=Ce("http"),Uye=Ce("https"),Hct=Ce("url"),_ye={keepAlive:!0},jct=new Mye.Agent(_ye),Gct=new Uye.Agent(_ye);function qct({agent:e,httpAgent:t,httpsAgent:r,requesterOptions:s={}}={}){let a=t||e||jct,n=r||e||Gct;return{send(c){return new Promise(f=>{let p=Hct.parse(c.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...s,agent:p.protocol==="https:"?n:a,hostname:p.hostname,path:h,method:c.method,headers:{...s&&s.headers?s.headers:{},...c.headers},...p.port!==void 0?{port:p.port||""}:{}},C=(p.protocol==="https:"?Uye:Mye).request(E,R=>{let N=[];R.on("data",U=>{N=N.concat(U)}),R.on("end",()=>{clearTimeout(x),clearTimeout(I),f({status:R.statusCode||0,content:Buffer.concat(N).toString(),isTimedOut:!1})})}),S=(R,N)=>setTimeout(()=>{C.abort(),f({status:0,content:N,isTimedOut:!0})},R*1e3),x=S(c.connectTimeout,"Connection timeout"),I;C.on("error",R=>{clearTimeout(x),clearTimeout(I),f({status:0,content:R.message,isTimedOut:!1})}),C.once("response",()=>{clearTimeout(x),I=S(c.responseTimeout,"Socket timeout")}),c.data!==void 0&&C.write(c.data),C.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}_9.createNodeHttpRequester=qct});var Gye=G((PVt,jye)=>{jye.exports=Hye()});var Vye=G((xVt,Wye)=>{"use strict";var qye=Hme(),Yct=qme(),rw=hye(),j9=xS(),H9=yye(),qt=Fye(),Wct=Lye(),Vct=Gye(),Kct=TS();function Yye(e,t,r){let s={appId:e,apiKey:t,timeouts:{connect:2,read:5,write:30},requester:Vct.createNodeHttpRequester(),logger:Wct.createNullLogger(),responsesCache:qye.createNullCache(),requestsCache:qye.createNullCache(),hostsCache:Yct.createInMemoryCache(),userAgent:Kct.createUserAgent(j9.version).add({segment:"Node.js",version:process.versions.node})},a={...s,...r},n=()=>c=>H9.createPersonalizationClient({...s,...c,methods:{getPersonalizationStrategy:H9.getPersonalizationStrategy,setPersonalizationStrategy:H9.setPersonalizationStrategy}});return qt.createSearchClient({...a,methods:{search:qt.multipleQueries,searchForFacetValues:qt.multipleSearchForFacetValues,multipleBatch:qt.multipleBatch,multipleGetObjects:qt.multipleGetObjects,multipleQueries:qt.multipleQueries,copyIndex:qt.copyIndex,copySettings:qt.copySettings,copyRules:qt.copyRules,copySynonyms:qt.copySynonyms,moveIndex:qt.moveIndex,listIndices:qt.listIndices,getLogs:qt.getLogs,listClusters:qt.listClusters,multipleSearchForFacetValues:qt.multipleSearchForFacetValues,getApiKey:qt.getApiKey,addApiKey:qt.addApiKey,listApiKeys:qt.listApiKeys,updateApiKey:qt.updateApiKey,deleteApiKey:qt.deleteApiKey,restoreApiKey:qt.restoreApiKey,assignUserID:qt.assignUserID,assignUserIDs:qt.assignUserIDs,getUserID:qt.getUserID,searchUserIDs:qt.searchUserIDs,listUserIDs:qt.listUserIDs,getTopUserIDs:qt.getTopUserIDs,removeUserID:qt.removeUserID,hasPendingMappings:qt.hasPendingMappings,generateSecuredApiKey:qt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:qt.getSecuredApiKeyRemainingValidity,destroy:j9.destroy,clearDictionaryEntries:qt.clearDictionaryEntries,deleteDictionaryEntries:qt.deleteDictionaryEntries,getDictionarySettings:qt.getDictionarySettings,getAppTask:qt.getAppTask,replaceDictionaryEntries:qt.replaceDictionaryEntries,saveDictionaryEntries:qt.saveDictionaryEntries,searchDictionaryEntries:qt.searchDictionaryEntries,setDictionarySettings:qt.setDictionarySettings,waitAppTask:qt.waitAppTask,customRequest:qt.customRequest,initIndex:c=>f=>qt.initIndex(c)(f,{methods:{batch:qt.batch,delete:qt.deleteIndex,findAnswers:qt.findAnswers,getObject:qt.getObject,getObjects:qt.getObjects,saveObject:qt.saveObject,saveObjects:qt.saveObjects,search:qt.search,searchForFacetValues:qt.searchForFacetValues,waitTask:qt.waitTask,setSettings:qt.setSettings,getSettings:qt.getSettings,partialUpdateObject:qt.partialUpdateObject,partialUpdateObjects:qt.partialUpdateObjects,deleteObject:qt.deleteObject,deleteObjects:qt.deleteObjects,deleteBy:qt.deleteBy,clearObjects:qt.clearObjects,browseObjects:qt.browseObjects,getObjectPosition:qt.getObjectPosition,findObject:qt.findObject,exists:qt.exists,saveSynonym:qt.saveSynonym,saveSynonyms:qt.saveSynonyms,getSynonym:qt.getSynonym,searchSynonyms:qt.searchSynonyms,browseSynonyms:qt.browseSynonyms,deleteSynonym:qt.deleteSynonym,clearSynonyms:qt.clearSynonyms,replaceAllObjects:qt.replaceAllObjects,replaceAllSynonyms:qt.replaceAllSynonyms,searchRules:qt.searchRules,getRule:qt.getRule,deleteRule:qt.deleteRule,saveRule:qt.saveRule,saveRules:qt.saveRules,replaceAllRules:qt.replaceAllRules,browseRules:qt.browseRules,clearRules:qt.clearRules}}),initAnalytics:()=>c=>rw.createAnalyticsClient({...s,...c,methods:{addABTest:rw.addABTest,getABTest:rw.getABTest,getABTests:rw.getABTests,stopABTest:rw.stopABTest,deleteABTest:rw.deleteABTest}}),initPersonalization:n,initRecommendation:()=>c=>(a.logger.info("The `initRecommendation` method is deprecated. Use `initPersonalization` instead."),n()(c))}})}Yye.version=j9.version;Wye.exports=Yye});var q9=G((kVt,G9)=>{var Kye=Vye();G9.exports=Kye;G9.exports.default=Kye});var V9=G((TVt,Zye)=>{"use strict";var zye=Object.getOwnPropertySymbols,zct=Object.prototype.hasOwnProperty,Zct=Object.prototype.propertyIsEnumerable;function Xct(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function $ct(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;var s=Object.getOwnPropertyNames(t).map(function(n){return t[n]});if(s.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}Zye.exports=$ct()?Object.assign:function(e,t){for(var r,s=Xct(e),a,n=1;n{"use strict";var J9=V9(),nw=60103,eEe=60106;xn.Fragment=60107;xn.StrictMode=60108;xn.Profiler=60114;var tEe=60109,rEe=60110,nEe=60112;xn.Suspense=60113;var iEe=60115,sEe=60116;typeof Symbol=="function"&&Symbol.for&&(Gc=Symbol.for,nw=Gc("react.element"),eEe=Gc("react.portal"),xn.Fragment=Gc("react.fragment"),xn.StrictMode=Gc("react.strict_mode"),xn.Profiler=Gc("react.profiler"),tEe=Gc("react.provider"),rEe=Gc("react.context"),nEe=Gc("react.forward_ref"),xn.Suspense=Gc("react.suspense"),iEe=Gc("react.memo"),sEe=Gc("react.lazy"));var Gc,Xye=typeof Symbol=="function"&&Symbol.iterator;function eut(e){return e===null||typeof e!="object"?null:(e=Xye&&e[Xye]||e["@@iterator"],typeof e=="function"?e:null)}function MS(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r{"use strict";hEe.exports=pEe()});var lF=G((NVt,dEe)=>{function sut(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}dEe.exports=sut});var mEe=G((OVt,gEe)=>{var out=typeof global=="object"&&global&&global.Object===Object&&global;gEe.exports=out});var eq=G((LVt,yEe)=>{var aut=mEe(),lut=typeof self=="object"&&self&&self.Object===Object&&self,cut=aut||lut||Function("return this")();yEe.exports=cut});var IEe=G((MVt,EEe)=>{var uut=eq(),fut=function(){return uut.Date.now()};EEe.exports=fut});var wEe=G((UVt,CEe)=>{var Aut=/\s/;function put(e){for(var t=e.length;t--&&Aut.test(e.charAt(t)););return t}CEe.exports=put});var vEe=G((_Vt,BEe)=>{var hut=wEe(),dut=/^\s+/;function gut(e){return e&&e.slice(0,hut(e)+1).replace(dut,"")}BEe.exports=gut});var tq=G((HVt,SEe)=>{var mut=eq(),yut=mut.Symbol;SEe.exports=yut});var xEe=G((jVt,PEe)=>{var bEe=tq(),DEe=Object.prototype,Eut=DEe.hasOwnProperty,Iut=DEe.toString,US=bEe?bEe.toStringTag:void 0;function Cut(e){var t=Eut.call(e,US),r=e[US];try{e[US]=void 0;var s=!0}catch{}var a=Iut.call(e);return s&&(t?e[US]=r:delete e[US]),a}PEe.exports=Cut});var QEe=G((GVt,kEe)=>{var wut=Object.prototype,But=wut.toString;function vut(e){return But.call(e)}kEe.exports=vut});var NEe=G((qVt,FEe)=>{var TEe=tq(),Sut=xEe(),but=QEe(),Dut="[object Null]",Put="[object Undefined]",REe=TEe?TEe.toStringTag:void 0;function xut(e){return e==null?e===void 0?Put:Dut:REe&&REe in Object(e)?Sut(e):but(e)}FEe.exports=xut});var LEe=G((YVt,OEe)=>{function kut(e){return e!=null&&typeof e=="object"}OEe.exports=kut});var UEe=G((WVt,MEe)=>{var Qut=NEe(),Tut=LEe(),Rut="[object Symbol]";function Fut(e){return typeof e=="symbol"||Tut(e)&&Qut(e)==Rut}MEe.exports=Fut});var GEe=G((VVt,jEe)=>{var Nut=vEe(),_Ee=lF(),Out=UEe(),HEe=NaN,Lut=/^[-+]0x[0-9a-f]+$/i,Mut=/^0b[01]+$/i,Uut=/^0o[0-7]+$/i,_ut=parseInt;function Hut(e){if(typeof e=="number")return e;if(Out(e))return HEe;if(_Ee(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=_Ee(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=Nut(e);var r=Mut.test(e);return r||Uut.test(e)?_ut(e.slice(2),r?2:8):Lut.test(e)?HEe:+e}jEe.exports=Hut});var WEe=G((KVt,YEe)=>{var jut=lF(),rq=IEe(),qEe=GEe(),Gut="Expected a function",qut=Math.max,Yut=Math.min;function Wut(e,t,r){var s,a,n,c,f,p,h=0,E=!1,C=!1,S=!0;if(typeof e!="function")throw new TypeError(Gut);t=qEe(t)||0,jut(r)&&(E=!!r.leading,C="maxWait"in r,n=C?qut(qEe(r.maxWait)||0,t):n,S="trailing"in r?!!r.trailing:S);function x(le){var ge=s,pe=a;return s=a=void 0,h=le,c=e.apply(pe,ge),c}function I(le){return h=le,f=setTimeout(U,t),E?x(le):c}function R(le){var ge=le-p,pe=le-h,De=t-ge;return C?Yut(De,n-pe):De}function N(le){var ge=le-p,pe=le-h;return p===void 0||ge>=t||ge<0||C&&pe>=n}function U(){var le=rq();if(N(le))return K(le);f=setTimeout(U,R(le))}function K(le){return f=void 0,S&&s?x(le):(s=a=void 0,c)}function $(){f!==void 0&&clearTimeout(f),h=0,s=p=a=f=void 0}function ie(){return f===void 0?c:K(rq())}function fe(){var le=rq(),ge=N(le);if(s=arguments,a=this,p=le,ge){if(f===void 0)return I(p);if(C)return clearTimeout(f),f=setTimeout(U,t),x(p)}return f===void 0&&(f=setTimeout(U,t)),c}return fe.cancel=$,fe.flush=ie,fe}YEe.exports=Wut});var KEe=G((JVt,VEe)=>{var Vut=WEe(),Kut=lF(),Jut="Expected a function";function zut(e,t,r){var s=!0,a=!0;if(typeof e!="function")throw new TypeError(Jut);return Kut(r)&&(s="leading"in r?!!r.leading:s,a="trailing"in r?!!r.trailing:a),Vut(e,t,{leading:s,maxWait:t,trailing:a})}VEe.exports=zut});var iq=G((zVt,nq)=>{"use strict";var vn=nq.exports;nq.exports.default=vn;var ei="\x1B[",_S="\x1B]",sw="\x07",cF=";",JEe=process.env.TERM_PROGRAM==="Apple_Terminal";vn.cursorTo=(e,t)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");return typeof t!="number"?ei+(e+1)+"G":ei+(t+1)+";"+(e+1)+"H"};vn.cursorMove=(e,t)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");let r="";return e<0?r+=ei+-e+"D":e>0&&(r+=ei+e+"C"),t<0?r+=ei+-t+"A":t>0&&(r+=ei+t+"B"),r};vn.cursorUp=(e=1)=>ei+e+"A";vn.cursorDown=(e=1)=>ei+e+"B";vn.cursorForward=(e=1)=>ei+e+"C";vn.cursorBackward=(e=1)=>ei+e+"D";vn.cursorLeft=ei+"G";vn.cursorSavePosition=JEe?"\x1B7":ei+"s";vn.cursorRestorePosition=JEe?"\x1B8":ei+"u";vn.cursorGetPosition=ei+"6n";vn.cursorNextLine=ei+"E";vn.cursorPrevLine=ei+"F";vn.cursorHide=ei+"?25l";vn.cursorShow=ei+"?25h";vn.eraseLines=e=>{let t="";for(let r=0;r[_S,"8",cF,cF,t,sw,e,_S,"8",cF,cF,sw].join("");vn.image=(e,t={})=>{let r=`${_S}1337;File=inline=1`;return t.width&&(r+=`;width=${t.width}`),t.height&&(r+=`;height=${t.height}`),t.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0"),r+":"+e.toString("base64")+sw};vn.iTerm={setCwd:(e=process.cwd())=>`${_S}50;CurrentDir=${e}${sw}`,annotation:(e,t={})=>{let r=`${_S}1337;`,s=typeof t.x<"u",a=typeof t.y<"u";if((s||a)&&!(s&&a&&typeof t.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return e=e.replace(/\|/g,""),r+=t.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",t.length>0?r+=(s?[e,t.length,t.x,t.y]:[t.length,e]).join("|"):r+=e,r+sw}}});var ZEe=G((ZVt,sq)=>{"use strict";var zEe=(e,t)=>{for(let r of Reflect.ownKeys(t))Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));return e};sq.exports=zEe;sq.exports.default=zEe});var $Ee=G((XVt,fF)=>{"use strict";var Zut=ZEe(),uF=new WeakMap,XEe=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let r,s=0,a=e.displayName||e.name||"",n=function(...c){if(uF.set(n,++s),s===1)r=e.apply(this,c),e=null;else if(t.throw===!0)throw new Error(`Function \`${a}\` can only be called once`);return r};return Zut(n,e),uF.set(n,s),n};fF.exports=XEe;fF.exports.default=XEe;fF.exports.callCount=e=>{if(!uF.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return uF.get(e)}});var eIe=G(($Vt,AF)=>{AF.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&AF.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&AF.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var lq=G((e7t,lw)=>{var Ti=global.process,Lm=function(e){return e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function"};Lm(Ti)?(tIe=Ce("assert"),ow=eIe(),rIe=/^win/i.test(Ti.platform),HS=Ce("events"),typeof HS!="function"&&(HS=HS.EventEmitter),Ti.__signal_exit_emitter__?to=Ti.__signal_exit_emitter__:(to=Ti.__signal_exit_emitter__=new HS,to.count=0,to.emitted={}),to.infinite||(to.setMaxListeners(1/0),to.infinite=!0),lw.exports=function(e,t){if(!Lm(global.process))return function(){};tIe.equal(typeof e,"function","a callback must be provided for exit handler"),aw===!1&&oq();var r="exit";t&&t.alwaysLast&&(r="afterexit");var s=function(){to.removeListener(r,e),to.listeners("exit").length===0&&to.listeners("afterexit").length===0&&pF()};return to.on(r,e),s},pF=function(){!aw||!Lm(global.process)||(aw=!1,ow.forEach(function(t){try{Ti.removeListener(t,hF[t])}catch{}}),Ti.emit=dF,Ti.reallyExit=aq,to.count-=1)},lw.exports.unload=pF,Mm=function(t,r,s){to.emitted[t]||(to.emitted[t]=!0,to.emit(t,r,s))},hF={},ow.forEach(function(e){hF[e]=function(){if(Lm(global.process)){var r=Ti.listeners(e);r.length===to.count&&(pF(),Mm("exit",null,e),Mm("afterexit",null,e),rIe&&e==="SIGHUP"&&(e="SIGINT"),Ti.kill(Ti.pid,e))}}}),lw.exports.signals=function(){return ow},aw=!1,oq=function(){aw||!Lm(global.process)||(aw=!0,to.count+=1,ow=ow.filter(function(t){try{return Ti.on(t,hF[t]),!0}catch{return!1}}),Ti.emit=iIe,Ti.reallyExit=nIe)},lw.exports.load=oq,aq=Ti.reallyExit,nIe=function(t){Lm(global.process)&&(Ti.exitCode=t||0,Mm("exit",Ti.exitCode,null),Mm("afterexit",Ti.exitCode,null),aq.call(Ti,Ti.exitCode))},dF=Ti.emit,iIe=function(t,r){if(t==="exit"&&Lm(global.process)){r!==void 0&&(Ti.exitCode=r);var s=dF.apply(this,arguments);return Mm("exit",Ti.exitCode,null),Mm("afterexit",Ti.exitCode,null),s}else return dF.apply(this,arguments)}):lw.exports=function(){return function(){}};var tIe,ow,rIe,HS,to,pF,Mm,hF,aw,oq,aq,nIe,dF,iIe});var oIe=G((t7t,sIe)=>{"use strict";var Xut=$Ee(),$ut=lq();sIe.exports=Xut(()=>{$ut(()=>{process.stderr.write("\x1B[?25h")},{alwaysLast:!0})})});var cq=G(cw=>{"use strict";var eft=oIe(),gF=!1;cw.show=(e=process.stderr)=>{e.isTTY&&(gF=!1,e.write("\x1B[?25h"))};cw.hide=(e=process.stderr)=>{e.isTTY&&(eft(),gF=!0,e.write("\x1B[?25l"))};cw.toggle=(e,t)=>{e!==void 0&&(gF=e),gF?cw.show(t):cw.hide(t)}});var uIe=G(jS=>{"use strict";var cIe=jS&&jS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(jS,"__esModule",{value:!0});var aIe=cIe(iq()),lIe=cIe(cq()),tft=(e,{showCursor:t=!1}={})=>{let r=0,s="",a=!1,n=c=>{!t&&!a&&(lIe.default.hide(),a=!0);let f=c+` +`;f!==s&&(s=f,e.write(aIe.default.eraseLines(r)+f),r=f.split(` +`).length)};return n.clear=()=>{e.write(aIe.default.eraseLines(r)),s="",r=0},n.done=()=>{s="",r=0,t||(lIe.default.show(),a=!1)},n};jS.default={create:tft}});var fIe=G((i7t,rft)=>{rft.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY_BUILD_BASE",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}}]});var hIe=G(ic=>{"use strict";var pIe=fIe(),pA=process.env;Object.defineProperty(ic,"_vendors",{value:pIe.map(function(e){return e.constant})});ic.name=null;ic.isPR=null;pIe.forEach(function(e){var t=Array.isArray(e.env)?e.env:[e.env],r=t.every(function(s){return AIe(s)});if(ic[e.constant]=r,r)switch(ic.name=e.name,typeof e.pr){case"string":ic.isPR=!!pA[e.pr];break;case"object":"env"in e.pr?ic.isPR=e.pr.env in pA&&pA[e.pr.env]!==e.pr.ne:"any"in e.pr?ic.isPR=e.pr.any.some(function(s){return!!pA[s]}):ic.isPR=AIe(e.pr);break;default:ic.isPR=null}});ic.isCI=!!(pA.CI||pA.CONTINUOUS_INTEGRATION||pA.BUILD_NUMBER||pA.RUN_ID||ic.name);function AIe(e){return typeof e=="string"?!!pA[e]:Object.keys(e).every(function(t){return pA[t]===e[t]})}});var gIe=G((o7t,dIe)=>{"use strict";dIe.exports=hIe().isCI});var yIe=G((a7t,mIe)=>{"use strict";var nft=e=>{let t=new Set;do for(let r of Reflect.ownKeys(e))t.add([e,r]);while((e=Reflect.getPrototypeOf(e))&&e!==Object.prototype);return t};mIe.exports=(e,{include:t,exclude:r}={})=>{let s=a=>{let n=c=>typeof c=="string"?a===c:c.test(a);return t?t.some(n):r?!r.some(n):!0};for(let[a,n]of nft(e.constructor.prototype)){if(n==="constructor"||!s(n))continue;let c=Reflect.getOwnPropertyDescriptor(a,n);c&&typeof c.value=="function"&&(e[n]=e[n].bind(e))}return e}});var vIe=G(zn=>{"use strict";var fw,YS,IF,gq;typeof performance=="object"&&typeof performance.now=="function"?(EIe=performance,zn.unstable_now=function(){return EIe.now()}):(uq=Date,IIe=uq.now(),zn.unstable_now=function(){return uq.now()-IIe});var EIe,uq,IIe;typeof window>"u"||typeof MessageChannel!="function"?(uw=null,fq=null,Aq=function(){if(uw!==null)try{var e=zn.unstable_now();uw(!0,e),uw=null}catch(t){throw setTimeout(Aq,0),t}},fw=function(e){uw!==null?setTimeout(fw,0,e):(uw=e,setTimeout(Aq,0))},YS=function(e,t){fq=setTimeout(e,t)},IF=function(){clearTimeout(fq)},zn.unstable_shouldYield=function(){return!1},gq=zn.unstable_forceFrameRate=function(){}):(CIe=window.setTimeout,wIe=window.clearTimeout,typeof console<"u"&&(BIe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof BIe!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),GS=!1,qS=null,mF=-1,pq=5,hq=0,zn.unstable_shouldYield=function(){return zn.unstable_now()>=hq},gq=function(){},zn.unstable_forceFrameRate=function(e){0>e||125>>1,a=e[s];if(a!==void 0&&0EF(c,r))p!==void 0&&0>EF(p,c)?(e[s]=p,e[f]=r,s=f):(e[s]=c,e[n]=r,s=n);else if(p!==void 0&&0>EF(p,r))e[s]=p,e[f]=r,s=f;else break e}}return t}return null}function EF(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}var hA=[],$d=[],ift=1,qc=null,sa=3,wF=!1,Um=!1,WS=!1;function yq(e){for(var t=nf($d);t!==null;){if(t.callback===null)CF($d);else if(t.startTime<=e)CF($d),t.sortIndex=t.expirationTime,mq(hA,t);else break;t=nf($d)}}function Eq(e){if(WS=!1,yq(e),!Um)if(nf(hA)!==null)Um=!0,fw(Iq);else{var t=nf($d);t!==null&&YS(Eq,t.startTime-e)}}function Iq(e,t){Um=!1,WS&&(WS=!1,IF()),wF=!0;var r=sa;try{for(yq(t),qc=nf(hA);qc!==null&&(!(qc.expirationTime>t)||e&&!zn.unstable_shouldYield());){var s=qc.callback;if(typeof s=="function"){qc.callback=null,sa=qc.priorityLevel;var a=s(qc.expirationTime<=t);t=zn.unstable_now(),typeof a=="function"?qc.callback=a:qc===nf(hA)&&CF(hA),yq(t)}else CF(hA);qc=nf(hA)}if(qc!==null)var n=!0;else{var c=nf($d);c!==null&&YS(Eq,c.startTime-t),n=!1}return n}finally{qc=null,sa=r,wF=!1}}var sft=gq;zn.unstable_IdlePriority=5;zn.unstable_ImmediatePriority=1;zn.unstable_LowPriority=4;zn.unstable_NormalPriority=3;zn.unstable_Profiling=null;zn.unstable_UserBlockingPriority=2;zn.unstable_cancelCallback=function(e){e.callback=null};zn.unstable_continueExecution=function(){Um||wF||(Um=!0,fw(Iq))};zn.unstable_getCurrentPriorityLevel=function(){return sa};zn.unstable_getFirstCallbackNode=function(){return nf(hA)};zn.unstable_next=function(e){switch(sa){case 1:case 2:case 3:var t=3;break;default:t=sa}var r=sa;sa=t;try{return e()}finally{sa=r}};zn.unstable_pauseExecution=function(){};zn.unstable_requestPaint=sft;zn.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=sa;sa=e;try{return t()}finally{sa=r}};zn.unstable_scheduleCallback=function(e,t,r){var s=zn.unstable_now();switch(typeof r=="object"&&r!==null?(r=r.delay,r=typeof r=="number"&&0s?(e.sortIndex=r,mq($d,e),nf(hA)===null&&e===nf($d)&&(WS?IF():WS=!0,YS(Eq,r-s))):(e.sortIndex=a,mq(hA,e),Um||wF||(Um=!0,fw(Iq))),e};zn.unstable_wrapCallback=function(e){var t=sa;return function(){var r=sa;sa=t;try{return e.apply(this,arguments)}finally{sa=r}}}});var Cq=G((c7t,SIe)=>{"use strict";SIe.exports=vIe()});var bIe=G((u7t,VS)=>{VS.exports=function(t){var r={},s=V9(),a=dn(),n=Cq();function c(v){for(var b="https://reactjs.org/docs/error-decoder.html?invariant="+v,Q=1;Q_e||V[Be]!==ne[_e])return` +`+V[Be].replace(" at new "," at ");while(1<=Be&&0<=_e);break}}}finally{we=!1,Error.prepareStackTrace=Q}return(v=v?v.displayName||v.name:"")?cc(v):""}var uc=[],Oi=-1;function fo(v){return{current:v}}function Rt(v){0>Oi||(v.current=uc[Oi],uc[Oi]=null,Oi--)}function Tn(v,b){Oi++,uc[Oi]=v.current,v.current=b}var ha={},Gi=fo(ha),Li=fo(!1),Ya=ha;function yn(v,b){var Q=v.type.contextTypes;if(!Q)return ha;var j=v.stateNode;if(j&&j.__reactInternalMemoizedUnmaskedChildContext===b)return j.__reactInternalMemoizedMaskedChildContext;var V={},ne;for(ne in Q)V[ne]=b[ne];return j&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=b,v.__reactInternalMemoizedMaskedChildContext=V),V}function Xn(v){return v=v.childContextTypes,v!=null}function fu(){Rt(Li),Rt(Gi)}function Eh(v,b,Q){if(Gi.current!==ha)throw Error(c(168));Tn(Gi,b),Tn(Li,Q)}function Wa(v,b,Q){var j=v.stateNode;if(v=b.childContextTypes,typeof j.getChildContext!="function")return Q;j=j.getChildContext();for(var V in j)if(!(V in v))throw Error(c(108,d(b)||"Unknown",V));return s({},Q,j)}function Va(v){return v=(v=v.stateNode)&&v.__reactInternalMemoizedMergedChildContext||ha,Ya=Gi.current,Tn(Gi,v),Tn(Li,Li.current),!0}function Ka(v,b,Q){var j=v.stateNode;if(!j)throw Error(c(169));Q?(v=Wa(v,b,Ya),j.__reactInternalMemoizedMergedChildContext=v,Rt(Li),Rt(Gi),Tn(Gi,v)):Rt(Li),Tn(Li,Q)}var $e=null,Ja=null,mf=n.unstable_now;mf();var fc=0,Sn=8;function da(v){if(1&v)return Sn=15,1;if(2&v)return Sn=14,2;if(4&v)return Sn=13,4;var b=24&v;return b!==0?(Sn=12,b):v&32?(Sn=11,32):(b=192&v,b!==0?(Sn=10,b):v&256?(Sn=9,256):(b=3584&v,b!==0?(Sn=8,b):v&4096?(Sn=7,4096):(b=4186112&v,b!==0?(Sn=6,b):(b=62914560&v,b!==0?(Sn=5,b):v&67108864?(Sn=4,67108864):v&134217728?(Sn=3,134217728):(b=805306368&v,b!==0?(Sn=2,b):1073741824&v?(Sn=1,1073741824):(Sn=8,v))))))}function _A(v){switch(v){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function HA(v){switch(v){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(c(358,v))}}function ga(v,b){var Q=v.pendingLanes;if(Q===0)return Sn=0;var j=0,V=0,ne=v.expiredLanes,Be=v.suspendedLanes,_e=v.pingedLanes;if(ne!==0)j=ne,V=Sn=15;else if(ne=Q&134217727,ne!==0){var ht=ne&~Be;ht!==0?(j=da(ht),V=Sn):(_e&=ne,_e!==0&&(j=da(_e),V=Sn))}else ne=Q&~Be,ne!==0?(j=da(ne),V=Sn):_e!==0&&(j=da(_e),V=Sn);if(j===0)return 0;if(j=31-ss(j),j=Q&((0>j?0:1<Q;Q++)b.push(v);return b}function za(v,b,Q){v.pendingLanes|=b;var j=b-1;v.suspendedLanes&=j,v.pingedLanes&=j,v=v.eventTimes,b=31-ss(b),v[b]=Q}var ss=Math.clz32?Math.clz32:pc,Ac=Math.log,Au=Math.LN2;function pc(v){return v===0?32:31-(Ac(v)/Au|0)|0}var Za=n.unstable_runWithPriority,Mi=n.unstable_scheduleCallback,vs=n.unstable_cancelCallback,Tl=n.unstable_shouldYield,yf=n.unstable_requestPaint,hc=n.unstable_now,vi=n.unstable_getCurrentPriorityLevel,Fn=n.unstable_ImmediatePriority,dc=n.unstable_UserBlockingPriority,ze=n.unstable_NormalPriority,at=n.unstable_LowPriority,St=n.unstable_IdlePriority,lr={},te=yf!==void 0?yf:function(){},Ee=null,Oe=null,mt=!1,Et=hc(),Dt=1e4>Et?hc:function(){return hc()-Et};function tr(){switch(vi()){case Fn:return 99;case dc:return 98;case ze:return 97;case at:return 96;case St:return 95;default:throw Error(c(332))}}function pn(v){switch(v){case 99:return Fn;case 98:return dc;case 97:return ze;case 96:return at;case 95:return St;default:throw Error(c(332))}}function ui(v,b){return v=pn(v),Za(v,b)}function qi(v,b,Q){return v=pn(v),Mi(v,b,Q)}function Nn(){if(Oe!==null){var v=Oe;Oe=null,vs(v)}Xa()}function Xa(){if(!mt&&Ee!==null){mt=!0;var v=0;try{var b=Ee;ui(99,function(){for(;vOn?(jn=Tr,Tr=null):jn=Tr.sibling;var Zr=Xt(rt,Tr,gt[On],Zt);if(Zr===null){Tr===null&&(Tr=jn);break}v&&Tr&&Zr.alternate===null&&b(rt,Tr),Ye=ne(Zr,Ye,On),ri===null?br=Zr:ri.sibling=Zr,ri=Zr,Tr=jn}if(On===gt.length)return Q(rt,Tr),br;if(Tr===null){for(;OnOn?(jn=Tr,Tr=null):jn=Tr.sibling;var fi=Xt(rt,Tr,Zr.value,Zt);if(fi===null){Tr===null&&(Tr=jn);break}v&&Tr&&fi.alternate===null&&b(rt,Tr),Ye=ne(fi,Ye,On),ri===null?br=fi:ri.sibling=fi,ri=fi,Tr=jn}if(Zr.done)return Q(rt,Tr),br;if(Tr===null){for(;!Zr.done;On++,Zr=gt.next())Zr=Mr(rt,Zr.value,Zt),Zr!==null&&(Ye=ne(Zr,Ye,On),ri===null?br=Zr:ri.sibling=Zr,ri=Zr);return br}for(Tr=j(rt,Tr);!Zr.done;On++,Zr=gt.next())Zr=$n(Tr,rt,On,Zr.value,Zt),Zr!==null&&(v&&Zr.alternate!==null&&Tr.delete(Zr.key===null?On:Zr.key),Ye=ne(Zr,Ye,On),ri===null?br=Zr:ri.sibling=Zr,ri=Zr);return v&&Tr.forEach(function(Su){return b(rt,Su)}),br}return function(rt,Ye,gt,Zt){var br=typeof gt=="object"&>!==null&>.type===E&>.key===null;br&&(gt=gt.props.children);var ri=typeof gt=="object"&>!==null;if(ri)switch(gt.$$typeof){case p:e:{for(ri=gt.key,br=Ye;br!==null;){if(br.key===ri){switch(br.tag){case 7:if(gt.type===E){Q(rt,br.sibling),Ye=V(br,gt.props.children),Ye.return=rt,rt=Ye;break e}break;default:if(br.elementType===gt.type){Q(rt,br.sibling),Ye=V(br,gt.props),Ye.ref=yt(rt,br,gt),Ye.return=rt,rt=Ye;break e}}Q(rt,br);break}else b(rt,br);br=br.sibling}gt.type===E?(Ye=Rf(gt.props.children,rt.mode,Zt,gt.key),Ye.return=rt,rt=Ye):(Zt=o0(gt.type,gt.key,gt.props,null,rt.mode,Zt),Zt.ref=yt(rt,Ye,gt),Zt.return=rt,rt=Zt)}return Be(rt);case h:e:{for(br=gt.key;Ye!==null;){if(Ye.key===br)if(Ye.tag===4&&Ye.stateNode.containerInfo===gt.containerInfo&&Ye.stateNode.implementation===gt.implementation){Q(rt,Ye.sibling),Ye=V(Ye,gt.children||[]),Ye.return=rt,rt=Ye;break e}else{Q(rt,Ye);break}else b(rt,Ye);Ye=Ye.sibling}Ye=Mo(gt,rt.mode,Zt),Ye.return=rt,rt=Ye}return Be(rt)}if(typeof gt=="string"||typeof gt=="number")return gt=""+gt,Ye!==null&&Ye.tag===6?(Q(rt,Ye.sibling),Ye=V(Ye,gt),Ye.return=rt,rt=Ye):(Q(rt,Ye),Ye=S2(gt,rt.mode,Zt),Ye.return=rt,rt=Ye),Be(rt);if(If(gt))return Ei(rt,Ye,gt,Zt);if(ye(gt))return sl(rt,Ye,gt,Zt);if(ri&&hu(rt,gt),typeof gt>"u"&&!br)switch(rt.tag){case 1:case 22:case 0:case 11:case 15:throw Error(c(152,d(rt.type)||"Component"))}return Q(rt,Ye)}}var Ug=xy(!0),X1=xy(!1),Sh={},ur=fo(Sh),zi=fo(Sh),Cf=fo(Sh);function $a(v){if(v===Sh)throw Error(c(174));return v}function _g(v,b){Tn(Cf,b),Tn(zi,v),Tn(ur,Sh),v=it(b),Rt(ur),Tn(ur,v)}function du(){Rt(ur),Rt(zi),Rt(Cf)}function wf(v){var b=$a(Cf.current),Q=$a(ur.current);b=_(Q,v.type,b),Q!==b&&(Tn(zi,v),Tn(ur,b))}function Bt(v){zi.current===v&&(Rt(ur),Rt(zi))}var mi=fo(0);function WA(v){for(var b=v;b!==null;){if(b.tag===13){var Q=b.memoizedState;if(Q!==null&&(Q=Q.dehydrated,Q===null||gr(Q)||ko(Q)))return b}else if(b.tag===19&&b.memoizedProps.revealOrder!==void 0){if(b.flags&64)return b}else if(b.child!==null){b.child.return=b,b=b.child;continue}if(b===v)break;for(;b.sibling===null;){if(b.return===null||b.return===v)return null;b=b.return}b.sibling.return=b.return,b=b.sibling}return null}var el=null,ya=null,tl=!1;function Hg(v,b){var Q=il(5,null,null,0);Q.elementType="DELETED",Q.type="DELETED",Q.stateNode=b,Q.return=v,Q.flags=8,v.lastEffect!==null?(v.lastEffect.nextEffect=Q,v.lastEffect=Q):v.firstEffect=v.lastEffect=Q}function bh(v,b){switch(v.tag){case 5:return b=pa(b,v.type,v.pendingProps),b!==null?(v.stateNode=b,!0):!1;case 6:return b=LA(b,v.pendingProps),b!==null?(v.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function jg(v){if(tl){var b=ya;if(b){var Q=b;if(!bh(v,b)){if(b=qa(Q),!b||!bh(v,b)){v.flags=v.flags&-1025|2,tl=!1,el=v;return}Hg(el,Q)}el=v,ya=Ue(b)}else v.flags=v.flags&-1025|2,tl=!1,el=v}}function ky(v){for(v=v.return;v!==null&&v.tag!==5&&v.tag!==3&&v.tag!==13;)v=v.return;el=v}function VA(v){if(!Z||v!==el)return!1;if(!tl)return ky(v),tl=!0,!1;var b=v.type;if(v.tag!==5||b!=="head"&&b!=="body"&&!ct(b,v.memoizedProps))for(b=ya;b;)Hg(v,b),b=qa(b);if(ky(v),v.tag===13){if(!Z)throw Error(c(316));if(v=v.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(c(317));ya=MA(v)}else ya=el?qa(v.stateNode):null;return!0}function Gg(){Z&&(ya=el=null,tl=!1)}var gu=[];function mu(){for(var v=0;vne))throw Error(c(301));ne+=1,xi=os=null,b.updateQueue=null,Bf.current=re,v=Q(j,V)}while(vf)}if(Bf.current=kt,b=os!==null&&os.next!==null,yu=0,xi=os=Yn=null,KA=!1,b)throw Error(c(300));return v}function as(){var v={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return xi===null?Yn.memoizedState=xi=v:xi=xi.next=v,xi}function Ol(){if(os===null){var v=Yn.alternate;v=v!==null?v.memoizedState:null}else v=os.next;var b=xi===null?Yn.memoizedState:xi.next;if(b!==null)xi=b,os=v;else{if(v===null)throw Error(c(310));os=v,v={memoizedState:os.memoizedState,baseState:os.baseState,baseQueue:os.baseQueue,queue:os.queue,next:null},xi===null?Yn.memoizedState=xi=v:xi=xi.next=v}return xi}function No(v,b){return typeof b=="function"?b(v):b}function Sf(v){var b=Ol(),Q=b.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var j=os,V=j.baseQueue,ne=Q.pending;if(ne!==null){if(V!==null){var Be=V.next;V.next=ne.next,ne.next=Be}j.baseQueue=V=ne,Q.pending=null}if(V!==null){V=V.next,j=j.baseState;var _e=Be=ne=null,ht=V;do{var Wt=ht.lane;if((yu&Wt)===Wt)_e!==null&&(_e=_e.next={lane:0,action:ht.action,eagerReducer:ht.eagerReducer,eagerState:ht.eagerState,next:null}),j=ht.eagerReducer===v?ht.eagerState:v(j,ht.action);else{var Sr={lane:Wt,action:ht.action,eagerReducer:ht.eagerReducer,eagerState:ht.eagerState,next:null};_e===null?(Be=_e=Sr,ne=j):_e=_e.next=Sr,Yn.lanes|=Wt,$g|=Wt}ht=ht.next}while(ht!==null&&ht!==V);_e===null?ne=j:_e.next=Be,Qo(j,b.memoizedState)||(Ke=!0),b.memoizedState=j,b.baseState=ne,b.baseQueue=_e,Q.lastRenderedState=j}return[b.memoizedState,Q.dispatch]}function bf(v){var b=Ol(),Q=b.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var j=Q.dispatch,V=Q.pending,ne=b.memoizedState;if(V!==null){Q.pending=null;var Be=V=V.next;do ne=v(ne,Be.action),Be=Be.next;while(Be!==V);Qo(ne,b.memoizedState)||(Ke=!0),b.memoizedState=ne,b.baseQueue===null&&(b.baseState=ne),Q.lastRenderedState=ne}return[ne,j]}function Ll(v,b,Q){var j=b._getVersion;j=j(b._source);var V=y?b._workInProgressVersionPrimary:b._workInProgressVersionSecondary;if(V!==null?v=V===j:(v=v.mutableReadLanes,(v=(yu&v)===v)&&(y?b._workInProgressVersionPrimary=j:b._workInProgressVersionSecondary=j,gu.push(b))),v)return Q(b._source);throw gu.push(b),Error(c(350))}function In(v,b,Q,j){var V=po;if(V===null)throw Error(c(349));var ne=b._getVersion,Be=ne(b._source),_e=Bf.current,ht=_e.useState(function(){return Ll(V,b,Q)}),Wt=ht[1],Sr=ht[0];ht=xi;var Mr=v.memoizedState,Xt=Mr.refs,$n=Xt.getSnapshot,Ei=Mr.source;Mr=Mr.subscribe;var sl=Yn;return v.memoizedState={refs:Xt,source:b,subscribe:j},_e.useEffect(function(){Xt.getSnapshot=Q,Xt.setSnapshot=Wt;var rt=ne(b._source);if(!Qo(Be,rt)){rt=Q(b._source),Qo(Sr,rt)||(Wt(rt),rt=Ds(sl),V.mutableReadLanes|=rt&V.pendingLanes),rt=V.mutableReadLanes,V.entangledLanes|=rt;for(var Ye=V.entanglements,gt=rt;0Q?98:Q,function(){v(!0)}),ui(97d2&&(b.flags|=64,V=!0,ep(j,!1),b.lanes=33554432)}else{if(!V)if(v=WA(ne),v!==null){if(b.flags|=64,V=!0,v=v.updateQueue,v!==null&&(b.updateQueue=v,b.flags|=4),ep(j,!0),j.tail===null&&j.tailMode==="hidden"&&!ne.alternate&&!tl)return b=b.lastEffect=j.lastEffect,b!==null&&(b.nextEffect=null),null}else 2*Dt()-j.renderingStartTime>d2&&Q!==1073741824&&(b.flags|=64,V=!0,ep(j,!1),b.lanes=33554432);j.isBackwards?(ne.sibling=b.child,b.child=ne):(v=j.last,v!==null?v.sibling=ne:b.child=ne,j.last=ne)}return j.tail!==null?(v=j.tail,j.rendering=v,j.tail=v.sibling,j.lastEffect=b.lastEffect,j.renderingStartTime=Dt(),v.sibling=null,b=mi.current,Tn(mi,V?b&1|2:b&1),v):null;case 23:case 24:return C2(),v!==null&&v.memoizedState!==null!=(b.memoizedState!==null)&&j.mode!=="unstable-defer-without-hiding"&&(b.flags|=4),null}throw Error(c(156,b.tag))}function OL(v){switch(v.tag){case 1:Xn(v.type)&&fu();var b=v.flags;return b&4096?(v.flags=b&-4097|64,v):null;case 3:if(du(),Rt(Li),Rt(Gi),mu(),b=v.flags,b&64)throw Error(c(285));return v.flags=b&-4097|64,v;case 5:return Bt(v),null;case 13:return Rt(mi),b=v.flags,b&4096?(v.flags=b&-4097|64,v):null;case 19:return Rt(mi),null;case 4:return du(),null;case 10:return Lg(v),null;case 23:case 24:return C2(),null;default:return null}}function Vg(v,b){try{var Q="",j=b;do Q+=Z1(j),j=j.return;while(j);var V=Q}catch(ne){V=` +Error generating stack: `+ne.message+` +`+ne.stack}return{value:v,source:b,stack:V}}function Kg(v,b){try{console.error(b.value)}catch(Q){setTimeout(function(){throw Q})}}var LL=typeof WeakMap=="function"?WeakMap:Map;function r2(v,b,Q){Q=Fl(-1,Q),Q.tag=3,Q.payload={element:null};var j=b.value;return Q.callback=function(){Wy||(Wy=!0,g2=j),Kg(v,b)},Q}function Jg(v,b,Q){Q=Fl(-1,Q),Q.tag=3;var j=v.type.getDerivedStateFromError;if(typeof j=="function"){var V=b.value;Q.payload=function(){return Kg(v,b),j(V)}}var ne=v.stateNode;return ne!==null&&typeof ne.componentDidCatch=="function"&&(Q.callback=function(){typeof j!="function"&&(mc===null?mc=new Set([this]):mc.add(this),Kg(v,b));var Be=b.stack;this.componentDidCatch(b.value,{componentStack:Be!==null?Be:""})}),Q}var ML=typeof WeakSet=="function"?WeakSet:Set;function n2(v){var b=v.ref;if(b!==null)if(typeof b=="function")try{b(null)}catch(Q){Tf(v,Q)}else b.current=null}function Ny(v,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&v!==null){var Q=v.memoizedProps,j=v.memoizedState;v=b.stateNode,b=v.getSnapshotBeforeUpdate(b.elementType===b.type?Q:To(b.type,Q),j),v.__reactInternalSnapshotBeforeUpdate=b}return;case 3:F&&b.flags&256&&Ns(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(c(163))}function Rh(v,b){if(b=b.updateQueue,b=b!==null?b.lastEffect:null,b!==null){var Q=b=b.next;do{if((Q.tag&v)===v){var j=Q.destroy;Q.destroy=void 0,j!==void 0&&j()}Q=Q.next}while(Q!==b)}}function gP(v,b,Q){switch(Q.tag){case 0:case 11:case 15:case 22:if(b=Q.updateQueue,b=b!==null?b.lastEffect:null,b!==null){v=b=b.next;do{if((v.tag&3)===3){var j=v.create;v.destroy=j()}v=v.next}while(v!==b)}if(b=Q.updateQueue,b=b!==null?b.lastEffect:null,b!==null){v=b=b.next;do{var V=v;j=V.next,V=V.tag,V&4&&V&1&&(kP(Q,v),KL(Q,v)),v=j}while(v!==b)}return;case 1:v=Q.stateNode,Q.flags&4&&(b===null?v.componentDidMount():(j=Q.elementType===Q.type?b.memoizedProps:To(Q.type,b.memoizedProps),v.componentDidUpdate(j,b.memoizedState,v.__reactInternalSnapshotBeforeUpdate))),b=Q.updateQueue,b!==null&&Dy(Q,b,v);return;case 3:if(b=Q.updateQueue,b!==null){if(v=null,Q.child!==null)switch(Q.child.tag){case 5:v=ke(Q.child.stateNode);break;case 1:v=Q.child.stateNode}Dy(Q,b,v)}return;case 5:v=Q.stateNode,b===null&&Q.flags&4&&ao(v,Q.type,Q.memoizedProps,Q);return;case 6:return;case 4:return;case 12:return;case 13:Z&&Q.memoizedState===null&&(Q=Q.alternate,Q!==null&&(Q=Q.memoizedState,Q!==null&&(Q=Q.dehydrated,Q!==null&&cu(Q))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(c(163))}function mP(v,b){if(F)for(var Q=v;;){if(Q.tag===5){var j=Q.stateNode;b?mh(j):co(Q.stateNode,Q.memoizedProps)}else if(Q.tag===6)j=Q.stateNode,b?yh(j):qn(j,Q.memoizedProps);else if((Q.tag!==23&&Q.tag!==24||Q.memoizedState===null||Q===v)&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===v)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===v)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}}function Oy(v,b){if(Ja&&typeof Ja.onCommitFiberUnmount=="function")try{Ja.onCommitFiberUnmount($e,b)}catch{}switch(b.tag){case 0:case 11:case 14:case 15:case 22:if(v=b.updateQueue,v!==null&&(v=v.lastEffect,v!==null)){var Q=v=v.next;do{var j=Q,V=j.destroy;if(j=j.tag,V!==void 0)if(j&4)kP(b,Q);else{j=b;try{V()}catch(ne){Tf(j,ne)}}Q=Q.next}while(Q!==v)}break;case 1:if(n2(b),v=b.stateNode,typeof v.componentWillUnmount=="function")try{v.props=b.memoizedProps,v.state=b.memoizedState,v.componentWillUnmount()}catch(ne){Tf(b,ne)}break;case 5:n2(b);break;case 4:F?CP(v,b):z&&z&&(b=b.stateNode.containerInfo,v=ou(b),NA(b,v))}}function yP(v,b){for(var Q=b;;)if(Oy(v,Q),Q.child===null||F&&Q.tag===4){if(Q===b)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===b)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}else Q.child.return=Q,Q=Q.child}function Ly(v){v.alternate=null,v.child=null,v.dependencies=null,v.firstEffect=null,v.lastEffect=null,v.memoizedProps=null,v.memoizedState=null,v.pendingProps=null,v.return=null,v.updateQueue=null}function EP(v){return v.tag===5||v.tag===3||v.tag===4}function IP(v){if(F){e:{for(var b=v.return;b!==null;){if(EP(b))break e;b=b.return}throw Error(c(160))}var Q=b;switch(b=Q.stateNode,Q.tag){case 5:var j=!1;break;case 3:b=b.containerInfo,j=!0;break;case 4:b=b.containerInfo,j=!0;break;default:throw Error(c(161))}Q.flags&16&&(df(b),Q.flags&=-17);e:t:for(Q=v;;){for(;Q.sibling===null;){if(Q.return===null||EP(Q.return)){Q=null;break e}Q=Q.return}for(Q.sibling.return=Q.return,Q=Q.sibling;Q.tag!==5&&Q.tag!==6&&Q.tag!==18;){if(Q.flags&2||Q.child===null||Q.tag===4)continue t;Q.child.return=Q,Q=Q.child}if(!(Q.flags&2)){Q=Q.stateNode;break e}}j?i2(v,Q,b):s2(v,Q,b)}}function i2(v,b,Q){var j=v.tag,V=j===5||j===6;if(V)v=V?v.stateNode:v.stateNode.instance,b?lo(Q,v,b):Do(Q,v);else if(j!==4&&(v=v.child,v!==null))for(i2(v,b,Q),v=v.sibling;v!==null;)i2(v,b,Q),v=v.sibling}function s2(v,b,Q){var j=v.tag,V=j===5||j===6;if(V)v=V?v.stateNode:v.stateNode.instance,b?ji(Q,v,b):ci(Q,v);else if(j!==4&&(v=v.child,v!==null))for(s2(v,b,Q),v=v.sibling;v!==null;)s2(v,b,Q),v=v.sibling}function CP(v,b){for(var Q=b,j=!1,V,ne;;){if(!j){j=Q.return;e:for(;;){if(j===null)throw Error(c(160));switch(V=j.stateNode,j.tag){case 5:ne=!1;break e;case 3:V=V.containerInfo,ne=!0;break e;case 4:V=V.containerInfo,ne=!0;break e}j=j.return}j=!0}if(Q.tag===5||Q.tag===6)yP(v,Q),ne?FA(V,Q.stateNode):xo(V,Q.stateNode);else if(Q.tag===4){if(Q.child!==null){V=Q.stateNode.containerInfo,ne=!0,Q.child.return=Q,Q=Q.child;continue}}else if(Oy(v,Q),Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===b)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===b)return;Q=Q.return,Q.tag===4&&(j=!1)}Q.sibling.return=Q.return,Q=Q.sibling}}function o2(v,b){if(F){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Rh(3,b);return;case 1:return;case 5:var Q=b.stateNode;if(Q!=null){var j=b.memoizedProps;v=v!==null?v.memoizedProps:j;var V=b.type,ne=b.updateQueue;b.updateQueue=null,ne!==null&&Po(Q,ne,V,v,j,b)}return;case 6:if(b.stateNode===null)throw Error(c(162));Q=b.memoizedProps,is(b.stateNode,v!==null?v.memoizedProps:Q,Q);return;case 3:Z&&(b=b.stateNode,b.hydrate&&(b.hydrate=!1,UA(b.containerInfo)));return;case 12:return;case 13:wP(b),zg(b);return;case 19:zg(b);return;case 17:return;case 23:case 24:mP(b,b.memoizedState!==null);return}throw Error(c(163))}switch(b.tag){case 0:case 11:case 14:case 15:case 22:Rh(3,b);return;case 12:return;case 13:wP(b),zg(b);return;case 19:zg(b);return;case 3:Z&&(Q=b.stateNode,Q.hydrate&&(Q.hydrate=!1,UA(Q.containerInfo)));break;case 23:case 24:return}e:if(z){switch(b.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:b=b.stateNode,NA(b.containerInfo,b.pendingChildren);break e}throw Error(c(163))}}function wP(v){v.memoizedState!==null&&(h2=Dt(),F&&mP(v.child,!0))}function zg(v){var b=v.updateQueue;if(b!==null){v.updateQueue=null;var Q=v.stateNode;Q===null&&(Q=v.stateNode=new ML),b.forEach(function(j){var V=zL.bind(null,v,j);Q.has(j)||(Q.add(j),j.then(V,V))})}}function UL(v,b){return v!==null&&(v=v.memoizedState,v===null||v.dehydrated!==null)?(b=b.memoizedState,b!==null&&b.dehydrated===null):!1}var My=0,Uy=1,_y=2,Zg=3,Hy=4;if(typeof Symbol=="function"&&Symbol.for){var Xg=Symbol.for;My=Xg("selector.component"),Uy=Xg("selector.has_pseudo_class"),_y=Xg("selector.role"),Zg=Xg("selector.test_id"),Hy=Xg("selector.text")}function jy(v){var b=ee(v);if(b!=null){if(typeof b.memoizedProps["data-testname"]!="string")throw Error(c(364));return b}if(v=ir(v),v===null)throw Error(c(362));return v.stateNode.current}function Pf(v,b){switch(b.$$typeof){case My:if(v.type===b.value)return!0;break;case Uy:e:{b=b.value,v=[v,0];for(var Q=0;Q";case Uy:return":has("+(xf(v)||"")+")";case _y:return'[role="'+v.value+'"]';case Hy:return'"'+v.value+'"';case Zg:return'[data-testname="'+v.value+'"]';default:throw Error(c(365,v))}}function a2(v,b){var Q=[];v=[v,0];for(var j=0;jV&&(V=Be),Q&=~ne}if(Q=V,Q=Dt()-Q,Q=(120>Q?120:480>Q?480:1080>Q?1080:1920>Q?1920:3e3>Q?3e3:4320>Q?4320:1960*HL(Q/1960))-Q,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}bs!==5&&(bs=2),ht=Vg(ht,_e),Xt=Be;do{switch(Xt.tag){case 3:ne=ht,Xt.flags|=4096,b&=-b,Xt.lanes|=b;var ri=r2(Xt,ne,b);by(Xt,ri);break e;case 1:ne=ht;var Tr=Xt.type,On=Xt.stateNode;if(!(Xt.flags&64)&&(typeof Tr.getDerivedStateFromError=="function"||On!==null&&typeof On.componentDidCatch=="function"&&(mc===null||!mc.has(On)))){Xt.flags|=4096,b&=-b,Xt.lanes|=b;var jn=Jg(Xt,ne,b);by(Xt,jn);break e}}Xt=Xt.return}while(Xt!==null)}xP(Q)}catch(Zr){b=Zr,Zi===Q&&Q!==null&&(Zi=Q=Q.return);continue}break}while(!0)}function DP(){var v=qy.current;return qy.current=kt,v===null?kt:v}function s0(v,b){var Q=xr;xr|=16;var j=DP();po===v&&Ms===b||Lh(v,b);do try{qL();break}catch(V){bP(v,V)}while(!0);if(Ng(),xr=Q,qy.current=j,Zi!==null)throw Error(c(261));return po=null,Ms=0,bs}function qL(){for(;Zi!==null;)PP(Zi)}function YL(){for(;Zi!==null&&!Tl();)PP(Zi)}function PP(v){var b=RP(v.alternate,v,tp);v.memoizedProps=v.pendingProps,b===null?xP(v):Zi=b,c2.current=null}function xP(v){var b=v;do{var Q=b.alternate;if(v=b.return,b.flags&2048){if(Q=OL(b),Q!==null){Q.flags&=2047,Zi=Q;return}v!==null&&(v.firstEffect=v.lastEffect=null,v.flags|=2048)}else{if(Q=NL(Q,b,tp),Q!==null){Zi=Q;return}if(Q=b,Q.tag!==24&&Q.tag!==23||Q.memoizedState===null||tp&1073741824||!(Q.mode&4)){for(var j=0,V=Q.child;V!==null;)j|=V.lanes|V.childLanes,V=V.sibling;Q.childLanes=j}v!==null&&!(v.flags&2048)&&(v.firstEffect===null&&(v.firstEffect=b.firstEffect),b.lastEffect!==null&&(v.lastEffect!==null&&(v.lastEffect.nextEffect=b.firstEffect),v.lastEffect=b.lastEffect),1Dt()-h2?Lh(v,0):A2|=Q),Ca(v,b)}function zL(v,b){var Q=v.stateNode;Q!==null&&Q.delete(b),b=0,b===0&&(b=v.mode,b&2?b&4?(wu===0&&(wu=Fh),b=Rn(62914560&~wu),b===0&&(b=4194304)):b=tr()===99?1:2:b=1),Q=Lo(),v=Jy(v,b),v!==null&&(za(v,b,Q),Ca(v,Q))}var RP;RP=function(v,b,Q){var j=b.lanes;if(v!==null)if(v.memoizedProps!==b.pendingProps||Li.current)Ke=!0;else if(Q&j)Ke=!!(v.flags&16384);else{switch(Ke=!1,b.tag){case 3:Ry(b),Gg();break;case 5:wf(b);break;case 1:Xn(b.type)&&Va(b);break;case 4:_g(b,b.stateNode.containerInfo);break;case 10:Og(b,b.memoizedProps.value);break;case 13:if(b.memoizedState!==null)return Q&b.child.childLanes?e2(v,b,Q):(Tn(mi,mi.current&1),b=Wn(v,b,Q),b!==null?b.sibling:null);Tn(mi,mi.current&1);break;case 19:if(j=(Q&b.childLanes)!==0,v.flags&64){if(j)return dP(v,b,Q);b.flags|=64}var V=b.memoizedState;if(V!==null&&(V.rendering=null,V.tail=null,V.lastEffect=null),Tn(mi,mi.current),j)break;return null;case 23:case 24:return b.lanes=0,yi(v,b,Q)}return Wn(v,b,Q)}else Ke=!1;switch(b.lanes=0,b.tag){case 2:if(j=b.type,v!==null&&(v.alternate=null,b.alternate=null,b.flags|=2),v=b.pendingProps,V=yn(b,Gi.current),Ef(b,Q),V=Yg(null,b,j,v,V,Q),b.flags|=1,typeof V=="object"&&V!==null&&typeof V.render=="function"&&V.$$typeof===void 0){if(b.tag=1,b.memoizedState=null,b.updateQueue=null,Xn(j)){var ne=!0;Va(b)}else ne=!1;b.memoizedState=V.state!==null&&V.state!==void 0?V.state:null,vh(b);var Be=j.getDerivedStateFromProps;typeof Be=="function"&&GA(b,j,Be,v),V.updater=qA,b.stateNode=V,V._reactInternals=b,Fo(b,j,v,Q),b=$1(null,b,j,!0,ne,Q)}else b.tag=0,pt(null,b,V,Q),b=b.child;return b;case 16:V=b.elementType;e:{switch(v!==null&&(v.alternate=null,b.alternate=null,b.flags|=2),v=b.pendingProps,ne=V._init,V=ne(V._payload),b.type=V,ne=b.tag=XL(V),v=To(V,v),ne){case 0:b=ZA(null,b,V,v,Q);break e;case 1:b=hP(null,b,V,v,Q);break e;case 11:b=mr(null,b,V,v,Q);break e;case 14:b=vr(null,b,V,To(V.type,v),j,Q);break e}throw Error(c(306,V,""))}return b;case 0:return j=b.type,V=b.pendingProps,V=b.elementType===j?V:To(j,V),ZA(v,b,j,V,Q);case 1:return j=b.type,V=b.pendingProps,V=b.elementType===j?V:To(j,V),hP(v,b,j,V,Q);case 3:if(Ry(b),j=b.updateQueue,v===null||j===null)throw Error(c(282));if(j=b.pendingProps,V=b.memoizedState,V=V!==null?V.element:null,Mg(v,b),jA(b,j,null,Q),j=b.memoizedState.element,j===V)Gg(),b=Wn(v,b,Q);else{if(V=b.stateNode,(ne=V.hydrate)&&(Z?(ya=Ue(b.stateNode.containerInfo),el=b,ne=tl=!0):ne=!1),ne){if(Z&&(v=V.mutableSourceEagerHydrationData,v!=null))for(V=0;V=Wt&&ne>=Mr&&V<=Sr&&Be<=Xt){v.splice(b,1);break}else if(j!==Wt||Q.width!==ht.width||XtBe){if(!(ne!==Mr||Q.height!==ht.height||SrV)){Wt>j&&(ht.width+=Wt-j,ht.x=j),Srne&&(ht.height+=Mr-ne,ht.y=ne),XtQ&&(Q=Be)),Be ")+` + +No matching component was found for: + `)+v.join(" > ")}return null},r.getPublicRootInstance=function(v){if(v=v.current,!v.child)return null;switch(v.child.tag){case 5:return ke(v.child.stateNode);default:return v.child.stateNode}},r.injectIntoDevTools=function(v){if(v={bundleType:v.bundleType,version:v.version,rendererPackageName:v.rendererPackageName,rendererConfig:v.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:f.ReactCurrentDispatcher,findHostInstanceByFiber:eM,findFiberByHostInstance:v.findFiberByHostInstance||tM,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")v=!1;else{var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!b.isDisabled&&b.supportsFiber)try{$e=b.inject(v),Ja=b}catch{}v=!0}return v},r.observeVisibleRects=function(v,b,Q,j){if(!Yt)throw Error(c(363));v=l2(v,b);var V=on(v,Q,j).disconnect;return{disconnect:function(){V()}}},r.registerMutableSourceForHydration=function(v,b){var Q=b._getVersion;Q=Q(b._source),v.mutableSourceEagerHydrationData==null?v.mutableSourceEagerHydrationData=[b,Q]:v.mutableSourceEagerHydrationData.push(b,Q)},r.runWithPriority=function(v,b){var Q=fc;try{return fc=v,b()}finally{fc=Q}},r.shouldSuspend=function(){return!1},r.unbatchedUpdates=function(v,b){var Q=xr;xr&=-2,xr|=8;try{return v(b)}finally{xr=Q,xr===0&&(kf(),Nn())}},r.updateContainer=function(v,b,Q,j){var V=b.current,ne=Lo(),Be=Ds(V);e:if(Q){Q=Q._reactInternals;t:{if(ve(Q)!==Q||Q.tag!==1)throw Error(c(170));var _e=Q;do{switch(_e.tag){case 3:_e=_e.stateNode.context;break t;case 1:if(Xn(_e.type)){_e=_e.stateNode.__reactInternalMemoizedMergedChildContext;break t}}_e=_e.return}while(_e!==null);throw Error(c(171))}if(Q.tag===1){var ht=Q.type;if(Xn(ht)){Q=Wa(Q,ht,_e);break e}}Q=_e}else Q=ha;return b.context===null?b.context=Q:b.pendingContext=Q,b=Fl(ne,Be),b.payload={element:v},j=j===void 0?null:j,j!==null&&(b.callback=j),Nl(V,b),_l(V,Be,ne),Be},r}});var PIe=G((f7t,DIe)=>{"use strict";DIe.exports=bIe()});var kIe=G((A7t,xIe)=>{"use strict";var oft={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};xIe.exports=oft});var FIe=G((p7t,RIe)=>{"use strict";var aft=Object.assign||function(e){for(var t=1;t"}}]),e}(),QIe=function(){BF(e,null,[{key:"fromJS",value:function(r){var s=r.width,a=r.height;return new e(s,a)}}]);function e(t,r){Bq(this,e),this.width=t,this.height=r}return BF(e,[{key:"fromJS",value:function(r){r(this.width,this.height)}},{key:"toString",value:function(){return""}}]),e}(),TIe=function(){function e(t,r){Bq(this,e),this.unit=t,this.value=r}return BF(e,[{key:"fromJS",value:function(r){r(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case sf.UNIT_POINT:return String(this.value);case sf.UNIT_PERCENT:return this.value+"%";case sf.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),e}();RIe.exports=function(e,t){function r(c,f,p){var h=c[f];c[f]=function(){for(var E=arguments.length,C=Array(E),S=0;S1?C-1:0),x=1;x1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:sf.DIRECTION_LTR;return c.call(this,f,p,h)}),aft({Config:t.Config,Node:t.Node,Layout:e("Layout",lft),Size:e("Size",QIe),Value:e("Value",TIe),getInstanceCount:function(){return t.getInstanceCount.apply(t,arguments)}},sf)}});var NIe=G((exports,module)=>{(function(e,t){typeof define=="function"&&define.amd?define([],function(){return t}):typeof module=="object"&&module.exports?module.exports=t:(e.nbind=e.nbind||{}).init=t})(exports,function(Module,cb){typeof Module=="function"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(e,t){return function(){e&&e.apply(this,arguments);try{Module.ccall("nbind_init")}catch(r){t(r);return}t(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<"u"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT==="WEB")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT==="WORKER")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT==="NODE")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT==="SHELL")ENVIRONMENT_IS_SHELL=!0;else throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof Ce=="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(t,r){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),t=nodePath.normalize(t);var s=nodeFS.readFileSync(t);return r?s:s.toString()},Module.readBinary=function(t){var r=Module.read(t,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(t){globalEval(read(t))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),typeof module<"u"&&(module.exports=Module),Module.inspect=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<"u"&&(Module.printErr=printErr),typeof read<"u"?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(t){if(typeof readbuffer=="function")return new Uint8Array(readbuffer(t));var r=read(t,"binary");return assert(typeof r=="object"),r},typeof scriptArgs<"u"?Module.arguments=scriptArgs:typeof arguments<"u"&&(Module.arguments=arguments),typeof quit=="function"&&(Module.quit=function(e,t){quit(e)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(t){var r=new XMLHttpRequest;return r.open("GET",t,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(t){var r=new XMLHttpRequest;return r.open("GET",t,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(t,r,s){var a=new XMLHttpRequest;a.open("GET",t,!0),a.responseType="arraybuffer",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):s()},a.onerror=s,a.send(null)},typeof arguments<"u"&&(Module.arguments=arguments),typeof console<"u")Module.print||(Module.print=function(t){console.log(t)}),Module.printErr||(Module.printErr=function(t){console.warn(t)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<"u"?function(e){dump(e)}:function(e){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>"u"&&(Module.setWindowTitle=function(e){document.title=e})}else throw"Unknown runtime environment. Where are we?";function globalEval(e){eval.call(null,e)}!Module.load&&Module.read&&(Module.load=function(t){globalEval(Module.read(t))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(e,t){throw t}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(e){return tempRet0=e,e},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(e){STACKTOP=e},getNativeTypeSize:function(e){switch(e){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(e[e.length-1]==="*")return Runtime.QUANTUM_SIZE;if(e[0]==="i"){var t=parseInt(e.substr(1));return assert(t%8===0),t/8}else return 0}}},getNativeFieldSize:function(e){return Math.max(Runtime.getNativeTypeSize(e),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(e,t){return t==="double"||t==="i64"?e&7&&(assert((e&7)===4),e+=4):assert((e&3)===0),e},getAlignSize:function(e,t,r){return!r&&(e=="i64"||e=="double")?8:e?Math.min(t||(e?Runtime.getNativeFieldSize(e):0),Runtime.QUANTUM_SIZE):Math.min(t,8)},dynCall:function(e,t,r){return r&&r.length?Module["dynCall_"+e].apply(null,[t].concat(r)):Module["dynCall_"+e].call(null,t)},functionPointers:[],addFunction:function(e){for(var t=0;t>2],r=(t+e+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var s=enlargeMemory();if(!s)return HEAP32[DYNAMICTOP_PTR>>2]=t,0}return t},alignMemory:function(e,t){var r=e=Math.ceil(e/(t||16))*(t||16);return r},makeBigInt:function(e,t,r){var s=r?+(e>>>0)+ +(t>>>0)*4294967296:+(e>>>0)+ +(t|0)*4294967296;return s},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(e,t){e||abort("Assertion failed: "+t)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(e){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(e){var t=Runtime.stackAlloc(e.length);return writeArrayToMemory(e,t),t},stringToC:function(e){var t=0;if(e!=null&&e!==0){var r=(e.length<<2)+1;t=Runtime.stackAlloc(r),stringToUTF8(e,t,r)}return t}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(t,r,s,a,n){var c=getCFunc(t),f=[],p=0;if(a)for(var h=0;h>0]=t;break;case"i8":HEAP8[e>>0]=t;break;case"i16":HEAP16[e>>1]=t;break;case"i32":HEAP32[e>>2]=t;break;case"i64":tempI64=[t>>>0,(tempDouble=t,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=t;break;case"double":HEAPF64[e>>3]=t;break;default:abort("invalid type for setValue: "+r)}}Module.setValue=setValue;function getValue(e,t,r){switch(t=t||"i8",t.charAt(t.length-1)==="*"&&(t="i32"),t){case"i1":return HEAP8[e>>0];case"i8":return HEAP8[e>>0];case"i16":return HEAP16[e>>1];case"i32":return HEAP32[e>>2];case"i64":return HEAP32[e>>2];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];default:abort("invalid type for setValue: "+t)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(e,t,r,s){var a,n;typeof e=="number"?(a=!0,n=e):(a=!1,n=e.length);var c=typeof t=="string"?t:null,f;if(r==ALLOC_NONE?f=s:f=[typeof _malloc=="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,c?1:t.length)),a){var s=f,p;for(assert((f&3)==0),p=f+(n&-4);s>2]=0;for(p=f+n;s>0]=0;return f}if(c==="i8")return e.subarray||e.slice?HEAPU8.set(e,f):HEAPU8.set(new Uint8Array(e),f),f;for(var h=0,E,C,S;h>0],r|=s,!(s==0&&!t||(a++,t&&a==t)););t||(t=a);var n="";if(r<128){for(var c=1024,f;t>0;)f=String.fromCharCode.apply(String,HEAPU8.subarray(e,e+Math.min(t,c))),n=n?n+f:f,e+=c,t-=c;return n}return Module.UTF8ToString(e)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(e){for(var t="";;){var r=HEAP8[e++>>0];if(!r)return t;t+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(e,t){return writeAsciiToMemory(e,t,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(e,t){for(var r=t;e[r];)++r;if(r-t>16&&e.subarray&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,r));for(var s,a,n,c,f,p,h="";;){if(s=e[t++],!s)return h;if(!(s&128)){h+=String.fromCharCode(s);continue}if(a=e[t++]&63,(s&224)==192){h+=String.fromCharCode((s&31)<<6|a);continue}if(n=e[t++]&63,(s&240)==224?s=(s&15)<<12|a<<6|n:(c=e[t++]&63,(s&248)==240?s=(s&7)<<18|a<<12|n<<6|c:(f=e[t++]&63,(s&252)==248?s=(s&3)<<24|a<<18|n<<12|c<<6|f:(p=e[t++]&63,s=(s&1)<<30|a<<24|n<<18|c<<12|f<<6|p))),s<65536)h+=String.fromCharCode(s);else{var E=s-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(e){return UTF8ArrayToString(HEAPU8,e)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(e,t,r,s){if(!(s>0))return 0;for(var a=r,n=r+s-1,c=0;c=55296&&f<=57343&&(f=65536+((f&1023)<<10)|e.charCodeAt(++c)&1023),f<=127){if(r>=n)break;t[r++]=f}else if(f<=2047){if(r+1>=n)break;t[r++]=192|f>>6,t[r++]=128|f&63}else if(f<=65535){if(r+2>=n)break;t[r++]=224|f>>12,t[r++]=128|f>>6&63,t[r++]=128|f&63}else if(f<=2097151){if(r+3>=n)break;t[r++]=240|f>>18,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}else if(f<=67108863){if(r+4>=n)break;t[r++]=248|f>>24,t[r++]=128|f>>18&63,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}else{if(r+5>=n)break;t[r++]=252|f>>30,t[r++]=128|f>>24&63,t[r++]=128|f>>18&63,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}}return t[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(e,t,r){return stringToUTF8Array(e,HEAPU8,t,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(e){for(var t=0,r=0;r=55296&&s<=57343&&(s=65536+((s&1023)<<10)|e.charCodeAt(++r)&1023),s<=127?++t:s<=2047?t+=2:s<=65535?t+=3:s<=2097151?t+=4:s<=67108863?t+=5:t+=6}return t}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function demangle(e){var t=Module.___cxa_demangle||Module.__cxa_demangle;if(t){try{var r=e.substr(1),s=lengthBytesUTF8(r)+1,a=_malloc(s);stringToUTF8(r,a,s);var n=_malloc(4),c=t(a,0,0,n);if(getValue(n,"i32")===0&&c)return Pointer_stringify(c)}catch{}finally{a&&_free(a),n&&_free(n),c&&_free(c)}return e}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),e}function demangleAll(e){var t=/__Z[\w\d_]+/g;return e.replace(t,function(r){var s=demangle(r);return r===s?r:r+" ["+s+"]"})}function jsStackTrace(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function stackTrace(){var e=jsStackTrace();return Module.extraStackTrace&&(e+=` +`+Module.extraStackTrace()),demangleAll(e)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY0;){var t=e.shift();if(typeof t=="function"){t();continue}var r=t.func;typeof r=="number"?t.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,t.arg):r(t.arg===void 0?null:t.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}Module.addOnPreRun=addOnPreRun;function addOnInit(e){__ATINIT__.unshift(e)}Module.addOnInit=addOnInit;function addOnPreMain(e){__ATMAIN__.unshift(e)}Module.addOnPreMain=addOnPreMain;function addOnExit(e){__ATEXIT__.unshift(e)}Module.addOnExit=addOnExit;function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(e,t,r){var s=r>0?r:lengthBytesUTF8(e)+1,a=new Array(s),n=stringToUTF8Array(e,a,0,a.length);return t&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(e){for(var t=[],r=0;r255&&(s&=255),t.push(String.fromCharCode(s))}return t.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(e,t,r){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var s,a;r&&(a=t+lengthBytesUTF8(e),s=HEAP8[a]),stringToUTF8(e,t,1/0),r&&(HEAP8[a]=s)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(e,t){HEAP8.set(e,t)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(e,t,r){for(var s=0;s>0]=e.charCodeAt(s);r||(HEAP8[t>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function e(t,r){var s=t>>>16,a=t&65535,n=r>>>16,c=r&65535;return a*c+(s*c+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(e){return froundBuffer[0]=e,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(e){e=e>>>0;for(var t=0;t<32;t++)if(e&1<<31-t)return t;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(e){return e<0?Math.ceil(e):Math.floor(e)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(e,t,r,s,a,n,c,f){return _nbind.callbackSignatureList[e].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(e,t,r,s,a,n,c,f){return ASM_CONSTS[e](t,r,s,a,n,c,f)}function _emscripten_asm_const_iiiii(e,t,r,s,a){return ASM_CONSTS[e](t,r,s,a)}function _emscripten_asm_const_iiidddddd(e,t,r,s,a,n,c,f,p){return ASM_CONSTS[e](t,r,s,a,n,c,f,p)}function _emscripten_asm_const_iiididi(e,t,r,s,a,n,c){return ASM_CONSTS[e](t,r,s,a,n,c)}function _emscripten_asm_const_iiii(e,t,r,s){return ASM_CONSTS[e](t,r,s)}function _emscripten_asm_const_iiiid(e,t,r,s,a){return ASM_CONSTS[e](t,r,s,a)}function _emscripten_asm_const_iiiiii(e,t,r,s,a,n){return ASM_CONSTS[e](t,r,s,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,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,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,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,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,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,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,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,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,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,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,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,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,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,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,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,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,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,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,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,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,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,18,0,0,0,18,18,18,0,0,0,0,0,0,9,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,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,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,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(e,t){__ATEXIT__.unshift({func:e,arg:t})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(e,t,r,s){var a=arguments.length,n=a<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,r):s,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(e,t,r,s);else for(var f=e.length-1;f>=0;f--)(c=e[f])&&(n=(a<3?c(n):a>3?c(t,r,n):c(t,r))||n);return a>3&&n&&Object.defineProperty(t,r,n),n}function _defineHidden(e){return function(t,r){Object.defineProperty(t,r,{configurable:!1,enumerable:!1,value:e,writable:!0})}}var _nbind={};function __nbind_free_external(e){_nbind.externalList[e].dereference(e)}function __nbind_reference_external(e){_nbind.externalList[e].reference()}function _llvm_stackrestore(e){var t=_llvm_stacksave,r=t.LLVM_SAVEDSTACKS[e];t.LLVM_SAVEDSTACKS.splice(e,1),Runtime.stackRestore(r)}function __nbind_register_pool(e,t,r,s){_nbind.Pool.pageSize=e,_nbind.Pool.usedPtr=t/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=s/4,HEAP32[t/4]=16909060,HEAP8[t]==1&&(_nbind.bigEndian=!0),HEAP32[t/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(e,t){if(Browser.mainLoop.timingMode=e,Browser.mainLoop.timingValue=t,!Browser.mainLoop.func)return 1;if(e==0)Browser.mainLoop.scheduler=function(){var c=Math.max(0,Browser.mainLoop.tickStartTime+t-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,c)},Browser.mainLoop.method="timeout";else if(e==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(e==2){if(!window.setImmediate){let n=function(c){c.source===window&&c.data===s&&(c.stopPropagation(),r.shift()())};var a=n,r=[],s="setimmediate";window.addEventListener("message",n,!0),window.setImmediate=function(f){r.push(f),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(f),window.postMessage({target:s})):window.postMessage(s,"*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(e,t,r,s,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=e,Browser.mainLoop.arg=s;var n;typeof s<"u"?n=function(){Module.dynCall_vi(e,s)}:n=function(){Module.dynCall_v(e)};var c=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,C=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=C:(C=C+.5,Browser.mainLoop.remainingBlockers=(8*E+C)/9)}if(console.log('main loop blocker "'+h.name+'" took '+(Date.now()-p)+" ms"),Browser.mainLoop.updateStatus(),c1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method==="timeout"&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(n),!(c0?_emscripten_set_main_loop_timing(0,1e3/t):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var e=Browser.mainLoop.timingMode,t=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(e,t),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var e=Module.statusMessage||"Please wait...",t=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;t?t"u"&&(console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."),Module.noImageDecoding=!0);var e={};e.canHandle=function(n){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(n)},e.handle=function(n,c,f,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(c)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(c)}))}catch(x){Runtime.warnOnce("Blob constructor present but fails: "+x+"; falling back to blob builder")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var C=Browser.URLObject.createObjectURL(h),S=new Image;S.onload=function(){assert(S.complete,"Image "+c+" could not be decoded");var I=document.createElement("canvas");I.width=S.width,I.height=S.height;var R=I.getContext("2d");R.drawImage(S,0,0),Module.preloadedImages[c]=I,Browser.URLObject.revokeObjectURL(C),f&&f(n)},S.onerror=function(I){console.log("Image "+C+" could not be decoded"),p&&p()},S.src=C},Module.preloadPlugins.push(e);var t={};t.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},t.handle=function(n,c,f,p){var h=!1;function E(R){h||(h=!0,Module.preloadedAudios[c]=R,f&&f(n))}function C(){h||(h=!0,Module.preloadedAudios[c]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var S=new Blob([n],{type:Browser.getMimetype(c)})}catch{return C()}var x=Browser.URLObject.createObjectURL(S),I=new Audio;I.addEventListener("canplaythrough",function(){E(I)},!1),I.onerror=function(N){if(h)return;console.log("warning: browser could not fully decode audio "+c+", trying slower base64 approach");function U(K){for(var $="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ie="=",fe="",le=0,ge=0,pe=0;pe=6;){var De=le>>ge-6&63;ge-=6,fe+=$[De]}return ge==2?(fe+=$[(le&3)<<4],fe+=ie+ie):ge==4&&(fe+=$[(le&15)<<2],fe+=ie),fe}I.src="data:audio/x-"+c.substr(-3)+";base64,"+U(n),E(I)},I.src=x,Browser.safeSetTimeout(function(){E(I)},1e4)}else return C()},Module.preloadPlugins.push(t);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var s=Module.canvas;s&&(s.requestPointerLock=s.requestPointerLock||s.mozRequestPointerLock||s.webkitRequestPointerLock||s.msRequestPointerLock||function(){},s.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},s.exitPointerLock=s.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",r,!1),document.addEventListener("mozpointerlockchange",r,!1),document.addEventListener("webkitpointerlockchange",r,!1),document.addEventListener("mspointerlockchange",r,!1),Module.elementPointerLock&&s.addEventListener("click",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(e,t,r,s){if(t&&Module.ctx&&e==Module.canvas)return Module.ctx;var a,n;if(t){var c={antialias:!1,alpha:!1};if(s)for(var f in s)c[f]=s[f];n=GL.createContext(e,c),n&&(a=GL.getContext(n).GLctx)}else a=e.getContext("2d");return a?(r&&(t||assert(typeof GLctx>"u","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=a,t&&GL.makeContextCurrent(n),Module.useWebGL=t,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(e,t,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(e,t,r){Browser.lockPointer=e,Browser.resizeCanvas=t,Browser.vrDevice=r,typeof Browser.lockPointer>"u"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>"u"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>"u"&&(Browser.vrDevice=null);var s=Module.canvas;function a(){Browser.isFullscreen=!1;var c=s.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===c?(s.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},s.exitFullscreen=s.exitFullscreen.bind(document),Browser.lockPointer&&s.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(c.parentNode.insertBefore(s,c),c.parentNode.removeChild(c),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(s)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",a,!1),document.addEventListener("mozfullscreenchange",a,!1),document.addEventListener("webkitfullscreenchange",a,!1),document.addEventListener("MSFullscreenChange",a,!1));var n=document.createElement("div");s.parentNode.insertBefore(n,s),n.appendChild(s),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(e,t,r){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(s,a,n){return Browser.requestFullscreen(s,a,n)},Browser.requestFullscreen(e,t,r)},nextRAF:0,fakeRequestAnimationFrame:function(e){var t=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=t+1e3/60;else for(;t+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-t,0);setTimeout(e,r)},requestAnimationFrame:function e(t){typeof window>"u"?Browser.fakeRequestAnimationFrame(t):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(t))},safeCallback:function(e){return function(){if(!ABORT)return e.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var e=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],e.forEach(function(t){t()})}},safeRequestAnimationFrame:function(e){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))})},safeSetTimeout:function(e,t){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))},t)},safeSetInterval:function(e,t){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&e()},t)},getMimetype:function(e){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[e.substr(e.lastIndexOf(".")+1)]},getUserMedia:function(e){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(e)},getMovementX:function(e){return e.movementX||e.mozMovementX||e.webkitMovementX||0},getMovementY:function(e){return e.movementY||e.mozMovementY||e.webkitMovementY||0},getMouseWheelDelta:function(e){var t=0;switch(e.type){case"DOMMouseScroll":t=e.detail;break;case"mousewheel":t=e.wheelDelta;break;case"wheel":t=e.deltaY;break;default:throw"unrecognized mouse wheel event: "+e.type}return t},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(e){if(Browser.pointerLock)e.type!="mousemove"&&"mozMovementX"in e?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(e),Browser.mouseMovementY=Browser.getMovementY(e)),typeof SDL<"u"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var t=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,s=Module.canvas.height,a=typeof window.scrollX<"u"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<"u"?window.scrollY:window.pageYOffset;if(e.type==="touchstart"||e.type==="touchend"||e.type==="touchmove"){var c=e.touch;if(c===void 0)return;var f=c.pageX-(a+t.left),p=c.pageY-(n+t.top);f=f*(r/t.width),p=p*(s/t.height);var h={x:f,y:p};if(e.type==="touchstart")Browser.lastTouches[c.identifier]=h,Browser.touches[c.identifier]=h;else if(e.type==="touchend"||e.type==="touchmove"){var E=Browser.touches[c.identifier];E||(E=h),Browser.lastTouches[c.identifier]=E,Browser.touches[c.identifier]=h}return}var C=e.pageX-(a+t.left),S=e.pageY-(n+t.top);C=C*(r/t.width),S=S*(s/t.height),Browser.mouseMovementX=C-Browser.mouseX,Browser.mouseMovementY=S-Browser.mouseY,Browser.mouseX=C,Browser.mouseY=S}},asyncLoad:function(e,t,r,s){var a=s?"":"al "+e;Module.readAsync(e,function(n){assert(n,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file "'+e+'" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var e=Module.canvas;Browser.resizeListeners.forEach(function(t){t(e.width,e.height)})},setCanvasSize:function(e,t,r){var s=Module.canvas;Browser.updateCanvasDimensions(s,e,t),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<"u"){var e=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];e=e|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=e}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<"u"){var e=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];e=e&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=e}Browser.updateResizeListeners()},updateCanvasDimensions:function(e,t,r){t&&r?(e.widthNative=t,e.heightNative=r):(t=e.widthNative,r=e.heightNative);var s=t,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(s/a>2];return t},getStr:function(){var e=Pointer_stringify(SYSCALLS.get());return e},get64:function(){var e=SYSCALLS.get(),t=SYSCALLS.get();return e>=0?assert(t===0):assert(t===-1),e},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(s){return(typeof FS>"u"||!(s instanceof FS.ErrnoError))&&abort(s),-s.errno}}function ___syscall54(e,t){SYSCALLS.varargs=t;try{return 0}catch(r){return(typeof FS>"u"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(e){var t=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr"],[640,1,"std::unique_ptr"],[5120,1,"std::vector"],[6144,2,"std::array"],[9216,-1,"std::function"]];function r(p,h,E,C,S,x){if(h==1){var I=C&896;(I==128||I==256||I==384)&&(p="X const")}var R;return x?R=E.replace("X",p).replace("Y",S):R=p.replace("X",E).replace("Y",S),R.replace(/([*&]) (?=[*&])/g,"$1")}function s(p,h,E,C,S){throw new Error(p+" type "+E.replace("X",h+"?")+(C?" with flag "+C:"")+" in "+S)}function a(p,h,E,C,S,x,I,R){x===void 0&&(x="X"),R===void 0&&(R=1);var N=E(p);if(N)return N;var U=C(p),K=U.placeholderFlag,$=t[K];I&&$&&(x=r(I[2],I[0],x,$[0],"?",!0));var ie;K==0&&(ie="Unbound"),K>=10&&(ie="Corrupt"),R>20&&(ie="Deeply nested"),ie&&s(ie,p,x,K,S||"?");var fe=U.paramList[0],le=a(fe,h,E,C,S,x,$,R+1),ge,pe={flags:$[0],id:p,name:"",paramList:[le]},De=[],ye="?";switch(U.placeholderFlag){case 1:ge=le.spec;break;case 2:if((le.flags&15360)==1024&&le.spec.ptrSize==1){pe.flags=7168;break}case 3:case 6:case 5:ge=le.spec,le.flags&15360;break;case 8:ye=""+U.paramList[1],pe.paramList.push(U.paramList[1]);break;case 9:for(var d=0,ve=U.paramList[1];d>2]=e),e}function _llvm_stacksave(){var e=_llvm_stacksave;return e.LLVM_SAVEDSTACKS||(e.LLVM_SAVEDSTACKS=[]),e.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),e.LLVM_SAVEDSTACKS.length-1}function ___syscall140(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.getStreamFromFD(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),c=SYSCALLS.get(),f=a;return FS.llseek(r,f,c),HEAP32[n>>2]=r.position,r.getdents&&f===0&&c===0&&(r.getdents=null),0}catch(p){return(typeof FS>"u"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.get(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,C){var S=___syscall146.buffers[E];assert(S),C===0||C===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(S,0)),S.length=0):S.push(C)});for(var c=0;c>2],p=HEAP32[s+(c*8+4)>>2],h=0;h"u"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var e=0,t=_nbind.BindClass.list;ee.pageSize/2||t>e.pageSize-r){var s=_nbind.typeNameTbl.NBind.proto;return s.lalloc(t)}else return HEAPU32[e.usedPtr]=r+t,e.rootPtr+r},e.lreset=function(t,r){var s=HEAPU32[e.pagePtr];if(s){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(t,r)}else HEAPU32[e.usedPtr]=t},e}();_nbind.Pool=Pool;function constructType(e,t){var r=e==10240?_nbind.makeTypeNameTbl[t.name]||_nbind.BindType:_nbind.makeTypeKindTbl[e],s=new r(t);return typeIdTbl[t.id]=s,_nbind.typeNameTbl[t.name]=s,s}_nbind.constructType=constructType;function getType(e){return typeIdTbl[e]}_nbind.getType=getType;function queryType(e){var t=HEAPU8[e],r=_nbind.structureList[t][1];e/=4,r<0&&(++e,r=HEAPU32[e]+1);var s=Array.prototype.slice.call(HEAPU32.subarray(e+1,e+1+r));return t==9&&(s=[s[0],s.slice(1)]),{paramList:s,placeholderFlag:t}}_nbind.queryType=queryType;function getTypes(e,t){return e.map(function(r){return typeof r=="number"?_nbind.getComplexType(r,constructType,getType,queryType,t):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(e,t){return Array.prototype.slice.call(HEAPU32,e/4,e/4+t)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(e){for(var t=e;HEAPU8[t++];);return String.fromCharCode.apply("",HEAPU8.subarray(e,t-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(e){var t={};if(e)for(;;){var r=HEAPU32[e/4];if(!r)break;t[readAsciiString(r)]=!0,e+=4}return t}_nbind.readPolicyList=readPolicyList;function getDynCall(e,t){var r={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},s=e.map(function(n){return r[n.name]||"i"}).join(""),a=Module["dynCall_"+s];if(!a)throw new Error("dynCall_"+s+" not found for "+t+"("+e.map(function(n){return n.name}).join(", ")+")");return a}_nbind.getDynCall=getDynCall;function addMethod(e,t,r,s){var a=e[t];e.hasOwnProperty(t)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),e[t]=a),a.addMethod(r,s)):(r.arity=s,e[t]=r)}_nbind.addMethod=addMethod;function throwError(e){throw new Error(e)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return t.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},t.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},t}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(e){__extends(t,e);function t(r){var s=e.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return s.heap=a[r.ptrSize*8],s.ptrSize=r.ptrSize,s}return t.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},t.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="number")return a;throw new Error("Type mismatch")}},t}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(e,t){if(e==null){if(t&&t.Nullable)return 0;throw new Error("Type mismatch")}if(t&&t.Strict){if(typeof e!="string")throw new Error("Type mismatch")}else e=e.toString();var r=Module.lengthBytesUTF8(e)+1,s=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(e,HEAPU8,s,r),s}_nbind.pushCString=pushCString;function popCString(e){return e===0?null:Module.Pointer_stringify(e)}_nbind.popCString=popCString;var CStringType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return t.prototype.makeWireWrite=function(r,s){return function(a){return pushCString(a,s)}},t}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireRead=function(s){return!!s},r}return t.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},t.prototype.makeWireRead=function(r){return"!!("+r+")"},t.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="boolean")return a;throw new Error("Type mismatch")}||r},t}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function e(){}return e.prototype.persist=function(){this.__nbindState|=1},e}();_nbind.Wrapper=Wrapper;function makeBound(e,t){var r=function(s){__extends(a,s);function a(n,c,f,p){var h=s.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=c,C=f,S=p;if(n!==_nbind.ptrMarker){var x=h.__nbindConstructor.apply(h,arguments);E=4608,S=HEAPU32[x/4],C=HEAPU32[x/4+1]}var I={configurable:!0,enumerable:!1,value:null,writable:!1},R={__nbindFlags:E,__nbindPtr:C};S&&(R.__nbindShared=S,_nbind.mark(h));for(var N=0,U=Object.keys(R);N>=1;var r=_nbind.valueList[e];return _nbind.valueList[e]=firstFreeValue,firstFreeValue=e,r}else{if(t)return _nbind.popShared(e,t);throw new Error("Invalid value slot "+e)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(e){return typeof e=="number"?e:pushValue(e)*4096+valueBase}function pop64(e){return e=3?c=Buffer.from(n):c=new Buffer(n),c.copy(s)}else getBuffer(s).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var e=0,t=dirtyList;e>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(e,t,r,s,a,n){try{Module.dynCall_viiiii(e,t,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_vif(e,t,r){try{Module.dynCall_vif(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_vid(e,t,r){try{Module.dynCall_vid(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_fiff(e,t,r,s){try{return Module.dynCall_fiff(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_vi(e,t){try{Module.dynCall_vi(e,t)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_vii(e,t,r){try{Module.dynCall_vii(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_ii(e,t){try{return Module.dynCall_ii(e,t)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_viddi(e,t,r,s,a){try{Module.dynCall_viddi(e,t,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_vidd(e,t,r,s){try{Module.dynCall_vidd(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_iiii(e,t,r,s){try{return Module.dynCall_iiii(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_diii(e,t,r,s){try{return Module.dynCall_diii(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_di(e,t){try{return Module.dynCall_di(e,t)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_iid(e,t,r){try{return Module.dynCall_iid(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_iii(e,t,r){try{return Module.dynCall_iii(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiddi(e,t,r,s,a,n){try{Module.dynCall_viiddi(e,t,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiiiii(e,t,r,s,a,n,c){try{Module.dynCall_viiiiii(e,t,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_dii(e,t,r){try{return Module.dynCall_dii(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_i(e){try{return Module.dynCall_i(e)}catch(t){if(typeof t!="number"&&t!=="longjmp")throw t;Module.setThrew(1,0)}}function invoke_iiiiii(e,t,r,s,a,n){try{return Module.dynCall_iiiiii(e,t,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiid(e,t,r,s,a){try{Module.dynCall_viiid(e,t,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_viififi(e,t,r,s,a,n,c){try{Module.dynCall_viififi(e,t,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_viii(e,t,r,s){try{Module.dynCall_viii(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_v(e){try{Module.dynCall_v(e)}catch(t){if(typeof t!="number"&&t!=="longjmp")throw t;Module.setThrew(1,0)}}function invoke_viid(e,t,r,s){try{Module.dynCall_viid(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_idd(e,t,r){try{return Module.dynCall_idd(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiii(e,t,r,s,a){try{Module.dynCall_viiii(e,t,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(e,t,r){var s=new e.Int8Array(r),a=new e.Int16Array(r),n=new e.Int32Array(r),c=new e.Uint8Array(r),f=new e.Uint16Array(r),p=new e.Uint32Array(r),h=new e.Float32Array(r),E=new e.Float64Array(r),C=t.DYNAMICTOP_PTR|0,S=t.tempDoublePtr|0,x=t.ABORT|0,I=t.STACKTOP|0,R=t.STACK_MAX|0,N=t.cttz_i8|0,U=t.___dso_handle|0,K=0,$=0,ie=0,fe=0,le=e.NaN,ge=e.Infinity,pe=0,De=0,ye=0,d=0,ve=0,Ie=0,me=e.Math.floor,ce=e.Math.abs,X=e.Math.sqrt,be=e.Math.pow,ke=e.Math.cos,it=e.Math.sin,_=e.Math.tan,tt=e.Math.acos,Fe=e.Math.asin,Qe=e.Math.atan,Se=e.Math.atan2,je=e.Math.exp,Te=e.Math.log,ct=e.Math.ceil,Me=e.Math.imul,P=e.Math.min,w=e.Math.max,D=e.Math.clz32,y=e.Math.fround,F=t.abort,z=t.assert,Z=t.enlargeMemory,ee=t.getTotalMemory,se=t.abortOnCannotGrowMemory,xe=t.invoke_viiiii,Ne=t.invoke_vif,ut=t.invoke_vid,Ct=t.invoke_fiff,Yt=t.invoke_vi,ir=t.invoke_vii,Pt=t.invoke_ii,mn=t.invoke_viddi,Pr=t.invoke_vidd,Cr=t.invoke_iiii,Lr=t.invoke_diii,on=t.invoke_di,ci=t.invoke_iid,Do=t.invoke_iii,is=t.invoke_viiddi,ao=t.invoke_viiiiii,Po=t.invoke_dii,ji=t.invoke_i,lo=t.invoke_iiiiii,xo=t.invoke_viiid,FA=t.invoke_viififi,df=t.invoke_viii,mh=t.invoke_v,yh=t.invoke_viid,co=t.invoke_idd,qn=t.invoke_viiii,Ns=t._emscripten_asm_const_iiiii,uo=t._emscripten_asm_const_iiidddddd,ou=t._emscripten_asm_const_iiiid,au=t.__nbind_reference_external,lu=t._emscripten_asm_const_iiiiiiii,NA=t._removeAccessorPrefix,OA=t._typeModule,Aa=t.__nbind_register_pool,pa=t.__decorate,LA=t._llvm_stackrestore,gr=t.___cxa_atexit,ko=t.__extends,qa=t.__nbind_get_value_object,Ue=t.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,wr=t._emscripten_set_main_loop_timing,gf=t.__nbind_register_primitive,MA=t.__nbind_register_type,UA=t._emscripten_memcpy_big,cu=t.__nbind_register_function,uu=t.___setErrNo,cc=t.__nbind_register_class,we=t.__nbind_finish,Ot=t._abort,uc=t._nbind_value,Oi=t._llvm_stacksave,fo=t.___syscall54,Rt=t._defineHidden,Tn=t._emscripten_set_main_loop,ha=t._emscripten_get_now,Gi=t.__nbind_register_callback_signature,Li=t._emscripten_asm_const_iiiiii,Ya=t.__nbind_free_external,yn=t._emscripten_asm_const_iiii,Xn=t._emscripten_asm_const_iiididi,fu=t.___syscall6,Eh=t._atexit,Wa=t.___syscall140,Va=t.___syscall146,Ka=y(0);let $e=y(0);function Ja(o){o=o|0;var l=0;return l=I,I=I+o|0,I=I+15&-16,l|0}function mf(){return I|0}function fc(o){o=o|0,I=o}function Sn(o,l){o=o|0,l=l|0,I=o,R=l}function da(o,l){o=o|0,l=l|0,K||(K=o,$=l)}function _A(o){o=o|0,Ie=o}function HA(){return Ie|0}function ga(){var o=0,l=0;Rr(8104,8,400)|0,Rr(8504,408,540)|0,o=9044,l=o+44|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));s[9088]=0,s[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,gr(17,8104,U|0)|0}function Ql(o){o=o|0,mt(o+948|0)}function Ut(o){return o=y(o),((mP(o)|0)&2147483647)>>>0>2139095040|0}function Rn(o,l,u){o=o|0,l=l|0,u=u|0;e:do if(n[o+(l<<3)+4>>2]|0)o=o+(l<<3)|0;else{if((l|2|0)==3&&n[o+60>>2]|0){o=o+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[o+52>>2]|0){o=o+48|0;break e}break}default:}if(n[o+68>>2]|0){o=o+64|0;break}else{o=(l|1|0)==5?948:u;break}}while(!1);return o|0}function ma(o){o=o|0;var l=0;return l=WP(1e3)|0,za(o,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Rr(l|0,8104,1e3)|0,s[o+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=o,l|0}function za(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;g=I,I=I+16|0,A=g,l||(n[A>>2]=u,Wg(o,5,3197,A)),I=g}function ss(){return ma(956)|0}function Ac(o){o=o|0;var l=0;return l=Jt(1e3)|0,Au(l,o),za(n[o+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function Au(o,l){o=o|0,l=l|0;var u=0;Rr(o|0,l|0,948)|0,Ty(o+948|0,l+948|0),u=o+960|0,o=l+960|0,l=u+40|0;do n[u>>2]=n[o>>2],u=u+4|0,o=o+4|0;while((u|0)<(l|0))}function pc(o){o=o|0;var l=0,u=0,A=0,g=0;if(l=o+944|0,u=n[l>>2]|0,u|0&&(Za(u+948|0,o)|0,n[l>>2]=0),u=Mi(o)|0,u|0){l=0;do n[(vs(o,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(u|0))}u=o+948|0,A=n[u>>2]|0,g=o+952|0,l=n[g>>2]|0,(l|0)!=(A|0)&&(n[g>>2]=l+(~((l+-4-A|0)>>>2)<<2)),Tl(u),VP(o),n[2276]=(n[2276]|0)+-1}function Za(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0;A=n[o>>2]|0,k=o+4|0,u=n[k>>2]|0,m=u;e:do if((A|0)==(u|0))g=A,B=4;else for(o=A;;){if((n[o>>2]|0)==(l|0)){g=o,B=4;break e}if(o=o+4|0,(o|0)==(u|0)){o=0;break}}while(!1);return(B|0)==4&&((g|0)!=(u|0)?(A=g+4|0,o=m-A|0,l=o>>2,l&&(x2(g|0,A|0,o|0)|0,u=n[k>>2]|0),o=g+(l<<2)|0,(u|0)==(o|0)||(n[k>>2]=u+(~((u+-4-o|0)>>>2)<<2)),o=1):o=0),o|0}function Mi(o){return o=o|0,(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2|0}function vs(o,l){o=o|0,l=l|0;var u=0;return u=n[o+948>>2]|0,(n[o+952>>2]|0)-u>>2>>>0>l>>>0?o=n[u+(l<<2)>>2]|0:o=0,o|0}function Tl(o){o=o|0;var l=0,u=0,A=0,g=0;A=I,I=I+32|0,l=A,g=n[o>>2]|0,u=(n[o+4>>2]|0)-g|0,((n[o+8>>2]|0)-g|0)>>>0>u>>>0&&(g=u>>2,Oy(l,g,g,o+8|0),yP(o,l),Ly(l)),I=A}function yf(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0;M=Mi(o)|0;do if(M|0){if((n[(vs(o,0)|0)+944>>2]|0)==(o|0)){if(!(Za(o+948|0,l)|0))break;Rr(l+400|0,8504,540)|0,n[l+944>>2]=0,Oe(o);break}B=n[(n[o+976>>2]|0)+12>>2]|0,k=o+948|0,T=(B|0)==0,u=0,m=0;do A=n[(n[k>>2]|0)+(m<<2)>>2]|0,(A|0)==(l|0)?Oe(o):(g=Ac(A)|0,n[(n[k>>2]|0)+(u<<2)>>2]=g,n[g+944>>2]=o,T||cU[B&15](A,g,o,u),u=u+1|0),m=m+1|0;while((m|0)!=(M|0));if(u>>>0>>0){T=o+948|0,k=o+952|0,B=u,u=n[k>>2]|0;do m=(n[T>>2]|0)+(B<<2)|0,A=m+4|0,g=u-A|0,l=g>>2,l&&(x2(m|0,A|0,g|0)|0,u=n[k>>2]|0),g=u,A=m+(l<<2)|0,(g|0)!=(A|0)&&(u=g+(~((g+-4-A|0)>>>2)<<2)|0,n[k>>2]=u),B=B+1|0;while((B|0)!=(M|0))}}while(!1)}function hc(o){o=o|0;var l=0,u=0,A=0,g=0;vi(o,(Mi(o)|0)==0,2491),vi(o,(n[o+944>>2]|0)==0,2545),l=o+948|0,u=n[l>>2]|0,A=o+952|0,g=n[A>>2]|0,(g|0)!=(u|0)&&(n[A>>2]=g+(~((g+-4-u|0)>>>2)<<2)),Tl(l),l=o+976|0,u=n[l>>2]|0,Rr(o|0,8104,1e3)|0,s[u+2>>0]|0&&(n[o+4>>2]=2,n[o+12>>2]=4),n[l>>2]=u}function vi(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;g=I,I=I+16|0,A=g,l||(n[A>>2]=u,Oo(o,5,3197,A)),I=g}function Fn(){return n[2276]|0}function dc(){var o=0;return o=WP(20)|0,ze((o|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[o>>2]=n[239],n[o+4>>2]=n[240],n[o+8>>2]=n[241],n[o+12>>2]=n[242],n[o+16>>2]=n[243],o|0}function ze(o,l){o=o|0,l=l|0;var u=0,A=0;A=I,I=I+16|0,u=A,o||(n[u>>2]=l,Oo(0,5,3197,u)),I=A}function at(o){o=o|0,VP(o),n[2277]=(n[2277]|0)+-1}function St(o,l){o=o|0,l=l|0;var u=0;l?(vi(o,(Mi(o)|0)==0,2629),u=1):(u=0,l=0),n[o+964>>2]=l,n[o+988>>2]=u}function lr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,m=A+8|0,g=A+4|0,B=A,n[g>>2]=l,vi(o,(n[l+944>>2]|0)==0,2709),vi(o,(n[o+964>>2]|0)==0,2763),te(o),l=o+948|0,n[B>>2]=(n[l>>2]|0)+(u<<2),n[m>>2]=n[B>>2],Ee(l,m,g)|0,n[(n[g>>2]|0)+944>>2]=o,Oe(o),I=A}function te(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0;if(u=Mi(o)|0,u|0&&(n[(vs(o,0)|0)+944>>2]|0)!=(o|0)){A=n[(n[o+976>>2]|0)+12>>2]|0,g=o+948|0,m=(A|0)==0,l=0;do B=n[(n[g>>2]|0)+(l<<2)>>2]|0,k=Ac(B)|0,n[(n[g>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=o,m||cU[A&15](B,k,o,l),l=l+1|0;while((l|0)!=(u|0))}}function Ee(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Re=0,nt=0,Xe=0;nt=I,I=I+64|0,q=nt+52|0,k=nt+48|0,oe=nt+28|0,Ve=nt+24|0,Le=nt+20|0,Re=nt,A=n[o>>2]|0,m=A,l=A+((n[l>>2]|0)-m>>2<<2)|0,A=o+4|0,g=n[A>>2]|0,B=o+8|0;do if(g>>>0<(n[B>>2]|0)>>>0){if((l|0)==(g|0)){n[l>>2]=n[u>>2],n[A>>2]=(n[A>>2]|0)+4;break}EP(o,l,g,l+4|0),l>>>0<=u>>>0&&(u=(n[A>>2]|0)>>>0>u>>>0?u+4|0:u),n[l>>2]=n[u>>2]}else{A=(g-m>>2)+1|0,g=O(o)|0,g>>>0>>0&&an(o),L=n[o>>2]|0,M=(n[B>>2]|0)-L|0,m=M>>1,Oy(Re,M>>2>>>0>>1>>>0?m>>>0>>0?A:m:g,l-L>>2,o+8|0),L=Re+8|0,A=n[L>>2]|0,m=Re+12|0,M=n[m>>2]|0,B=M,T=A;do if((A|0)==(M|0)){if(M=Re+4|0,A=n[M>>2]|0,Xe=n[Re>>2]|0,g=Xe,A>>>0<=Xe>>>0){A=B-g>>1,A=A|0?A:1,Oy(oe,A,A>>>2,n[Re+16>>2]|0),n[Ve>>2]=n[M>>2],n[Le>>2]=n[L>>2],n[k>>2]=n[Ve>>2],n[q>>2]=n[Le>>2],i2(oe,k,q),A=n[Re>>2]|0,n[Re>>2]=n[oe>>2],n[oe>>2]=A,A=oe+4|0,Xe=n[M>>2]|0,n[M>>2]=n[A>>2],n[A>>2]=Xe,A=oe+8|0,Xe=n[L>>2]|0,n[L>>2]=n[A>>2],n[A>>2]=Xe,A=oe+12|0,Xe=n[m>>2]|0,n[m>>2]=n[A>>2],n[A>>2]=Xe,Ly(oe),A=n[L>>2]|0;break}m=A,B=((m-g>>2)+1|0)/-2|0,k=A+(B<<2)|0,g=T-m|0,m=g>>2,m&&(x2(k|0,A|0,g|0)|0,A=n[M>>2]|0),Xe=k+(m<<2)|0,n[L>>2]=Xe,n[M>>2]=A+(B<<2),A=Xe}while(!1);n[A>>2]=n[u>>2],n[L>>2]=(n[L>>2]|0)+4,l=IP(o,Re,l)|0,Ly(Re)}while(!1);return I=nt,l|0}function Oe(o){o=o|0;var l=0;do{if(l=o+984|0,s[l>>0]|0)break;s[l>>0]=1,h[o+504>>2]=y(le),o=n[o+944>>2]|0}while(o|0)}function mt(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function Et(o){return o=o|0,n[o+944>>2]|0}function Dt(o){o=o|0,vi(o,(n[o+964>>2]|0)!=0,2832),Oe(o)}function tr(o){return o=o|0,(s[o+984>>0]|0)!=0|0}function pn(o,l){o=o|0,l=l|0,dHe(o,l,400)|0&&(Rr(o|0,l|0,400)|0,Oe(o))}function ui(o){o=o|0;var l=$e;return l=y(h[o+44>>2]),o=Ut(l)|0,y(o?y(0):l)}function qi(o){o=o|0;var l=$e;return l=y(h[o+48>>2]),Ut(l)|0&&(l=s[(n[o+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function Nn(o,l){o=o|0,l=l|0,n[o+980>>2]=l}function Xa(o){return o=o|0,n[o+980>>2]|0}function By(o,l){o=o|0,l=l|0;var u=0;u=o+4|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function z1(o){return o=o|0,n[o+4>>2]|0}function Qo(o,l){o=o|0,l=l|0;var u=0;u=o+8|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function vy(o){return o=o|0,n[o+8>>2]|0}function Ih(o,l){o=o|0,l=l|0;var u=0;u=o+12|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Z1(o){return o=o|0,n[o+12>>2]|0}function To(o,l){o=o|0,l=l|0;var u=0;u=o+16|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Ch(o){return o=o|0,n[o+16>>2]|0}function wh(o,l){o=o|0,l=l|0;var u=0;u=o+20|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function pu(o){return o=o|0,n[o+20>>2]|0}function Bh(o,l){o=o|0,l=l|0;var u=0;u=o+24|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Ng(o){return o=o|0,n[o+24>>2]|0}function Og(o,l){o=o|0,l=l|0;var u=0;u=o+28|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Lg(o){return o=o|0,n[o+28>>2]|0}function Sy(o,l){o=o|0,l=l|0;var u=0;u=o+32|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Ef(o){return o=o|0,n[o+32>>2]|0}function Ro(o,l){o=o|0,l=l|0;var u=0;u=o+36|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Rl(o){return o=o|0,n[o+36>>2]|0}function vh(o,l){o=o|0,l=y(l);var u=0;u=o+40|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Mg(o,l){o=o|0,l=y(l);var u=0;u=o+44|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Fl(o,l){o=o|0,l=y(l);var u=0;u=o+48|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Nl(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+52|0,g=o+56|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function by(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+52|0,u=o+56|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Ut(l)|0,n[u>>2]=A?3:2,Oe(o))}function jA(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+52|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Dy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=(m^1)&1,g=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function Py(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=m?0:2,g=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function GA(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+132+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function qA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=(m^1)&1,g=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function W(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=m?0:2,g=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function xt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+60+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function YA(o,l){o=o|0,l=l|0;var u=0;u=o+60+(l<<3)+4|0,(n[u>>2]|0)!=3&&(h[o+60+(l<<3)>>2]=y(le),n[u>>2]=3,Oe(o))}function Fo(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=(m^1)&1,g=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function If(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=m?0:2,g=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function yt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+204+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function hu(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=(m^1)&1,g=o+276+(l<<3)|0,l=o+276+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function xy(o,l){return o=o|0,l=l|0,y(h[o+276+(l<<3)>>2])}function Ug(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+348|0,g=o+352|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function X1(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+348|0,u=o+352|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Ut(l)|0,n[u>>2]=A?3:2,Oe(o))}function Sh(o){o=o|0;var l=0;l=o+352|0,(n[l>>2]|0)!=3&&(h[o+348>>2]=y(le),n[l>>2]=3,Oe(o))}function ur(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+348|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function zi(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+356|0,g=o+360|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function Cf(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+356|0,u=o+360|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Ut(l)|0,n[u>>2]=A?3:2,Oe(o))}function $a(o){o=o|0;var l=0;l=o+360|0,(n[l>>2]|0)!=3&&(h[o+356>>2]=y(le),n[l>>2]=3,Oe(o))}function _g(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+356|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function du(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+364|0,g=o+368|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function wf(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=m?0:2,A=o+364|0,g=o+368|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function Bt(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+364|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function mi(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+372|0,g=o+376|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function WA(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=m?0:2,A=o+372|0,g=o+376|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function el(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+372|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function ya(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+380|0,g=o+384|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function tl(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=m?0:2,A=o+380|0,g=o+384|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function Hg(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+380|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function bh(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+388|0,g=o+392|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function jg(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=m?0:2,A=o+388|0,g=o+392|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function ky(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+388|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function VA(o,l){o=o|0,l=y(l);var u=0;u=o+396|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Gg(o){return o=o|0,y(h[o+396>>2])}function gu(o){return o=o|0,y(h[o+400>>2])}function mu(o){return o=o|0,y(h[o+404>>2])}function Bf(o){return o=o|0,y(h[o+408>>2])}function Os(o){return o=o|0,y(h[o+412>>2])}function yu(o){return o=o|0,y(h[o+416>>2])}function Yn(o){return o=o|0,y(h[o+420>>2])}function os(o,l){switch(o=o|0,l=l|0,vi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+424+(l<<2)>>2])}function xi(o,l){switch(o=o|0,l=l|0,vi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+448+(l<<2)>>2])}function KA(o,l){switch(o=o|0,l=l|0,vi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+472+(l<<2)>>2])}function vf(o,l){o=o|0,l=l|0;var u=0,A=$e;return u=n[o+4>>2]|0,(u|0)==(n[l+4>>2]|0)?u?(A=y(h[o>>2]),o=y(ce(y(A-y(h[l>>2]))))>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,Ue(A|0,o|0,l|0,0),Oo(o,3,(s[A+11>>0]|0)<0?n[A>>2]|0:A,u),MHe(A),I=u}function as(o,l,u,A){o=y(o),l=y(l),u=u|0,A=A|0;var g=$e;o=y(o*l),g=y(nU(o,y(1)));do if(En(g,y(0))|0)o=y(o-g);else{if(o=y(o-g),En(g,y(1))|0){o=y(o+y(1));break}if(u){o=y(o+y(1));break}A||(g>y(.5)?g=y(1):(A=En(g,y(.5))|0,g=y(A?1:0)),o=y(o+g))}while(!1);return y(o/l)}function Ol(o,l,u,A,g,m,B,k,T,M,L,q,oe){o=o|0,l=y(l),u=u|0,A=y(A),g=g|0,m=y(m),B=B|0,k=y(k),T=y(T),M=y(M),L=y(L),q=y(q),oe=oe|0;var Ve=0,Le=$e,Re=$e,nt=$e,Xe=$e,At=$e,He=$e;return T>2]),Le!=y(0))?(nt=y(as(l,Le,0,0)),Xe=y(as(A,Le,0,0)),Re=y(as(m,Le,0,0)),Le=y(as(k,Le,0,0))):(Re=m,nt=l,Le=k,Xe=A),(g|0)==(o|0)?Ve=En(Re,nt)|0:Ve=0,(B|0)==(u|0)?oe=En(Le,Xe)|0:oe=0,!Ve&&(At=y(l-L),!(No(o,At,T)|0))&&!(Sf(o,At,g,T)|0)?Ve=bf(o,At,g,m,T)|0:Ve=1,!oe&&(He=y(A-q),!(No(u,He,M)|0))&&!(Sf(u,He,B,M)|0)?oe=bf(u,He,B,k,M)|0:oe=1,oe=Ve&oe),oe|0}function No(o,l,u){return o=o|0,l=y(l),u=y(u),(o|0)==1?o=En(l,u)|0:o=0,o|0}function Sf(o,l,u,A){return o=o|0,l=y(l),u=u|0,A=y(A),(o|0)==2&(u|0)==0?l>=A?o=1:o=En(l,A)|0:o=0,o|0}function bf(o,l,u,A,g){return o=o|0,l=y(l),u=u|0,A=y(A),g=y(g),(o|0)==2&(u|0)==2&A>l?g<=l?o=1:o=En(l,g)|0:o=0,o|0}function Ll(o,l,u,A,g,m,B,k,T,M,L){o=o|0,l=y(l),u=y(u),A=A|0,g=g|0,m=m|0,B=y(B),k=y(k),T=T|0,M=M|0,L=L|0;var q=0,oe=0,Ve=0,Le=0,Re=$e,nt=$e,Xe=0,At=0,He=0,We=0,Mt=0,qr=0,fr=0,$t=0,Fr=0,jr=0,cr=0,Gn=$e,Uo=$e,_o=$e,Ho=0,al=0;cr=I,I=I+160|0,$t=cr+152|0,fr=cr+120|0,qr=cr+104|0,He=cr+72|0,Le=cr+56|0,Mt=cr+8|0,At=cr,We=(n[2279]|0)+1|0,n[2279]=We,Fr=o+984|0,s[Fr>>0]|0&&(n[o+512>>2]|0)!=(n[2278]|0)?Xe=4:(n[o+516>>2]|0)==(A|0)?jr=0:Xe=4,(Xe|0)==4&&(n[o+520>>2]=0,n[o+924>>2]=-1,n[o+928>>2]=-1,h[o+932>>2]=y(-1),h[o+936>>2]=y(-1),jr=1);e:do if(n[o+964>>2]|0)if(Re=y(In(o,2,B)),nt=y(In(o,0,B)),q=o+916|0,_o=y(h[q>>2]),Uo=y(h[o+920>>2]),Gn=y(h[o+932>>2]),Ol(g,l,m,u,n[o+924>>2]|0,_o,n[o+928>>2]|0,Uo,Gn,y(h[o+936>>2]),Re,nt,L)|0)Xe=22;else if(Ve=n[o+520>>2]|0,!Ve)Xe=21;else for(oe=0;;){if(q=o+524+(oe*24|0)|0,Gn=y(h[q>>2]),Uo=y(h[o+524+(oe*24|0)+4>>2]),_o=y(h[o+524+(oe*24|0)+16>>2]),Ol(g,l,m,u,n[o+524+(oe*24|0)+8>>2]|0,Gn,n[o+524+(oe*24|0)+12>>2]|0,Uo,_o,y(h[o+524+(oe*24|0)+20>>2]),Re,nt,L)|0){Xe=22;break e}if(oe=oe+1|0,oe>>>0>=Ve>>>0){Xe=21;break}}else{if(T){if(q=o+916|0,!(En(y(h[q>>2]),l)|0)){Xe=21;break}if(!(En(y(h[o+920>>2]),u)|0)){Xe=21;break}if((n[o+924>>2]|0)!=(g|0)){Xe=21;break}q=(n[o+928>>2]|0)==(m|0)?q:0,Xe=22;break}if(Ve=n[o+520>>2]|0,!Ve)Xe=21;else for(oe=0;;){if(q=o+524+(oe*24|0)|0,En(y(h[q>>2]),l)|0&&En(y(h[o+524+(oe*24|0)+4>>2]),u)|0&&(n[o+524+(oe*24|0)+8>>2]|0)==(g|0)&&(n[o+524+(oe*24|0)+12>>2]|0)==(m|0)){Xe=22;break e}if(oe=oe+1|0,oe>>>0>=Ve>>>0){Xe=21;break}}}while(!1);do if((Xe|0)==21)s[11697]|0?(q=0,Xe=28):(q=0,Xe=31);else if((Xe|0)==22){if(oe=(s[11697]|0)!=0,!((q|0)!=0&(jr^1)))if(oe){Xe=28;break}else{Xe=31;break}Le=q+16|0,n[o+908>>2]=n[Le>>2],Ve=q+20|0,n[o+912>>2]=n[Ve>>2],(s[11698]|0)==0|oe^1||(n[At>>2]=Eu(We)|0,n[At+4>>2]=We,Oo(o,4,2972,At),oe=n[o+972>>2]|0,oe|0&&ap[oe&127](o),g=Ea(g,T)|0,m=Ea(m,T)|0,al=+y(h[Le>>2]),Ho=+y(h[Ve>>2]),n[Mt>>2]=g,n[Mt+4>>2]=m,E[Mt+8>>3]=+l,E[Mt+16>>3]=+u,E[Mt+24>>3]=al,E[Mt+32>>3]=Ho,n[Mt+40>>2]=M,Oo(o,4,2989,Mt))}while(!1);return(Xe|0)==28&&(oe=Eu(We)|0,n[Le>>2]=oe,n[Le+4>>2]=We,n[Le+8>>2]=jr?3047:11699,Oo(o,4,3038,Le),oe=n[o+972>>2]|0,oe|0&&ap[oe&127](o),Mt=Ea(g,T)|0,Xe=Ea(m,T)|0,n[He>>2]=Mt,n[He+4>>2]=Xe,E[He+8>>3]=+l,E[He+16>>3]=+u,n[He+24>>2]=M,Oo(o,4,3049,He),Xe=31),(Xe|0)==31&&(Ls(o,l,u,A,g,m,B,k,T,L),s[11697]|0&&(oe=n[2279]|0,Mt=Eu(oe)|0,n[qr>>2]=Mt,n[qr+4>>2]=oe,n[qr+8>>2]=jr?3047:11699,Oo(o,4,3083,qr),oe=n[o+972>>2]|0,oe|0&&ap[oe&127](o),Mt=Ea(g,T)|0,qr=Ea(m,T)|0,Ho=+y(h[o+908>>2]),al=+y(h[o+912>>2]),n[fr>>2]=Mt,n[fr+4>>2]=qr,E[fr+8>>3]=Ho,E[fr+16>>3]=al,n[fr+24>>2]=M,Oo(o,4,3092,fr)),n[o+516>>2]=A,q||(oe=o+520|0,q=n[oe>>2]|0,(q|0)==16&&(s[11697]|0&&Oo(o,4,3124,$t),n[oe>>2]=0,q=0),T?q=o+916|0:(n[oe>>2]=q+1,q=o+524+(q*24|0)|0),h[q>>2]=l,h[q+4>>2]=u,n[q+8>>2]=g,n[q+12>>2]=m,n[q+16>>2]=n[o+908>>2],n[q+20>>2]=n[o+912>>2],q=0)),T&&(n[o+416>>2]=n[o+908>>2],n[o+420>>2]=n[o+912>>2],s[o+985>>0]=1,s[Fr>>0]=0),n[2279]=(n[2279]|0)+-1,n[o+512>>2]=n[2278],I=cr,jr|(q|0)==0|0}function In(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(J(o,l,u)),y(A+y(re(o,l,u)))}function Oo(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=I,I=I+16|0,g=m,n[g>>2]=A,o?A=n[o+976>>2]|0:A=0,xh(A,o,l,u,g),I=m}function Eu(o){return o=o|0,(o>>>0>60?3201:3201+(60-o)|0)|0}function Ea(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;return g=I,I=I+32|0,u=g+12|0,A=g,n[u>>2]=n[254],n[u+4>>2]=n[255],n[u+8>>2]=n[256],n[A>>2]=n[257],n[A+4>>2]=n[258],n[A+8>>2]=n[259],(o|0)>2?o=11699:o=n[(l?A:u)+(o<<2)>>2]|0,I=g,o|0}function Ls(o,l,u,A,g,m,B,k,T,M){o=o|0,l=y(l),u=y(u),A=A|0,g=g|0,m=m|0,B=y(B),k=y(k),T=T|0,M=M|0;var L=0,q=0,oe=0,Ve=0,Le=$e,Re=$e,nt=$e,Xe=$e,At=$e,He=$e,We=$e,Mt=0,qr=0,fr=0,$t=$e,Fr=$e,jr=0,cr=$e,Gn=0,Uo=0,_o=0,Ho=0,al=0,Wh=0,Vh=0,yc=0,Kh=0,Of=0,Lf=0,Jh=0,zh=0,Zh=0,ln=0,Ec=0,Xh=0,Du=0,$h=$e,ed=$e,Mf=$e,Uf=$e,Pu=$e,ho=0,Yl=0,Ba=0,Ic=0,cp=0,up=$e,_f=$e,fp=$e,Ap=$e,go=$e,Hs=$e,Cc=0,Vn=$e,pp=$e,jo=$e,xu=$e,Go=$e,ku=$e,hp=0,dp=0,Qu=$e,mo=$e,wc=0,gp=0,mp=0,yp=0,Or=$e,Ai=0,js=0,qo=0,yo=0,Ur=0,Ar=0,Bc=0,zt=$e,Ep=0,Si=0;Bc=I,I=I+16|0,ho=Bc+12|0,Yl=Bc+8|0,Ba=Bc+4|0,Ic=Bc,vi(o,(g|0)==0|(Ut(l)|0)^1,3326),vi(o,(m|0)==0|(Ut(u)|0)^1,3406),js=pt(o,A)|0,n[o+496>>2]=js,Ur=mr(2,js)|0,Ar=mr(0,js)|0,h[o+440>>2]=y(J(o,Ur,B)),h[o+444>>2]=y(re(o,Ur,B)),h[o+428>>2]=y(J(o,Ar,B)),h[o+436>>2]=y(re(o,Ar,B)),h[o+464>>2]=y(vr(o,Ur)),h[o+468>>2]=y(Hn(o,Ur)),h[o+452>>2]=y(vr(o,Ar)),h[o+460>>2]=y(Hn(o,Ar)),h[o+488>>2]=y(yi(o,Ur,B)),h[o+492>>2]=y(Ss(o,Ur,B)),h[o+476>>2]=y(yi(o,Ar,B)),h[o+484>>2]=y(Ss(o,Ar,B));do if(n[o+964>>2]|0)ZA(o,l,u,g,m,B,k);else{if(qo=o+948|0,yo=(n[o+952>>2]|0)-(n[qo>>2]|0)>>2,!yo){hP(o,l,u,g,m,B,k);break}if(!T&&$1(o,l,u,g,m,B,k)|0)break;te(o),Ec=o+508|0,s[Ec>>0]=0,Ur=mr(n[o+4>>2]|0,js)|0,Ar=Ry(Ur,js)|0,Ai=de(Ur)|0,Xh=n[o+8>>2]|0,gp=o+28|0,Du=(n[gp>>2]|0)!=0,Go=Ai?B:k,Qu=Ai?k:B,$h=y(Qh(o,Ur,B)),ed=y(e2(o,Ur,B)),Le=y(Qh(o,Ar,B)),ku=y(rl(o,Ur,B)),mo=y(rl(o,Ar,B)),fr=Ai?g:m,wc=Ai?m:g,Or=Ai?ku:mo,At=Ai?mo:ku,xu=y(In(o,2,B)),Xe=y(In(o,0,B)),Re=y(y($r(o+364|0,B))-Or),nt=y(y($r(o+380|0,B))-Or),He=y(y($r(o+372|0,k))-At),We=y(y($r(o+388|0,k))-At),Mf=Ai?Re:He,Uf=Ai?nt:We,xu=y(l-xu),l=y(xu-Or),Ut(l)|0?Or=l:Or=y(ni(y(h0(l,nt)),Re)),pp=y(u-Xe),l=y(pp-At),Ut(l)|0?jo=l:jo=y(ni(y(h0(l,We)),He)),Re=Ai?Or:jo,Vn=Ai?jo:Or;e:do if((fr|0)==1)for(A=0,q=0;;){if(L=vs(o,q)|0,!A)y(XA(L))>y(0)&&y(Th(L))>y(0)?A=L:A=0;else if(t2(L)|0){Ve=0;break e}if(q=q+1|0,q>>>0>=yo>>>0){Ve=A;break}}else Ve=0;while(!1);Mt=Ve+500|0,qr=Ve+504|0,A=0,L=0,l=y(0),oe=0;do{if(q=n[(n[qo>>2]|0)+(oe<<2)>>2]|0,(n[q+36>>2]|0)==1)Fy(q),s[q+985>>0]=1,s[q+984>>0]=0;else{Df(q),T&&Ph(q,pt(q,js)|0,Re,Vn,Or);do if((n[q+24>>2]|0)!=1)if((q|0)==(Ve|0)){n[Mt>>2]=n[2278],h[qr>>2]=y(0);break}else{dP(o,q,Or,g,jo,Or,jo,m,js,M);break}else L|0&&(n[L+960>>2]=q),n[q+960>>2]=0,L=q,A=A|0?A:q;while(!1);Hs=y(h[q+504>>2]),l=y(l+y(Hs+y(In(q,Ur,Or))))}oe=oe+1|0}while((oe|0)!=(yo|0));for(_o=l>Re,Cc=Du&((fr|0)==2&_o)?1:fr,Gn=(wc|0)==1,al=Gn&(T^1),Wh=(Cc|0)==1,Vh=(Cc|0)==2,yc=976+(Ur<<2)|0,Kh=(wc|2|0)==2,Zh=Gn&(Du^1),Of=1040+(Ar<<2)|0,Lf=1040+(Ur<<2)|0,Jh=976+(Ar<<2)|0,zh=(wc|0)!=1,_o=Du&((fr|0)!=0&_o),Uo=o+976|0,Gn=Gn^1,l=Re,jr=0,Ho=0,Hs=y(0),Pu=y(0);;){e:do if(jr>>>0>>0)for(qr=n[qo>>2]|0,oe=0,We=y(0),He=y(0),nt=y(0),Re=y(0),q=0,L=0,Ve=jr;;){if(Mt=n[qr+(Ve<<2)>>2]|0,(n[Mt+36>>2]|0)!=1&&(n[Mt+940>>2]=Ho,(n[Mt+24>>2]|0)!=1)){if(Xe=y(In(Mt,Ur,Or)),ln=n[yc>>2]|0,u=y($r(Mt+380+(ln<<3)|0,Go)),At=y(h[Mt+504>>2]),u=y(h0(u,At)),u=y(ni(y($r(Mt+364+(ln<<3)|0,Go)),u)),Du&(oe|0)!=0&y(Xe+y(He+u))>l){m=oe,Xe=We,fr=Ve;break e}Xe=y(Xe+u),u=y(He+Xe),Xe=y(We+Xe),t2(Mt)|0&&(nt=y(nt+y(XA(Mt))),Re=y(Re-y(At*y(Th(Mt))))),L|0&&(n[L+960>>2]=Mt),n[Mt+960>>2]=0,oe=oe+1|0,L=Mt,q=q|0?q:Mt}else Xe=We,u=He;if(Ve=Ve+1|0,Ve>>>0>>0)We=Xe,He=u;else{m=oe,fr=Ve;break}}else m=0,Xe=y(0),nt=y(0),Re=y(0),q=0,fr=jr;while(!1);ln=nt>y(0)&nty(0)&ReUf&((Ut(Uf)|0)^1))l=Uf,ln=51;else if(s[(n[Uo>>2]|0)+3>>0]|0)ln=51;else{if($t!=y(0)&&y(XA(o))!=y(0)){ln=53;break}l=Xe,ln=53}while(!1);if((ln|0)==51&&(ln=0,Ut(l)|0?ln=53:(Fr=y(l-Xe),cr=l)),(ln|0)==53&&(ln=0,Xe>2]|0,Ve=Fry(0),He=y(Fr/$t),nt=y(0),Xe=y(0),l=y(0),L=q;do u=y($r(L+380+(oe<<3)|0,Go)),Re=y($r(L+364+(oe<<3)|0,Go)),Re=y(h0(u,y(ni(Re,y(h[L+504>>2]))))),Ve?(u=y(Re*y(Th(L))),u!=y(-0)&&(zt=y(Re-y(At*u)),up=y(Wn(L,Ur,zt,cr,Or)),zt!=up)&&(nt=y(nt-y(up-Re)),l=y(l+u))):Mt&&(_f=y(XA(L)),_f!=y(0))&&(zt=y(Re+y(He*_f)),fp=y(Wn(L,Ur,zt,cr,Or)),zt!=fp)&&(nt=y(nt-y(fp-Re)),Xe=y(Xe-_f)),L=n[L+960>>2]|0;while(L|0);if(l=y(We+l),Re=y(Fr+nt),cp)l=y(0);else{At=y($t+Xe),Ve=n[yc>>2]|0,Mt=Rey(0),At=y(Re/At),l=y(0);do{zt=y($r(q+380+(Ve<<3)|0,Go)),nt=y($r(q+364+(Ve<<3)|0,Go)),nt=y(h0(zt,y(ni(nt,y(h[q+504>>2]))))),Mt?(zt=y(nt*y(Th(q))),Re=y(-zt),zt!=y(-0)?(zt=y(He*Re),Re=y(Wn(q,Ur,y(nt+(qr?Re:zt)),cr,Or))):Re=nt):oe&&(Ap=y(XA(q)),Ap!=y(0))?Re=y(Wn(q,Ur,y(nt+y(At*Ap)),cr,Or)):Re=nt,l=y(l-y(Re-nt)),Xe=y(In(q,Ur,Or)),u=y(In(q,Ar,Or)),Re=y(Re+Xe),h[Yl>>2]=Re,n[Ic>>2]=1,nt=y(h[q+396>>2]);e:do if(Ut(nt)|0){L=Ut(Vn)|0;do if(!L){if(_o|(Ao(q,Ar,Vn)|0|Gn)||(ls(o,q)|0)!=4||(n[(Ml(q,Ar)|0)+4>>2]|0)==3||(n[(Ul(q,Ar)|0)+4>>2]|0)==3)break;h[ho>>2]=Vn,n[Ba>>2]=1;break e}while(!1);if(Ao(q,Ar,Vn)|0){L=n[q+992+(n[Jh>>2]<<2)>>2]|0,zt=y(u+y($r(L,Vn))),h[ho>>2]=zt,L=zh&(n[L+4>>2]|0)==2,n[Ba>>2]=((Ut(zt)|0|L)^1)&1;break}else{h[ho>>2]=Vn,n[Ba>>2]=L?0:2;break}}else zt=y(Re-Xe),$t=y(zt/nt),zt=y(nt*zt),n[Ba>>2]=1,h[ho>>2]=y(u+(Ai?$t:zt));while(!1);Iu(q,Ur,cr,Or,Ic,Yl),Iu(q,Ar,Vn,Or,Ba,ho);do if(!(Ao(q,Ar,Vn)|0)&&(ls(o,q)|0)==4){if((n[(Ml(q,Ar)|0)+4>>2]|0)==3){L=0;break}L=(n[(Ul(q,Ar)|0)+4>>2]|0)!=3}else L=0;while(!1);zt=y(h[Yl>>2]),$t=y(h[ho>>2]),Ep=n[Ic>>2]|0,Si=n[Ba>>2]|0,Ll(q,Ai?zt:$t,Ai?$t:zt,js,Ai?Ep:Si,Ai?Si:Ep,Or,jo,T&(L^1),3488,M)|0,s[Ec>>0]=s[Ec>>0]|s[q+508>>0],q=n[q+960>>2]|0}while(q|0)}}else l=y(0);if(l=y(Fr+l),Si=l>0]=Si|c[Ec>>0],Vh&l>y(0)?(L=n[yc>>2]|0,n[o+364+(L<<3)+4>>2]|0&&(go=y($r(o+364+(L<<3)|0,Go)),go>=y(0))?Re=y(ni(y(0),y(go-y(cr-l)))):Re=y(0)):Re=l,Mt=jr>>>0>>0,Mt){Ve=n[qo>>2]|0,oe=jr,L=0;do q=n[Ve+(oe<<2)>>2]|0,n[q+24>>2]|0||(L=((n[(Ml(q,Ur)|0)+4>>2]|0)==3&1)+L|0,L=L+((n[(Ul(q,Ur)|0)+4>>2]|0)==3&1)|0),oe=oe+1|0;while((oe|0)!=(fr|0));L?(Xe=y(0),u=y(0)):ln=101}else ln=101;e:do if((ln|0)==101)switch(ln=0,Xh|0){case 1:{L=0,Xe=y(Re*y(.5)),u=y(0);break e}case 2:{L=0,Xe=Re,u=y(0);break e}case 3:{if(m>>>0<=1){L=0,Xe=y(0),u=y(0);break e}u=y((m+-1|0)>>>0),L=0,Xe=y(0),u=y(y(ni(Re,y(0)))/u);break e}case 5:{u=y(Re/y((m+1|0)>>>0)),L=0,Xe=u;break e}case 4:{u=y(Re/y(m>>>0)),L=0,Xe=y(u*y(.5));break e}default:{L=0,Xe=y(0),u=y(0);break e}}while(!1);if(l=y($h+Xe),Mt){nt=y(Re/y(L|0)),oe=n[qo>>2]|0,q=jr,Re=y(0);do{L=n[oe+(q<<2)>>2]|0;e:do if((n[L+36>>2]|0)!=1){switch(n[L+24>>2]|0){case 1:{if(Ia(L,Ur)|0){if(!T)break e;zt=y($A(L,Ur,cr)),zt=y(zt+y(vr(o,Ur))),zt=y(zt+y(J(L,Ur,Or))),h[L+400+(n[Lf>>2]<<2)>>2]=zt;break e}break}case 0:if(Si=(n[(Ml(L,Ur)|0)+4>>2]|0)==3,zt=y(nt+l),l=Si?zt:l,T&&(Si=L+400+(n[Lf>>2]<<2)|0,h[Si>>2]=y(l+y(h[Si>>2]))),Si=(n[(Ul(L,Ur)|0)+4>>2]|0)==3,zt=y(nt+l),l=Si?zt:l,al){zt=y(u+y(In(L,Ur,Or))),Re=Vn,l=y(l+y(zt+y(h[L+504>>2])));break e}else{l=y(l+y(u+y(ep(L,Ur,Or)))),Re=y(ni(Re,y(ep(L,Ar,Or))));break e}default:}T&&(zt=y(Xe+y(vr(o,Ur))),Si=L+400+(n[Lf>>2]<<2)|0,h[Si>>2]=y(zt+y(h[Si>>2])))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}else Re=y(0);if(u=y(ed+l),Kh?Xe=y(y(Wn(o,Ar,y(mo+Re),Qu,B))-mo):Xe=Vn,nt=y(y(Wn(o,Ar,y(mo+(Zh?Vn:Re)),Qu,B))-mo),Mt&T){q=jr;do{oe=n[(n[qo>>2]|0)+(q<<2)>>2]|0;do if((n[oe+36>>2]|0)!=1){if((n[oe+24>>2]|0)==1){if(Ia(oe,Ar)|0){if(zt=y($A(oe,Ar,Vn)),zt=y(zt+y(vr(o,Ar))),zt=y(zt+y(J(oe,Ar,Or))),L=n[Of>>2]|0,h[oe+400+(L<<2)>>2]=zt,!(Ut(zt)|0))break}else L=n[Of>>2]|0;zt=y(vr(o,Ar)),h[oe+400+(L<<2)>>2]=y(zt+y(J(oe,Ar,Or)));break}L=ls(o,oe)|0;do if((L|0)==4){if((n[(Ml(oe,Ar)|0)+4>>2]|0)==3){ln=139;break}if((n[(Ul(oe,Ar)|0)+4>>2]|0)==3){ln=139;break}if(Ao(oe,Ar,Vn)|0){l=Le;break}Ep=n[oe+908+(n[yc>>2]<<2)>>2]|0,n[ho>>2]=Ep,l=y(h[oe+396>>2]),Si=Ut(l)|0,Re=(n[S>>2]=Ep,y(h[S>>2])),Si?l=nt:(Fr=y(In(oe,Ar,Or)),zt=y(Re/l),l=y(l*Re),l=y(Fr+(Ai?zt:l))),h[Yl>>2]=l,h[ho>>2]=y(y(In(oe,Ur,Or))+Re),n[Ba>>2]=1,n[Ic>>2]=1,Iu(oe,Ur,cr,Or,Ba,ho),Iu(oe,Ar,Vn,Or,Ic,Yl),l=y(h[ho>>2]),Fr=y(h[Yl>>2]),zt=Ai?l:Fr,l=Ai?Fr:l,Si=((Ut(zt)|0)^1)&1,Ll(oe,zt,l,js,Si,((Ut(l)|0)^1)&1,Or,jo,1,3493,M)|0,l=Le}else ln=139;while(!1);e:do if((ln|0)==139){ln=0,l=y(Xe-y(ep(oe,Ar,Or)));do if((n[(Ml(oe,Ar)|0)+4>>2]|0)==3){if((n[(Ul(oe,Ar)|0)+4>>2]|0)!=3)break;l=y(Le+y(ni(y(0),y(l*y(.5)))));break e}while(!1);if((n[(Ul(oe,Ar)|0)+4>>2]|0)==3){l=Le;break}if((n[(Ml(oe,Ar)|0)+4>>2]|0)==3){l=y(Le+y(ni(y(0),l)));break}switch(L|0){case 1:{l=Le;break e}case 2:{l=y(Le+y(l*y(.5)));break e}default:{l=y(Le+l);break e}}}while(!1);zt=y(Hs+l),Si=oe+400+(n[Of>>2]<<2)|0,h[Si>>2]=y(zt+y(h[Si>>2]))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}if(Hs=y(Hs+nt),Pu=y(ni(Pu,u)),m=Ho+1|0,fr>>>0>=yo>>>0)break;l=cr,jr=fr,Ho=m}do if(T){if(L=m>>>0>1,!L&&!(NL(o)|0))break;if(!(Ut(Vn)|0)){l=y(Vn-Hs);e:do switch(n[o+12>>2]|0){case 3:{Le=y(Le+l),He=y(0);break}case 2:{Le=y(Le+y(l*y(.5))),He=y(0);break}case 4:{Vn>Hs?He=y(l/y(m>>>0)):He=y(0);break}case 7:if(Vn>Hs){Le=y(Le+y(l/y(m<<1>>>0))),He=y(l/y(m>>>0)),He=L?He:y(0);break e}else{Le=y(Le+y(l*y(.5))),He=y(0);break e}case 6:{He=y(l/y(Ho>>>0)),He=Vn>Hs&L?He:y(0);break}default:He=y(0)}while(!1);if(m|0)for(Mt=1040+(Ar<<2)|0,qr=976+(Ar<<2)|0,Ve=0,q=0;;){e:do if(q>>>0>>0)for(Re=y(0),nt=y(0),l=y(0),oe=q;;){L=n[(n[qo>>2]|0)+(oe<<2)>>2]|0;do if((n[L+36>>2]|0)!=1&&!(n[L+24>>2]|0)){if((n[L+940>>2]|0)!=(Ve|0))break e;if(OL(L,Ar)|0&&(zt=y(h[L+908+(n[qr>>2]<<2)>>2]),l=y(ni(l,y(zt+y(In(L,Ar,Or)))))),(ls(o,L)|0)!=5)break;go=y(Vg(L)),go=y(go+y(J(L,0,Or))),zt=y(h[L+912>>2]),zt=y(y(zt+y(In(L,0,Or)))-go),go=y(ni(nt,go)),zt=y(ni(Re,zt)),Re=zt,nt=go,l=y(ni(l,y(go+zt)))}while(!1);if(L=oe+1|0,L>>>0>>0)oe=L;else{oe=L;break}}else nt=y(0),l=y(0),oe=q;while(!1);if(At=y(He+l),u=Le,Le=y(Le+At),q>>>0>>0){Xe=y(u+nt),L=q;do{q=n[(n[qo>>2]|0)+(L<<2)>>2]|0;e:do if((n[q+36>>2]|0)!=1&&!(n[q+24>>2]|0))switch(ls(o,q)|0){case 1:{zt=y(u+y(J(q,Ar,Or))),h[q+400+(n[Mt>>2]<<2)>>2]=zt;break e}case 3:{zt=y(y(Le-y(re(q,Ar,Or)))-y(h[q+908+(n[qr>>2]<<2)>>2])),h[q+400+(n[Mt>>2]<<2)>>2]=zt;break e}case 2:{zt=y(u+y(y(At-y(h[q+908+(n[qr>>2]<<2)>>2]))*y(.5))),h[q+400+(n[Mt>>2]<<2)>>2]=zt;break e}case 4:{if(zt=y(u+y(J(q,Ar,Or))),h[q+400+(n[Mt>>2]<<2)>>2]=zt,Ao(q,Ar,Vn)|0||(Ai?(Re=y(h[q+908>>2]),l=y(Re+y(In(q,Ur,Or))),nt=At):(nt=y(h[q+912>>2]),nt=y(nt+y(In(q,Ar,Or))),l=At,Re=y(h[q+908>>2])),En(l,Re)|0&&En(nt,y(h[q+912>>2]))|0))break e;Ll(q,l,nt,js,1,1,Or,jo,1,3501,M)|0;break e}case 5:{h[q+404>>2]=y(y(Xe-y(Vg(q)))+y($A(q,0,Vn)));break e}default:break e}while(!1);L=L+1|0}while((L|0)!=(oe|0))}if(Ve=Ve+1|0,(Ve|0)==(m|0))break;q=oe}}}while(!1);if(h[o+908>>2]=y(Wn(o,2,xu,B,B)),h[o+912>>2]=y(Wn(o,0,pp,k,B)),Cc|0&&(hp=n[o+32>>2]|0,dp=(Cc|0)==2,!(dp&(hp|0)!=2))?dp&(hp|0)==2&&(l=y(ku+cr),l=y(ni(y(h0(l,y(Kg(o,Ur,Pu,Go)))),ku)),ln=198):(l=y(Wn(o,Ur,Pu,Go,B)),ln=198),(ln|0)==198&&(h[o+908+(n[976+(Ur<<2)>>2]<<2)>>2]=l),wc|0&&(mp=n[o+32>>2]|0,yp=(wc|0)==2,!(yp&(mp|0)!=2))?yp&(mp|0)==2&&(l=y(mo+Vn),l=y(ni(y(h0(l,y(Kg(o,Ar,y(mo+Hs),Qu)))),mo)),ln=204):(l=y(Wn(o,Ar,y(mo+Hs),Qu,B)),ln=204),(ln|0)==204&&(h[o+908+(n[976+(Ar<<2)>>2]<<2)>>2]=l),T){if((n[gp>>2]|0)==2){q=976+(Ar<<2)|0,oe=1040+(Ar<<2)|0,L=0;do Ve=vs(o,L)|0,n[Ve+24>>2]|0||(Ep=n[q>>2]|0,zt=y(h[o+908+(Ep<<2)>>2]),Si=Ve+400+(n[oe>>2]<<2)|0,zt=y(zt-y(h[Si>>2])),h[Si>>2]=y(zt-y(h[Ve+908+(Ep<<2)>>2]))),L=L+1|0;while((L|0)!=(yo|0))}if(A|0){L=Ai?Cc:g;do LL(o,A,Or,L,jo,js,M),A=n[A+960>>2]|0;while(A|0)}if(L=(Ur|2|0)==3,q=(Ar|2|0)==3,L|q){A=0;do oe=n[(n[qo>>2]|0)+(A<<2)>>2]|0,(n[oe+36>>2]|0)!=1&&(L&&r2(o,oe,Ur),q&&r2(o,oe,Ar)),A=A+1|0;while((A|0)!=(yo|0))}}}while(!1);I=Bc}function Dh(o,l){o=o|0,l=y(l);var u=0;za(o,l>=y(0),3147),u=l==y(0),h[o+4>>2]=u?y(0):l}function JA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=A|0;var g=$e,m=$e,B=0,k=0,T=0;n[2278]=(n[2278]|0)+1,Df(o),Ao(o,2,l)|0?(g=y($r(n[o+992>>2]|0,l)),T=1,g=y(g+y(In(o,2,l)))):(g=y($r(o+380|0,l)),g>=y(0)?T=2:(T=((Ut(l)|0)^1)&1,g=l)),Ao(o,0,u)|0?(m=y($r(n[o+996>>2]|0,u)),k=1,m=y(m+y(In(o,0,l)))):(m=y($r(o+388|0,u)),m>=y(0)?k=2:(k=((Ut(u)|0)^1)&1,m=u)),B=o+976|0,Ll(o,g,m,A,T,k,l,u,1,3189,n[B>>2]|0)|0&&(Ph(o,n[o+496>>2]|0,l,u,l),zA(o,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),s[11696]|0)&&qg(o,7)}function Df(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;k=I,I=I+32|0,B=k+24|0,m=k+16|0,A=k+8|0,g=k,u=0;do l=o+380+(u<<3)|0,n[o+380+(u<<3)+4>>2]|0&&(T=l,M=n[T+4>>2]|0,L=A,n[L>>2]=n[T>>2],n[L+4>>2]=M,L=o+364+(u<<3)|0,M=n[L+4>>2]|0,T=g,n[T>>2]=n[L>>2],n[T+4>>2]=M,n[m>>2]=n[A>>2],n[m+4>>2]=n[A+4>>2],n[B>>2]=n[g>>2],n[B+4>>2]=n[g+4>>2],vf(m,B)|0)||(l=o+348+(u<<3)|0),n[o+992+(u<<2)>>2]=l,u=u+1|0;while((u|0)!=2);I=k}function Ao(o,l,u){o=o|0,l=l|0,u=y(u);var A=0;switch(o=n[o+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[o+4>>2]|0){case 0:case 3:{o=0;break}case 1:{y(h[o>>2])>2])>2]|0){case 2:{l=y(y(y(h[o>>2])*l)/y(100));break}case 1:{l=y(h[o>>2]);break}default:l=y(le)}return y(l)}function Ph(o,l,u,A,g){o=o|0,l=l|0,u=y(u),A=y(A),g=y(g);var m=0,B=$e;l=n[o+944>>2]|0?l:1,m=mr(n[o+4>>2]|0,l)|0,l=Ry(m,l)|0,u=y(gP(o,m,u)),A=y(gP(o,l,A)),B=y(u+y(J(o,m,g))),h[o+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,u=y(u+y(re(o,m,g))),h[o+400+(n[1e3+(m<<2)>>2]<<2)>>2]=u,u=y(A+y(J(o,l,g))),h[o+400+(n[1040+(l<<2)>>2]<<2)>>2]=u,g=y(A+y(re(o,l,g))),h[o+400+(n[1e3+(l<<2)>>2]<<2)>>2]=g}function zA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=y(A);var g=0,m=0,B=$e,k=$e,T=0,M=0,L=$e,q=0,oe=$e,Ve=$e,Le=$e,Re=$e;if(l!=y(0)&&(g=o+400|0,Re=y(h[g>>2]),m=o+404|0,Le=y(h[m>>2]),q=o+416|0,Ve=y(h[q>>2]),M=o+420|0,B=y(h[M>>2]),oe=y(Re+u),L=y(Le+A),A=y(oe+Ve),k=y(L+B),T=(n[o+988>>2]|0)==1,h[g>>2]=y(as(Re,l,0,T)),h[m>>2]=y(as(Le,l,0,T)),u=y(nU(y(Ve*l),y(1))),En(u,y(0))|0?m=0:m=(En(u,y(1))|0)^1,u=y(nU(y(B*l),y(1))),En(u,y(0))|0?g=0:g=(En(u,y(1))|0)^1,Re=y(as(A,l,T&m,T&(m^1))),h[q>>2]=y(Re-y(as(oe,l,0,T))),Re=y(as(k,l,T&g,T&(g^1))),h[M>>2]=y(Re-y(as(L,l,0,T))),m=(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2,m|0)){g=0;do zA(vs(o,g)|0,l,oe,L),g=g+1|0;while((g|0)!=(m|0))}}function Qy(o,l,u,A,g){switch(o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,u|0){case 5:case 0:{o=eX(n[489]|0,A,g)|0;break}default:o=FHe(A,g)|0}return o|0}function Wg(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;g=I,I=I+16|0,m=g,n[m>>2]=A,xh(o,0,l,u,m),I=g}function xh(o,l,u,A,g){if(o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,o=o|0?o:956,CX[n[o+8>>2]&1](o,l,u,A,g)|0,(u|0)==5)Ot();else return}function gc(o,l,u){o=o|0,l=l|0,u=u|0,s[o+l>>0]=u&1}function Ty(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(kh(o,A),kt(o,n[l>>2]|0,n[u>>2]|0,A))}function kh(o,l){o=o|0,l=l|0;var u=0;if((O(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Ot();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function kt(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Rr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function O(o){return o=o|0,1073741823}function J(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+96>>2]|0?o=o+92|0:o=Rn(o+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(Ke(o,u))}function re(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+104>>2]|0?o=o+100|0:o=Rn(o+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(Ke(o,u))}function de(o){return o=o|0,(o|1|0)==3|0}function Ke(o,l){return o=o|0,l=y(l),(n[o+4>>2]|0)==3?l=y(0):l=y($r(o,l)),y(l)}function pt(o,l){return o=o|0,l=l|0,o=n[o>>2]|0,(o|0?o:(l|0)>1?l:1)|0}function mr(o,l){o=o|0,l=l|0;var u=0;e:do if((l|0)==2){switch(o|0){case 2:{o=3;break e}case 3:break;default:{u=4;break e}}o=2}else u=4;while(!1);return o|0}function vr(o,l){o=o|0,l=l|0;var u=$e;return de(l)|0&&n[o+312>>2]|0&&(u=y(h[o+308>>2]),u>=y(0))||(u=y(ni(y(h[(Rn(o+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function Hn(o,l){o=o|0,l=l|0;var u=$e;return de(l)|0&&n[o+320>>2]|0&&(u=y(h[o+316>>2]),u>=y(0))||(u=y(ni(y(h[(Rn(o+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function yi(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return de(l)|0&&n[o+240>>2]|0&&(A=y($r(o+236|0,u)),A>=y(0))||(A=y(ni(y($r(Rn(o+204|0,n[1040+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function Ss(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return de(l)|0&&n[o+248>>2]|0&&(A=y($r(o+244|0,u)),A>=y(0))||(A=y(ni(y($r(Rn(o+204|0,n[1e3+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function ZA(o,l,u,A,g,m,B){o=o|0,l=y(l),u=y(u),A=A|0,g=g|0,m=y(m),B=y(B);var k=$e,T=$e,M=$e,L=$e,q=$e,oe=$e,Ve=0,Le=0,Re=0;Re=I,I=I+16|0,Ve=Re,Le=o+964|0,vi(o,(n[Le>>2]|0)!=0,3519),k=y(rl(o,2,l)),T=y(rl(o,0,l)),M=y(In(o,2,l)),L=y(In(o,0,l)),Ut(l)|0?q=l:q=y(ni(y(0),y(y(l-M)-k))),Ut(u)|0?oe=u:oe=y(ni(y(0),y(y(u-L)-T))),(A|0)==1&(g|0)==1?(h[o+908>>2]=y(Wn(o,2,y(l-M),m,m)),l=y(Wn(o,0,y(u-L),B,m))):(wX[n[Le>>2]&1](Ve,o,q,A,oe,g),q=y(k+y(h[Ve>>2])),oe=y(l-M),h[o+908>>2]=y(Wn(o,2,(A|2|0)==2?q:oe,m,m)),oe=y(T+y(h[Ve+4>>2])),l=y(u-L),l=y(Wn(o,0,(g|2|0)==2?oe:l,B,m))),h[o+912>>2]=l,I=Re}function hP(o,l,u,A,g,m,B){o=o|0,l=y(l),u=y(u),A=A|0,g=g|0,m=y(m),B=y(B);var k=$e,T=$e,M=$e,L=$e;M=y(rl(o,2,m)),k=y(rl(o,0,m)),L=y(In(o,2,m)),T=y(In(o,0,m)),l=y(l-L),h[o+908>>2]=y(Wn(o,2,(A|2|0)==2?M:l,m,m)),u=y(u-T),h[o+912>>2]=y(Wn(o,0,(g|2|0)==2?k:u,B,m))}function $1(o,l,u,A,g,m,B){o=o|0,l=y(l),u=y(u),A=A|0,g=g|0,m=y(m),B=y(B);var k=0,T=$e,M=$e;return k=(A|0)==2,!(l<=y(0)&k)&&!(u<=y(0)&(g|0)==2)&&!((A|0)==1&(g|0)==1)?o=0:(T=y(In(o,0,m)),M=y(In(o,2,m)),k=l>2]=y(Wn(o,2,k?y(0):l,m,m)),l=y(u-T),k=u>2]=y(Wn(o,0,k?y(0):l,B,m)),o=1),o|0}function Ry(o,l){return o=o|0,l=l|0,Jg(o)|0?o=mr(2,l)|0:o=0,o|0}function Qh(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(yi(o,l,u)),y(u+y(vr(o,l)))}function e2(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(Ss(o,l,u)),y(u+y(Hn(o,l)))}function rl(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(Qh(o,l,u)),y(A+y(e2(o,l,u)))}function t2(o){return o=o|0,n[o+24>>2]|0?o=0:y(XA(o))!=y(0)?o=1:o=y(Th(o))!=y(0),o|0}function XA(o){o=o|0;var l=$e;if(n[o+944>>2]|0){if(l=y(h[o+44>>2]),Ut(l)|0)return l=y(h[o+40>>2]),o=l>y(0)&((Ut(l)|0)^1),y(o?l:y(0))}else l=y(0);return y(l)}function Th(o){o=o|0;var l=$e,u=0,A=$e;do if(n[o+944>>2]|0){if(l=y(h[o+48>>2]),Ut(l)|0){if(u=s[(n[o+976>>2]|0)+2>>0]|0,!(u<<24>>24)&&(A=y(h[o+40>>2]),A>24?y(1):y(0)}}else l=y(0);while(!1);return y(l)}function Fy(o){o=o|0;var l=0,u=0;if(oE(o+400|0,0,540)|0,s[o+985>>0]=1,te(o),u=Mi(o)|0,u|0){l=o+948|0,o=0;do Fy(n[(n[l>>2]|0)+(o<<2)>>2]|0),o=o+1|0;while((o|0)!=(u|0))}}function dP(o,l,u,A,g,m,B,k,T,M){o=o|0,l=l|0,u=y(u),A=A|0,g=y(g),m=y(m),B=y(B),k=k|0,T=T|0,M=M|0;var L=0,q=$e,oe=0,Ve=0,Le=$e,Re=$e,nt=0,Xe=$e,At=0,He=$e,We=0,Mt=0,qr=0,fr=0,$t=0,Fr=0,jr=0,cr=0,Gn=0,Uo=0;Gn=I,I=I+16|0,qr=Gn+12|0,fr=Gn+8|0,$t=Gn+4|0,Fr=Gn,cr=mr(n[o+4>>2]|0,T)|0,We=de(cr)|0,q=y($r(ML(l)|0,We?m:B)),Mt=Ao(l,2,m)|0,jr=Ao(l,0,B)|0;do if(!(Ut(q)|0)&&!(Ut(We?u:g)|0)){if(L=l+504|0,!(Ut(y(h[L>>2]))|0)&&(!(n2(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[L>>2]=y(ni(q,y(rl(l,cr,m))))}else oe=7;while(!1);do if((oe|0)==7){if(At=We^1,!(At|Mt^1)){B=y($r(n[l+992>>2]|0,m)),h[l+504>>2]=y(ni(B,y(rl(l,2,m))));break}if(!(We|jr^1)){B=y($r(n[l+996>>2]|0,B)),h[l+504>>2]=y(ni(B,y(rl(l,0,m))));break}h[qr>>2]=y(le),h[fr>>2]=y(le),n[$t>>2]=0,n[Fr>>2]=0,Xe=y(In(l,2,m)),He=y(In(l,0,m)),Mt?(Le=y(Xe+y($r(n[l+992>>2]|0,m))),h[qr>>2]=Le,n[$t>>2]=1,Ve=1):(Ve=0,Le=y(le)),jr?(q=y(He+y($r(n[l+996>>2]|0,B))),h[fr>>2]=q,n[Fr>>2]=1,L=1):(L=0,q=y(le)),oe=n[o+32>>2]|0,We&(oe|0)==2?oe=2:Ut(Le)|0&&!(Ut(u)|0)&&(h[qr>>2]=u,n[$t>>2]=2,Ve=2,Le=u),!((oe|0)==2&At)&&Ut(q)|0&&!(Ut(g)|0)&&(h[fr>>2]=g,n[Fr>>2]=2,L=2,q=g),Re=y(h[l+396>>2]),nt=Ut(Re)|0;do if(nt)oe=Ve;else{if((Ve|0)==1&At){h[fr>>2]=y(y(Le-Xe)/Re),n[Fr>>2]=1,L=1,oe=1;break}We&(L|0)==1?(h[qr>>2]=y(Re*y(q-He)),n[$t>>2]=1,L=1,oe=1):oe=Ve}while(!1);Uo=Ut(u)|0,Ve=(ls(o,l)|0)!=4,!(We|Mt|((A|0)!=1|Uo)|(Ve|(oe|0)==1))&&(h[qr>>2]=u,n[$t>>2]=1,!nt)&&(h[fr>>2]=y(y(u-Xe)/Re),n[Fr>>2]=1,L=1),!(jr|At|((k|0)!=1|(Ut(g)|0))|(Ve|(L|0)==1))&&(h[fr>>2]=g,n[Fr>>2]=1,!nt)&&(h[qr>>2]=y(Re*y(g-He)),n[$t>>2]=1),Iu(l,2,m,m,$t,qr),Iu(l,0,B,m,Fr,fr),u=y(h[qr>>2]),g=y(h[fr>>2]),Ll(l,u,g,T,n[$t>>2]|0,n[Fr>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(cr<<2)>>2]<<2)>>2]),h[l+504>>2]=y(ni(B,y(rl(l,cr,m))))}while(!1);n[l+500>>2]=n[2278],I=Gn}function Wn(o,l,u,A,g){return o=o|0,l=l|0,u=y(u),A=y(A),g=y(g),A=y(Kg(o,l,u,A)),y(ni(A,y(rl(o,l,g))))}function ls(o,l){return o=o|0,l=l|0,l=l+20|0,l=n[(n[l>>2]|0?l:o+16|0)>>2]|0,(l|0)==5&&Jg(n[o+4>>2]|0)|0&&(l=1),l|0}function Ml(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+96>>2]|0?l=4:l=n[1040+(l<<2)>>2]|0,o+60+(l<<3)|0}function Ul(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+104>>2]|0?l=5:l=n[1e3+(l<<2)>>2]|0,o+60+(l<<3)|0}function Iu(o,l,u,A,g,m){switch(o=o|0,l=l|0,u=y(u),A=y(A),g=g|0,m=m|0,u=y($r(o+380+(n[976+(l<<2)>>2]<<3)|0,u)),u=y(u+y(In(o,l,A))),n[g>>2]|0){case 2:case 1:{g=Ut(u)|0,A=y(h[m>>2]),h[m>>2]=g|A>2]=2,h[m>>2]=u);break}default:}}function Ia(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(Rn(o,4,948)|0)+4>>2]|0?o=1:o=(n[(Rn(o,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function $A(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0;return o=o+132|0,de(l)|0&&(A=Rn(o,4,948)|0,(n[A+4>>2]|0)!=0)?g=4:(A=Rn(o,n[1040+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?g=4:u=y(0)),(g|0)==4&&(u=y($r(A,u))),y(u)}function ep(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),A=y(A+y(J(o,l,u))),y(A+y(re(o,l,u)))}function NL(o){o=o|0;var l=0,u=0,A=0;e:do if(Jg(n[o+4>>2]|0)|0)l=0;else if((n[o+16>>2]|0)!=5)if(u=Mi(o)|0,!u)l=0;else for(l=0;;){if(A=vs(o,l)|0,!(n[A+24>>2]|0)&&(n[A+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=u>>>0){l=0;break}}else l=1;while(!1);return l|0}function OL(o,l){o=o|0,l=l|0;var u=$e;return u=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),u>=y(0)&((Ut(u)|0)^1)|0}function Vg(o){o=o|0;var l=$e,u=0,A=0,g=0,m=0,B=0,k=0,T=$e;if(u=n[o+968>>2]|0,u)T=y(h[o+908>>2]),l=y(h[o+912>>2]),l=y(mX[u&0](o,T,l)),vi(o,(Ut(l)|0)^1,3573);else{m=Mi(o)|0;do if(m|0){for(u=0,g=0;;){if(A=vs(o,g)|0,n[A+940>>2]|0){B=8;break}if((n[A+24>>2]|0)!=1)if(k=(ls(o,A)|0)==5,k){u=A;break}else u=u|0?u:A;if(g=g+1|0,g>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!u)break;return l=y(Vg(u)),y(l+y(h[u+404>>2]))}while(!1);l=y(h[o+912>>2])}return y(l)}function Kg(o,l,u,A){o=o|0,l=l|0,u=y(u),A=y(A);var g=$e,m=0;return Jg(l)|0?(l=1,m=3):de(l)|0?(l=0,m=3):(A=y(le),g=y(le)),(m|0)==3&&(g=y($r(o+364+(l<<3)|0,A)),A=y($r(o+380+(l<<3)|0,A))),m=A=y(0)&((Ut(A)|0)^1)),u=m?A:u,m=g>=y(0)&((Ut(g)|0)^1)&u>2]|0,m)|0,Le=Ry(nt,m)|0,Re=de(nt)|0,q=y(In(l,2,u)),oe=y(In(l,0,u)),Ao(l,2,u)|0?k=y(q+y($r(n[l+992>>2]|0,u))):Ia(l,2)|0&&Ny(l,2)|0?(k=y(h[o+908>>2]),T=y(vr(o,2)),T=y(k-y(T+y(Hn(o,2)))),k=y($A(l,2,u)),k=y(Wn(l,2,y(T-y(k+y(Rh(l,2,u)))),u,u))):k=y(le),Ao(l,0,g)|0?T=y(oe+y($r(n[l+996>>2]|0,g))):Ia(l,0)|0&&Ny(l,0)|0?(T=y(h[o+912>>2]),At=y(vr(o,0)),At=y(T-y(At+y(Hn(o,0)))),T=y($A(l,0,g)),T=y(Wn(l,0,y(At-y(T+y(Rh(l,0,g)))),g,u))):T=y(le),M=Ut(k)|0,L=Ut(T)|0;do if(M^L&&(Ve=y(h[l+396>>2]),!(Ut(Ve)|0)))if(M){k=y(q+y(y(T-oe)*Ve));break}else{At=y(oe+y(y(k-q)/Ve)),T=L?At:T;break}while(!1);L=Ut(k)|0,M=Ut(T)|0,L|M&&(He=(L^1)&1,A=u>y(0)&((A|0)!=0&L),k=Re?k:A?u:k,Ll(l,k,T,m,Re?He:A?2:He,L&(M^1)&1,k,T,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(In(l,2,u))),T=y(h[l+912>>2]),T=y(T+y(In(l,0,u)))),Ll(l,k,T,m,1,1,k,T,1,3635,B)|0,Ny(l,nt)|0&&!(Ia(l,nt)|0)?(He=n[976+(nt<<2)>>2]|0,At=y(h[o+908+(He<<2)>>2]),At=y(At-y(h[l+908+(He<<2)>>2])),At=y(At-y(Hn(o,nt))),At=y(At-y(re(l,nt,u))),At=y(At-y(Rh(l,nt,Re?u:g))),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=At):Xe=21;do if((Xe|0)==21){if(!(Ia(l,nt)|0)&&(n[o+8>>2]|0)==1){He=n[976+(nt<<2)>>2]|0,At=y(h[o+908+(He<<2)>>2]),At=y(y(At-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=At;break}!(Ia(l,nt)|0)&&(n[o+8>>2]|0)==2&&(He=n[976+(nt<<2)>>2]|0,At=y(h[o+908+(He<<2)>>2]),At=y(At-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=At)}while(!1);Ny(l,Le)|0&&!(Ia(l,Le)|0)?(He=n[976+(Le<<2)>>2]|0,At=y(h[o+908+(He<<2)>>2]),At=y(At-y(h[l+908+(He<<2)>>2])),At=y(At-y(Hn(o,Le))),At=y(At-y(re(l,Le,u))),At=y(At-y(Rh(l,Le,Re?g:u))),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=At):Xe=30;do if((Xe|0)==30&&!(Ia(l,Le)|0)){if((ls(o,l)|0)==2){He=n[976+(Le<<2)>>2]|0,At=y(h[o+908+(He<<2)>>2]),At=y(y(At-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=At;break}He=(ls(o,l)|0)==3,He^(n[o+28>>2]|0)==2&&(He=n[976+(Le<<2)>>2]|0,At=y(h[o+908+(He<<2)>>2]),At=y(At-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=At)}while(!1)}function r2(o,l,u){o=o|0,l=l|0,u=u|0;var A=$e,g=0;g=n[976+(u<<2)>>2]|0,A=y(h[l+908+(g<<2)>>2]),A=y(y(h[o+908+(g<<2)>>2])-A),A=y(A-y(h[l+400+(n[1040+(u<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(u<<2)>>2]<<2)>>2]=A}function Jg(o){return o=o|0,(o|1|0)==1|0}function ML(o){o=o|0;var l=$e;switch(n[o+56>>2]|0){case 0:case 3:{l=y(h[o+40>>2]),l>y(0)&((Ut(l)|0)^1)?o=s[(n[o+976>>2]|0)+2>>0]|0?1056:992:o=1056;break}default:o=o+52|0}return o|0}function n2(o,l){return o=o|0,l=l|0,(s[o+l>>0]|0)!=0|0}function Ny(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(Rn(o,5,948)|0)+4>>2]|0?o=1:o=(n[(Rn(o,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function Rh(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0;return o=o+132|0,de(l)|0&&(A=Rn(o,5,948)|0,(n[A+4>>2]|0)!=0)?g=4:(A=Rn(o,n[1e3+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?g=4:u=y(0)),(g|0)==4&&(u=y($r(A,u))),y(u)}function gP(o,l,u){return o=o|0,l=l|0,u=y(u),Ia(o,l)|0?u=y($A(o,l,u)):u=y(-y(Rh(o,l,u))),y(u)}function mP(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function Oy(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Ot();else{g=Jt(l<<2)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<2)}function yP(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>2)<<2)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Ly(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function EP(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;if(B=o+4|0,k=n[B>>2]|0,g=k-A|0,m=g>>2,o=l+(m<<2)|0,o>>>0>>0){A=k;do n[A>>2]=n[o>>2],o=o+4|0,A=(n[B>>2]|0)+4|0,n[B>>2]=A;while(o>>>0>>0)}m|0&&x2(k+(0-m<<2)|0,l|0,g|0)|0}function IP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0;return k=l+4|0,T=n[k>>2]|0,g=n[o>>2]|0,B=u,m=B-g|0,A=T+(0-(m>>2)<<2)|0,n[k>>2]=A,(m|0)>0&&Rr(A|0,g|0,m|0)|0,g=o+4|0,m=l+8|0,A=(n[g>>2]|0)-B|0,(A|0)>0&&(Rr(n[m>>2]|0,u|0,A|0)|0,n[m>>2]=(n[m>>2]|0)+(A>>>2<<2)),B=n[o>>2]|0,n[o>>2]=n[k>>2],n[k>>2]=B,B=n[g>>2]|0,n[g>>2]=n[m>>2],n[m>>2]=B,B=o+8|0,u=l+12|0,o=n[B>>2]|0,n[B>>2]=n[u>>2],n[u>>2]=o,n[l>>2]=n[k>>2],T|0}function i2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;if(B=n[l>>2]|0,m=n[u>>2]|0,(B|0)!=(m|0)){g=o+8|0,u=((m+-4-B|0)>>>2)+1|0,o=B,A=n[g>>2]|0;do n[A>>2]=n[o>>2],A=(n[g>>2]|0)+4|0,n[g>>2]=A,o=o+4|0;while((o|0)!=(m|0));n[l>>2]=B+(u<<2)}}function s2(){ga()}function CP(){var o=0;return o=Jt(4)|0,o2(o),o|0}function o2(o){o=o|0,n[o>>2]=dc()|0}function wP(o){o=o|0,o|0&&(zg(o),It(o))}function zg(o){o=o|0,at(n[o>>2]|0)}function UL(o,l,u){o=o|0,l=l|0,u=u|0,gc(n[o>>2]|0,l,u)}function My(o,l){o=o|0,l=y(l),Dh(n[o>>2]|0,l)}function Uy(o,l){return o=o|0,l=l|0,n2(n[o>>2]|0,l)|0}function _y(){var o=0;return o=Jt(8)|0,Zg(o,0),o|0}function Zg(o,l){o=o|0,l=l|0,l?l=ma(n[l>>2]|0)|0:l=ss()|0,n[o>>2]=l,n[o+4>>2]=0,Nn(l,o)}function Hy(o){o=o|0;var l=0;return l=Jt(8)|0,Zg(l,o),l|0}function Xg(o){o=o|0,o|0&&(jy(o),It(o))}function jy(o){o=o|0;var l=0;pc(n[o>>2]|0),l=o+4|0,o=n[l>>2]|0,n[l>>2]=0,o|0&&(Pf(o),It(o))}function Pf(o){o=o|0,xf(o)}function xf(o){o=o|0,o=n[o>>2]|0,o|0&&Ya(o|0)}function a2(o){return o=o|0,Xa(o)|0}function l2(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Pf(l),It(l)),hc(n[o>>2]|0)}function Gy(o,l){o=o|0,l=l|0,pn(n[o>>2]|0,n[l>>2]|0)}function _L(o,l){o=o|0,l=l|0,Bh(n[o>>2]|0,l)}function HL(o,l,u){o=o|0,l=l|0,u=+u,Dy(n[o>>2]|0,l,y(u))}function qy(o,l,u){o=o|0,l=l|0,u=+u,Py(n[o>>2]|0,l,y(u))}function c2(o,l){o=o|0,l=l|0,Ih(n[o>>2]|0,l)}function u2(o,l){o=o|0,l=l|0,To(n[o>>2]|0,l)}function xr(o,l){o=o|0,l=l|0,wh(n[o>>2]|0,l)}function po(o,l){o=o|0,l=l|0,By(n[o>>2]|0,l)}function Zi(o,l){o=o|0,l=l|0,Og(n[o>>2]|0,l)}function Ms(o,l){o=o|0,l=l|0,Qo(n[o>>2]|0,l)}function tp(o,l,u){o=o|0,l=l|0,u=+u,qA(n[o>>2]|0,l,y(u))}function f2(o,l,u){o=o|0,l=l|0,u=+u,W(n[o>>2]|0,l,y(u))}function bs(o,l){o=o|0,l=l|0,YA(n[o>>2]|0,l)}function Yy(o,l){o=o|0,l=l|0,Sy(n[o>>2]|0,l)}function Fh(o,l){o=o|0,l=l|0,Ro(n[o>>2]|0,l)}function $g(o,l){o=o|0,l=+l,vh(n[o>>2]|0,y(l))}function Nh(o,l){o=o|0,l=+l,Nl(n[o>>2]|0,y(l))}function A2(o,l){o=o|0,l=+l,by(n[o>>2]|0,y(l))}function p2(o,l){o=o|0,l=+l,Mg(n[o>>2]|0,y(l))}function h2(o,l){o=o|0,l=+l,Fl(n[o>>2]|0,y(l))}function d2(o,l){o=o|0,l=+l,Ug(n[o>>2]|0,y(l))}function kf(o,l){o=o|0,l=+l,X1(n[o>>2]|0,y(l))}function sr(o){o=o|0,Sh(n[o>>2]|0)}function Wy(o,l){o=o|0,l=+l,zi(n[o>>2]|0,y(l))}function g2(o,l){o=o|0,l=+l,Cf(n[o>>2]|0,y(l))}function mc(o){o=o|0,$a(n[o>>2]|0)}function Qf(o,l){o=o|0,l=+l,du(n[o>>2]|0,y(l))}function e0(o,l){o=o|0,l=+l,wf(n[o>>2]|0,y(l))}function t0(o,l){o=o|0,l=+l,mi(n[o>>2]|0,y(l))}function m2(o,l){o=o|0,l=+l,WA(n[o>>2]|0,y(l))}function y2(o,l){o=o|0,l=+l,ya(n[o>>2]|0,y(l))}function Cu(o,l){o=o|0,l=+l,tl(n[o>>2]|0,y(l))}function r0(o,l){o=o|0,l=+l,bh(n[o>>2]|0,y(l))}function E2(o,l){o=o|0,l=+l,jg(n[o>>2]|0,y(l))}function Vy(o,l){o=o|0,l=+l,VA(n[o>>2]|0,y(l))}function wu(o,l,u){o=o|0,l=l|0,u=+u,hu(n[o>>2]|0,l,y(u))}function Ky(o,l,u){o=o|0,l=l|0,u=+u,Fo(n[o>>2]|0,l,y(u))}function n0(o,l,u){o=o|0,l=l|0,u=+u,If(n[o>>2]|0,l,y(u))}function i0(o){return o=o|0,Ng(n[o>>2]|0)|0}function Lo(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;A=I,I=I+16|0,g=A,GA(g,n[l>>2]|0,u),Ds(o,g),I=A}function Ds(o,l){o=o|0,l=l|0,_l(o,n[l+4>>2]|0,+y(h[l>>2]))}function _l(o,l,u){o=o|0,l=l|0,u=+u,n[o>>2]=l,E[o+8>>3]=u}function Jy(o){return o=o|0,Z1(n[o>>2]|0)|0}function Ca(o){return o=o|0,Ch(n[o>>2]|0)|0}function BP(o){return o=o|0,pu(n[o>>2]|0)|0}function Oh(o){return o=o|0,z1(n[o>>2]|0)|0}function I2(o){return o=o|0,Lg(n[o>>2]|0)|0}function jL(o){return o=o|0,vy(n[o>>2]|0)|0}function vP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;A=I,I=I+16|0,g=A,xt(g,n[l>>2]|0,u),Ds(o,g),I=A}function SP(o){return o=o|0,Ef(n[o>>2]|0)|0}function zy(o){return o=o|0,Rl(n[o>>2]|0)|0}function C2(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,jA(A,n[l>>2]|0),Ds(o,A),I=u}function Lh(o){return o=o|0,+ +y(ui(n[o>>2]|0))}function bP(o){return o=o|0,+ +y(qi(n[o>>2]|0))}function DP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ur(A,n[l>>2]|0),Ds(o,A),I=u}function s0(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,_g(A,n[l>>2]|0),Ds(o,A),I=u}function qL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Bt(A,n[l>>2]|0),Ds(o,A),I=u}function YL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,el(A,n[l>>2]|0),Ds(o,A),I=u}function PP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Hg(A,n[l>>2]|0),Ds(o,A),I=u}function xP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ky(A,n[l>>2]|0),Ds(o,A),I=u}function rp(o){return o=o|0,+ +y(Gg(n[o>>2]|0))}function WL(o,l){return o=o|0,l=l|0,+ +y(xy(n[o>>2]|0,l))}function VL(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;A=I,I=I+16|0,g=A,yt(g,n[l>>2]|0,u),Ds(o,g),I=A}function Bu(o,l,u){o=o|0,l=l|0,u=u|0,lr(n[o>>2]|0,n[l>>2]|0,u)}function KL(o,l){o=o|0,l=l|0,yf(n[o>>2]|0,n[l>>2]|0)}function kP(o){return o=o|0,Mi(n[o>>2]|0)|0}function JL(o){return o=o|0,o=Et(n[o>>2]|0)|0,o?o=a2(o)|0:o=0,o|0}function QP(o,l){return o=o|0,l=l|0,o=vs(n[o>>2]|0,l)|0,o?o=a2(o)|0:o=0,o|0}function Tf(o,l){o=o|0,l=l|0;var u=0,A=0;A=Jt(4)|0,TP(A,l),u=o+4|0,l=n[u>>2]|0,n[u>>2]=A,l|0&&(Pf(l),It(l)),St(n[o>>2]|0,1)}function TP(o,l){o=o|0,l=l|0,$L(o,l)}function zL(o,l,u,A,g,m){o=o|0,l=l|0,u=y(u),A=A|0,g=y(g),m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,RP(k,Xa(l)|0,+u,A,+g,m),h[o>>2]=y(+E[k>>3]),h[o+4>>2]=y(+E[k+8>>3]),I=B}function RP(o,l,u,A,g,m){o=o|0,l=l|0,u=+u,A=A|0,g=+g,m=m|0;var B=0,k=0,T=0,M=0,L=0;B=I,I=I+32|0,L=B+8|0,M=B+20|0,T=B,k=B+16|0,E[L>>3]=u,n[M>>2]=A,E[T>>3]=g,n[k>>2]=m,Zy(o,n[l+4>>2]|0,L,M,T,k),I=B}function Zy(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,jl(k),l=Us(l)|0,FP(o,l,+E[u>>3],n[A>>2]|0,+E[g>>3],n[m>>2]|0),Gl(k),I=B}function Us(o){return o=o|0,n[o>>2]|0}function FP(o,l,u,A,g,m){o=o|0,l=l|0,u=+u,A=A|0,g=+g,m=m|0;var B=0;B=wa(w2()|0)|0,u=+nl(u),A=Xy(A)|0,g=+nl(g),ZL(o,Xn(0,B|0,l|0,+u,A|0,+g,Xy(m)|0)|0)}function w2(){var o=0;return s[7608]|0||(v2(9120),o=7608,n[o>>2]=1,n[o+4>>2]=0),9120}function wa(o){return o=o|0,n[o+8>>2]|0}function nl(o){return o=+o,+ +Rf(o)}function Xy(o){return o=o|0,o0(o)|0}function ZL(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;g=I,I=I+32|0,u=g,A=l,A&1?(il(u,0),qa(A|0,u|0)|0,B2(o,u),XL(u)):(n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]),I=g}function il(o,l){o=o|0,l=l|0,vu(o,l),n[o+8>>2]=0,s[o+24>>0]=0}function B2(o,l){o=o|0,l=l|0,l=l+8|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]}function XL(o){o=o|0,s[o+24>>0]=0}function vu(o,l){o=o|0,l=l|0,n[o>>2]=l}function o0(o){return o=o|0,o|0}function Rf(o){return o=+o,+o}function v2(o){o=o|0,Mo(o,S2()|0,4)}function S2(){return 1064}function Mo(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=Gi(l|0,u+1|0)|0}function $L(o,l){o=o|0,l=l|0,l=n[l>>2]|0,n[o>>2]=l,au(l|0)}function NP(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Pf(l),It(l)),St(n[o>>2]|0,0)}function OP(o){o=o|0,Dt(n[o>>2]|0)}function $y(o){return o=o|0,tr(n[o>>2]|0)|0}function eM(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,JA(n[o>>2]|0,y(l),y(u),A)}function tM(o){return o=o|0,+ +y(gu(n[o>>2]|0))}function v(o){return o=o|0,+ +y(Bf(n[o>>2]|0))}function b(o){return o=o|0,+ +y(mu(n[o>>2]|0))}function Q(o){return o=o|0,+ +y(Os(n[o>>2]|0))}function j(o){return o=o|0,+ +y(yu(n[o>>2]|0))}function V(o){return o=o|0,+ +y(Yn(n[o>>2]|0))}function ne(o,l){o=o|0,l=l|0,E[o>>3]=+y(gu(n[l>>2]|0)),E[o+8>>3]=+y(Bf(n[l>>2]|0)),E[o+16>>3]=+y(mu(n[l>>2]|0)),E[o+24>>3]=+y(Os(n[l>>2]|0)),E[o+32>>3]=+y(yu(n[l>>2]|0)),E[o+40>>3]=+y(Yn(n[l>>2]|0))}function Be(o,l){return o=o|0,l=l|0,+ +y(os(n[o>>2]|0,l))}function _e(o,l){return o=o|0,l=l|0,+ +y(xi(n[o>>2]|0,l))}function ht(o,l){return o=o|0,l=l|0,+ +y(KA(n[o>>2]|0,l))}function Wt(){return Fn()|0}function Sr(){Mr(),Xt(),$n(),Ei(),sl(),rt()}function Mr(){IUe(11713,4938,1)}function Xt(){UMe(10448)}function $n(){IMe(10408)}function Ei(){GLe(10324)}function sl(){ZNe(10096)}function rt(){Ye(9132)}function Ye(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Re=0,nt=0,Xe=0,At=0,He=0,We=0,Mt=0,qr=0,fr=0,$t=0,Fr=0,jr=0,cr=0,Gn=0,Uo=0,_o=0,Ho=0,al=0,Wh=0,Vh=0,yc=0,Kh=0,Of=0,Lf=0,Jh=0,zh=0,Zh=0,ln=0,Ec=0,Xh=0,Du=0,$h=0,ed=0,Mf=0,Uf=0,Pu=0,ho=0,Yl=0,Ba=0,Ic=0,cp=0,up=0,_f=0,fp=0,Ap=0,go=0,Hs=0,Cc=0,Vn=0,pp=0,jo=0,xu=0,Go=0,ku=0,hp=0,dp=0,Qu=0,mo=0,wc=0,gp=0,mp=0,yp=0,Or=0,Ai=0,js=0,qo=0,yo=0,Ur=0,Ar=0,Bc=0;l=I,I=I+672|0,u=l+656|0,Bc=l+648|0,Ar=l+640|0,Ur=l+632|0,yo=l+624|0,qo=l+616|0,js=l+608|0,Ai=l+600|0,Or=l+592|0,yp=l+584|0,mp=l+576|0,gp=l+568|0,wc=l+560|0,mo=l+552|0,Qu=l+544|0,dp=l+536|0,hp=l+528|0,ku=l+520|0,Go=l+512|0,xu=l+504|0,jo=l+496|0,pp=l+488|0,Vn=l+480|0,Cc=l+472|0,Hs=l+464|0,go=l+456|0,Ap=l+448|0,fp=l+440|0,_f=l+432|0,up=l+424|0,cp=l+416|0,Ic=l+408|0,Ba=l+400|0,Yl=l+392|0,ho=l+384|0,Pu=l+376|0,Uf=l+368|0,Mf=l+360|0,ed=l+352|0,$h=l+344|0,Du=l+336|0,Xh=l+328|0,Ec=l+320|0,ln=l+312|0,Zh=l+304|0,zh=l+296|0,Jh=l+288|0,Lf=l+280|0,Of=l+272|0,Kh=l+264|0,yc=l+256|0,Vh=l+248|0,Wh=l+240|0,al=l+232|0,Ho=l+224|0,_o=l+216|0,Uo=l+208|0,Gn=l+200|0,cr=l+192|0,jr=l+184|0,Fr=l+176|0,$t=l+168|0,fr=l+160|0,qr=l+152|0,Mt=l+144|0,We=l+136|0,He=l+128|0,At=l+120|0,Xe=l+112|0,nt=l+104|0,Re=l+96|0,Le=l+88|0,Ve=l+80|0,oe=l+72|0,q=l+64|0,L=l+56|0,M=l+48|0,T=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,g=l+8|0,A=l,gt(o,3646),Zt(o,3651,2)|0,br(o,3665,2)|0,ri(o,3682,18)|0,n[Bc>>2]=19,n[Bc+4>>2]=0,n[u>>2]=n[Bc>>2],n[u+4>>2]=n[Bc+4>>2],Tr(o,3690,u)|0,n[Ar>>2]=1,n[Ar+4>>2]=0,n[u>>2]=n[Ar>>2],n[u+4>>2]=n[Ar+4>>2],On(o,3696,u)|0,n[Ur>>2]=2,n[Ur+4>>2]=0,n[u>>2]=n[Ur>>2],n[u+4>>2]=n[Ur+4>>2],jn(o,3706,u)|0,n[yo>>2]=1,n[yo+4>>2]=0,n[u>>2]=n[yo>>2],n[u+4>>2]=n[yo+4>>2],Zr(o,3722,u)|0,n[qo>>2]=2,n[qo+4>>2]=0,n[u>>2]=n[qo>>2],n[u+4>>2]=n[qo+4>>2],Zr(o,3734,u)|0,n[js>>2]=3,n[js+4>>2]=0,n[u>>2]=n[js>>2],n[u+4>>2]=n[js+4>>2],jn(o,3753,u)|0,n[Ai>>2]=4,n[Ai+4>>2]=0,n[u>>2]=n[Ai>>2],n[u+4>>2]=n[Ai+4>>2],jn(o,3769,u)|0,n[Or>>2]=5,n[Or+4>>2]=0,n[u>>2]=n[Or>>2],n[u+4>>2]=n[Or+4>>2],jn(o,3783,u)|0,n[yp>>2]=6,n[yp+4>>2]=0,n[u>>2]=n[yp>>2],n[u+4>>2]=n[yp+4>>2],jn(o,3796,u)|0,n[mp>>2]=7,n[mp+4>>2]=0,n[u>>2]=n[mp>>2],n[u+4>>2]=n[mp+4>>2],jn(o,3813,u)|0,n[gp>>2]=8,n[gp+4>>2]=0,n[u>>2]=n[gp>>2],n[u+4>>2]=n[gp+4>>2],jn(o,3825,u)|0,n[wc>>2]=3,n[wc+4>>2]=0,n[u>>2]=n[wc>>2],n[u+4>>2]=n[wc+4>>2],Zr(o,3843,u)|0,n[mo>>2]=4,n[mo+4>>2]=0,n[u>>2]=n[mo>>2],n[u+4>>2]=n[mo+4>>2],Zr(o,3853,u)|0,n[Qu>>2]=9,n[Qu+4>>2]=0,n[u>>2]=n[Qu>>2],n[u+4>>2]=n[Qu+4>>2],jn(o,3870,u)|0,n[dp>>2]=10,n[dp+4>>2]=0,n[u>>2]=n[dp>>2],n[u+4>>2]=n[dp+4>>2],jn(o,3884,u)|0,n[hp>>2]=11,n[hp+4>>2]=0,n[u>>2]=n[hp>>2],n[u+4>>2]=n[hp+4>>2],jn(o,3896,u)|0,n[ku>>2]=1,n[ku+4>>2]=0,n[u>>2]=n[ku>>2],n[u+4>>2]=n[ku+4>>2],fi(o,3907,u)|0,n[Go>>2]=2,n[Go+4>>2]=0,n[u>>2]=n[Go>>2],n[u+4>>2]=n[Go+4>>2],fi(o,3915,u)|0,n[xu>>2]=3,n[xu+4>>2]=0,n[u>>2]=n[xu>>2],n[u+4>>2]=n[xu+4>>2],fi(o,3928,u)|0,n[jo>>2]=4,n[jo+4>>2]=0,n[u>>2]=n[jo>>2],n[u+4>>2]=n[jo+4>>2],fi(o,3948,u)|0,n[pp>>2]=5,n[pp+4>>2]=0,n[u>>2]=n[pp>>2],n[u+4>>2]=n[pp+4>>2],fi(o,3960,u)|0,n[Vn>>2]=6,n[Vn+4>>2]=0,n[u>>2]=n[Vn>>2],n[u+4>>2]=n[Vn+4>>2],fi(o,3974,u)|0,n[Cc>>2]=7,n[Cc+4>>2]=0,n[u>>2]=n[Cc>>2],n[u+4>>2]=n[Cc+4>>2],fi(o,3983,u)|0,n[Hs>>2]=20,n[Hs+4>>2]=0,n[u>>2]=n[Hs>>2],n[u+4>>2]=n[Hs+4>>2],Tr(o,3999,u)|0,n[go>>2]=8,n[go+4>>2]=0,n[u>>2]=n[go>>2],n[u+4>>2]=n[go+4>>2],fi(o,4012,u)|0,n[Ap>>2]=9,n[Ap+4>>2]=0,n[u>>2]=n[Ap>>2],n[u+4>>2]=n[Ap+4>>2],fi(o,4022,u)|0,n[fp>>2]=21,n[fp+4>>2]=0,n[u>>2]=n[fp>>2],n[u+4>>2]=n[fp+4>>2],Tr(o,4039,u)|0,n[_f>>2]=10,n[_f+4>>2]=0,n[u>>2]=n[_f>>2],n[u+4>>2]=n[_f+4>>2],fi(o,4053,u)|0,n[up>>2]=11,n[up+4>>2]=0,n[u>>2]=n[up>>2],n[u+4>>2]=n[up+4>>2],fi(o,4065,u)|0,n[cp>>2]=12,n[cp+4>>2]=0,n[u>>2]=n[cp>>2],n[u+4>>2]=n[cp+4>>2],fi(o,4084,u)|0,n[Ic>>2]=13,n[Ic+4>>2]=0,n[u>>2]=n[Ic>>2],n[u+4>>2]=n[Ic+4>>2],fi(o,4097,u)|0,n[Ba>>2]=14,n[Ba+4>>2]=0,n[u>>2]=n[Ba>>2],n[u+4>>2]=n[Ba+4>>2],fi(o,4117,u)|0,n[Yl>>2]=15,n[Yl+4>>2]=0,n[u>>2]=n[Yl>>2],n[u+4>>2]=n[Yl+4>>2],fi(o,4129,u)|0,n[ho>>2]=16,n[ho+4>>2]=0,n[u>>2]=n[ho>>2],n[u+4>>2]=n[ho+4>>2],fi(o,4148,u)|0,n[Pu>>2]=17,n[Pu+4>>2]=0,n[u>>2]=n[Pu>>2],n[u+4>>2]=n[Pu+4>>2],fi(o,4161,u)|0,n[Uf>>2]=18,n[Uf+4>>2]=0,n[u>>2]=n[Uf>>2],n[u+4>>2]=n[Uf+4>>2],fi(o,4181,u)|0,n[Mf>>2]=5,n[Mf+4>>2]=0,n[u>>2]=n[Mf>>2],n[u+4>>2]=n[Mf+4>>2],Zr(o,4196,u)|0,n[ed>>2]=6,n[ed+4>>2]=0,n[u>>2]=n[ed>>2],n[u+4>>2]=n[ed+4>>2],Zr(o,4206,u)|0,n[$h>>2]=7,n[$h+4>>2]=0,n[u>>2]=n[$h>>2],n[u+4>>2]=n[$h+4>>2],Zr(o,4217,u)|0,n[Du>>2]=3,n[Du+4>>2]=0,n[u>>2]=n[Du>>2],n[u+4>>2]=n[Du+4>>2],Su(o,4235,u)|0,n[Xh>>2]=1,n[Xh+4>>2]=0,n[u>>2]=n[Xh>>2],n[u+4>>2]=n[Xh+4>>2],rM(o,4251,u)|0,n[Ec>>2]=4,n[Ec+4>>2]=0,n[u>>2]=n[Ec>>2],n[u+4>>2]=n[Ec+4>>2],Su(o,4263,u)|0,n[ln>>2]=5,n[ln+4>>2]=0,n[u>>2]=n[ln>>2],n[u+4>>2]=n[ln+4>>2],Su(o,4279,u)|0,n[Zh>>2]=6,n[Zh+4>>2]=0,n[u>>2]=n[Zh>>2],n[u+4>>2]=n[Zh+4>>2],Su(o,4293,u)|0,n[zh>>2]=7,n[zh+4>>2]=0,n[u>>2]=n[zh>>2],n[u+4>>2]=n[zh+4>>2],Su(o,4306,u)|0,n[Jh>>2]=8,n[Jh+4>>2]=0,n[u>>2]=n[Jh>>2],n[u+4>>2]=n[Jh+4>>2],Su(o,4323,u)|0,n[Lf>>2]=9,n[Lf+4>>2]=0,n[u>>2]=n[Lf>>2],n[u+4>>2]=n[Lf+4>>2],Su(o,4335,u)|0,n[Of>>2]=2,n[Of+4>>2]=0,n[u>>2]=n[Of>>2],n[u+4>>2]=n[Of+4>>2],rM(o,4353,u)|0,n[Kh>>2]=12,n[Kh+4>>2]=0,n[u>>2]=n[Kh>>2],n[u+4>>2]=n[Kh+4>>2],a0(o,4363,u)|0,n[yc>>2]=1,n[yc+4>>2]=0,n[u>>2]=n[yc>>2],n[u+4>>2]=n[yc+4>>2],np(o,4376,u)|0,n[Vh>>2]=2,n[Vh+4>>2]=0,n[u>>2]=n[Vh>>2],n[u+4>>2]=n[Vh+4>>2],np(o,4388,u)|0,n[Wh>>2]=13,n[Wh+4>>2]=0,n[u>>2]=n[Wh>>2],n[u+4>>2]=n[Wh+4>>2],a0(o,4402,u)|0,n[al>>2]=14,n[al+4>>2]=0,n[u>>2]=n[al>>2],n[u+4>>2]=n[al+4>>2],a0(o,4411,u)|0,n[Ho>>2]=15,n[Ho+4>>2]=0,n[u>>2]=n[Ho>>2],n[u+4>>2]=n[Ho+4>>2],a0(o,4421,u)|0,n[_o>>2]=16,n[_o+4>>2]=0,n[u>>2]=n[_o>>2],n[u+4>>2]=n[_o+4>>2],a0(o,4433,u)|0,n[Uo>>2]=17,n[Uo+4>>2]=0,n[u>>2]=n[Uo>>2],n[u+4>>2]=n[Uo+4>>2],a0(o,4446,u)|0,n[Gn>>2]=18,n[Gn+4>>2]=0,n[u>>2]=n[Gn>>2],n[u+4>>2]=n[Gn+4>>2],a0(o,4458,u)|0,n[cr>>2]=3,n[cr+4>>2]=0,n[u>>2]=n[cr>>2],n[u+4>>2]=n[cr+4>>2],np(o,4471,u)|0,n[jr>>2]=1,n[jr+4>>2]=0,n[u>>2]=n[jr>>2],n[u+4>>2]=n[jr+4>>2],LP(o,4486,u)|0,n[Fr>>2]=10,n[Fr+4>>2]=0,n[u>>2]=n[Fr>>2],n[u+4>>2]=n[Fr+4>>2],Su(o,4496,u)|0,n[$t>>2]=11,n[$t+4>>2]=0,n[u>>2]=n[$t>>2],n[u+4>>2]=n[$t+4>>2],Su(o,4508,u)|0,n[fr>>2]=3,n[fr+4>>2]=0,n[u>>2]=n[fr>>2],n[u+4>>2]=n[fr+4>>2],rM(o,4519,u)|0,n[qr>>2]=4,n[qr+4>>2]=0,n[u>>2]=n[qr>>2],n[u+4>>2]=n[qr+4>>2],PPe(o,4530,u)|0,n[Mt>>2]=19,n[Mt+4>>2]=0,n[u>>2]=n[Mt>>2],n[u+4>>2]=n[Mt+4>>2],xPe(o,4542,u)|0,n[We>>2]=12,n[We+4>>2]=0,n[u>>2]=n[We>>2],n[u+4>>2]=n[We+4>>2],kPe(o,4554,u)|0,n[He>>2]=13,n[He+4>>2]=0,n[u>>2]=n[He>>2],n[u+4>>2]=n[He+4>>2],QPe(o,4568,u)|0,n[At>>2]=2,n[At+4>>2]=0,n[u>>2]=n[At>>2],n[u+4>>2]=n[At+4>>2],TPe(o,4578,u)|0,n[Xe>>2]=20,n[Xe+4>>2]=0,n[u>>2]=n[Xe>>2],n[u+4>>2]=n[Xe+4>>2],RPe(o,4587,u)|0,n[nt>>2]=22,n[nt+4>>2]=0,n[u>>2]=n[nt>>2],n[u+4>>2]=n[nt+4>>2],Tr(o,4602,u)|0,n[Re>>2]=23,n[Re+4>>2]=0,n[u>>2]=n[Re>>2],n[u+4>>2]=n[Re+4>>2],Tr(o,4619,u)|0,n[Le>>2]=14,n[Le+4>>2]=0,n[u>>2]=n[Le>>2],n[u+4>>2]=n[Le+4>>2],FPe(o,4629,u)|0,n[Ve>>2]=1,n[Ve+4>>2]=0,n[u>>2]=n[Ve>>2],n[u+4>>2]=n[Ve+4>>2],NPe(o,4637,u)|0,n[oe>>2]=4,n[oe+4>>2]=0,n[u>>2]=n[oe>>2],n[u+4>>2]=n[oe+4>>2],np(o,4653,u)|0,n[q>>2]=5,n[q+4>>2]=0,n[u>>2]=n[q>>2],n[u+4>>2]=n[q+4>>2],np(o,4669,u)|0,n[L>>2]=6,n[L+4>>2]=0,n[u>>2]=n[L>>2],n[u+4>>2]=n[L+4>>2],np(o,4686,u)|0,n[M>>2]=7,n[M+4>>2]=0,n[u>>2]=n[M>>2],n[u+4>>2]=n[M+4>>2],np(o,4701,u)|0,n[T>>2]=8,n[T+4>>2]=0,n[u>>2]=n[T>>2],n[u+4>>2]=n[T+4>>2],np(o,4719,u)|0,n[k>>2]=9,n[k+4>>2]=0,n[u>>2]=n[k>>2],n[u+4>>2]=n[k+4>>2],np(o,4736,u)|0,n[B>>2]=21,n[B+4>>2]=0,n[u>>2]=n[B>>2],n[u+4>>2]=n[B+4>>2],OPe(o,4754,u)|0,n[m>>2]=2,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],LP(o,4772,u)|0,n[g>>2]=3,n[g+4>>2]=0,n[u>>2]=n[g>>2],n[u+4>>2]=n[g+4>>2],LP(o,4790,u)|0,n[A>>2]=4,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],LP(o,4808,u)|0,I=l}function gt(o,l){o=o|0,l=l|0;var u=0;u=jNe()|0,n[o>>2]=u,GNe(u,l),Gh(n[o>>2]|0)}function Zt(o,l,u){return o=o|0,l=l|0,u=u|0,PNe(o,bn(l)|0,u,0),o|0}function br(o,l,u){return o=o|0,l=l|0,u=u|0,ANe(o,bn(l)|0,u,0),o|0}function ri(o,l,u){return o=o|0,l=l|0,u=u|0,XFe(o,bn(l)|0,u,0),o|0}function Tr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],OFe(o,l,g),I=A,o|0}function On(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],mFe(o,l,g),I=A,o|0}function jn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],tFe(o,l,g),I=A,o|0}function Zr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],URe(o,l,g),I=A,o|0}function fi(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],BRe(o,l,g),I=A,o|0}function Su(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],aRe(o,l,g),I=A,o|0}function rM(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],YTe(o,l,g),I=A,o|0}function a0(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],mTe(o,l,g),I=A,o|0}function np(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],tTe(o,l,g),I=A,o|0}function LP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],UQe(o,l,g),I=A,o|0}function PPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],BQe(o,l,g),I=A,o|0}function xPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],aQe(o,l,g),I=A,o|0}function kPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Wke(o,l,g),I=A,o|0}function QPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Qke(o,l,g),I=A,o|0}function TPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],hke(o,l,g),I=A,o|0}function RPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Zxe(o,l,g),I=A,o|0}function FPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Nxe(o,l,g),I=A,o|0}function NPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],mxe(o,l,g),I=A,o|0}function OPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],LPe(o,l,g),I=A,o|0}function LPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],MPe(o,u,g,1),I=A}function bn(o){return o=o|0,o|0}function MPe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=nM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=UPe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,_Pe(m,A)|0,A),I=g}function nM(){var o=0,l=0;if(s[7616]|0||(ZJ(9136),gr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9136)|0)){o=9136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));ZJ(9136)}return 9136}function UPe(o){return o=o|0,0}function _Pe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=nM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],zJ(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(GPe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Dn(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0;B=I,I=I+32|0,oe=B+24|0,q=B+20|0,T=B+16|0,L=B+12|0,M=B+8|0,k=B+4|0,Ve=B,n[q>>2]=l,n[T>>2]=u,n[L>>2]=A,n[M>>2]=g,n[k>>2]=m,m=o+28|0,n[Ve>>2]=n[m>>2],n[oe>>2]=n[Ve>>2],HPe(o+24|0,oe,q,L,M,T,k)|0,n[m>>2]=n[n[m>>2]>>2],I=B}function HPe(o,l,u,A,g,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,B=B|0,o=jPe(l)|0,l=Jt(24)|0,JJ(l+4|0,n[u>>2]|0,n[A>>2]|0,n[g>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[o>>2],n[o>>2]=l,l|0}function jPe(o){return o=o|0,n[o>>2]|0}function JJ(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=g,n[o+16>>2]=m}function Ir(o,l){return o=o|0,l=l|0,l|o|0}function zJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function GPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=qPe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,YPe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],zJ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,WPe(o,k),VPe(k),I=M;return}}function qPe(o){return o=o|0,357913941}function YPe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function WPe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function VPe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function ZJ(o){o=o|0,zPe(o)}function KPe(o){o=o|0,JPe(o+24|0)}function Hr(o){return o=o|0,n[o>>2]|0}function JPe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function zPe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,ZPe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function tn(){return 9228}function ZPe(){return 1140}function XPe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=$Pe(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=exe(l,A)|0,I=u,l|0}function rn(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=g,n[o+16>>2]=m}function $Pe(o){return o=o|0,(n[(nM()|0)+24>>2]|0)+(o*12|0)|0}function exe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;return g=I,I=I+48|0,A=g,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),lp[u&31](A,o),A=txe(A)|0,I=g,A|0}function txe(o){o=o|0;var l=0,u=0,A=0,g=0;return g=I,I=I+32|0,l=g+12|0,u=g,A=iM(XJ()|0)|0,A?(sM(l,A),oM(u,l),rxe(o,u),o=aM(l)|0):o=nxe(o)|0,I=g,o|0}function XJ(){var o=0;return s[7632]|0||(pxe(9184),gr(25,9184,U|0)|0,o=7632,n[o>>2]=1,n[o+4>>2]=0),9184}function iM(o){return o=o|0,n[o+36>>2]|0}function sM(o,l){o=o|0,l=l|0,n[o>>2]=l,n[o+4>>2]=o,n[o+8>>2]=0}function oM(o,l){o=o|0,l=l|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=0}function rxe(o,l){o=o|0,l=l|0,axe(l,o,o+8|0,o+16|0,o+24|0,o+32|0,o+40|0)|0}function aM(o){return o=o|0,n[(n[o+4>>2]|0)+8>>2]|0}function nxe(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0,T=0;T=I,I=I+16|0,u=T+4|0,A=T,g=Hl(8)|0,m=g,B=Jt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[o>>2],k=k+4|0,o=o+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Jt(8)|0,B=n[l>>2]|0,n[A>>2]=0,n[u>>2]=n[A>>2],$J(k,B,u),n[g>>2]=k,I=T,m|0}function $J(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1092,n[u+12>>2]=l,n[o+4>>2]=u}function ixe(o){o=o|0,sE(o),It(o)}function sxe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function oxe(o){o=o|0,It(o)}function axe(o,l,u,A,g,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,B=B|0,m=lxe(n[o>>2]|0,l,u,A,g,m,B)|0,B=o+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function lxe(o,l,u,A,g,m,B){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,B=B|0;var k=0,T=0;return k=I,I=I+16|0,T=k,jl(T),o=Us(o)|0,B=cxe(o,+E[l>>3],+E[u>>3],+E[A>>3],+E[g>>3],+E[m>>3],+E[B>>3])|0,Gl(T),I=k,B|0}function cxe(o,l,u,A,g,m,B){o=o|0,l=+l,u=+u,A=+A,g=+g,m=+m,B=+B;var k=0;return k=wa(uxe()|0)|0,l=+nl(l),u=+nl(u),A=+nl(A),g=+nl(g),m=+nl(m),uo(0,k|0,o|0,+l,+u,+A,+g,+m,+ +nl(B))|0}function uxe(){var o=0;return s[7624]|0||(fxe(9172),o=7624,n[o>>2]=1,n[o+4>>2]=0),9172}function fxe(o){o=o|0,Mo(o,Axe()|0,6)}function Axe(){return 1112}function pxe(o){o=o|0,Mh(o)}function hxe(o){o=o|0,ez(o+24|0),tz(o+16|0)}function ez(o){o=o|0,gxe(o)}function tz(o){o=o|0,dxe(o)}function dxe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function gxe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function Mh(o){o=o|0;var l=0;n[o+16>>2]=0,n[o+20>>2]=0,l=o+24|0,n[l>>2]=0,n[o+28>>2]=l,n[o+36>>2]=0,s[o+40>>0]=0,s[o+41>>0]=0}function mxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],yxe(o,u,g,0),I=A}function yxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=lM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Exe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Ixe(m,A)|0,A),I=g}function lM(){var o=0,l=0;if(s[7640]|0||(nz(9232),gr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9232)|0)){o=9232,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));nz(9232)}return 9232}function Exe(o){return o=o|0,0}function Ixe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=lM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],rz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Cxe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function rz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Cxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=wxe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Bxe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],rz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,vxe(o,k),Sxe(k),I=M;return}}function wxe(o){return o=o|0,357913941}function Bxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function vxe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Sxe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function nz(o){o=o|0,Pxe(o)}function bxe(o){o=o|0,Dxe(o+24|0)}function Dxe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Pxe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,xxe()|0,3),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function xxe(){return 1144}function kxe(o,l,u,A,g){o=o|0,l=l|0,u=+u,A=+A,g=g|0;var m=0,B=0,k=0,T=0;m=I,I=I+16|0,B=m+8|0,k=m,T=Qxe(o)|0,o=n[T+4>>2]|0,n[k>>2]=n[T>>2],n[k+4>>2]=o,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],Txe(l,B,u,A,g),I=m}function Qxe(o){return o=o|0,(n[(lM()|0)+24>>2]|0)+(o*12|0)|0}function Txe(o,l,u,A,g){o=o|0,l=l|0,u=+u,A=+A,g=g|0;var m=0,B=0,k=0,T=0,M=0;M=I,I=I+16|0,B=M+2|0,k=M+1|0,T=M,m=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(m=n[(n[o>>2]|0)+m>>2]|0),Ff(B,u),u=+Nf(B,u),Ff(k,A),A=+Nf(k,A),ip(T,g),T=sp(T,g)|0,yX[m&1](o,u,A,T),I=M}function Ff(o,l){o=o|0,l=+l}function Nf(o,l){return o=o|0,l=+l,+ +Fxe(l)}function ip(o,l){o=o|0,l=l|0}function sp(o,l){return o=o|0,l=l|0,Rxe(l)|0}function Rxe(o){return o=o|0,o|0}function Fxe(o){return o=+o,+o}function Nxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Oxe(o,u,g,1),I=A}function Oxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=cM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Lxe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Mxe(m,A)|0,A),I=g}function cM(){var o=0,l=0;if(s[7648]|0||(sz(9268),gr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9268)|0)){o=9268,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));sz(9268)}return 9268}function Lxe(o){return o=o|0,0}function Mxe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=cM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],iz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Uxe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function iz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Uxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=_xe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Hxe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],iz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,jxe(o,k),Gxe(k),I=M;return}}function _xe(o){return o=o|0,357913941}function Hxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function jxe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Gxe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function sz(o){o=o|0,Wxe(o)}function qxe(o){o=o|0,Yxe(o+24|0)}function Yxe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Wxe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,Vxe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Vxe(){return 1160}function Kxe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=Jxe(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=zxe(l,A)|0,I=u,l|0}function Jxe(o){return o=o|0,(n[(cM()|0)+24>>2]|0)+(o*12|0)|0}function zxe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),oz(g0[u&31](o)|0)|0}function oz(o){return o=o|0,o&1|0}function Zxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Xxe(o,u,g,0),I=A}function Xxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=uM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=$xe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,eke(m,A)|0,A),I=g}function uM(){var o=0,l=0;if(s[7656]|0||(lz(9304),gr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9304)|0)){o=9304,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));lz(9304)}return 9304}function $xe(o){return o=o|0,0}function eke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=uM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],az(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(tke(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function az(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function tke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=rke(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,nke(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],az(m,A,u),n[T>>2]=(n[T>>2]|0)+12,ike(o,k),ske(k),I=M;return}}function rke(o){return o=o|0,357913941}function nke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function ike(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ske(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function lz(o){o=o|0,lke(o)}function oke(o){o=o|0,ake(o+24|0)}function ake(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function lke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,cke()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cke(){return 1164}function uke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=fke(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Ake(l,g,u),I=A}function fke(o){return o=o|0,(n[(uM()|0)+24>>2]|0)+(o*12|0)|0}function Ake(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Uh(g,u),u=_h(g,u)|0,lp[A&31](o,u),Hh(g),I=m}function Uh(o,l){o=o|0,l=l|0,pke(o,l)}function _h(o,l){return o=o|0,l=l|0,o|0}function Hh(o){o=o|0,Pf(o)}function pke(o,l){o=o|0,l=l|0,fM(o,l)}function fM(o,l){o=o|0,l=l|0,n[o>>2]=l}function hke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],dke(o,u,g,0),I=A}function dke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=AM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=gke(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,mke(m,A)|0,A),I=g}function AM(){var o=0,l=0;if(s[7664]|0||(uz(9340),gr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9340)|0)){o=9340,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));uz(9340)}return 9340}function gke(o){return o=o|0,0}function mke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=AM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],cz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(yke(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function cz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function yke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Eke(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Ike(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],cz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,Cke(o,k),wke(k),I=M;return}}function Eke(o){return o=o|0,357913941}function Ike(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function Cke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function wke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function uz(o){o=o|0,Ske(o)}function Bke(o){o=o|0,vke(o+24|0)}function vke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Ske(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,bke()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function bke(){return 1180}function Dke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=Pke(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],u=xke(l,g,u)|0,I=A,u|0}function Pke(o){return o=o|0,(n[(AM()|0)+24>>2]|0)+(o*12|0)|0}function xke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;return m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),l0(g,u),g=c0(g,u)|0,g=MP(lU[A&15](o,g)|0)|0,I=m,g|0}function l0(o,l){o=o|0,l=l|0}function c0(o,l){return o=o|0,l=l|0,kke(l)|0}function MP(o){return o=o|0,o|0}function kke(o){return o=o|0,o|0}function Qke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Tke(o,u,g,0),I=A}function Tke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=pM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Rke(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Fke(m,A)|0,A),I=g}function pM(){var o=0,l=0;if(s[7672]|0||(Az(9376),gr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9376)|0)){o=9376,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Az(9376)}return 9376}function Rke(o){return o=o|0,0}function Fke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=pM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],fz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Nke(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function fz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Nke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Oke(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Lke(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],fz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,Mke(o,k),Uke(k),I=M;return}}function Oke(o){return o=o|0,357913941}function Lke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function Mke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Uke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Az(o){o=o|0,jke(o)}function _ke(o){o=o|0,Hke(o+24|0)}function Hke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function jke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,pz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function pz(){return 1196}function Gke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=qke(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=Yke(l,A)|0,I=u,l|0}function qke(o){return o=o|0,(n[(pM()|0)+24>>2]|0)+(o*12|0)|0}function Yke(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),MP(g0[u&31](o)|0)|0}function Wke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Vke(o,u,g,1),I=A}function Vke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=hM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Kke(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Jke(m,A)|0,A),I=g}function hM(){var o=0,l=0;if(s[7680]|0||(dz(9412),gr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9412)|0)){o=9412,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));dz(9412)}return 9412}function Kke(o){return o=o|0,0}function Jke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=hM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],hz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(zke(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function hz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function zke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Zke(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Xke(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],hz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,$ke(o,k),eQe(k),I=M;return}}function Zke(o){return o=o|0,357913941}function Xke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function $ke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function eQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function dz(o){o=o|0,nQe(o)}function tQe(o){o=o|0,rQe(o+24|0)}function rQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function nQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,gz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function gz(){return 1200}function iQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=sQe(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=oQe(l,A)|0,I=u,l|0}function sQe(o){return o=o|0,(n[(hM()|0)+24>>2]|0)+(o*12|0)|0}function oQe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),UP(g0[u&31](o)|0)|0}function UP(o){return o=o|0,o|0}function aQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],lQe(o,u,g,0),I=A}function lQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=dM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=cQe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,uQe(m,A)|0,A),I=g}function dM(){var o=0,l=0;if(s[7688]|0||(yz(9448),gr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9448)|0)){o=9448,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));yz(9448)}return 9448}function cQe(o){return o=o|0,0}function uQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=dM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],mz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(fQe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function mz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function fQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=AQe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,pQe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],mz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,hQe(o,k),dQe(k),I=M;return}}function AQe(o){return o=o|0,357913941}function pQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function hQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function dQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function yz(o){o=o|0,yQe(o)}function gQe(o){o=o|0,mQe(o+24|0)}function mQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function yQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,Ez()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Ez(){return 1204}function EQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=IQe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],CQe(l,g,u),I=A}function IQe(o){return o=o|0,(n[(dM()|0)+24>>2]|0)+(o*12|0)|0}function CQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),gM(g,u),g=mM(g,u)|0,lp[A&31](o,g),I=m}function gM(o,l){o=o|0,l=l|0}function mM(o,l){return o=o|0,l=l|0,wQe(l)|0}function wQe(o){return o=o|0,o|0}function BQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],vQe(o,u,g,0),I=A}function vQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=yM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=SQe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,bQe(m,A)|0,A),I=g}function yM(){var o=0,l=0;if(s[7696]|0||(Cz(9484),gr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9484)|0)){o=9484,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Cz(9484)}return 9484}function SQe(o){return o=o|0,0}function bQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=yM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],Iz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(DQe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Iz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function DQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=PQe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,xQe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Iz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,kQe(o,k),QQe(k),I=M;return}}function PQe(o){return o=o|0,357913941}function xQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function kQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function QQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Cz(o){o=o|0,FQe(o)}function TQe(o){o=o|0,RQe(o+24|0)}function RQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function FQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,NQe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function NQe(){return 1212}function OQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+16|0,m=g+8|0,B=g,k=LQe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],MQe(l,m,u,A),I=g}function LQe(o){return o=o|0,(n[(yM()|0)+24>>2]|0)+(o*12|0)|0}function MQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,g=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(g=n[(n[o>>2]|0)+g>>2]|0),gM(m,u),m=mM(m,u)|0,l0(B,A),B=c0(B,A)|0,T2[g&15](o,m,B),I=k}function UQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],_Qe(o,u,g,1),I=A}function _Qe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=EM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=HQe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,jQe(m,A)|0,A),I=g}function EM(){var o=0,l=0;if(s[7704]|0||(Bz(9520),gr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9520)|0)){o=9520,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Bz(9520)}return 9520}function HQe(o){return o=o|0,0}function jQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=EM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],wz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(GQe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function wz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function GQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=qQe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,YQe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],wz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,WQe(o,k),VQe(k),I=M;return}}function qQe(o){return o=o|0,357913941}function YQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function WQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function VQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Bz(o){o=o|0,zQe(o)}function KQe(o){o=o|0,JQe(o+24|0)}function JQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function zQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,ZQe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ZQe(){return 1224}function XQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;return g=I,I=I+16|0,m=g+8|0,B=g,k=$Qe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],A=+eTe(l,m,u),I=g,+A}function $Qe(o){return o=o|0,(n[(EM()|0)+24>>2]|0)+(o*12|0)|0}function eTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),ip(g,u),g=sp(g,u)|0,B=+Rf(+IX[A&7](o,g)),I=m,+B}function tTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],rTe(o,u,g,1),I=A}function rTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=IM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=nTe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,iTe(m,A)|0,A),I=g}function IM(){var o=0,l=0;if(s[7712]|0||(Sz(9556),gr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9556)|0)){o=9556,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Sz(9556)}return 9556}function nTe(o){return o=o|0,0}function iTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=IM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],vz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(sTe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function vz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function sTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=oTe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,aTe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],vz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,lTe(o,k),cTe(k),I=M;return}}function oTe(o){return o=o|0,357913941}function aTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function lTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function cTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Sz(o){o=o|0,ATe(o)}function uTe(o){o=o|0,fTe(o+24|0)}function fTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function ATe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,pTe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function pTe(){return 1232}function hTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=dTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],u=+gTe(l,g),I=A,+u}function dTe(o){return o=o|0,(n[(IM()|0)+24>>2]|0)+(o*12|0)|0}function gTe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),+ +Rf(+EX[u&15](o))}function mTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],yTe(o,u,g,1),I=A}function yTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=CM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=ETe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,ITe(m,A)|0,A),I=g}function CM(){var o=0,l=0;if(s[7720]|0||(Dz(9592),gr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9592)|0)){o=9592,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Dz(9592)}return 9592}function ETe(o){return o=o|0,0}function ITe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=CM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],bz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(CTe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function bz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function CTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=wTe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,BTe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],bz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,vTe(o,k),STe(k),I=M;return}}function wTe(o){return o=o|0,357913941}function BTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function vTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function STe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Dz(o){o=o|0,PTe(o)}function bTe(o){o=o|0,DTe(o+24|0)}function DTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function PTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,xTe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function xTe(){return 1276}function kTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=QTe(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=TTe(l,A)|0,I=u,l|0}function QTe(o){return o=o|0,(n[(CM()|0)+24>>2]|0)+(o*12|0)|0}function TTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;return g=I,I=I+16|0,A=g,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),lp[u&31](A,o),A=Pz(A)|0,I=g,A|0}function Pz(o){o=o|0;var l=0,u=0,A=0,g=0;return g=I,I=I+32|0,l=g+12|0,u=g,A=iM(xz()|0)|0,A?(sM(l,A),oM(u,l),RTe(o,u),o=aM(l)|0):o=FTe(o)|0,I=g,o|0}function xz(){var o=0;return s[7736]|0||(qTe(9640),gr(25,9640,U|0)|0,o=7736,n[o>>2]=1,n[o+4>>2]=0),9640}function RTe(o,l){o=o|0,l=l|0,MTe(l,o,o+8|0)|0}function FTe(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0;return u=I,I=I+16|0,g=u+4|0,B=u,A=Hl(8)|0,l=A,k=Jt(16)|0,n[k>>2]=n[o>>2],n[k+4>>2]=n[o+4>>2],n[k+8>>2]=n[o+8>>2],n[k+12>>2]=n[o+12>>2],m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],wM(o,m,g),n[A>>2]=o,I=u,l|0}function wM(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1244,n[u+12>>2]=l,n[o+4>>2]=u}function NTe(o){o=o|0,sE(o),It(o)}function OTe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function LTe(o){o=o|0,It(o)}function MTe(o,l,u){return o=o|0,l=l|0,u=u|0,l=UTe(n[o>>2]|0,l,u)|0,u=o+4|0,n[(n[u>>2]|0)+8>>2]=l,n[(n[u>>2]|0)+8>>2]|0}function UTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;return A=I,I=I+16|0,g=A,jl(g),o=Us(o)|0,u=_Te(o,n[l>>2]|0,+E[u>>3])|0,Gl(g),I=A,u|0}function _Te(o,l,u){o=o|0,l=l|0,u=+u;var A=0;return A=wa(HTe()|0)|0,l=Xy(l)|0,ou(0,A|0,o|0,l|0,+ +nl(u))|0}function HTe(){var o=0;return s[7728]|0||(jTe(9628),o=7728,n[o>>2]=1,n[o+4>>2]=0),9628}function jTe(o){o=o|0,Mo(o,GTe()|0,2)}function GTe(){return 1264}function qTe(o){o=o|0,Mh(o)}function YTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],WTe(o,u,g,1),I=A}function WTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=BM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=VTe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,KTe(m,A)|0,A),I=g}function BM(){var o=0,l=0;if(s[7744]|0||(Qz(9684),gr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9684)|0)){o=9684,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Qz(9684)}return 9684}function VTe(o){return o=o|0,0}function KTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=BM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],kz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(JTe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function kz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function JTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=zTe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,ZTe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],kz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,XTe(o,k),$Te(k),I=M;return}}function zTe(o){return o=o|0,357913941}function ZTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function XTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function $Te(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Qz(o){o=o|0,rRe(o)}function eRe(o){o=o|0,tRe(o+24|0)}function tRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function rRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,nRe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function nRe(){return 1280}function iRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=sRe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],u=oRe(l,g,u)|0,I=A,u|0}function sRe(o){return o=o|0,(n[(BM()|0)+24>>2]|0)+(o*12|0)|0}function oRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return B=I,I=I+32|0,g=B,m=B+16|0,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),ip(m,u),m=sp(m,u)|0,T2[A&15](g,o,m),m=Pz(g)|0,I=B,m|0}function aRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],lRe(o,u,g,1),I=A}function lRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=vM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=cRe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,uRe(m,A)|0,A),I=g}function vM(){var o=0,l=0;if(s[7752]|0||(Rz(9720),gr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9720)|0)){o=9720,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Rz(9720)}return 9720}function cRe(o){return o=o|0,0}function uRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=vM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],Tz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(fRe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Tz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function fRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=ARe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,pRe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Tz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,hRe(o,k),dRe(k),I=M;return}}function ARe(o){return o=o|0,357913941}function pRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function hRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function dRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Rz(o){o=o|0,yRe(o)}function gRe(o){o=o|0,mRe(o+24|0)}function mRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function yRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,ERe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ERe(){return 1288}function IRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=CRe(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=wRe(l,A)|0,I=u,l|0}function CRe(o){return o=o|0,(n[(vM()|0)+24>>2]|0)+(o*12|0)|0}function wRe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),o0(g0[u&31](o)|0)|0}function BRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],vRe(o,u,g,0),I=A}function vRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=SM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=SRe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,bRe(m,A)|0,A),I=g}function SM(){var o=0,l=0;if(s[7760]|0||(Nz(9756),gr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9756)|0)){o=9756,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Nz(9756)}return 9756}function SRe(o){return o=o|0,0}function bRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=SM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],Fz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(DRe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Fz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function DRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=PRe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,xRe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Fz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,kRe(o,k),QRe(k),I=M;return}}function PRe(o){return o=o|0,357913941}function xRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function kRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function QRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Nz(o){o=o|0,FRe(o)}function TRe(o){o=o|0,RRe(o+24|0)}function RRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function FRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,NRe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function NRe(){return 1292}function ORe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=LRe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],MRe(l,g,u),I=A}function LRe(o){return o=o|0,(n[(SM()|0)+24>>2]|0)+(o*12|0)|0}function MRe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,g=0,m=0;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Ff(g,u),u=+Nf(g,u),gX[A&31](o,u),I=m}function URe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],_Re(o,u,g,0),I=A}function _Re(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=bM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=HRe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,jRe(m,A)|0,A),I=g}function bM(){var o=0,l=0;if(s[7768]|0||(Lz(9792),gr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9792)|0)){o=9792,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Lz(9792)}return 9792}function HRe(o){return o=o|0,0}function jRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=bM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],Oz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(GRe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Oz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function GRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=qRe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,YRe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Oz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,WRe(o,k),VRe(k),I=M;return}}function qRe(o){return o=o|0,357913941}function YRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function WRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function VRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Lz(o){o=o|0,zRe(o)}function KRe(o){o=o|0,JRe(o+24|0)}function JRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function zRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,ZRe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ZRe(){return 1300}function XRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var g=0,m=0,B=0,k=0;g=I,I=I+16|0,m=g+8|0,B=g,k=$Re(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],eFe(l,m,u,A),I=g}function $Re(o){return o=o|0,(n[(bM()|0)+24>>2]|0)+(o*12|0)|0}function eFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var g=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,g=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(g=n[(n[o>>2]|0)+g>>2]|0),ip(m,u),m=sp(m,u)|0,Ff(B,A),A=+Nf(B,A),vX[g&15](o,m,A),I=k}function tFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],rFe(o,u,g,0),I=A}function rFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=DM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=nFe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,iFe(m,A)|0,A),I=g}function DM(){var o=0,l=0;if(s[7776]|0||(Uz(9828),gr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9828)|0)){o=9828,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Uz(9828)}return 9828}function nFe(o){return o=o|0,0}function iFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=DM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],Mz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(sFe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Mz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function sFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=oFe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,aFe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Mz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,lFe(o,k),cFe(k),I=M;return}}function oFe(o){return o=o|0,357913941}function aFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function lFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function cFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Uz(o){o=o|0,AFe(o)}function uFe(o){o=o|0,fFe(o+24|0)}function fFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function AFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,pFe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function pFe(){return 1312}function hFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=dFe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],gFe(l,g,u),I=A}function dFe(o){return o=o|0,(n[(DM()|0)+24>>2]|0)+(o*12|0)|0}function gFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),ip(g,u),g=sp(g,u)|0,lp[A&31](o,g),I=m}function mFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],yFe(o,u,g,0),I=A}function yFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=PM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=EFe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,IFe(m,A)|0,A),I=g}function PM(){var o=0,l=0;if(s[7784]|0||(Hz(9864),gr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9864)|0)){o=9864,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Hz(9864)}return 9864}function EFe(o){return o=o|0,0}function IFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=PM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],_z(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(CFe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function _z(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function CFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=wFe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,BFe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],_z(m,A,u),n[T>>2]=(n[T>>2]|0)+12,vFe(o,k),SFe(k),I=M;return}}function wFe(o){return o=o|0,357913941}function BFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function vFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function SFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Hz(o){o=o|0,PFe(o)}function bFe(o){o=o|0,DFe(o+24|0)}function DFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function PFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,xFe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function xFe(){return 1320}function kFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=QFe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],TFe(l,g,u),I=A}function QFe(o){return o=o|0,(n[(PM()|0)+24>>2]|0)+(o*12|0)|0}function TFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),RFe(g,u),g=FFe(g,u)|0,lp[A&31](o,g),I=m}function RFe(o,l){o=o|0,l=l|0}function FFe(o,l){return o=o|0,l=l|0,NFe(l)|0}function NFe(o){return o=o|0,o|0}function OFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],LFe(o,u,g,0),I=A}function LFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=xM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=MFe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,UFe(m,A)|0,A),I=g}function xM(){var o=0,l=0;if(s[7792]|0||(Gz(9900),gr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9900)|0)){o=9900,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Gz(9900)}return 9900}function MFe(o){return o=o|0,0}function UFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=xM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],jz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(_Fe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function jz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function _Fe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=HFe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,jFe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],jz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,GFe(o,k),qFe(k),I=M;return}}function HFe(o){return o=o|0,357913941}function jFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function GFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function qFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Gz(o){o=o|0,VFe(o)}function YFe(o){o=o|0,WFe(o+24|0)}function WFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function VFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,22,l,KFe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function KFe(){return 1344}function JFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;u=I,I=I+16|0,A=u+8|0,g=u,m=zFe(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],ZFe(l,A),I=u}function zFe(o){return o=o|0,(n[(xM()|0)+24>>2]|0)+(o*12|0)|0}function ZFe(o,l){o=o|0,l=l|0;var u=0;u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),ap[u&127](o)}function XFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=kM()|0,o=$Fe(u)|0,Dn(m,l,g,o,eNe(u,A)|0,A)}function kM(){var o=0,l=0;if(s[7800]|0||(Yz(9936),gr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9936)|0)){o=9936,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Yz(9936)}return 9936}function $Fe(o){return o=o|0,o|0}function eNe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,T=kM()|0,B=T+24|0,l=Ir(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(qz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(tNe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function qz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function tNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=rNe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,nNe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=g+8|0,qz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,iNe(o,g),sNe(g),I=k;return}}function rNe(o){return o=o|0,536870911}function nNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Ot();else{g=Jt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function iNe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Yz(o){o=o|0,lNe(o)}function oNe(o){o=o|0,aNe(o+24|0)}function aNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function lNe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,23,l,Ez()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cNe(o,l){o=o|0,l=l|0,fNe(n[(uNe(o)|0)>>2]|0,l)}function uNe(o){return o=o|0,(n[(kM()|0)+24>>2]|0)+(o<<3)|0}function fNe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,gM(A,l),l=mM(A,l)|0,ap[o&127](l),I=u}function ANe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=QM()|0,o=pNe(u)|0,Dn(m,l,g,o,hNe(u,A)|0,A)}function QM(){var o=0,l=0;if(s[7808]|0||(Vz(9972),gr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(Hr(9972)|0)){o=9972,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Vz(9972)}return 9972}function pNe(o){return o=o|0,o|0}function hNe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,T=QM()|0,B=T+24|0,l=Ir(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(Wz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(dNe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function Wz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function dNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=gNe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,mNe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=g+8|0,Wz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,yNe(o,g),ENe(g),I=k;return}}function gNe(o){return o=o|0,536870911}function mNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Ot();else{g=Jt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function yNe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ENe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Vz(o){o=o|0,wNe(o)}function INe(o){o=o|0,CNe(o+24|0)}function CNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function wNe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,9,l,BNe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function BNe(){return 1348}function vNe(o,l){return o=o|0,l=l|0,bNe(n[(SNe(o)|0)>>2]|0,l)|0}function SNe(o){return o=o|0,(n[(QM()|0)+24>>2]|0)+(o<<3)|0}function bNe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,Kz(A,l),l=Jz(A,l)|0,l=MP(g0[o&31](l)|0)|0,I=u,l|0}function Kz(o,l){o=o|0,l=l|0}function Jz(o,l){return o=o|0,l=l|0,DNe(l)|0}function DNe(o){return o=o|0,o|0}function PNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=TM()|0,o=xNe(u)|0,Dn(m,l,g,o,kNe(u,A)|0,A)}function TM(){var o=0,l=0;if(s[7816]|0||(Zz(10008),gr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(Hr(10008)|0)){o=10008,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Zz(10008)}return 10008}function xNe(o){return o=o|0,o|0}function kNe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,T=TM()|0,B=T+24|0,l=Ir(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(zz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(QNe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function zz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function QNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=TNe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,RNe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=g+8|0,zz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,FNe(o,g),NNe(g),I=k;return}}function TNe(o){return o=o|0,536870911}function RNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Ot();else{g=Jt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function FNe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function NNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Zz(o){o=o|0,MNe(o)}function ONe(o){o=o|0,LNe(o+24|0)}function LNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function MNe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,15,l,pz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function UNe(o){return o=o|0,HNe(n[(_Ne(o)|0)>>2]|0)|0}function _Ne(o){return o=o|0,(n[(TM()|0)+24>>2]|0)+(o<<3)|0}function HNe(o){return o=o|0,MP($P[o&7]()|0)|0}function jNe(){var o=0;return s[7832]|0||(zNe(10052),gr(25,10052,U|0)|0,o=7832,n[o>>2]=1,n[o+4>>2]=0),10052}function GNe(o,l){o=o|0,l=l|0,n[o>>2]=qNe()|0,n[o+4>>2]=YNe()|0,n[o+12>>2]=l,n[o+8>>2]=WNe()|0,n[o+32>>2]=2}function qNe(){return 11709}function YNe(){return 1188}function WNe(){return _P()|0}function VNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(jh(A,896)|0)==512?u|0&&(KNe(u),It(u)):l|0&&(jy(l),It(l))}function jh(o,l){return o=o|0,l=l|0,l&o|0}function KNe(o){o=o|0,o=n[o+4>>2]|0,o|0&&qh(o)}function _P(){var o=0;return s[7824]|0||(n[2511]=JNe()|0,n[2512]=0,o=7824,n[o>>2]=1,n[o+4>>2]=0),10044}function JNe(){return 0}function zNe(o){o=o|0,Mh(o)}function ZNe(o){o=o|0;var l=0,u=0,A=0,g=0,m=0;l=I,I=I+32|0,u=l+24|0,m=l+16|0,g=l+8|0,A=l,XNe(o,4827),$Ne(o,4834,3)|0,eOe(o,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],tOe(o,4841,u)|0,n[g>>2]=1,n[g+4>>2]=0,n[u>>2]=n[g>>2],n[u+4>>2]=n[g+4>>2],rOe(o,4871,u)|0,n[A>>2]=10,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],nOe(o,4891,u)|0,I=l}function XNe(o,l){o=o|0,l=l|0;var u=0;u=NLe()|0,n[o>>2]=u,OLe(u,l),Gh(n[o>>2]|0)}function $Ne(o,l,u){return o=o|0,l=l|0,u=u|0,ELe(o,bn(l)|0,u,0),o|0}function eOe(o,l,u){return o=o|0,l=l|0,u=u|0,iLe(o,bn(l)|0,u,0),o|0}function tOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],UOe(o,l,g),I=A,o|0}function rOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],IOe(o,l,g),I=A,o|0}function nOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],iOe(o,l,g),I=A,o|0}function iOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],sOe(o,u,g,1),I=A}function sOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=RM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=oOe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,aOe(m,A)|0,A),I=g}function RM(){var o=0,l=0;if(s[7840]|0||($z(10100),gr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(Hr(10100)|0)){o=10100,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));$z(10100)}return 10100}function oOe(o){return o=o|0,0}function aOe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=RM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],Xz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(lOe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Xz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function lOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=cOe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,uOe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Xz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,fOe(o,k),AOe(k),I=M;return}}function cOe(o){return o=o|0,357913941}function uOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function fOe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function AOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function $z(o){o=o|0,dOe(o)}function pOe(o){o=o|0,hOe(o+24|0)}function hOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function dOe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,gOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function gOe(){return 1364}function mOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=yOe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],u=EOe(l,g,u)|0,I=A,u|0}function yOe(o){return o=o|0,(n[(RM()|0)+24>>2]|0)+(o*12|0)|0}function EOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;return m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),ip(g,u),g=sp(g,u)|0,g=oz(lU[A&15](o,g)|0)|0,I=m,g|0}function IOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],COe(o,u,g,0),I=A}function COe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=FM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=wOe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,BOe(m,A)|0,A),I=g}function FM(){var o=0,l=0;if(s[7848]|0||(tZ(10136),gr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(Hr(10136)|0)){o=10136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));tZ(10136)}return 10136}function wOe(o){return o=o|0,0}function BOe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=FM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],eZ(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(vOe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function eZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function vOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=SOe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,bOe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],eZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,DOe(o,k),POe(k),I=M;return}}function SOe(o){return o=o|0,357913941}function bOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function DOe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function POe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function tZ(o){o=o|0,QOe(o)}function xOe(o){o=o|0,kOe(o+24|0)}function kOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function QOe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,9,l,TOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function TOe(){return 1372}function ROe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=FOe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],NOe(l,g,u),I=A}function FOe(o){return o=o|0,(n[(FM()|0)+24>>2]|0)+(o*12|0)|0}function NOe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,g=0,m=0,B=$e;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),OOe(g,u),B=y(LOe(g,u)),dX[A&1](o,B),I=m}function OOe(o,l){o=o|0,l=+l}function LOe(o,l){return o=o|0,l=+l,y(MOe(l))}function MOe(o){return o=+o,y(o)}function UOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],_Oe(o,u,g,0),I=A}function _Oe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,T=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=NM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=HOe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,jOe(m,A)|0,A),I=g}function NM(){var o=0,l=0;if(s[7856]|0||(nZ(10172),gr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(Hr(10172)|0)){o=10172,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));nZ(10172)}return 10172}function HOe(o){return o=o|0,0}function jOe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=NM()|0,M=q+24|0,o=Ir(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],rZ(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(GOe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function rZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function GOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,g=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=qOe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,YOe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],rZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,WOe(o,k),VOe(k),I=M;return}}function qOe(o){return o=o|0,357913941}function YOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Ot();else{g=Jt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function WOe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function VOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function nZ(o){o=o|0,zOe(o)}function KOe(o){o=o|0,JOe(o+24|0)}function JOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function zOe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,ZOe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ZOe(){return 1380}function XOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+16|0,m=g+8|0,B=g,k=$Oe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],eLe(l,m,u,A),I=g}function $Oe(o){return o=o|0,(n[(NM()|0)+24>>2]|0)+(o*12|0)|0}function eLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,g=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(g=n[(n[o>>2]|0)+g>>2]|0),ip(m,u),m=sp(m,u)|0,tLe(B,A),B=rLe(B,A)|0,T2[g&15](o,m,B),I=k}function tLe(o,l){o=o|0,l=l|0}function rLe(o,l){return o=o|0,l=l|0,nLe(l)|0}function nLe(o){return o=o|0,(o|0)!=0|0}function iLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=OM()|0,o=sLe(u)|0,Dn(m,l,g,o,oLe(u,A)|0,A)}function OM(){var o=0,l=0;if(s[7864]|0||(sZ(10208),gr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(Hr(10208)|0)){o=10208,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));sZ(10208)}return 10208}function sLe(o){return o=o|0,o|0}function oLe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,T=OM()|0,B=T+24|0,l=Ir(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(iZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(aLe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function iZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function aLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=lLe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,cLe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=g+8|0,iZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,uLe(o,g),fLe(g),I=k;return}}function lLe(o){return o=o|0,536870911}function cLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Ot();else{g=Jt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function uLe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function fLe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function sZ(o){o=o|0,hLe(o)}function ALe(o){o=o|0,pLe(o+24|0)}function pLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function hLe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,24,l,dLe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function dLe(){return 1392}function gLe(o,l){o=o|0,l=l|0,yLe(n[(mLe(o)|0)>>2]|0,l)}function mLe(o){return o=o|0,(n[(OM()|0)+24>>2]|0)+(o<<3)|0}function yLe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Kz(A,l),l=Jz(A,l)|0,ap[o&127](l),I=u}function ELe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=LM()|0,o=ILe(u)|0,Dn(m,l,g,o,CLe(u,A)|0,A)}function LM(){var o=0,l=0;if(s[7872]|0||(aZ(10244),gr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(Hr(10244)|0)){o=10244,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));aZ(10244)}return 10244}function ILe(o){return o=o|0,o|0}function CLe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,T=LM()|0,B=T+24|0,l=Ir(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(oZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(wLe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function oZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function wLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=BLe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,vLe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=g+8|0,oZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,SLe(o,g),bLe(g),I=k;return}}function BLe(o){return o=o|0,536870911}function vLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Ot();else{g=Jt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function SLe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function bLe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function aZ(o){o=o|0,xLe(o)}function DLe(o){o=o|0,PLe(o+24|0)}function PLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function xLe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,16,l,kLe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function kLe(){return 1400}function QLe(o){return o=o|0,RLe(n[(TLe(o)|0)>>2]|0)|0}function TLe(o){return o=o|0,(n[(LM()|0)+24>>2]|0)+(o<<3)|0}function RLe(o){return o=o|0,FLe($P[o&7]()|0)|0}function FLe(o){return o=o|0,o|0}function NLe(){var o=0;return s[7880]|0||(jLe(10280),gr(25,10280,U|0)|0,o=7880,n[o>>2]=1,n[o+4>>2]=0),10280}function OLe(o,l){o=o|0,l=l|0,n[o>>2]=LLe()|0,n[o+4>>2]=MLe()|0,n[o+12>>2]=l,n[o+8>>2]=ULe()|0,n[o+32>>2]=4}function LLe(){return 11711}function MLe(){return 1356}function ULe(){return _P()|0}function _Le(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(jh(A,896)|0)==512?u|0&&(HLe(u),It(u)):l|0&&(zg(l),It(l))}function HLe(o){o=o|0,o=n[o+4>>2]|0,o|0&&qh(o)}function jLe(o){o=o|0,Mh(o)}function GLe(o){o=o|0,qLe(o,4920),YLe(o)|0,WLe(o)|0}function qLe(o,l){o=o|0,l=l|0;var u=0;u=xz()|0,n[o>>2]=u,pMe(u,l),Gh(n[o>>2]|0)}function YLe(o){o=o|0;var l=0;return l=n[o>>2]|0,u0(l,nMe()|0),o|0}function WLe(o){o=o|0;var l=0;return l=n[o>>2]|0,u0(l,VLe()|0),o|0}function VLe(){var o=0;return s[7888]|0||(lZ(10328),gr(53,10328,U|0)|0,o=7888,n[o>>2]=1,n[o+4>>2]=0),Hr(10328)|0||lZ(10328),10328}function u0(o,l){o=o|0,l=l|0,Dn(o,0,l,0,0,0)}function lZ(o){o=o|0,zLe(o),f0(o,10)}function KLe(o){o=o|0,JLe(o+24|0)}function JLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function zLe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,eMe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ZLe(o,l,u){o=o|0,l=l|0,u=+u,XLe(o,l,u)}function f0(o,l){o=o|0,l=l|0,n[o+20>>2]=l}function XLe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,m=A+8|0,k=A+13|0,g=A,B=A+12|0,ip(k,l),n[m>>2]=sp(k,l)|0,Ff(B,u),E[g>>3]=+Nf(B,u),$Le(o,m,g),I=A}function $Le(o,l,u){o=o|0,l=l|0,u=u|0,_l(o+8|0,n[l>>2]|0,+E[u>>3]),s[o+24>>0]=1}function eMe(){return 1404}function tMe(o,l){return o=o|0,l=+l,rMe(o,l)|0}function rMe(o,l){o=o|0,l=+l;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return A=I,I=I+16|0,m=A+4|0,B=A+8|0,k=A,g=Hl(8)|0,u=g,T=Jt(16)|0,ip(m,o),o=sp(m,o)|0,Ff(B,l),_l(T,o,+Nf(B,l)),B=u+4|0,n[B>>2]=T,o=Jt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],wM(o,B,m),n[g>>2]=o,I=A,u|0}function nMe(){var o=0;return s[7896]|0||(cZ(10364),gr(54,10364,U|0)|0,o=7896,n[o>>2]=1,n[o+4>>2]=0),Hr(10364)|0||cZ(10364),10364}function cZ(o){o=o|0,oMe(o),f0(o,55)}function iMe(o){o=o|0,sMe(o+24|0)}function sMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function oMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,4,l,uMe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function aMe(o){o=o|0,lMe(o)}function lMe(o){o=o|0,cMe(o)}function cMe(o){o=o|0,uZ(o+8|0),s[o+24>>0]=1}function uZ(o){o=o|0,n[o>>2]=0,E[o+8>>3]=0}function uMe(){return 1424}function fMe(){return AMe()|0}function AMe(){var o=0,l=0,u=0,A=0,g=0,m=0,B=0;return l=I,I=I+16|0,g=l+4|0,B=l,u=Hl(8)|0,o=u,A=Jt(16)|0,uZ(A),m=o+4|0,n[m>>2]=A,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],wM(A,m,g),n[u>>2]=A,I=l,o|0}function pMe(o,l){o=o|0,l=l|0,n[o>>2]=hMe()|0,n[o+4>>2]=dMe()|0,n[o+12>>2]=l,n[o+8>>2]=gMe()|0,n[o+32>>2]=5}function hMe(){return 11710}function dMe(){return 1416}function gMe(){return HP()|0}function mMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(jh(A,896)|0)==512?u|0&&(yMe(u),It(u)):l|0&&It(l)}function yMe(o){o=o|0,o=n[o+4>>2]|0,o|0&&qh(o)}function HP(){var o=0;return s[7904]|0||(n[2600]=EMe()|0,n[2601]=0,o=7904,n[o>>2]=1,n[o+4>>2]=0),10400}function EMe(){return n[357]|0}function IMe(o){o=o|0,CMe(o,4926),wMe(o)|0}function CMe(o,l){o=o|0,l=l|0;var u=0;u=XJ()|0,n[o>>2]=u,RMe(u,l),Gh(n[o>>2]|0)}function wMe(o){o=o|0;var l=0;return l=n[o>>2]|0,u0(l,BMe()|0),o|0}function BMe(){var o=0;return s[7912]|0||(fZ(10412),gr(56,10412,U|0)|0,o=7912,n[o>>2]=1,n[o+4>>2]=0),Hr(10412)|0||fZ(10412),10412}function fZ(o){o=o|0,bMe(o),f0(o,57)}function vMe(o){o=o|0,SMe(o+24|0)}function SMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function bMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,5,l,kMe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function DMe(o){o=o|0,PMe(o)}function PMe(o){o=o|0,xMe(o)}function xMe(o){o=o|0;var l=0,u=0;l=o+8|0,u=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(u|0));s[o+56>>0]=1}function kMe(){return 1432}function QMe(){return TMe()|0}function TMe(){var o=0,l=0,u=0,A=0,g=0,m=0,B=0,k=0;B=I,I=I+16|0,o=B+4|0,l=B,u=Hl(8)|0,A=u,g=Jt(48)|0,m=g,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=A+4|0,n[m>>2]=g,k=Jt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[o>>2]=n[l>>2],$J(k,m,o),n[u>>2]=k,I=B,A|0}function RMe(o,l){o=o|0,l=l|0,n[o>>2]=FMe()|0,n[o+4>>2]=NMe()|0,n[o+12>>2]=l,n[o+8>>2]=OMe()|0,n[o+32>>2]=6}function FMe(){return 11704}function NMe(){return 1436}function OMe(){return HP()|0}function LMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(jh(A,896)|0)==512?u|0&&(MMe(u),It(u)):l|0&&It(l)}function MMe(o){o=o|0,o=n[o+4>>2]|0,o|0&&qh(o)}function UMe(o){o=o|0,_Me(o,4933),HMe(o)|0,jMe(o)|0}function _Me(o,l){o=o|0,l=l|0;var u=0;u=AUe()|0,n[o>>2]=u,pUe(u,l),Gh(n[o>>2]|0)}function HMe(o){o=o|0;var l=0;return l=n[o>>2]|0,u0(l,rUe()|0),o|0}function jMe(o){o=o|0;var l=0;return l=n[o>>2]|0,u0(l,GMe()|0),o|0}function GMe(){var o=0;return s[7920]|0||(AZ(10452),gr(58,10452,U|0)|0,o=7920,n[o>>2]=1,n[o+4>>2]=0),Hr(10452)|0||AZ(10452),10452}function AZ(o){o=o|0,WMe(o),f0(o,1)}function qMe(o){o=o|0,YMe(o+24|0)}function YMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function WMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,zMe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function VMe(o,l,u){o=o|0,l=+l,u=+u,KMe(o,l,u)}function KMe(o,l,u){o=o|0,l=+l,u=+u;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+32|0,m=A+8|0,k=A+17|0,g=A,B=A+16|0,Ff(k,l),E[m>>3]=+Nf(k,l),Ff(B,u),E[g>>3]=+Nf(B,u),JMe(o,m,g),I=A}function JMe(o,l,u){o=o|0,l=l|0,u=u|0,pZ(o+8|0,+E[l>>3],+E[u>>3]),s[o+24>>0]=1}function pZ(o,l,u){o=o|0,l=+l,u=+u,E[o>>3]=l,E[o+8>>3]=u}function zMe(){return 1472}function ZMe(o,l){return o=+o,l=+l,XMe(o,l)|0}function XMe(o,l){o=+o,l=+l;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return A=I,I=I+16|0,B=A+4|0,k=A+8|0,T=A,g=Hl(8)|0,u=g,m=Jt(16)|0,Ff(B,o),o=+Nf(B,o),Ff(k,l),pZ(m,o,+Nf(k,l)),k=u+4|0,n[k>>2]=m,m=Jt(8)|0,k=n[k>>2]|0,n[T>>2]=0,n[B>>2]=n[T>>2],hZ(m,k,B),n[g>>2]=m,I=A,u|0}function hZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1452,n[u+12>>2]=l,n[o+4>>2]=u}function $Me(o){o=o|0,sE(o),It(o)}function eUe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function tUe(o){o=o|0,It(o)}function rUe(){var o=0;return s[7928]|0||(dZ(10488),gr(59,10488,U|0)|0,o=7928,n[o>>2]=1,n[o+4>>2]=0),Hr(10488)|0||dZ(10488),10488}function dZ(o){o=o|0,sUe(o),f0(o,60)}function nUe(o){o=o|0,iUe(o+24|0)}function iUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function sUe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,6,l,cUe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oUe(o){o=o|0,aUe(o)}function aUe(o){o=o|0,lUe(o)}function lUe(o){o=o|0,gZ(o+8|0),s[o+24>>0]=1}function gZ(o){o=o|0,n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,n[o+12>>2]=0}function cUe(){return 1492}function uUe(){return fUe()|0}function fUe(){var o=0,l=0,u=0,A=0,g=0,m=0,B=0;return l=I,I=I+16|0,g=l+4|0,B=l,u=Hl(8)|0,o=u,A=Jt(16)|0,gZ(A),m=o+4|0,n[m>>2]=A,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],hZ(A,m,g),n[u>>2]=A,I=l,o|0}function AUe(){var o=0;return s[7936]|0||(EUe(10524),gr(25,10524,U|0)|0,o=7936,n[o>>2]=1,n[o+4>>2]=0),10524}function pUe(o,l){o=o|0,l=l|0,n[o>>2]=hUe()|0,n[o+4>>2]=dUe()|0,n[o+12>>2]=l,n[o+8>>2]=gUe()|0,n[o+32>>2]=7}function hUe(){return 11700}function dUe(){return 1484}function gUe(){return HP()|0}function mUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(jh(A,896)|0)==512?u|0&&(yUe(u),It(u)):l|0&&It(l)}function yUe(o){o=o|0,o=n[o+4>>2]|0,o|0&&qh(o)}function EUe(o){o=o|0,Mh(o)}function IUe(o,l,u){o=o|0,l=l|0,u=u|0,o=bn(l)|0,l=CUe(u)|0,u=wUe(u,0)|0,XUe(o,l,u,MM()|0,0)}function CUe(o){return o=o|0,o|0}function wUe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,T=MM()|0,B=T+24|0,l=Ir(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(yZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(xUe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function MM(){var o=0,l=0;if(s[7944]|0||(mZ(10568),gr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(Hr(10568)|0)){o=10568,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));mZ(10568)}return 10568}function mZ(o){o=o|0,SUe(o)}function BUe(o){o=o|0,vUe(o+24|0)}function vUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function SUe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,17,l,gz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function bUe(o){return o=o|0,PUe(n[(DUe(o)|0)>>2]|0)|0}function DUe(o){return o=o|0,(n[(MM()|0)+24>>2]|0)+(o<<3)|0}function PUe(o){return o=o|0,UP($P[o&7]()|0)|0}function yZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function xUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=kUe(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,QUe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=g+8|0,yZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,TUe(o,g),RUe(g),I=k;return}}function kUe(o){return o=o|0,536870911}function QUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Ot();else{g=Jt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function TUe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function RUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function FUe(){NUe()}function NUe(){OUe(10604)}function OUe(o){o=o|0,LUe(o,4955)}function LUe(o,l){o=o|0,l=l|0;var u=0;u=MUe()|0,n[o>>2]=u,UUe(u,l),Gh(n[o>>2]|0)}function MUe(){var o=0;return s[7952]|0||(KUe(10612),gr(25,10612,U|0)|0,o=7952,n[o>>2]=1,n[o+4>>2]=0),10612}function UUe(o,l){o=o|0,l=l|0,n[o>>2]=GUe()|0,n[o+4>>2]=qUe()|0,n[o+12>>2]=l,n[o+8>>2]=YUe()|0,n[o+32>>2]=8}function Gh(o){o=o|0;var l=0,u=0;l=I,I=I+16|0,u=l,eE()|0,n[u>>2]=o,_Ue(10608,u),I=l}function eE(){return s[11714]|0||(n[2652]=0,gr(62,10608,U|0)|0,s[11714]=1),10608}function _Ue(o,l){o=o|0,l=l|0;var u=0;u=Jt(8)|0,n[u+4>>2]=n[l>>2],n[u>>2]=n[o>>2],n[o>>2]=u}function HUe(o){o=o|0,jUe(o)}function jUe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function GUe(){return 11715}function qUe(){return 1496}function YUe(){return _P()|0}function WUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(jh(A,896)|0)==512?u|0&&(VUe(u),It(u)):l|0&&It(l)}function VUe(o){o=o|0,o=n[o+4>>2]|0,o|0&&qh(o)}function KUe(o){o=o|0,Mh(o)}function JUe(o,l){o=o|0,l=l|0;var u=0,A=0;eE()|0,u=n[2652]|0;e:do if(u|0){for(;A=n[u+4>>2]|0,!(A|0&&!($Z(UM(A)|0,o)|0));)if(u=n[u>>2]|0,!u)break e;zUe(A,l)}while(!1)}function UM(o){return o=o|0,n[o+12>>2]|0}function zUe(o,l){o=o|0,l=l|0;var u=0;o=o+36|0,u=n[o>>2]|0,u|0&&(Pf(u),It(u)),u=Jt(4)|0,TP(u,l),n[o>>2]=u}function _M(){return s[11716]|0||(n[2664]=0,gr(63,10656,U|0)|0,s[11716]=1),10656}function EZ(){var o=0;return s[11717]|0?o=n[2665]|0:(ZUe(),n[2665]=1504,s[11717]=1,o=1504),o|0}function ZUe(){s[11740]|0||(s[11718]=Ir(Ir(8,0)|0,0)|0,s[11719]=Ir(Ir(0,0)|0,0)|0,s[11720]=Ir(Ir(0,16)|0,0)|0,s[11721]=Ir(Ir(8,0)|0,0)|0,s[11722]=Ir(Ir(0,0)|0,0)|0,s[11723]=Ir(Ir(8,0)|0,0)|0,s[11724]=Ir(Ir(0,0)|0,0)|0,s[11725]=Ir(Ir(8,0)|0,0)|0,s[11726]=Ir(Ir(0,0)|0,0)|0,s[11727]=Ir(Ir(8,0)|0,0)|0,s[11728]=Ir(Ir(0,0)|0,0)|0,s[11729]=Ir(Ir(0,0)|0,32)|0,s[11730]=Ir(Ir(0,0)|0,32)|0,s[11740]=1)}function IZ(){return 1572}function XUe(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,T=0,M=0,L=0;m=I,I=I+32|0,L=m+16|0,M=m+12|0,T=m+8|0,k=m+4|0,B=m,n[L>>2]=o,n[M>>2]=l,n[T>>2]=u,n[k>>2]=A,n[B>>2]=g,_M()|0,$Ue(10656,L,M,T,k,B),I=m}function $Ue(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0;B=Jt(24)|0,JJ(B+4|0,n[l>>2]|0,n[u>>2]|0,n[A>>2]|0,n[g>>2]|0,n[m>>2]|0),n[B>>2]=n[o>>2],n[o>>2]=B}function CZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Re=0,nt=0,Xe=0,At=0;if(At=I,I=I+32|0,Le=At+20|0,Re=At+8|0,nt=At+4|0,Xe=At,l=n[l>>2]|0,l|0){Ve=Le+4|0,T=Le+8|0,M=Re+4|0,L=Re+8|0,q=Re+8|0,oe=Le+8|0;do{if(B=l+4|0,k=HM(B)|0,k|0){if(g=b2(k)|0,n[Le>>2]=0,n[Ve>>2]=0,n[T>>2]=0,A=(D2(k)|0)+1|0,e_e(Le,A),A|0)for(;A=A+-1|0,bu(Re,n[g>>2]|0),m=n[Ve>>2]|0,m>>>0<(n[oe>>2]|0)>>>0?(n[m>>2]=n[Re>>2],n[Ve>>2]=(n[Ve>>2]|0)+4):jM(Le,Re),A;)g=g+4|0;A=P2(k)|0,n[Re>>2]=0,n[M>>2]=0,n[L>>2]=0;e:do if(n[A>>2]|0)for(g=0,m=0;;){if((g|0)==(m|0)?t_e(Re,A):(n[g>>2]=n[A>>2],n[M>>2]=(n[M>>2]|0)+4),A=A+4|0,!(n[A>>2]|0))break e;g=n[M>>2]|0,m=n[q>>2]|0}while(!1);n[nt>>2]=jP(B)|0,n[Xe>>2]=Hr(k)|0,r_e(u,o,nt,Xe,Le,Re),GM(Re),op(Le)}l=n[l>>2]|0}while(l|0)}I=At}function HM(o){return o=o|0,n[o+12>>2]|0}function b2(o){return o=o|0,n[o+12>>2]|0}function D2(o){return o=o|0,n[o+16>>2]|0}function e_e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;g=I,I=I+32|0,u=g,A=n[o>>2]|0,(n[o+8>>2]|0)-A>>2>>>0>>0&&(xZ(u,l,(n[o+4>>2]|0)-A>>2,o+8|0),kZ(o,u),QZ(u)),I=g}function jM(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,g=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=PZ(o)|0,m>>>0>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,T=M>>1,xZ(u,M>>2>>>0>>1>>>0?T>>>0>>0?g:T:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,kZ(o,u),QZ(u),I=B;return}}function P2(o){return o=o|0,n[o+8>>2]|0}function t_e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,g=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=DZ(o)|0,m>>>0>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,T=M>>1,C_e(u,M>>2>>>0>>1>>>0?T>>>0>>0?g:T:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,w_e(o,u),B_e(u),I=B;return}}function jP(o){return o=o|0,n[o>>2]|0}function r_e(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,n_e(o,l,u,A,g,m)}function GM(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function op(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function n_e(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0;B=I,I=I+48|0,L=B+40|0,k=B+32|0,q=B+24|0,T=B+12|0,M=B,jl(k),o=Us(o)|0,n[q>>2]=n[l>>2],u=n[u>>2]|0,A=n[A>>2]|0,qM(T,g),i_e(M,m),n[L>>2]=n[q>>2],s_e(o,L,u,A,T,M),GM(M),op(T),Gl(k),I=B}function qM(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(E_e(o,A),I_e(o,n[l>>2]|0,n[u>>2]|0,A))}function i_e(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(m_e(o,A),y_e(o,n[l>>2]|0,n[u>>2]|0,A))}function s_e(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0;B=I,I=I+32|0,L=B+28|0,q=B+24|0,k=B+12|0,T=B,M=wa(o_e()|0)|0,n[q>>2]=n[l>>2],n[L>>2]=n[q>>2],l=A0(L)|0,u=wZ(u)|0,A=YM(A)|0,n[k>>2]=n[g>>2],L=g+4|0,n[k+4>>2]=n[L>>2],q=g+8|0,n[k+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[g>>2]=0,g=WM(k)|0,n[T>>2]=n[m>>2],L=m+4|0,n[T+4>>2]=n[L>>2],q=m+8|0,n[T+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[m>>2]=0,lu(0,M|0,o|0,l|0,u|0,A|0,g|0,a_e(T)|0)|0,GM(T),op(k),I=B}function o_e(){var o=0;return s[7968]|0||(d_e(10708),o=7968,n[o>>2]=1,n[o+4>>2]=0),10708}function A0(o){return o=o|0,vZ(o)|0}function wZ(o){return o=o|0,BZ(o)|0}function YM(o){return o=o|0,UP(o)|0}function WM(o){return o=o|0,c_e(o)|0}function a_e(o){return o=o|0,l_e(o)|0}function l_e(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Hl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=BZ(n[(n[o>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function BZ(o){return o=o|0,o|0}function c_e(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Hl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=vZ((n[o>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function vZ(o){o=o|0;var l=0,u=0,A=0,g=0;return g=I,I=I+32|0,l=g+12|0,u=g,A=iM(SZ()|0)|0,A?(sM(l,A),oM(u,l),Y8e(o,u),o=aM(l)|0):o=u_e(o)|0,I=g,o|0}function SZ(){var o=0;return s[7960]|0||(h_e(10664),gr(25,10664,U|0)|0,o=7960,n[o>>2]=1,n[o+4>>2]=0),10664}function u_e(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0;return u=I,I=I+16|0,g=u+4|0,B=u,A=Hl(8)|0,l=A,k=Jt(4)|0,n[k>>2]=n[o>>2],m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],bZ(o,m,g),n[A>>2]=o,I=u,l|0}function bZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1656,n[u+12>>2]=l,n[o+4>>2]=u}function f_e(o){o=o|0,sE(o),It(o)}function A_e(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function p_e(o){o=o|0,It(o)}function h_e(o){o=o|0,Mh(o)}function d_e(o){o=o|0,Mo(o,g_e()|0,5)}function g_e(){return 1676}function m_e(o,l){o=o|0,l=l|0;var u=0;if((DZ(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Ot();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function y_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Rr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function DZ(o){return o=o|0,1073741823}function E_e(o,l){o=o|0,l=l|0;var u=0;if((PZ(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Ot();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function I_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Rr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function PZ(o){return o=o|0,1073741823}function C_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Ot();else{g=Jt(l<<2)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<2)}function w_e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>2)<<2)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function B_e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function xZ(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Ot();else{g=Jt(l<<2)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<2)}function kZ(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>2)<<2)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function QZ(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function v_e(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Re=0;if(Re=I,I=I+32|0,L=Re+20|0,q=Re+12|0,M=Re+16|0,oe=Re+4|0,Ve=Re,Le=Re+8|0,k=EZ()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(T=n[k+8>>2]|0,k=n[k+4>>2]|0;bu(L,B),S_e(o,L,k,T),m=m+4|0,B=n[m>>2]|0,B;)T=T+1|0,k=k+1|0;if(m=IZ()|0,B=n[m>>2]|0,B|0)do bu(L,B),n[q>>2]=n[m+4>>2],b_e(l,L,q),m=m+8|0,B=n[m>>2]|0;while(B|0);if(m=n[(eE()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,bu(L,n[(tE(l)|0)>>2]|0),n[q>>2]=UM(l)|0,D_e(u,L,q),m=n[m>>2]|0;while(m|0);if(bu(M,0),m=_M()|0,n[L>>2]=n[M>>2],CZ(L,m,g),m=n[(eE()|0)>>2]|0,m|0){o=L+4|0,l=L+8|0,u=L+8|0;do{if(T=n[m+4>>2]|0,bu(q,n[(tE(T)|0)>>2]|0),P_e(oe,TZ(T)|0),B=n[oe>>2]|0,B|0){n[L>>2]=0,n[o>>2]=0,n[l>>2]=0;do bu(Ve,n[(tE(n[B+4>>2]|0)|0)>>2]|0),k=n[o>>2]|0,k>>>0<(n[u>>2]|0)>>>0?(n[k>>2]=n[Ve>>2],n[o>>2]=(n[o>>2]|0)+4):jM(L,Ve),B=n[B>>2]|0;while(B|0);x_e(A,q,L),op(L)}n[Le>>2]=n[q>>2],M=RZ(T)|0,n[L>>2]=n[Le>>2],CZ(L,M,g),tz(oe),m=n[m>>2]|0}while(m|0)}I=Re}function S_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,H_e(o,l,u,A)}function b_e(o,l,u){o=o|0,l=l|0,u=u|0,__e(o,l,u)}function tE(o){return o=o|0,o|0}function D_e(o,l,u){o=o|0,l=l|0,u=u|0,O_e(o,l,u)}function TZ(o){return o=o|0,o+16|0}function P_e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;if(m=I,I=I+16|0,g=m+8|0,u=m,n[o>>2]=0,A=n[l>>2]|0,n[g>>2]=A,n[u>>2]=o,u=N_e(u)|0,A|0){if(A=Jt(12)|0,B=(FZ(g)|0)+4|0,o=n[B+4>>2]|0,l=A+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=o,l=n[n[g>>2]>>2]|0,n[g>>2]=l,!l)o=A;else for(l=A;o=Jt(12)|0,T=(FZ(g)|0)+4|0,k=n[T+4>>2]|0,B=o+4|0,n[B>>2]=n[T>>2],n[B+4>>2]=k,n[l>>2]=o,B=n[n[g>>2]>>2]|0,n[g>>2]=B,B;)l=o;n[o>>2]=n[u>>2],n[u>>2]=A}I=m}function x_e(o,l,u){o=o|0,l=l|0,u=u|0,k_e(o,l,u)}function RZ(o){return o=o|0,o+24|0}function k_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+24|0,g=A+16|0,k=A+12|0,m=A,jl(g),o=Us(o)|0,n[k>>2]=n[l>>2],qM(m,u),n[B>>2]=n[k>>2],Q_e(o,B,m),op(m),Gl(g),I=A}function Q_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+16|0,k=A+12|0,g=A,m=wa(T_e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=A0(B)|0,n[g>>2]=n[u>>2],B=u+4|0,n[g+4>>2]=n[B>>2],k=u+8|0,n[g+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[u>>2]=0,Ns(0,m|0,o|0,l|0,WM(g)|0)|0,op(g),I=A}function T_e(){var o=0;return s[7976]|0||(R_e(10720),o=7976,n[o>>2]=1,n[o+4>>2]=0),10720}function R_e(o){o=o|0,Mo(o,F_e()|0,2)}function F_e(){return 1732}function N_e(o){return o=o|0,n[o>>2]|0}function FZ(o){return o=o|0,n[o>>2]|0}function O_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,g=A+8|0,B=A,jl(g),o=Us(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],NZ(o,m,u),Gl(g),I=A}function NZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,m=A+4|0,B=A,g=wa(L_e()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=A0(m)|0,Ns(0,g|0,o|0,l|0,wZ(u)|0)|0,I=A}function L_e(){var o=0;return s[7984]|0||(M_e(10732),o=7984,n[o>>2]=1,n[o+4>>2]=0),10732}function M_e(o){o=o|0,Mo(o,U_e()|0,2)}function U_e(){return 1744}function __e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,g=A+8|0,B=A,jl(g),o=Us(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],NZ(o,m,u),Gl(g),I=A}function H_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+32|0,B=g+16|0,m=g+8|0,k=g,jl(m),o=Us(o)|0,n[k>>2]=n[l>>2],u=s[u>>0]|0,A=s[A>>0]|0,n[B>>2]=n[k>>2],j_e(o,B,u,A),Gl(m),I=g}function j_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+16|0,B=g+4|0,k=g,m=wa(G_e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=A0(B)|0,u=rE(u)|0,Li(0,m|0,o|0,l|0,u|0,rE(A)|0)|0,I=g}function G_e(){var o=0;return s[7992]|0||(Y_e(10744),o=7992,n[o>>2]=1,n[o+4>>2]=0),10744}function rE(o){return o=o|0,q_e(o)|0}function q_e(o){return o=o|0,o&255|0}function Y_e(o){o=o|0,Mo(o,W_e()|0,3)}function W_e(){return 1756}function V_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;switch(oe=I,I=I+32|0,k=oe+8|0,T=oe+4|0,M=oe+20|0,L=oe,fM(o,0),A=q8e(l)|0,n[k>>2]=0,q=k+4|0,n[q>>2]=0,n[k+8>>2]=0,A<<24>>24){case 0:{s[M>>0]=0,K_e(T,u,M),GP(o,T)|0,xf(T);break}case 8:{q=XM(l)|0,s[M>>0]=8,bu(L,n[q+4>>2]|0),J_e(T,u,M,L,q+8|0),GP(o,T)|0,xf(T);break}case 9:{if(m=XM(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,g=m+12|0;l=l+-1|0,bu(T,n[g>>2]|0),A=n[q>>2]|0,A>>>0<(n[B>>2]|0)>>>0?(n[A>>2]=n[T>>2],n[q>>2]=(n[q>>2]|0)+4):jM(k,T),l;)g=g+4|0;s[M>>0]=9,bu(L,n[m+8>>2]|0),z_e(T,u,M,L,k),GP(o,T)|0,xf(T);break}default:q=XM(l)|0,s[M>>0]=A,bu(L,n[q+4>>2]|0),Z_e(T,u,M,L),GP(o,T)|0,xf(T)}op(k),I=oe}function K_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;A=I,I=I+16|0,g=A,jl(g),l=Us(l)|0,u4e(o,l,s[u>>0]|0),Gl(g),I=A}function GP(o,l){o=o|0,l=l|0;var u=0;return u=n[o>>2]|0,u|0&&Ya(u|0),n[o>>2]=n[l>>2],n[l>>2]=0,o|0}function J_e(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,T=0;m=I,I=I+32|0,k=m+16|0,B=m+8|0,T=m,jl(B),l=Us(l)|0,u=s[u>>0]|0,n[T>>2]=n[A>>2],g=n[g>>2]|0,n[k>>2]=n[T>>2],o4e(o,l,u,k,g),Gl(B),I=m}function z_e(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,T=0,M=0;m=I,I=I+32|0,T=m+24|0,B=m+16|0,M=m+12|0,k=m,jl(B),l=Us(l)|0,u=s[u>>0]|0,n[M>>2]=n[A>>2],qM(k,g),n[T>>2]=n[M>>2],r4e(o,l,u,T,k),op(k),Gl(B),I=m}function Z_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+32|0,B=g+16|0,m=g+8|0,k=g,jl(m),l=Us(l)|0,u=s[u>>0]|0,n[k>>2]=n[A>>2],n[B>>2]=n[k>>2],X_e(o,l,u,B),Gl(m),I=g}function X_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+16|0,m=g+4|0,k=g,B=wa($_e()|0)|0,u=rE(u)|0,n[k>>2]=n[A>>2],n[m>>2]=n[k>>2],qP(o,Ns(0,B|0,l|0,u|0,A0(m)|0)|0),I=g}function $_e(){var o=0;return s[8e3]|0||(e4e(10756),o=8e3,n[o>>2]=1,n[o+4>>2]=0),10756}function qP(o,l){o=o|0,l=l|0,fM(o,l)}function e4e(o){o=o|0,Mo(o,t4e()|0,2)}function t4e(){return 1772}function r4e(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,T=0,M=0;m=I,I=I+32|0,T=m+16|0,M=m+12|0,B=m,k=wa(n4e()|0)|0,u=rE(u)|0,n[M>>2]=n[A>>2],n[T>>2]=n[M>>2],A=A0(T)|0,n[B>>2]=n[g>>2],T=g+4|0,n[B+4>>2]=n[T>>2],M=g+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[T>>2]=0,n[g>>2]=0,qP(o,Li(0,k|0,l|0,u|0,A|0,WM(B)|0)|0),op(B),I=m}function n4e(){var o=0;return s[8008]|0||(i4e(10768),o=8008,n[o>>2]=1,n[o+4>>2]=0),10768}function i4e(o){o=o|0,Mo(o,s4e()|0,3)}function s4e(){return 1784}function o4e(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,T=0;m=I,I=I+16|0,k=m+4|0,T=m,B=wa(a4e()|0)|0,u=rE(u)|0,n[T>>2]=n[A>>2],n[k>>2]=n[T>>2],A=A0(k)|0,qP(o,Li(0,B|0,l|0,u|0,A|0,YM(g)|0)|0),I=m}function a4e(){var o=0;return s[8016]|0||(l4e(10780),o=8016,n[o>>2]=1,n[o+4>>2]=0),10780}function l4e(o){o=o|0,Mo(o,c4e()|0,3)}function c4e(){return 1800}function u4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=wa(f4e()|0)|0,qP(o,yn(0,A|0,l|0,rE(u)|0)|0)}function f4e(){var o=0;return s[8024]|0||(A4e(10792),o=8024,n[o>>2]=1,n[o+4>>2]=0),10792}function A4e(o){o=o|0,Mo(o,p4e()|0,1)}function p4e(){return 1816}function h4e(){d4e(),g4e(),m4e()}function d4e(){n[2702]=cX(65536)|0}function g4e(){L4e(10856)}function m4e(){y4e(10816)}function y4e(o){o=o|0,E4e(o,5044),I4e(o)|0}function E4e(o,l){o=o|0,l=l|0;var u=0;u=SZ()|0,n[o>>2]=u,Q4e(u,l),Gh(n[o>>2]|0)}function I4e(o){o=o|0;var l=0;return l=n[o>>2]|0,u0(l,C4e()|0),o|0}function C4e(){var o=0;return s[8032]|0||(OZ(10820),gr(64,10820,U|0)|0,o=8032,n[o>>2]=1,n[o+4>>2]=0),Hr(10820)|0||OZ(10820),10820}function OZ(o){o=o|0,v4e(o),f0(o,25)}function w4e(o){o=o|0,B4e(o+24|0)}function B4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function v4e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,18,l,P4e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function S4e(o,l){o=o|0,l=l|0,b4e(o,l)}function b4e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;u=I,I=I+16|0,A=u,g=u+4|0,l0(g,l),n[A>>2]=c0(g,l)|0,D4e(o,A),I=u}function D4e(o,l){o=o|0,l=l|0,LZ(o+4|0,n[l>>2]|0),s[o+8>>0]=1}function LZ(o,l){o=o|0,l=l|0,n[o>>2]=l}function P4e(){return 1824}function x4e(o){return o=o|0,k4e(o)|0}function k4e(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0;return u=I,I=I+16|0,g=u+4|0,B=u,A=Hl(8)|0,l=A,k=Jt(4)|0,l0(g,o),LZ(k,c0(g,o)|0),m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],bZ(o,m,g),n[A>>2]=o,I=u,l|0}function Hl(o){o=o|0;var l=0,u=0;return o=o+7&-8,o>>>0<=32768&&(l=n[2701]|0,o>>>0<=(65536-l|0)>>>0)?(u=(n[2702]|0)+l|0,n[2701]=l+o,o=u):(o=cX(o+8|0)|0,n[o>>2]=n[2703],n[2703]=o,o=o+8|0),o|0}function Q4e(o,l){o=o|0,l=l|0,n[o>>2]=T4e()|0,n[o+4>>2]=R4e()|0,n[o+12>>2]=l,n[o+8>>2]=F4e()|0,n[o+32>>2]=9}function T4e(){return 11744}function R4e(){return 1832}function F4e(){return HP()|0}function N4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(jh(A,896)|0)==512?u|0&&(O4e(u),It(u)):l|0&&It(l)}function O4e(o){o=o|0,o=n[o+4>>2]|0,o|0&&qh(o)}function L4e(o){o=o|0,M4e(o,5052),U4e(o)|0,_4e(o,5058,26)|0,H4e(o,5069,1)|0,j4e(o,5077,10)|0,G4e(o,5087,19)|0,q4e(o,5094,27)|0}function M4e(o,l){o=o|0,l=l|0;var u=0;u=O8e()|0,n[o>>2]=u,L8e(u,l),Gh(n[o>>2]|0)}function U4e(o){o=o|0;var l=0;return l=n[o>>2]|0,u0(l,w8e()|0),o|0}function _4e(o,l,u){return o=o|0,l=l|0,u=u|0,i8e(o,bn(l)|0,u,0),o|0}function H4e(o,l,u){return o=o|0,l=l|0,u=u|0,G3e(o,bn(l)|0,u,0),o|0}function j4e(o,l,u){return o=o|0,l=l|0,u=u|0,C3e(o,bn(l)|0,u,0),o|0}function G4e(o,l,u){return o=o|0,l=l|0,u=u|0,o3e(o,bn(l)|0,u,0),o|0}function MZ(o,l){o=o|0,l=l|0;var u=0,A=0;e:for(;;){for(u=n[2703]|0;;){if((u|0)==(l|0))break e;if(A=n[u>>2]|0,n[2703]=A,!u)u=A;else break}It(u)}n[2701]=o}function q4e(o,l,u){return o=o|0,l=l|0,u=u|0,Y4e(o,bn(l)|0,u,0),o|0}function Y4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=VM()|0,o=W4e(u)|0,Dn(m,l,g,o,V4e(u,A)|0,A)}function VM(){var o=0,l=0;if(s[8040]|0||(_Z(10860),gr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(Hr(10860)|0)){o=10860,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));_Z(10860)}return 10860}function W4e(o){return o=o|0,o|0}function V4e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,T=VM()|0,B=T+24|0,l=Ir(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(UZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(K4e(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function UZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function K4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=J4e(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,z4e(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=g+8|0,UZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,Z4e(o,g),X4e(g),I=k;return}}function J4e(o){return o=o|0,536870911}function z4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Ot();else{g=Jt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function Z4e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function X4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function _Z(o){o=o|0,t3e(o)}function $4e(o){o=o|0,e3e(o+24|0)}function e3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function t3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,r3e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function r3e(){return 1840}function n3e(o,l,u){o=o|0,l=l|0,u=u|0,s3e(n[(i3e(o)|0)>>2]|0,l,u)}function i3e(o){return o=o|0,(n[(VM()|0)+24>>2]|0)+(o<<3)|0}function s3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;A=I,I=I+16|0,m=A+1|0,g=A,l0(m,l),l=c0(m,l)|0,l0(g,u),u=c0(g,u)|0,lp[o&31](l,u),I=A}function o3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=KM()|0,o=a3e(u)|0,Dn(m,l,g,o,l3e(u,A)|0,A)}function KM(){var o=0,l=0;if(s[8048]|0||(jZ(10896),gr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(Hr(10896)|0)){o=10896,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));jZ(10896)}return 10896}function a3e(o){return o=o|0,o|0}function l3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,T=KM()|0,B=T+24|0,l=Ir(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(HZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(c3e(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function HZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function c3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=u3e(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,f3e(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=g+8|0,HZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,A3e(o,g),p3e(g),I=k;return}}function u3e(o){return o=o|0,536870911}function f3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Ot();else{g=Jt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function A3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function p3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function jZ(o){o=o|0,g3e(o)}function h3e(o){o=o|0,d3e(o+24|0)}function d3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function g3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,m3e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function m3e(){return 1852}function y3e(o,l){return o=o|0,l=l|0,I3e(n[(E3e(o)|0)>>2]|0,l)|0}function E3e(o){return o=o|0,(n[(KM()|0)+24>>2]|0)+(o<<3)|0}function I3e(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,l0(A,l),l=c0(A,l)|0,l=UP(g0[o&31](l)|0)|0,I=u,l|0}function C3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=JM()|0,o=w3e(u)|0,Dn(m,l,g,o,B3e(u,A)|0,A)}function JM(){var o=0,l=0;if(s[8056]|0||(qZ(10932),gr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(Hr(10932)|0)){o=10932,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));qZ(10932)}return 10932}function w3e(o){return o=o|0,o|0}function B3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,T=JM()|0,B=T+24|0,l=Ir(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(GZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(v3e(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function GZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function v3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=S3e(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,b3e(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=g+8|0,GZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,D3e(o,g),P3e(g),I=k;return}}function S3e(o){return o=o|0,536870911}function b3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Ot();else{g=Jt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function D3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function P3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function qZ(o){o=o|0,Q3e(o)}function x3e(o){o=o|0,k3e(o+24|0)}function k3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function Q3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,7,l,T3e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function T3e(){return 1860}function R3e(o,l,u){return o=o|0,l=l|0,u=u|0,N3e(n[(F3e(o)|0)>>2]|0,l,u)|0}function F3e(o){return o=o|0,(n[(JM()|0)+24>>2]|0)+(o<<3)|0}function N3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0;return A=I,I=I+32|0,B=A+12|0,m=A+8|0,k=A,T=A+16|0,g=A+4|0,O3e(T,l),L3e(k,T,l),Uh(g,u),u=_h(g,u)|0,n[B>>2]=n[k>>2],T2[o&15](m,B,u),u=M3e(m)|0,xf(m),Hh(g),I=A,u|0}function O3e(o,l){o=o|0,l=l|0}function L3e(o,l,u){o=o|0,l=l|0,u=u|0,U3e(o,u)}function M3e(o){return o=o|0,Us(o)|0}function U3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;g=I,I=I+16|0,u=g,A=l,A&1?(_3e(u,0),qa(A|0,u|0)|0,H3e(o,u),j3e(u)):n[o>>2]=n[l>>2],I=g}function _3e(o,l){o=o|0,l=l|0,vu(o,l),n[o+4>>2]=0,s[o+8>>0]=0}function H3e(o,l){o=o|0,l=l|0,n[o>>2]=n[l+4>>2]}function j3e(o){o=o|0,s[o+8>>0]=0}function G3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=zM()|0,o=q3e(u)|0,Dn(m,l,g,o,Y3e(u,A)|0,A)}function zM(){var o=0,l=0;if(s[8064]|0||(WZ(10968),gr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(Hr(10968)|0)){o=10968,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));WZ(10968)}return 10968}function q3e(o){return o=o|0,o|0}function Y3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,T=zM()|0,B=T+24|0,l=Ir(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(YZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(W3e(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function YZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function W3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=V3e(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,K3e(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=g+8|0,YZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,J3e(o,g),z3e(g),I=k;return}}function V3e(o){return o=o|0,536870911}function K3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Ot();else{g=Jt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function J3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function z3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function WZ(o){o=o|0,$3e(o)}function Z3e(o){o=o|0,X3e(o+24|0)}function X3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function $3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,1,l,e8e()|0,5),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function e8e(){return 1872}function t8e(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,n8e(n[(r8e(o)|0)>>2]|0,l,u,A,g,m)}function r8e(o){return o=o|0,(n[(zM()|0)+24>>2]|0)+(o<<3)|0}function n8e(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0;B=I,I=I+32|0,k=B+16|0,T=B+12|0,M=B+8|0,L=B+4|0,q=B,Uh(k,l),l=_h(k,l)|0,Uh(T,u),u=_h(T,u)|0,Uh(M,A),A=_h(M,A)|0,Uh(L,g),g=_h(L,g)|0,Uh(q,m),m=_h(q,m)|0,hX[o&1](l,u,A,g,m),Hh(q),Hh(L),Hh(M),Hh(T),Hh(k),I=B}function i8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=ZM()|0,o=s8e(u)|0,Dn(m,l,g,o,o8e(u,A)|0,A)}function ZM(){var o=0,l=0;if(s[8072]|0||(KZ(11004),gr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(Hr(11004)|0)){o=11004,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));KZ(11004)}return 11004}function s8e(o){return o=o|0,o|0}function o8e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,T=ZM()|0,B=T+24|0,l=Ir(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(VZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(a8e(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function VZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function a8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=l8e(o)|0,A>>>0>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,c8e(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=g+8|0,VZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,u8e(o,g),f8e(g),I=k;return}}function l8e(o){return o=o|0,536870911}function c8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Ot();else{g=Jt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function u8e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function f8e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function KZ(o){o=o|0,h8e(o)}function A8e(o){o=o|0,p8e(o+24|0)}function p8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function h8e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,12,l,d8e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function d8e(){return 1896}function g8e(o,l,u){o=o|0,l=l|0,u=u|0,y8e(n[(m8e(o)|0)>>2]|0,l,u)}function m8e(o){return o=o|0,(n[(ZM()|0)+24>>2]|0)+(o<<3)|0}function y8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;A=I,I=I+16|0,m=A+4|0,g=A,E8e(m,l),l=I8e(m,l)|0,Uh(g,u),u=_h(g,u)|0,lp[o&31](l,u),Hh(g),I=A}function E8e(o,l){o=o|0,l=l|0}function I8e(o,l){return o=o|0,l=l|0,C8e(l)|0}function C8e(o){return o=o|0,o|0}function w8e(){var o=0;return s[8080]|0||(JZ(11040),gr(70,11040,U|0)|0,o=8080,n[o>>2]=1,n[o+4>>2]=0),Hr(11040)|0||JZ(11040),11040}function JZ(o){o=o|0,S8e(o),f0(o,71)}function B8e(o){o=o|0,v8e(o+24|0)}function v8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function S8e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,7,l,x8e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function b8e(o){o=o|0,D8e(o)}function D8e(o){o=o|0,P8e(o)}function P8e(o){o=o|0,s[o+8>>0]=1}function x8e(){return 1936}function k8e(){return Q8e()|0}function Q8e(){var o=0,l=0,u=0,A=0,g=0,m=0,B=0;return l=I,I=I+16|0,g=l+4|0,B=l,u=Hl(8)|0,o=u,m=o+4|0,n[m>>2]=Jt(1)|0,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],T8e(A,m,g),n[u>>2]=A,I=l,o|0}function T8e(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1916,n[u+12>>2]=l,n[o+4>>2]=u}function R8e(o){o=o|0,sE(o),It(o)}function F8e(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function N8e(o){o=o|0,It(o)}function O8e(){var o=0;return s[8088]|0||(G8e(11076),gr(25,11076,U|0)|0,o=8088,n[o>>2]=1,n[o+4>>2]=0),11076}function L8e(o,l){o=o|0,l=l|0,n[o>>2]=M8e()|0,n[o+4>>2]=U8e()|0,n[o+12>>2]=l,n[o+8>>2]=_8e()|0,n[o+32>>2]=10}function M8e(){return 11745}function U8e(){return 1940}function _8e(){return _P()|0}function H8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(jh(A,896)|0)==512?u|0&&(j8e(u),It(u)):l|0&&It(l)}function j8e(o){o=o|0,o=n[o+4>>2]|0,o|0&&qh(o)}function G8e(o){o=o|0,Mh(o)}function bu(o,l){o=o|0,l=l|0,n[o>>2]=l}function XM(o){return o=o|0,n[o>>2]|0}function q8e(o){return o=o|0,s[n[o>>2]>>0]|0}function Y8e(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,n[A>>2]=n[o>>2],W8e(l,A)|0,I=u}function W8e(o,l){o=o|0,l=l|0;var u=0;return u=V8e(n[o>>2]|0,l)|0,l=o+4|0,n[(n[l>>2]|0)+8>>2]=u,n[(n[l>>2]|0)+8>>2]|0}function V8e(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,jl(A),o=Us(o)|0,l=K8e(o,n[l>>2]|0)|0,Gl(A),I=u,l|0}function jl(o){o=o|0,n[o>>2]=n[2701],n[o+4>>2]=n[2703]}function K8e(o,l){o=o|0,l=l|0;var u=0;return u=wa(J8e()|0)|0,yn(0,u|0,o|0,YM(l)|0)|0}function Gl(o){o=o|0,MZ(n[o>>2]|0,n[o+4>>2]|0)}function J8e(){var o=0;return s[8096]|0||(z8e(11120),o=8096,n[o>>2]=1,n[o+4>>2]=0),11120}function z8e(o){o=o|0,Mo(o,Z8e()|0,1)}function Z8e(){return 1948}function X8e(){$8e()}function $8e(){var o=0,l=0,u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Re=0;if(Le=I,I=I+16|0,L=Le+4|0,q=Le,Aa(65536,10804,n[2702]|0,10812),u=EZ()|0,l=n[u>>2]|0,o=n[l>>2]|0,o|0)for(A=n[u+8>>2]|0,u=n[u+4>>2]|0;gf(o|0,c[u>>0]|0|0,s[A>>0]|0),l=l+4|0,o=n[l>>2]|0,o;)A=A+1|0,u=u+1|0;if(o=IZ()|0,l=n[o>>2]|0,l|0)do MA(l|0,n[o+4>>2]|0),o=o+8|0,l=n[o>>2]|0;while(l|0);MA(eHe()|0,5167),M=eE()|0,o=n[M>>2]|0;e:do if(o|0){do tHe(n[o+4>>2]|0),o=n[o>>2]|0;while(o|0);if(o=n[M>>2]|0,o|0){T=M;do{for(;g=o,o=n[o>>2]|0,g=n[g+4>>2]|0,!!(rHe(g)|0);)if(n[q>>2]=T,n[L>>2]=n[q>>2],nHe(M,L)|0,!o)break e;if(iHe(g),T=n[T>>2]|0,l=zZ(g)|0,m=Oi()|0,B=I,I=I+((1*(l<<2)|0)+15&-16)|0,k=I,I=I+((1*(l<<2)|0)+15&-16)|0,l=n[(TZ(g)|0)>>2]|0,l|0)for(u=B,A=k;n[u>>2]=n[(tE(n[l+4>>2]|0)|0)>>2],n[A>>2]=n[l+8>>2],l=n[l>>2]|0,l;)u=u+4|0,A=A+4|0;Re=tE(g)|0,l=sHe(g)|0,u=zZ(g)|0,A=oHe(g)|0,cc(Re|0,l|0,B|0,k|0,u|0,A|0,UM(g)|0),LA(m|0)}while(o|0)}}while(!1);if(o=n[(_M()|0)>>2]|0,o|0)do Re=o+4|0,M=HM(Re)|0,g=P2(M)|0,m=b2(M)|0,B=(D2(M)|0)+1|0,k=YP(M)|0,T=ZZ(Re)|0,M=Hr(M)|0,L=jP(Re)|0,q=$M(Re)|0,cu(0,g|0,m|0,B|0,k|0,T|0,M|0,L|0,q|0,eU(Re)|0),o=n[o>>2]|0;while(o|0);o=n[(eE()|0)>>2]|0;e:do if(o|0){t:for(;;){if(l=n[o+4>>2]|0,l|0&&(oe=n[(tE(l)|0)>>2]|0,Ve=n[(RZ(l)|0)>>2]|0,Ve|0)){u=Ve;do{l=u+4|0,A=HM(l)|0;r:do if(A|0)switch(Hr(A)|0){case 0:break t;case 4:case 3:case 2:{k=P2(A)|0,T=b2(A)|0,M=(D2(A)|0)+1|0,L=YP(A)|0,q=Hr(A)|0,Re=jP(l)|0,cu(oe|0,k|0,T|0,M|0,L|0,0,q|0,Re|0,$M(l)|0,eU(l)|0);break r}case 1:{B=P2(A)|0,k=b2(A)|0,T=(D2(A)|0)+1|0,M=YP(A)|0,L=ZZ(l)|0,q=Hr(A)|0,Re=jP(l)|0,cu(oe|0,B|0,k|0,T|0,M|0,L|0,q|0,Re|0,$M(l)|0,eU(l)|0);break r}case 5:{M=P2(A)|0,L=b2(A)|0,q=(D2(A)|0)+1|0,Re=YP(A)|0,cu(oe|0,M|0,L|0,q|0,Re|0,aHe(A)|0,Hr(A)|0,0,0,0);break r}default:break r}while(!1);u=n[u>>2]|0}while(u|0)}if(o=n[o>>2]|0,!o)break e}Ot()}while(!1);we(),I=Le}function eHe(){return 11703}function tHe(o){o=o|0,s[o+40>>0]=0}function rHe(o){return o=o|0,(s[o+40>>0]|0)!=0|0}function nHe(o,l){return o=o|0,l=l|0,l=lHe(l)|0,o=n[l>>2]|0,n[l>>2]=n[o>>2],It(o),n[l>>2]|0}function iHe(o){o=o|0,s[o+40>>0]=1}function zZ(o){return o=o|0,n[o+20>>2]|0}function sHe(o){return o=o|0,n[o+8>>2]|0}function oHe(o){return o=o|0,n[o+32>>2]|0}function YP(o){return o=o|0,n[o+4>>2]|0}function ZZ(o){return o=o|0,n[o+4>>2]|0}function $M(o){return o=o|0,n[o+8>>2]|0}function eU(o){return o=o|0,n[o+16>>2]|0}function aHe(o){return o=o|0,n[o+20>>2]|0}function lHe(o){return o=o|0,n[o>>2]|0}function WP(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Re=0,nt=0,Xe=0,At=0,He=0,We=0,Mt=0;Mt=I,I=I+16|0,oe=Mt;do if(o>>>0<245){if(M=o>>>0<11?16:o+11&-8,o=M>>>3,q=n[2783]|0,u=q>>>o,u&3|0)return l=(u&1^1)+o|0,o=11172+(l<<1<<2)|0,u=o+8|0,A=n[u>>2]|0,g=A+8|0,m=n[g>>2]|0,(o|0)==(m|0)?n[2783]=q&~(1<>2]=o,n[u>>2]=m),We=l<<3,n[A+4>>2]=We|3,We=A+We+4|0,n[We>>2]=n[We>>2]|1,We=g,I=Mt,We|0;if(L=n[2785]|0,M>>>0>L>>>0){if(u|0)return l=2<>>12&16,l=l>>>B,u=l>>>5&8,l=l>>>u,g=l>>>2&4,l=l>>>g,o=l>>>1&2,l=l>>>o,A=l>>>1&1,A=(u|B|g|o|A)+(l>>>A)|0,l=11172+(A<<1<<2)|0,o=l+8|0,g=n[o>>2]|0,B=g+8|0,u=n[B>>2]|0,(l|0)==(u|0)?(o=q&~(1<>2]=l,n[o>>2]=u,o=q),m=(A<<3)-M|0,n[g+4>>2]=M|3,A=g+M|0,n[A+4>>2]=m|1,n[A+m>>2]=m,L|0&&(g=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=g,n[l+12>>2]=g,n[g+8>>2]=l,n[g+12>>2]=u),n[2785]=m,n[2788]=A,We=B,I=Mt,We|0;if(k=n[2784]|0,k){if(u=(k&0-k)+-1|0,B=u>>>12&16,u=u>>>B,m=u>>>5&8,u=u>>>m,T=u>>>2&4,u=u>>>T,A=u>>>1&2,u=u>>>A,o=u>>>1&1,o=n[11436+((m|B|T|A|o)+(u>>>o)<<2)>>2]|0,u=(n[o+4>>2]&-8)-M|0,A=n[o+16+(((n[o+16>>2]|0)==0&1)<<2)>>2]|0,!A)T=o,m=u;else{do B=(n[A+4>>2]&-8)-M|0,T=B>>>0>>0,u=T?B:u,o=T?A:o,A=n[A+16+(((n[A+16>>2]|0)==0&1)<<2)>>2]|0;while(A|0);T=o,m=u}if(B=T+M|0,T>>>0>>0){g=n[T+24>>2]|0,l=n[T+12>>2]|0;do if((l|0)==(T|0)){if(o=T+20|0,l=n[o>>2]|0,!l&&(o=T+16|0,l=n[o>>2]|0,!l)){u=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0,u=l}else u=n[T+8>>2]|0,n[u+12>>2]=l,n[l+8>>2]=u,u=l;while(!1);do if(g|0){if(l=n[T+28>>2]|0,o=11436+(l<<2)|0,(T|0)==(n[o>>2]|0)){if(n[o>>2]=u,!u){n[2784]=k&~(1<>2]|0)!=(T|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=g,l=n[T+16>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),l=n[T+20>>2]|0,l|0&&(n[u+20>>2]=l,n[l+24>>2]=u)}while(!1);return m>>>0<16?(We=m+M|0,n[T+4>>2]=We|3,We=T+We+4|0,n[We>>2]=n[We>>2]|1):(n[T+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,L|0&&(A=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=q|l,l=u,o=u+8|0),n[o>>2]=A,n[l+12>>2]=A,n[A+8>>2]=l,n[A+12>>2]=u),n[2785]=m,n[2788]=B),We=T+8|0,I=Mt,We|0}else q=M}else q=M}else q=M}else if(o>>>0<=4294967231)if(o=o+11|0,M=o&-8,T=n[2784]|0,T){A=0-M|0,o=o>>>8,o?M>>>0>16777215?k=31:(q=(o+1048320|0)>>>16&8,He=o<>>16&4,He=He<>>16&2,k=14-(L|q|k)+(He<>>15)|0,k=M>>>(k+7|0)&1|k<<1):k=0,u=n[11436+(k<<2)>>2]|0;e:do if(!u)u=0,o=0,He=57;else for(o=0,B=M<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(g=(n[u+4>>2]&-8)-M|0,g>>>0>>0)if(g)o=u,A=g;else{o=u,A=0,g=u,He=61;break e}if(g=n[u+20>>2]|0,u=n[u+16+(B>>>31<<2)>>2]|0,m=(g|0)==0|(g|0)==(u|0)?m:g,g=(u|0)==0,g){u=m,He=57;break}else B=B<<((g^1)&1)}while(!1);if((He|0)==57){if((u|0)==0&(o|0)==0){if(o=2<>>12&16,q=q>>>B,m=q>>>5&8,q=q>>>m,k=q>>>2&4,q=q>>>k,L=q>>>1&2,q=q>>>L,u=q>>>1&1,o=0,u=n[11436+((m|B|k|L|u)+(q>>>u)<<2)>>2]|0}u?(g=u,He=61):(k=o,B=A)}if((He|0)==61)for(;;)if(He=0,u=(n[g+4>>2]&-8)-M|0,q=u>>>0>>0,u=q?u:A,o=q?g:o,g=n[g+16+(((n[g+16>>2]|0)==0&1)<<2)>>2]|0,g)A=u,He=61;else{k=o,B=u;break}if(k|0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=k+M|0,k>>>0>=m>>>0)return We=0,I=Mt,We|0;g=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(o=k+20|0,l=n[o>>2]|0,!l&&(o=k+16|0,l=n[o>>2]|0,!l)){l=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0}else We=n[k+8>>2]|0,n[We+12>>2]=l,n[l+8>>2]=We;while(!1);do if(g){if(o=n[k+28>>2]|0,u=11436+(o<<2)|0,(k|0)==(n[u>>2]|0)){if(n[u>>2]=l,!l){A=T&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){A=T;break}n[l+24>>2]=g,o=n[k+16>>2]|0,o|0&&(n[l+16>>2]=o,n[o+24>>2]=l),o=n[k+20>>2]|0,o&&(n[l+20>>2]=o,n[o+24>>2]=l),A=T}else A=T;while(!1);do if(B>>>0>=16){if(n[k+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=u;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(He=(l+1048320|0)>>>16&8,We=l<>>16&4,We=We<>>16&2,l=14-(At|He|l)+(We<>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,u=11436+(l<<2)|0,n[m+28>>2]=l,o=m+16|0,n[o+4>>2]=0,n[o>>2]=0,o=1<>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}for(o=B<<((l|0)==31?0:25-(l>>>1)|0),u=n[u>>2]|0;;){if((n[u+4>>2]&-8|0)==(B|0)){He=97;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=96;break}}if((He|0)==96){n[A>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((He|0)==97){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=m,n[He>>2]=m,n[m+8>>2]=We,n[m+12>>2]=u,n[m+24>>2]=0;break}}else We=B+M|0,n[k+4>>2]=We|3,We=k+We+4|0,n[We>>2]=n[We>>2]|1;while(!1);return We=k+8|0,I=Mt,We|0}else q=M}else q=M;else q=-1;while(!1);if(u=n[2785]|0,u>>>0>=q>>>0)return l=u-q|0,o=n[2788]|0,l>>>0>15?(We=o+q|0,n[2788]=We,n[2785]=l,n[We+4>>2]=l|1,n[We+l>>2]=l,n[o+4>>2]=q|3):(n[2785]=0,n[2788]=0,n[o+4>>2]=u|3,We=o+u+4|0,n[We>>2]=n[We>>2]|1),We=o+8|0,I=Mt,We|0;if(B=n[2786]|0,B>>>0>q>>>0)return At=B-q|0,n[2786]=At,We=n[2789]|0,He=We+q|0,n[2789]=He,n[He+4>>2]=At|1,n[We+4>>2]=q|3,We=We+8|0,I=Mt,We|0;if(n[2901]|0?o=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,o=oe&-16^1431655768,n[oe>>2]=o,n[2901]=o,o=4096),k=q+48|0,T=q+47|0,m=o+T|0,g=0-o|0,M=m&g,M>>>0<=q>>>0||(o=n[2893]|0,o|0&&(L=n[2891]|0,oe=L+M|0,oe>>>0<=L>>>0|oe>>>0>o>>>0)))return We=0,I=Mt,We|0;e:do if(n[2894]&4)l=0,He=133;else{u=n[2789]|0;t:do if(u){for(A=11580;o=n[A>>2]|0,!(o>>>0<=u>>>0&&(Re=A+4|0,(o+(n[Re>>2]|0)|0)>>>0>u>>>0));)if(o=n[A+8>>2]|0,o)A=o;else{He=118;break t}if(l=m-B&g,l>>>0<2147483647)if(o=Yh(l|0)|0,(o|0)==((n[A>>2]|0)+(n[Re>>2]|0)|0)){if((o|0)!=-1){B=l,m=o,He=135;break e}}else A=o,He=126;else l=0}else He=118;while(!1);do if((He|0)==118)if(u=Yh(0)|0,(u|0)!=-1&&(l=u,Ve=n[2902]|0,Le=Ve+-1|0,l=(Le&l|0?(Le+l&0-Ve)-l|0:0)+M|0,Ve=n[2891]|0,Le=l+Ve|0,l>>>0>q>>>0&l>>>0<2147483647)){if(Re=n[2893]|0,Re|0&&Le>>>0<=Ve>>>0|Le>>>0>Re>>>0){l=0;break}if(o=Yh(l|0)|0,(o|0)==(u|0)){B=l,m=u,He=135;break e}else A=o,He=126}else l=0;while(!1);do if((He|0)==126){if(u=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(A|0)!=-1)))if((A|0)==-1){l=0;break}else{B=l,m=A,He=135;break e}if(o=n[2903]|0,o=T-l+o&0-o,o>>>0>=2147483647){B=l,m=A,He=135;break e}if((Yh(o|0)|0)==-1){Yh(u|0)|0,l=0;break}else{B=o+l|0,m=A,He=135;break e}}while(!1);n[2894]=n[2894]|4,He=133}while(!1);if((He|0)==133&&M>>>0<2147483647&&(At=Yh(M|0)|0,Re=Yh(0)|0,nt=Re-At|0,Xe=nt>>>0>(q+40|0)>>>0,!((At|0)==-1|Xe^1|At>>>0>>0&((At|0)!=-1&(Re|0)!=-1)^1))&&(B=Xe?nt:l,m=At,He=135),(He|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),T=n[2789]|0;do if(T){for(l=11580;;){if(o=n[l>>2]|0,u=l+4|0,A=n[u>>2]|0,(m|0)==(o+A|0)){He=145;break}if(g=n[l+8>>2]|0,g)l=g;else break}if((He|0)==145&&!(n[l+12>>2]&8|0)&&T>>>0>>0&T>>>0>=o>>>0){n[u>>2]=A+B,We=T+8|0,We=We&7|0?0-We&7:0,He=T+We|0,We=(n[2786]|0)+(B-We)|0,n[2789]=He,n[2786]=We,n[He+4>>2]=We|1,n[He+We+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),u=m+B|0,l=11580;;){if((n[l>>2]|0)==(u|0)){He=153;break}if(o=n[l+8>>2]|0,o)l=o;else break}if((He|0)==153&&!(n[l+12>>2]&8|0)){n[l>>2]=m,L=l+4|0,n[L>>2]=(n[L>>2]|0)+B,L=m+8|0,L=m+(L&7|0?0-L&7:0)|0,l=u+8|0,l=u+(l&7|0?0-l&7:0)|0,M=L+q|0,k=l-L-q|0,n[L+4>>2]=q|3;do if((l|0)!=(T|0)){if((l|0)==(n[2788]|0)){We=(n[2785]|0)+k|0,n[2785]=We,n[2788]=M,n[M+4>>2]=We|1,n[M+We>>2]=We;break}if(o=n[l+4>>2]|0,(o&3|0)==1){B=o&-8,A=o>>>3;e:do if(o>>>0<256)if(o=n[l+8>>2]|0,u=n[l+12>>2]|0,(u|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=u,n[u+8>>2]=o;break}else{m=n[l+24>>2]|0,o=n[l+12>>2]|0;do if((o|0)==(l|0)){if(A=l+16|0,u=A+4|0,o=n[u>>2]|0,!o)if(o=n[A>>2]|0,o)u=A;else{o=0;break}for(;;){if(A=o+20|0,g=n[A>>2]|0,g|0){o=g,u=A;continue}if(A=o+16|0,g=n[A>>2]|0,g)o=g,u=A;else break}n[u>>2]=0}else We=n[l+8>>2]|0,n[We+12>>2]=o,n[o+8>>2]=We;while(!1);if(!m)break;u=n[l+28>>2]|0,A=11436+(u<<2)|0;do if((l|0)!=(n[A>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=o,!o)break e}else{if(n[A>>2]=o,o|0)break;n[2784]=n[2784]&~(1<>2]=m,u=l+16|0,A=n[u>>2]|0,A|0&&(n[o+16>>2]=A,n[A+24>>2]=o),u=n[u+4>>2]|0,!u)break;n[o+20>>2]=u,n[u+24>>2]=o}while(!1);l=l+B|0,g=B+k|0}else g=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=g|1,n[M+g>>2]=g,l=g>>>3,g>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=u;break}l=g>>>8;do if(!l)l=0;else{if(g>>>0>16777215){l=31;break}He=(l+1048320|0)>>>16&8,We=l<>>16&4,We=We<>>16&2,l=14-(At|He|l)+(We<>>15)|0,l=g>>>(l+7|0)&1|l<<1}while(!1);if(A=11436+(l<<2)|0,n[M+28>>2]=l,o=M+16|0,n[o+4>>2]=0,n[o>>2]=0,o=n[2784]|0,u=1<>2]=M,n[M+24>>2]=A,n[M+12>>2]=M,n[M+8>>2]=M;break}for(o=g<<((l|0)==31?0:25-(l>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(g|0)){He=194;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=193;break}}if((He|0)==193){n[A>>2]=M,n[M+24>>2]=u,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((He|0)==194){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=M,n[He>>2]=M,n[M+8>>2]=We,n[M+12>>2]=u,n[M+24>>2]=0;break}}else We=(n[2786]|0)+k|0,n[2786]=We,n[2789]=M,n[M+4>>2]=We|1;while(!1);return We=L+8|0,I=Mt,We|0}for(l=11580;o=n[l>>2]|0,!(o>>>0<=T>>>0&&(We=o+(n[l+4>>2]|0)|0,We>>>0>T>>>0));)l=n[l+8>>2]|0;g=We+-47|0,o=g+8|0,o=g+(o&7|0?0-o&7:0)|0,g=T+16|0,o=o>>>0>>0?T:o,l=o+8|0,u=m+8|0,u=u&7|0?0-u&7:0,He=m+u|0,u=B+-40-u|0,n[2789]=He,n[2786]=u,n[He+4>>2]=u|1,n[He+u+4>>2]=40,n[2790]=n[2905],u=o+4|0,n[u>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=o+24|0;do He=l,l=l+4|0,n[l>>2]=7;while((He+8|0)>>>0>>0);if((o|0)!=(T|0)){if(m=o-T|0,n[u>>2]=n[u>>2]&-2,n[T+4>>2]=m|1,n[o>>2]=m,l=m>>>3,m>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=T,n[l+12>>2]=T,n[T+8>>2]=l,n[T+12>>2]=u;break}if(l=m>>>8,l?m>>>0>16777215?u=31:(He=(l+1048320|0)>>>16&8,We=l<>>16&4,We=We<>>16&2,u=14-(At|He|u)+(We<>>15)|0,u=m>>>(u+7|0)&1|u<<1):u=0,A=11436+(u<<2)|0,n[T+28>>2]=u,n[T+20>>2]=0,n[g>>2]=0,l=n[2784]|0,o=1<>2]=T,n[T+24>>2]=A,n[T+12>>2]=T,n[T+8>>2]=T;break}for(o=m<<((u|0)==31?0:25-(u>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(m|0)){He=216;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=215;break}}if((He|0)==215){n[A>>2]=T,n[T+24>>2]=u,n[T+12>>2]=T,n[T+8>>2]=T;break}else if((He|0)==216){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=T,n[He>>2]=T,n[T+8>>2]=We,n[T+12>>2]=u,n[T+24>>2]=0;break}}}else{We=n[2787]|0,(We|0)==0|m>>>0>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do We=11172+(l<<1<<2)|0,n[We+12>>2]=We,n[We+8>>2]=We,l=l+1|0;while((l|0)!=32);We=m+8|0,We=We&7|0?0-We&7:0,He=m+We|0,We=B+-40-We|0,n[2789]=He,n[2786]=We,n[He+4>>2]=We|1,n[He+We+4>>2]=40,n[2790]=n[2905]}while(!1);if(l=n[2786]|0,l>>>0>q>>>0)return At=l-q|0,n[2786]=At,We=n[2789]|0,He=We+q|0,n[2789]=He,n[He+4>>2]=At|1,n[We+4>>2]=q|3,We=We+8|0,I=Mt,We|0}return n[(nE()|0)>>2]=12,We=0,I=Mt,We|0}function VP(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0,T=0;if(o){u=o+-8|0,g=n[2787]|0,o=n[o+-4>>2]|0,l=o&-8,T=u+l|0;do if(o&1)k=u,B=u;else{if(A=n[u>>2]|0,!(o&3)||(B=u+(0-A)|0,m=A+l|0,B>>>0>>0))return;if((B|0)==(n[2788]|0)){if(o=T+4|0,l=n[o>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[o>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(u=A>>>3,A>>>0<256)if(o=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=l,n[l+8>>2]=o,k=B,l=m;break}g=n[B+24>>2]|0,o=n[B+12>>2]|0;do if((o|0)==(B|0)){if(u=B+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{o=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=o,n[o+8>>2]=k;while(!1);if(g){if(l=n[B+28>>2]|0,u=11436+(l<<2)|0,(B|0)==(n[u>>2]|0)){if(n[u>>2]=o,!o){n[2784]=n[2784]&~(1<>2]|0)!=(B|0)&1)<<2)>>2]=o,!o){k=B,l=m;break}n[o+24>>2]=g,l=B+16|0,u=n[l>>2]|0,u|0&&(n[o+16>>2]=u,n[u+24>>2]=o),l=n[l+4>>2]|0,l?(n[o+20>>2]=l,n[l+24>>2]=o,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(!1);if(!(B>>>0>=T>>>0)&&(o=T+4|0,A=n[o>>2]|0,!!(A&1))){if(A&2)n[o>>2]=A&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,g=l;else{if(o=n[2788]|0,(T|0)==(n[2789]|0)){if(T=(n[2786]|0)+l|0,n[2786]=T,n[2789]=k,n[k+4>>2]=T|1,(k|0)!=(o|0))return;n[2788]=0,n[2785]=0;return}if((T|0)==(o|0)){T=(n[2785]|0)+l|0,n[2785]=T,n[2788]=B,n[k+4>>2]=T|1,n[B+T>>2]=T;return}g=(A&-8)+l|0,u=A>>>3;do if(A>>>0<256)if(l=n[T+8>>2]|0,o=n[T+12>>2]|0,(o|0)==(l|0)){n[2783]=n[2783]&~(1<>2]=o,n[o+8>>2]=l;break}else{m=n[T+24>>2]|0,o=n[T+12>>2]|0;do if((o|0)==(T|0)){if(u=T+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{u=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0,u=o}else u=n[T+8>>2]|0,n[u+12>>2]=o,n[o+8>>2]=u,u=o;while(!1);if(m|0){if(o=n[T+28>>2]|0,l=11436+(o<<2)|0,(T|0)==(n[l>>2]|0)){if(n[l>>2]=u,!u){n[2784]=n[2784]&~(1<>2]|0)!=(T|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=m,o=T+16|0,l=n[o>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),o=n[o+4>>2]|0,o|0&&(n[u+20>>2]=o,n[o+24>>2]=u)}}while(!1);if(n[k+4>>2]=g|1,n[B+g>>2]=g,(k|0)==(n[2788]|0)){n[2785]=g;return}}if(o=g>>>3,g>>>0<256){u=11172+(o<<1<<2)|0,l=n[2783]|0,o=1<>2]|0):(n[2783]=l|o,o=u,l=u+8|0),n[l>>2]=k,n[o+12>>2]=k,n[k+8>>2]=o,n[k+12>>2]=u;return}o=g>>>8,o?g>>>0>16777215?o=31:(B=(o+1048320|0)>>>16&8,T=o<>>16&4,T=T<>>16&2,o=14-(m|B|o)+(T<>>15)|0,o=g>>>(o+7|0)&1|o<<1):o=0,A=11436+(o<<2)|0,n[k+28>>2]=o,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,u=1<>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(g|0)){o=73;break}if(A=u+16+(l>>>31<<2)|0,o=n[A>>2]|0,o)l=l<<1,u=o;else{o=72;break}}if((o|0)==72){n[A>>2]=k,n[k+24>>2]=u,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((o|0)==73){B=u+8|0,T=n[B>>2]|0,n[T+12>>2]=k,n[B>>2]=k,n[k+8>>2]=T,n[k+12>>2]=u,n[k+24>>2]=0;break}}else n[2784]=l|u,n[A>>2]=k,n[k+24>>2]=A,n[k+12>>2]=k,n[k+8>>2]=k;while(!1);if(T=(n[2791]|0)+-1|0,n[2791]=T,!T)o=11588;else return;for(;o=n[o>>2]|0,o;)o=o+8|0;n[2791]=-1}}}function cHe(){return 11628}function uHe(o){o=o|0;var l=0,u=0;return l=I,I=I+16|0,u=l,n[u>>2]=pHe(n[o+60>>2]|0)|0,o=KP(fu(6,u|0)|0)|0,I=l,o|0}function XZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0;q=I,I=I+48|0,M=q+16|0,m=q,g=q+32|0,k=o+28|0,A=n[k>>2]|0,n[g>>2]=A,T=o+20|0,A=(n[T>>2]|0)-A|0,n[g+4>>2]=A,n[g+8>>2]=l,n[g+12>>2]=u,A=A+u|0,B=o+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=g,n[m+8>>2]=2,m=KP(Va(146,m|0)|0)|0;e:do if((A|0)!=(m|0)){for(l=2;!((m|0)<0);)if(A=A-m|0,Ve=n[g+4>>2]|0,oe=m>>>0>Ve>>>0,g=oe?g+8|0:g,l=(oe<<31>>31)+l|0,Ve=m-(oe?Ve:0)|0,n[g>>2]=(n[g>>2]|0)+Ve,oe=g+4|0,n[oe>>2]=(n[oe>>2]|0)-Ve,n[M>>2]=n[B>>2],n[M+4>>2]=g,n[M+8>>2]=l,m=KP(Va(146,M|0)|0)|0,(A|0)==(m|0)){L=3;break e}n[o+16>>2]=0,n[k>>2]=0,n[T>>2]=0,n[o>>2]=n[o>>2]|32,(l|0)==2?u=0:u=u-(n[g+4>>2]|0)|0}else L=3;while(!1);return(L|0)==3&&(Ve=n[o+44>>2]|0,n[o+16>>2]=Ve+(n[o+48>>2]|0),n[k>>2]=Ve,n[T>>2]=Ve),I=q,u|0}function fHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;return g=I,I=I+32|0,m=g,A=g+20|0,n[m>>2]=n[o+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=A,n[m+16>>2]=u,(KP(Wa(140,m|0)|0)|0)<0?(n[A>>2]=-1,o=-1):o=n[A>>2]|0,I=g,o|0}function KP(o){return o=o|0,o>>>0>4294963200&&(n[(nE()|0)>>2]=0-o,o=-1),o|0}function nE(){return(AHe()|0)+64|0}function AHe(){return tU()|0}function tU(){return 2084}function pHe(o){return o=o|0,o|0}function hHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;return g=I,I=I+32|0,A=g,n[o+36>>2]=1,!(n[o>>2]&64|0)&&(n[A>>2]=n[o+60>>2],n[A+4>>2]=21523,n[A+8>>2]=g+16,fo(54,A|0)|0)&&(s[o+75>>0]=-1),A=XZ(o,l,u)|0,I=g,A|0}function $Z(o,l){o=o|0,l=l|0;var u=0,A=0;if(u=s[o>>0]|0,A=s[l>>0]|0,!(u<<24>>24)||u<<24>>24!=A<<24>>24)o=A;else{do o=o+1|0,l=l+1|0,u=s[o>>0]|0,A=s[l>>0]|0;while(!(!(u<<24>>24)||u<<24>>24!=A<<24>>24));o=A}return(u&255)-(o&255)|0}function dHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;e:do if(!u)o=0;else{for(;A=s[o>>0]|0,g=s[l>>0]|0,A<<24>>24==g<<24>>24;)if(u=u+-1|0,u)o=o+1|0,l=l+1|0;else{o=0;break e}o=(A&255)-(g&255)|0}while(!1);return o|0}function eX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Re=0;Re=I,I=I+224|0,L=Re+120|0,q=Re+80|0,Ve=Re,Le=Re+136|0,A=q,g=A+40|0;do n[A>>2]=0,A=A+4|0;while((A|0)<(g|0));return n[L>>2]=n[u>>2],(rU(0,l,L,Ve,q)|0)<0?u=-1:((n[o+76>>2]|0)>-1?oe=gHe(o)|0:oe=0,u=n[o>>2]|0,M=u&32,(s[o+74>>0]|0)<1&&(n[o>>2]=u&-33),A=o+48|0,n[A>>2]|0?u=rU(o,l,L,Ve,q)|0:(g=o+44|0,m=n[g>>2]|0,n[g>>2]=Le,B=o+28|0,n[B>>2]=Le,k=o+20|0,n[k>>2]=Le,n[A>>2]=80,T=o+16|0,n[T>>2]=Le+80,u=rU(o,l,L,Ve,q)|0,m&&(XP[n[o+36>>2]&7](o,0,0)|0,u=n[k>>2]|0?u:-1,n[g>>2]=m,n[A>>2]=0,n[T>>2]=0,n[B>>2]=0,n[k>>2]=0)),A=n[o>>2]|0,n[o>>2]=A|M,oe|0&&mHe(o),u=A&32|0?-1:u),I=Re,u|0}function rU(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Re=0,nt=0,Xe=0,At=0,He=0,We=0,Mt=0,qr=0,fr=0,$t=0,Fr=0,jr=0,cr=0;cr=I,I=I+64|0,fr=cr+16|0,$t=cr,Mt=cr+24|0,Fr=cr+8|0,jr=cr+20|0,n[fr>>2]=l,At=(o|0)!=0,He=Mt+40|0,We=He,Mt=Mt+39|0,qr=Fr+4|0,B=0,m=0,L=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(nE()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(!1);if(B=s[l>>0]|0,B<<24>>24)k=l;else{Xe=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Xe=9;break t}case 0:{B=k;break t}default:}nt=k+1|0,n[fr>>2]=nt,B=s[nt>>0]|0,k=nt}t:do if((Xe|0)==9)for(;;){if(Xe=0,(s[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[fr>>2]=k,(s[k>>0]|0)==37)Xe=9;else break}while(!1);if(B=B-l|0,At&&Ps(o,l,B),B|0){l=k;continue}T=k+1|0,B=(s[T>>0]|0)+-48|0,B>>>0<10?(nt=(s[k+2>>0]|0)==36,Re=nt?B:-1,L=nt?1:L,T=nt?k+3|0:T):Re=-1,n[fr>>2]=T,B=s[T>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(M=0,q=B;;){if(B=1<>2]=T,B=s[T>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;q=B}else M=0;while(!1);if(B<<24>>24==42){if(k=T+1|0,B=(s[k>>0]|0)+-48|0,B>>>0<10&&(s[T+2>>0]|0)==36)n[g+(B<<2)>>2]=10,B=n[A+((s[k>>0]|0)+-48<<3)>>2]|0,L=1,T=T+3|0;else{if(L|0){m=-1;break}At?(L=(n[u>>2]|0)+3&-4,B=n[L>>2]|0,n[u>>2]=L+4,L=0,T=k):(B=0,L=0,T=k)}n[fr>>2]=T,nt=(B|0)<0,B=nt?0-B|0:B,M=nt?M|8192:M}else{if(B=tX(fr)|0,(B|0)<0){m=-1;break}T=n[fr>>2]|0}do if((s[T>>0]|0)==46){if((s[T+1>>0]|0)!=42){n[fr>>2]=T+1,k=tX(fr)|0,T=n[fr>>2]|0;break}if(q=T+2|0,k=(s[q>>0]|0)+-48|0,k>>>0<10&&(s[T+3>>0]|0)==36){n[g+(k<<2)>>2]=10,k=n[A+((s[q>>0]|0)+-48<<3)>>2]|0,T=T+4|0,n[fr>>2]=T;break}if(L|0){m=-1;break e}At?(nt=(n[u>>2]|0)+3&-4,k=n[nt>>2]|0,n[u>>2]=nt+4):k=0,n[fr>>2]=q,T=q}else k=-1;while(!1);for(Le=0;;){if(((s[T>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(nt=T+1|0,n[fr>>2]=nt,q=s[(s[T>>0]|0)+-65+(5178+(Le*58|0))>>0]|0,oe=q&255,(oe+-1|0)>>>0<8)Le=oe,T=nt;else break}if(!(q<<24>>24)){m=-1;break}Ve=(Re|0)>-1;do if(q<<24>>24==19)if(Ve){m=-1;break e}else Xe=49;else{if(Ve){n[g+(Re<<2)>>2]=oe,Ve=A+(Re<<3)|0,Re=n[Ve+4>>2]|0,Xe=$t,n[Xe>>2]=n[Ve>>2],n[Xe+4>>2]=Re,Xe=49;break}if(!At){m=0;break e}rX($t,oe,u)}while(!1);if((Xe|0)==49&&(Xe=0,!At)){B=0,l=nt;continue}T=s[T>>0]|0,T=(Le|0)!=0&(T&15|0)==3?T&-33:T,Ve=M&-65537,Re=M&8192|0?Ve:M;t:do switch(T|0){case 110:switch((Le&255)<<24>>24){case 0:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 1:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 2:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=nt;continue e}case 3:{a[n[$t>>2]>>1]=m,B=0,l=nt;continue e}case 4:{s[n[$t>>2]>>0]=m,B=0,l=nt;continue e}case 6:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 7:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=nt;continue e}default:{B=0,l=nt;continue e}}case 112:{T=120,k=k>>>0>8?k:8,l=Re|8,Xe=61;break}case 88:case 120:{l=Re,Xe=61;break}case 111:{T=$t,l=n[T>>2]|0,T=n[T+4>>2]|0,oe=EHe(l,T,He)|0,Ve=We-oe|0,M=0,q=5642,k=(Re&8|0)==0|(k|0)>(Ve|0)?k:Ve+1|0,Ve=Re,Xe=67;break}case 105:case 100:if(T=$t,l=n[T>>2]|0,T=n[T+4>>2]|0,(T|0)<0){l=JP(0,0,l|0,T|0)|0,T=Ie,M=$t,n[M>>2]=l,n[M+4>>2]=T,M=1,q=5642,Xe=66;break t}else{M=(Re&2049|0)!=0&1,q=Re&2048|0?5643:Re&1|0?5644:5642,Xe=66;break t}case 117:{T=$t,M=0,q=5642,l=n[T>>2]|0,T=n[T+4>>2]|0,Xe=66;break}case 99:{s[Mt>>0]=n[$t>>2],l=Mt,M=0,q=5642,oe=He,T=1,k=Ve;break}case 109:{T=IHe(n[(nE()|0)>>2]|0)|0,Xe=71;break}case 115:{T=n[$t>>2]|0,T=T|0?T:5652,Xe=71;break}case 67:{n[Fr>>2]=n[$t>>2],n[qr>>2]=0,n[$t>>2]=Fr,oe=-1,T=Fr,Xe=75;break}case 83:{l=n[$t>>2]|0,k?(oe=k,T=l,Xe=75):(_s(o,32,B,0,Re),l=0,Xe=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=wHe(o,+E[$t>>3],B,k,Re,T)|0,l=nt;continue e}default:M=0,q=5642,oe=He,T=k,k=Re}while(!1);t:do if((Xe|0)==61)Re=$t,Le=n[Re>>2]|0,Re=n[Re+4>>2]|0,oe=yHe(Le,Re,He,T&32)|0,q=(l&8|0)==0|(Le|0)==0&(Re|0)==0,M=q?0:2,q=q?5642:5642+(T>>4)|0,Ve=l,l=Le,T=Re,Xe=67;else if((Xe|0)==66)oe=iE(l,T,He)|0,Ve=Re,Xe=67;else if((Xe|0)==71)Xe=0,Re=CHe(T,0,k)|0,Le=(Re|0)==0,l=T,M=0,q=5642,oe=Le?T+k|0:Re,T=Le?k:Re-T|0,k=Ve;else if((Xe|0)==75){for(Xe=0,q=T,l=0,k=0;M=n[q>>2]|0,!(!M||(k=nX(jr,M)|0,(k|0)<0|k>>>0>(oe-l|0)>>>0));)if(l=k+l|0,oe>>>0>l>>>0)q=q+4|0;else break;if((k|0)<0){m=-1;break e}if(_s(o,32,B,l,Re),!l)l=0,Xe=84;else for(M=0;;){if(k=n[T>>2]|0,!k){Xe=84;break t}if(k=nX(jr,k)|0,M=k+M|0,(M|0)>(l|0)){Xe=84;break t}if(Ps(o,jr,k),M>>>0>=l>>>0){Xe=84;break}else T=T+4|0}}while(!1);if((Xe|0)==67)Xe=0,T=(l|0)!=0|(T|0)!=0,Re=(k|0)!=0|T,T=((T^1)&1)+(We-oe)|0,l=Re?oe:He,oe=He,T=Re?(k|0)>(T|0)?k:T:k,k=(k|0)>-1?Ve&-65537:Ve;else if((Xe|0)==84){Xe=0,_s(o,32,B,l,Re^8192),B=(B|0)>(l|0)?B:l,l=nt;continue}Le=oe-l|0,Ve=(T|0)<(Le|0)?Le:T,Re=Ve+M|0,B=(B|0)<(Re|0)?Re:B,_s(o,32,B,Re,k),Ps(o,q,M),_s(o,48,B,Re,k^65536),_s(o,48,Ve,Le,0),Ps(o,l,Le),_s(o,32,B,Re,k^8192),l=nt}e:do if((Xe|0)==87&&!o)if(!L)m=0;else{for(m=1;l=n[g+(m<<2)>>2]|0,!!l;)if(rX(A+(m<<3)|0,l,u),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[g+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(!1);return I=cr,m|0}function gHe(o){return o=o|0,0}function mHe(o){o=o|0}function Ps(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]&32||QHe(l,u,o)|0}function tX(o){o=o|0;var l=0,u=0,A=0;if(u=n[o>>2]|0,A=(s[u>>0]|0)+-48|0,A>>>0<10){l=0;do l=A+(l*10|0)|0,u=u+1|0,n[o>>2]=u,A=(s[u>>0]|0)+-48|0;while(A>>>0<10)}else l=0;return l|0}function rX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,n[o>>2]=l;break e}case 10:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=0;break e}case 12:{A=(n[u>>2]|0)+7&-8,l=A,g=n[l>>2]|0,l=n[l+4>>2]|0,n[u>>2]=A+8,A=o,n[A>>2]=g,n[A+4>>2]=l;break e}case 13:{g=(n[u>>2]|0)+3&-4,A=n[g>>2]|0,n[u>>2]=g+4,A=(A&65535)<<16>>16,g=o,n[g>>2]=A,n[g+4>>2]=((A|0)<0)<<31>>31;break e}case 14:{g=(n[u>>2]|0)+3&-4,A=n[g>>2]|0,n[u>>2]=g+4,g=o,n[g>>2]=A&65535,n[g+4>>2]=0;break e}case 15:{g=(n[u>>2]|0)+3&-4,A=n[g>>2]|0,n[u>>2]=g+4,A=(A&255)<<24>>24,g=o,n[g>>2]=A,n[g+4>>2]=((A|0)<0)<<31>>31;break e}case 16:{g=(n[u>>2]|0)+3&-4,A=n[g>>2]|0,n[u>>2]=g+4,g=o,n[g>>2]=A&255,n[g+4>>2]=0;break e}case 17:{g=(n[u>>2]|0)+7&-8,m=+E[g>>3],n[u>>2]=g+8,E[o>>3]=m;break e}case 18:{g=(n[u>>2]|0)+7&-8,m=+E[g>>3],n[u>>2]=g+8,E[o>>3]=m;break e}default:break e}while(!1);while(!1)}function yHe(o,l,u,A){if(o=o|0,l=l|0,u=u|0,A=A|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=c[5694+(o&15)>>0]|0|A,o=zP(o|0,l|0,4)|0,l=Ie;while(!((o|0)==0&(l|0)==0));return u|0}function EHe(o,l,u){if(o=o|0,l=l|0,u=u|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=o&7|48,o=zP(o|0,l|0,3)|0,l=Ie;while(!((o|0)==0&(l|0)==0));return u|0}function iE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if(l>>>0>0|(l|0)==0&o>>>0>4294967295){for(;A=oU(o|0,l|0,10,0)|0,u=u+-1|0,s[u>>0]=A&255|48,A=o,o=sU(o|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&A>>>0>4294967295;)l=Ie;l=o}else l=o;if(l)for(;u=u+-1|0,s[u>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return u|0}function IHe(o){return o=o|0,DHe(o,n[(bHe()|0)+188>>2]|0)|0}function CHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;m=l&255,A=(u|0)!=0;e:do if(A&(o&3|0)!=0)for(g=l&255;;){if((s[o>>0]|0)==g<<24>>24){B=6;break e}if(o=o+1|0,u=u+-1|0,A=(u|0)!=0,!(A&(o&3|0)!=0)){B=5;break}}else B=5;while(!1);(B|0)==5&&(A?B=6:u=0);e:do if((B|0)==6&&(g=l&255,(s[o>>0]|0)!=g<<24>>24)){A=Me(m,16843009)|0;t:do if(u>>>0>3){for(;m=n[o>>2]^A,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(o=o+4|0,u=u+-4|0,u>>>0<=3){B=11;break t}}else B=11;while(!1);if((B|0)==11&&!u){u=0;break}for(;;){if((s[o>>0]|0)==g<<24>>24)break e;if(o=o+1|0,u=u+-1|0,!u){u=0;break}}}while(!1);return(u|0?o:0)|0}function _s(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0;if(B=I,I=I+256|0,m=B,(u|0)>(A|0)&(g&73728|0)==0){if(g=u-A|0,oE(m|0,l|0,(g>>>0<256?g:256)|0)|0,g>>>0>255){l=u-A|0;do Ps(o,m,256),g=g+-256|0;while(g>>>0>255);g=l&255}Ps(o,m,g)}I=B}function nX(o,l){return o=o|0,l=l|0,o?o=vHe(o,l,0)|0:o=0,o|0}function wHe(o,l,u,A,g,m){o=o|0,l=+l,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Re=0,nt=0,Xe=0,At=0,He=0,We=0,Mt=0,qr=0,fr=0,$t=0,Fr=0,jr=0,cr=0,Gn=0;Gn=I,I=I+560|0,T=Gn+8|0,nt=Gn,cr=Gn+524|0,jr=cr,M=Gn+512|0,n[nt>>2]=0,Fr=M+12|0,iX(l)|0,(Ie|0)<0?(l=-l,fr=1,qr=5659):(fr=(g&2049|0)!=0&1,qr=g&2048|0?5662:g&1|0?5665:5660),iX(l)|0,$t=Ie&2146435072;do if($t>>>0<2146435072|($t|0)==2146435072&!1){if(Ve=+BHe(l,nt)*2,B=Ve!=0,B&&(n[nt>>2]=(n[nt>>2]|0)+-1),At=m|32,(At|0)==97){Le=m&32,oe=Le|0?qr+9|0:qr,q=fr|2,B=12-A|0;do if(A>>>0>11|(B|0)==0)l=Ve;else{l=8;do B=B+-1|0,l=l*16;while(B|0);if((s[oe>>0]|0)==45){l=-(l+(-Ve-l));break}else{l=Ve+l-l;break}}while(!1);k=n[nt>>2]|0,B=(k|0)<0?0-k|0:k,B=iE(B,((B|0)<0)<<31>>31,Fr)|0,(B|0)==(Fr|0)&&(B=M+11|0,s[B>>0]=48),s[B+-1>>0]=(k>>31&2)+43,L=B+-2|0,s[L>>0]=m+15,M=(A|0)<1,T=(g&8|0)==0,B=cr;do $t=~~l,k=B+1|0,s[B>>0]=c[5694+$t>>0]|Le,l=(l-+($t|0))*16,(k-jr|0)==1&&!(T&(M&l==0))?(s[k>>0]=46,B=B+2|0):B=k;while(l!=0);$t=B-jr|0,jr=Fr-L|0,Fr=(A|0)!=0&($t+-2|0)<(A|0)?A+2|0:$t,B=jr+q+Fr|0,_s(o,32,u,B,g),Ps(o,oe,q),_s(o,48,u,B,g^65536),Ps(o,cr,$t),_s(o,48,Fr-$t|0,0,0),Ps(o,L,jr),_s(o,32,u,B,g^8192);break}k=(A|0)<0?6:A,B?(B=(n[nt>>2]|0)+-28|0,n[nt>>2]=B,l=Ve*268435456):(l=Ve,B=n[nt>>2]|0),$t=(B|0)<0?T:T+288|0,T=$t;do We=~~l>>>0,n[T>>2]=We,T=T+4|0,l=(l-+(We>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=$t,q=T;;){if(L=(B|0)<29?B:29,B=q+-4|0,B>>>0>=M>>>0){T=0;do He=uX(n[B>>2]|0,0,L|0)|0,He=iU(He|0,Ie|0,T|0,0)|0,We=Ie,Xe=oU(He|0,We|0,1e9,0)|0,n[B>>2]=Xe,T=sU(He|0,We|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);T&&(M=M+-4|0,n[M>>2]=T)}for(T=q;!(T>>>0<=M>>>0);)if(B=T+-4|0,!(n[B>>2]|0))T=B;else break;if(B=(n[nt>>2]|0)-L|0,n[nt>>2]=B,(B|0)>0)q=T;else break}else M=$t;if((B|0)<0){A=((k+25|0)/9|0)+1|0,Re=(At|0)==102;do{if(Le=0-B|0,Le=(Le|0)<9?Le:9,M>>>0>>0){L=(1<>>Le,oe=0,B=M;do We=n[B>>2]|0,n[B>>2]=(We>>>Le)+oe,oe=Me(We&L,q)|0,B=B+4|0;while(B>>>0>>0);B=n[M>>2]|0?M:M+4|0,oe?(n[T>>2]=oe,M=B,B=T+4|0):(M=B,B=T)}else M=n[M>>2]|0?M:M+4|0,B=T;T=Re?$t:M,T=(B-T>>2|0)>(A|0)?T+(A<<2)|0:B,B=(n[nt>>2]|0)+Le|0,n[nt>>2]=B}while((B|0)<0);B=M,A=T}else B=M,A=T;if(We=$t,B>>>0>>0){if(T=(We-B>>2)*9|0,L=n[B>>2]|0,L>>>0>=10){M=10;do M=M*10|0,T=T+1|0;while(L>>>0>=M>>>0)}}else T=0;if(Re=(At|0)==103,Xe=(k|0)!=0,M=k-((At|0)!=102?T:0)+((Xe&Re)<<31>>31)|0,(M|0)<(((A-We>>2)*9|0)+-9|0)){if(M=M+9216|0,Le=$t+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){L=10;do L=L*10|0,M=M+1|0;while((M|0)!=9)}else L=10;if(q=n[Le>>2]|0,oe=(q>>>0)%(L>>>0)|0,M=(Le+4|0)==(A|0),M&(oe|0)==0)M=Le;else if(Ve=((q>>>0)/(L>>>0)|0)&1|0?9007199254740994:9007199254740992,He=(L|0)/2|0,l=oe>>>0>>0?.5:M&(oe|0)==(He|0)?1:1.5,fr&&(He=(s[qr>>0]|0)==45,l=He?-l:l,Ve=He?-Ve:Ve),M=q-oe|0,n[Le>>2]=M,Ve+l!=Ve){if(He=M+L|0,n[Le>>2]=He,He>>>0>999999999)for(T=Le;M=T+-4|0,n[T>>2]=0,M>>>0>>0&&(B=B+-4|0,n[B>>2]=0),He=(n[M>>2]|0)+1|0,n[M>>2]=He,He>>>0>999999999;)T=M;else M=Le;if(T=(We-B>>2)*9|0,q=n[B>>2]|0,q>>>0>=10){L=10;do L=L*10|0,T=T+1|0;while(q>>>0>=L>>>0)}}else M=Le;M=M+4|0,M=A>>>0>M>>>0?M:A,He=B}else M=A,He=B;for(At=M;;){if(At>>>0<=He>>>0){nt=0;break}if(B=At+-4|0,!(n[B>>2]|0))At=B;else{nt=1;break}}A=0-T|0;do if(Re)if(B=((Xe^1)&1)+k|0,(B|0)>(T|0)&(T|0)>-5?(L=m+-1|0,k=B+-1-T|0):(L=m+-2|0,k=B+-1|0),B=g&8,B)Le=B;else{if(nt&&(Mt=n[At+-4>>2]|0,(Mt|0)!=0))if((Mt>>>0)%10|0)M=0;else{M=0,B=10;do B=B*10|0,M=M+1|0;while(!((Mt>>>0)%(B>>>0)|0|0))}else M=9;if(B=((At-We>>2)*9|0)+-9|0,(L|32|0)==102){Le=B-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}else{Le=B+T-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}}else L=m,Le=g&8;while(!1);if(Re=k|Le,q=(Re|0)!=0&1,oe=(L|32|0)==102,oe)Xe=0,B=(T|0)>0?T:0;else{if(B=(T|0)<0?A:T,B=iE(B,((B|0)<0)<<31>>31,Fr)|0,M=Fr,(M-B|0)<2)do B=B+-1|0,s[B>>0]=48;while((M-B|0)<2);s[B+-1>>0]=(T>>31&2)+43,B=B+-2|0,s[B>>0]=L,Xe=B,B=M-B|0}if(B=fr+1+k+q+B|0,_s(o,32,u,B,g),Ps(o,qr,fr),_s(o,48,u,B,g^65536),oe){L=He>>>0>$t>>>0?$t:He,Le=cr+9|0,q=Le,oe=cr+8|0,M=L;do{if(T=iE(n[M>>2]|0,0,Le)|0,(M|0)==(L|0))(T|0)==(Le|0)&&(s[oe>>0]=48,T=oe);else if(T>>>0>cr>>>0){oE(cr|0,48,T-jr|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}Ps(o,T,q-T|0),M=M+4|0}while(M>>>0<=$t>>>0);if(Re|0&&Ps(o,5710,1),M>>>0>>0&(k|0)>0)for(;;){if(T=iE(n[M>>2]|0,0,Le)|0,T>>>0>cr>>>0){oE(cr|0,48,T-jr|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}if(Ps(o,T,(k|0)<9?k:9),M=M+4|0,T=k+-9|0,M>>>0>>0&(k|0)>9)k=T;else{k=T;break}}_s(o,48,k+9|0,9,0)}else{if(Re=nt?At:He+4|0,(k|0)>-1){nt=cr+9|0,Le=(Le|0)==0,A=nt,q=0-jr|0,oe=cr+8|0,L=He;do{T=iE(n[L>>2]|0,0,nt)|0,(T|0)==(nt|0)&&(s[oe>>0]=48,T=oe);do if((L|0)==(He|0)){if(M=T+1|0,Ps(o,T,1),Le&(k|0)<1){T=M;break}Ps(o,5710,1),T=M}else{if(T>>>0<=cr>>>0)break;oE(cr|0,48,T+q|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}while(!1);jr=A-T|0,Ps(o,T,(k|0)>(jr|0)?jr:k),k=k-jr|0,L=L+4|0}while(L>>>0>>0&(k|0)>-1)}_s(o,48,k+18|0,18,0),Ps(o,Xe,Fr-Xe|0)}_s(o,32,u,B,g^8192)}else cr=(m&32|0)!=0,B=fr+3|0,_s(o,32,u,B,g&-65537),Ps(o,qr,fr),Ps(o,l!=l|!1?cr?5686:5690:cr?5678:5682,3),_s(o,32,u,B,g^8192);while(!1);return I=Gn,((B|0)<(u|0)?u:B)|0}function iX(o){o=+o;var l=0;return E[S>>3]=o,l=n[S>>2]|0,Ie=n[S+4>>2]|0,l|0}function BHe(o,l){return o=+o,l=l|0,+ +sX(o,l)}function sX(o,l){o=+o,l=l|0;var u=0,A=0,g=0;switch(E[S>>3]=o,u=n[S>>2]|0,A=n[S+4>>2]|0,g=zP(u|0,A|0,52)|0,g&2047){case 0:{o!=0?(o=+sX(o*18446744073709552e3,l),u=(n[l>>2]|0)+-64|0):u=0,n[l>>2]=u;break}case 2047:break;default:n[l>>2]=(g&2047)+-1022,n[S>>2]=u,n[S+4>>2]=A&-2146435073|1071644672,o=+E[S>>3]}return+o}function vHe(o,l,u){o=o|0,l=l|0,u=u|0;do if(o){if(l>>>0<128){s[o>>0]=l,o=1;break}if(!(n[n[(SHe()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){s[o>>0]=l,o=1;break}else{n[(nE()|0)>>2]=84,o=-1;break}if(l>>>0<2048){s[o>>0]=l>>>6|192,s[o+1>>0]=l&63|128,o=2;break}if(l>>>0<55296|(l&-8192|0)==57344){s[o>>0]=l>>>12|224,s[o+1>>0]=l>>>6&63|128,s[o+2>>0]=l&63|128,o=3;break}if((l+-65536|0)>>>0<1048576){s[o>>0]=l>>>18|240,s[o+1>>0]=l>>>12&63|128,s[o+2>>0]=l>>>6&63|128,s[o+3>>0]=l&63|128,o=4;break}else{n[(nE()|0)>>2]=84,o=-1;break}}else o=1;while(!1);return o|0}function SHe(){return tU()|0}function bHe(){return tU()|0}function DHe(o,l){o=o|0,l=l|0;var u=0,A=0;for(A=0;;){if((c[5712+A>>0]|0)==(o|0)){o=2;break}if(u=A+1|0,(u|0)==87){u=5800,A=87,o=5;break}else A=u}if((o|0)==2&&(A?(u=5800,o=5):u=5800),(o|0)==5)for(;;){do o=u,u=u+1|0;while(s[o>>0]|0);if(A=A+-1|0,A)o=5;else break}return PHe(u,n[l+20>>2]|0)|0}function PHe(o,l){return o=o|0,l=l|0,xHe(o,l)|0}function xHe(o,l){return o=o|0,l=l|0,l?l=kHe(n[l>>2]|0,n[l+4>>2]|0,o)|0:l=0,(l|0?l:o)|0}function kHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0;oe=(n[o>>2]|0)+1794895138|0,m=p0(n[o+8>>2]|0,oe)|0,A=p0(n[o+12>>2]|0,oe)|0,g=p0(n[o+16>>2]|0,oe)|0;e:do if(m>>>0>>2>>>0&&(q=l-(m<<2)|0,A>>>0>>0&g>>>0>>0)&&!((g|A)&3|0)){for(q=A>>>2,L=g>>>2,M=0;;){if(k=m>>>1,T=M+k|0,B=T<<1,g=B+q|0,A=p0(n[o+(g<<2)>>2]|0,oe)|0,g=p0(n[o+(g+1<<2)>>2]|0,oe)|0,!(g>>>0>>0&A>>>0<(l-g|0)>>>0)){A=0;break e}if(s[o+(g+A)>>0]|0){A=0;break e}if(A=$Z(u,o+g|0)|0,!A)break;if(A=(A|0)<0,(m|0)==1){A=0;break e}else M=A?M:T,m=A?k:m-k|0}A=B+L|0,g=p0(n[o+(A<<2)>>2]|0,oe)|0,A=p0(n[o+(A+1<<2)>>2]|0,oe)|0,A>>>0>>0&g>>>0<(l-A|0)>>>0?A=s[o+(A+g)>>0]|0?0:o+A|0:A=0}else A=0;while(!1);return A|0}function p0(o,l){o=o|0,l=l|0;var u=0;return u=pX(o|0)|0,(l|0?u:o)|0}function QHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=u+16|0,g=n[A>>2]|0,g?m=5:THe(u)|0?A=0:(g=n[A>>2]|0,m=5);e:do if((m|0)==5){if(k=u+20|0,B=n[k>>2]|0,A=B,(g-B|0)>>>0>>0){A=XP[n[u+36>>2]&7](u,o,l)|0;break}t:do if((s[u+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,g=o;break t}if(g=B+-1|0,(s[o+g>>0]|0)==10)break;B=g}if(A=XP[n[u+36>>2]&7](u,o,B)|0,A>>>0>>0)break e;m=B,g=o+B|0,l=l-B|0,A=n[k>>2]|0}else m=0,g=o;while(!1);Rr(A|0,g|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,A=m+l|0}while(!1);return A|0}function THe(o){o=o|0;var l=0,u=0;return l=o+74|0,u=s[l>>0]|0,s[l>>0]=u+255|u,l=n[o>>2]|0,l&8?(n[o>>2]=l|32,o=-1):(n[o+8>>2]=0,n[o+4>>2]=0,u=n[o+44>>2]|0,n[o+28>>2]=u,n[o+20>>2]=u,n[o+16>>2]=u+(n[o+48>>2]|0),o=0),o|0}function ni(o,l){o=y(o),l=y(l);var u=0,A=0;u=oX(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=oX(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?l:o;break}else{o=o>2]=o,n[S>>2]|0|0}function h0(o,l){o=y(o),l=y(l);var u=0,A=0;u=aX(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=aX(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?o:l;break}else{o=o>2]=o,n[S>>2]|0|0}function nU(o,l){o=y(o),l=y(l);var u=0,A=0,g=0,m=0,B=0,k=0,T=0,M=0;m=(h[S>>2]=o,n[S>>2]|0),k=(h[S>>2]=l,n[S>>2]|0),u=m>>>23&255,B=k>>>23&255,T=m&-2147483648,g=k<<1;e:do if(g|0&&!((u|0)==255|((RHe(l)|0)&2147483647)>>>0>2139095040)){if(A=m<<1,A>>>0<=g>>>0)return l=y(o*y(0)),y((A|0)==(g|0)?l:o);if(u)A=m&8388607|8388608;else{if(u=m<<9,(u|0)>-1){A=u,u=0;do u=u+-1|0,A=A<<1;while((A|0)>-1)}else u=0;A=m<<1-u}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){g=0;do g=g+-1|0,m=m<<1;while((m|0)>-1)}else g=0;B=g,k=k<<1-g}g=A-k|0,m=(g|0)>-1;t:do if((u|0)>(B|0)){for(;;){if(m)if(g)A=g;else break;if(A=A<<1,u=u+-1|0,g=A-k|0,m=(g|0)>-1,(u|0)<=(B|0))break t}l=y(o*y(0));break e}while(!1);if(m)if(g)A=g;else{l=y(o*y(0));break}if(A>>>0<8388608)do A=A<<1,u=u+-1|0;while(A>>>0<8388608);(u|0)>0?u=A+-8388608|u<<23:u=A>>>(1-u|0),l=(n[S>>2]=u|T,y(h[S>>2]))}else M=3;while(!1);return(M|0)==3&&(l=y(o*l),l=y(l/l)),y(l)}function RHe(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function FHe(o,l){return o=o|0,l=l|0,eX(n[582]|0,o,l)|0}function an(o){o=o|0,Ot()}function sE(o){o=o|0}function NHe(o,l){return o=o|0,l=l|0,0}function OHe(o){return o=o|0,(lX(o+4|0)|0)==-1?(ap[n[(n[o>>2]|0)+8>>2]&127](o),o=1):o=0,o|0}function lX(o){o=o|0;var l=0;return l=n[o>>2]|0,n[o>>2]=l+-1,l+-1|0}function qh(o){o=o|0,OHe(o)|0&&LHe(o)}function LHe(o){o=o|0;var l=0;l=o+8|0,n[l>>2]|0&&(lX(l)|0)!=-1||ap[n[(n[o>>2]|0)+16>>2]&127](o)}function Jt(o){o=o|0;var l=0;for(l=o|0?o:1;o=WP(l)|0,!(o|0);){if(o=UHe()|0,!o){o=0;break}BX[o&0]()}return o|0}function cX(o){return o=o|0,Jt(o)|0}function It(o){o=o|0,VP(o)}function MHe(o){o=o|0,(s[o+11>>0]|0)<0&&It(n[o>>2]|0)}function UHe(){var o=0;return o=n[2923]|0,n[2923]=o+0,o|0}function _He(){}function JP(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,A=l-A-(u>>>0>o>>>0|0)>>>0,Ie=A,o-u>>>0|0|0}function iU(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,u=o+u>>>0,Ie=l+A+(u>>>0>>0|0)>>>0,u|0|0}function oE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;if(m=o+u|0,l=l&255,(u|0)>=67){for(;o&3;)s[o>>0]=l,o=o+1|0;for(A=m&-4|0,g=A-64|0,B=l|l<<8|l<<16|l<<24;(o|0)<=(g|0);)n[o>>2]=B,n[o+4>>2]=B,n[o+8>>2]=B,n[o+12>>2]=B,n[o+16>>2]=B,n[o+20>>2]=B,n[o+24>>2]=B,n[o+28>>2]=B,n[o+32>>2]=B,n[o+36>>2]=B,n[o+40>>2]=B,n[o+44>>2]=B,n[o+48>>2]=B,n[o+52>>2]=B,n[o+56>>2]=B,n[o+60>>2]=B,o=o+64|0;for(;(o|0)<(A|0);)n[o>>2]=B,o=o+4|0}for(;(o|0)<(m|0);)s[o>>0]=l,o=o+1|0;return m-u|0}function uX(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(Ie=l<>>32-u,o<>>u,o>>>u|(l&(1<>>u-32|0)}function Rr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;if((u|0)>=8192)return UA(o|0,l|0,u|0)|0;if(m=o|0,g=o+u|0,(o&3)==(l&3)){for(;o&3;){if(!u)return m|0;s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0,u=u-1|0}for(u=g&-4|0,A=u-64|0;(o|0)<=(A|0);)n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2],n[o+16>>2]=n[l+16>>2],n[o+20>>2]=n[l+20>>2],n[o+24>>2]=n[l+24>>2],n[o+28>>2]=n[l+28>>2],n[o+32>>2]=n[l+32>>2],n[o+36>>2]=n[l+36>>2],n[o+40>>2]=n[l+40>>2],n[o+44>>2]=n[l+44>>2],n[o+48>>2]=n[l+48>>2],n[o+52>>2]=n[l+52>>2],n[o+56>>2]=n[l+56>>2],n[o+60>>2]=n[l+60>>2],o=o+64|0,l=l+64|0;for(;(o|0)<(u|0);)n[o>>2]=n[l>>2],o=o+4|0,l=l+4|0}else for(u=g-4|0;(o|0)<(u|0);)s[o>>0]=s[l>>0]|0,s[o+1>>0]=s[l+1>>0]|0,s[o+2>>0]=s[l+2>>0]|0,s[o+3>>0]=s[l+3>>0]|0,o=o+4|0,l=l+4|0;for(;(o|0)<(g|0);)s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0;return m|0}function fX(o){o=o|0;var l=0;return l=s[N+(o&255)>>0]|0,(l|0)<8?l|0:(l=s[N+(o>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=s[N+(o>>16&255)>>0]|0,(l|0)<8?l+16|0:(s[N+(o>>>24)>>0]|0)+24|0))}function AX(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,T=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0;if(L=o,T=l,M=T,B=u,oe=A,k=oe,!M)return m=(g|0)!=0,k?m?(n[g>>2]=o|0,n[g+4>>2]=l&0,oe=0,g=0,Ie=oe,g|0):(oe=0,g=0,Ie=oe,g|0):(m&&(n[g>>2]=(L>>>0)%(B>>>0),n[g+4>>2]=0),oe=0,g=(L>>>0)/(B>>>0)>>>0,Ie=oe,g|0);m=(k|0)==0;do if(B){if(!m){if(m=(D(k|0)|0)-(D(M|0)|0)|0,m>>>0<=31){q=m+1|0,k=31-m|0,l=m-31>>31,B=q,o=L>>>(q>>>0)&l|M<>>(q>>>0)&l,m=0,k=L<>2]=o|0,n[g+4>>2]=T|l&0,oe=0,g=0,Ie=oe,g|0):(oe=0,g=0,Ie=oe,g|0)}if(m=B-1|0,m&B|0){k=(D(B|0)|0)+33-(D(M|0)|0)|0,Le=64-k|0,q=32-k|0,T=q>>31,Ve=k-32|0,l=Ve>>31,B=k,o=q-1>>31&M>>>(Ve>>>0)|(M<>>(k>>>0))&l,l=l&M>>>(k>>>0),m=L<>>(Ve>>>0))&T|L<>31;break}return g|0&&(n[g>>2]=m&L,n[g+4>>2]=0),(B|0)==1?(Ve=T|l&0,Le=o|0|0,Ie=Ve,Le|0):(Le=fX(B|0)|0,Ve=M>>>(Le>>>0)|0,Le=M<<32-Le|L>>>(Le>>>0)|0,Ie=Ve,Le|0)}else{if(m)return g|0&&(n[g>>2]=(M>>>0)%(B>>>0),n[g+4>>2]=0),Ve=0,Le=(M>>>0)/(B>>>0)>>>0,Ie=Ve,Le|0;if(!L)return g|0&&(n[g>>2]=0,n[g+4>>2]=(M>>>0)%(k>>>0)),Ve=0,Le=(M>>>0)/(k>>>0)>>>0,Ie=Ve,Le|0;if(m=k-1|0,!(m&k))return g|0&&(n[g>>2]=o|0,n[g+4>>2]=m&M|l&0),Ve=0,Le=M>>>((fX(k|0)|0)>>>0),Ie=Ve,Le|0;if(m=(D(k|0)|0)-(D(M|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,o=M<>>(l>>>0),l=M>>>(l>>>0),m=0,k=L<>2]=o|0,n[g+4>>2]=T|l&0,Ve=0,Le=0,Ie=Ve,Le|0):(Ve=0,Le=0,Ie=Ve,Le|0)}while(!1);if(!B)M=k,T=0,k=0;else{q=u|0|0,L=oe|A&0,M=iU(q|0,L|0,-1,-1)|0,u=Ie,T=k,k=0;do A=T,T=m>>>31|T<<1,m=k|m<<1,A=o<<1|A>>>31|0,oe=o>>>31|l<<1|0,JP(M|0,u|0,A|0,oe|0)|0,Le=Ie,Ve=Le>>31|((Le|0)<0?-1:0)<<1,k=Ve&1,o=JP(A|0,oe|0,Ve&q|0,(((Le|0)<0?-1:0)>>31|((Le|0)<0?-1:0)<<1)&L|0)|0,l=Ie,B=B-1|0;while(B|0);M=T,T=0}return B=0,g|0&&(n[g>>2]=o,n[g+4>>2]=l),Ve=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|T,Le=(m<<1|0)&-2|k,Ie=Ve,Le|0}function sU(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,AX(o,l,u,A,0)|0}function Yh(o){o=o|0;var l=0,u=0;return u=o+15&-16|0,l=n[C>>2]|0,o=l+u|0,(u|0)>0&(o|0)<(l|0)|(o|0)<0?(se()|0,uu(12),-1):(n[C>>2]=o,(o|0)>(ee()|0)&&!(Z()|0)?(n[C>>2]=l,uu(12),-1):l|0)}function x2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if((l|0)<(o|0)&(o|0)<(l+u|0)){for(A=o,l=l+u|0,o=o+u|0;(u|0)>0;)o=o-1|0,l=l-1|0,u=u-1|0,s[o>>0]=s[l>>0]|0;o=A}else Rr(o,l,u)|0;return o|0}function oU(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;return m=I,I=I+16|0,g=m|0,AX(o,l,u,A,g)|0,I=m,Ie=n[g+4>>2]|0,n[g>>2]|0|0}function pX(o){return o=o|0,(o&255)<<24|(o>>8&255)<<16|(o>>16&255)<<8|o>>>24|0}function HHe(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,hX[o&1](l|0,u|0,A|0,g|0,m|0)}function jHe(o,l,u){o=o|0,l=l|0,u=y(u),dX[o&1](l|0,y(u))}function GHe(o,l,u){o=o|0,l=l|0,u=+u,gX[o&31](l|0,+u)}function qHe(o,l,u,A){return o=o|0,l=l|0,u=y(u),A=y(A),y(mX[o&0](l|0,y(u),y(A)))}function YHe(o,l){o=o|0,l=l|0,ap[o&127](l|0)}function WHe(o,l,u){o=o|0,l=l|0,u=u|0,lp[o&31](l|0,u|0)}function VHe(o,l){return o=o|0,l=l|0,g0[o&31](l|0)|0}function KHe(o,l,u,A,g){o=o|0,l=l|0,u=+u,A=+A,g=g|0,yX[o&1](l|0,+u,+A,g|0)}function JHe(o,l,u,A){o=o|0,l=l|0,u=+u,A=+A,xje[o&1](l|0,+u,+A)}function zHe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,XP[o&7](l|0,u|0,A|0)|0}function ZHe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,+kje[o&1](l|0,u|0,A|0)}function XHe(o,l){return o=o|0,l=l|0,+EX[o&15](l|0)}function $He(o,l,u){return o=o|0,l=l|0,u=+u,Qje[o&1](l|0,+u)|0}function eje(o,l,u){return o=o|0,l=l|0,u=u|0,lU[o&15](l|0,u|0)|0}function tje(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=+A,g=+g,m=m|0,Tje[o&1](l|0,u|0,+A,+g,m|0)}function rje(o,l,u,A,g,m,B){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,B=B|0,Rje[o&1](l|0,u|0,A|0,g|0,m|0,B|0)}function nje(o,l,u){return o=o|0,l=l|0,u=u|0,+IX[o&7](l|0,u|0)}function ije(o){return o=o|0,$P[o&7]()|0}function sje(o,l,u,A,g,m){return o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,CX[o&1](l|0,u|0,A|0,g|0,m|0)|0}function oje(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=+g,Fje[o&1](l|0,u|0,A|0,+g)}function aje(o,l,u,A,g,m,B){o=o|0,l=l|0,u=u|0,A=y(A),g=g|0,m=y(m),B=B|0,wX[o&1](l|0,u|0,y(A),g|0,y(m),B|0)}function lje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,T2[o&15](l|0,u|0,A|0)}function cje(o){o=o|0,BX[o&0]()}function uje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,vX[o&15](l|0,u|0,+A)}function fje(o,l,u){return o=o|0,l=+l,u=+u,Nje[o&1](+l,+u)|0}function Aje(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,cU[o&15](l|0,u|0,A|0,g|0)}function pje(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,F(0)}function hje(o,l){o=o|0,l=y(l),F(1)}function ol(o,l){o=o|0,l=+l,F(2)}function dje(o,l,u){return o=o|0,l=y(l),u=y(u),F(3),$e}function Br(o){o=o|0,F(4)}function k2(o,l){o=o|0,l=l|0,F(5)}function ql(o){return o=o|0,F(6),0}function gje(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,F(7)}function mje(o,l,u){o=o|0,l=+l,u=+u,F(8)}function yje(o,l,u){return o=o|0,l=l|0,u=u|0,F(9),0}function Eje(o,l,u){return o=o|0,l=l|0,u=u|0,F(10),0}function d0(o){return o=o|0,F(11),0}function Ije(o,l){return o=o|0,l=+l,F(12),0}function Q2(o,l){return o=o|0,l=l|0,F(13),0}function Cje(o,l,u,A,g){o=o|0,l=l|0,u=+u,A=+A,g=g|0,F(14)}function wje(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,F(15)}function aU(o,l){return o=o|0,l=l|0,F(16),0}function Bje(){return F(17),0}function vje(o,l,u,A,g){return o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,F(18),0}function Sje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,F(19)}function bje(o,l,u,A,g,m){o=o|0,l=l|0,u=y(u),A=A|0,g=y(g),m=m|0,F(20)}function ZP(o,l,u){o=o|0,l=l|0,u=u|0,F(21)}function Dje(){F(22)}function aE(o,l,u){o=o|0,l=l|0,u=+u,F(23)}function Pje(o,l){return o=+o,l=+l,F(24),0}function lE(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F(25)}var hX=[pje,v_e],dX=[hje,My],gX=[ol,$g,Nh,A2,p2,h2,d2,kf,Wy,g2,Qf,e0,t0,m2,y2,Cu,r0,E2,Vy,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol],mX=[dje],ap=[Br,sE,ixe,sxe,oxe,NTe,OTe,LTe,$Me,eUe,tUe,f_e,A_e,p_e,R8e,F8e,N8e,Ql,Xg,l2,sr,mc,NP,OP,KPe,hxe,bxe,qxe,oke,Bke,_ke,tQe,gQe,TQe,KQe,uTe,bTe,eRe,gRe,TRe,KRe,uFe,bFe,YFe,oNe,INe,ONe,wP,pOe,xOe,KOe,ALe,DLe,KLe,iMe,aMe,vMe,DMe,qMe,nUe,oUe,BUe,HUe,ez,w4e,$4e,h3e,x3e,Z3e,A8e,B8e,b8e,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br],lp=[k2,Gy,_L,c2,u2,xr,po,Zi,Ms,bs,Yy,Fh,C2,DP,s0,qL,YL,PP,xP,KL,Tf,ne,JFe,cNe,gLe,S4e,JUe,MZ,k2,k2,k2,k2],g0=[ql,uHe,Hy,i0,Jy,Ca,BP,Oh,I2,jL,SP,zy,kP,JL,$y,UNe,QLe,bUe,x4e,Hl,ql,ql,ql,ql,ql,ql,ql,ql,ql,ql,ql,ql],yX=[gje,eM],xje=[mje,VMe],XP=[yje,XZ,fHe,hHe,Dke,iRe,mOe,R3e],kje=[Eje,XQe],EX=[d0,Lh,bP,rp,tM,v,b,Q,j,V,d0,d0,d0,d0,d0,d0],Qje=[Ije,tMe],lU=[Q2,NHe,QP,XPe,Kxe,Gke,iQe,kTe,IRe,vNe,Uy,y3e,Q2,Q2,Q2,Q2],Tje=[Cje,kxe],Rje=[wje,t8e],IX=[aU,WL,Be,_e,ht,hTe,aU,aU],$P=[Bje,Wt,_y,CP,fMe,QMe,uUe,k8e],CX=[vje,Qy],Fje=[Sje,XRe],wX=[bje,zL],T2=[ZP,Lo,vP,VL,Bu,uke,EQe,hFe,kFe,UL,V_e,n3e,g8e,ZP,ZP,ZP],BX=[Dje],vX=[aE,HL,qy,tp,f2,wu,Ky,n0,ORe,ROe,ZLe,aE,aE,aE,aE,aE],Nje=[Pje,ZMe],cU=[lE,OQe,VNe,XOe,_Le,mMe,LMe,mUe,WUe,N4e,H8e,lE,lE,lE,lE,lE];return{_llvm_bswap_i32:pX,dynCall_idd:fje,dynCall_i:ije,_i64Subtract:JP,___udivdi3:sU,dynCall_vif:jHe,setThrew:da,dynCall_viii:lje,_bitshift64Lshr:zP,_bitshift64Shl:uX,dynCall_vi:YHe,dynCall_viiddi:tje,dynCall_diii:ZHe,dynCall_iii:eje,_memset:oE,_sbrk:Yh,_memcpy:Rr,__GLOBAL__sub_I_Yoga_cpp:s2,dynCall_vii:WHe,___uremdi3:oU,dynCall_vid:GHe,stackAlloc:Ja,_nbind_init:X8e,getTempRet0:HA,dynCall_di:XHe,dynCall_iid:$He,setTempRet0:_A,_i64Add:iU,dynCall_fiff:qHe,dynCall_iiii:zHe,_emscripten_get_global_libc:cHe,dynCall_viid:uje,dynCall_viiid:oje,dynCall_viififi:aje,dynCall_ii:VHe,__GLOBAL__sub_I_Binding_cc:h4e,dynCall_viiii:Aje,dynCall_iiiiii:sje,stackSave:mf,dynCall_viiiii:HHe,__GLOBAL__sub_I_nbind_cc:Sr,dynCall_vidd:JHe,_free:VP,runPostSets:_He,dynCall_viiiiii:rje,establishStackSpace:Sn,_memmove:x2,stackRestore:fc,_malloc:WP,__GLOBAL__sub_I_common_cc:FUe,dynCall_viddi:KHe,dynCall_dii:nje,dynCall_v:cje}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function e(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=e)},Module.callMain=Module.callMain=function e(t){t=t||[],ensureInitRuntime();var r=t.length+1;function s(){for(var p=0;p<3;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];s();for(var n=0;n0||(preRun(),runDependencies>0)||Module.calledRun)return;function t(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(e),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),t()},1)):t()}Module.run=Module.run=run;function exit(e,t){t&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=e,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(e)),ENVIRONMENT_IS_NODE&&process.exit(e),Module.quit(e,new ExitStatus(e)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(e){Module.onAbort&&Module.onAbort(e),e!==void 0?(Module.print(e),Module.printErr(e),e=JSON.stringify(e)):e="",ABORT=!0,EXITSTATUS=1;var t=` +If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r="abort("+e+") at "+stackTrace()+t;throw abortDecorators&&abortDecorators.forEach(function(s){r=s(r,e)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var _m=G((d7t,OIe)=>{"use strict";var cft=FIe(),uft=NIe(),vq=!1,Sq=null;uft({},function(e,t){if(!vq){if(vq=!0,e)throw e;Sq=t}});if(!vq)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");OIe.exports=cft(Sq.bind,Sq.lib)});var Dq=G((g7t,bq)=>{"use strict";var LIe=e=>Number.isNaN(e)?!1:e>=4352&&(e<=4447||e===9001||e===9002||11904<=e&&e<=12871&&e!==12351||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141);bq.exports=LIe;bq.exports.default=LIe});var UIe=G((m7t,MIe)=>{"use strict";MIe.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var KS=G((y7t,Pq)=>{"use strict";var fft=Ik(),Aft=Dq(),pft=UIe(),_Ie=e=>{if(typeof e!="string"||e.length===0||(e=fft(e),e.length===0))return 0;e=e.replace(pft()," ");let t=0;for(let r=0;r=127&&s<=159||s>=768&&s<=879||(s>65535&&r++,t+=Aft(s)?2:1)}return t};Pq.exports=_Ie;Pq.exports.default=_Ie});var kq=G((E7t,xq)=>{"use strict";var hft=KS(),HIe=e=>{let t=0;for(let r of e.split(` +`))t=Math.max(t,hft(r));return t};xq.exports=HIe;xq.exports.default=HIe});var jIe=G(JS=>{"use strict";var dft=JS&&JS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(JS,"__esModule",{value:!0});var gft=dft(kq()),Qq={};JS.default=e=>{if(e.length===0)return{width:0,height:0};if(Qq[e])return Qq[e];let t=gft.default(e),r=e.split(` +`).length;return Qq[e]={width:t,height:r},{width:t,height:r}}});var GIe=G(zS=>{"use strict";var mft=zS&&zS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(zS,"__esModule",{value:!0});var kn=mft(_m()),yft=(e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?kn.default.POSITION_TYPE_ABSOLUTE:kn.default.POSITION_TYPE_RELATIVE)},Eft=(e,t)=>{"marginLeft"in t&&e.setMargin(kn.default.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(kn.default.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(kn.default.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(kn.default.EDGE_BOTTOM,t.marginBottom||0)},Ift=(e,t)=>{"paddingLeft"in t&&e.setPadding(kn.default.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(kn.default.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(kn.default.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(kn.default.EDGE_BOTTOM,t.paddingBottom||0)},Cft=(e,t)=>{var r;"flexGrow"in t&&e.setFlexGrow((r=t.flexGrow)!==null&&r!==void 0?r:0),"flexShrink"in t&&e.setFlexShrink(typeof t.flexShrink=="number"?t.flexShrink:1),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(kn.default.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(kn.default.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(kn.default.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(kn.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&(typeof t.flexBasis=="number"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis=="string"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(NaN)),"alignItems"in t&&((t.alignItems==="stretch"||!t.alignItems)&&e.setAlignItems(kn.default.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(kn.default.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(kn.default.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(kn.default.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(kn.default.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(kn.default.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(kn.default.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(kn.default.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(kn.default.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(kn.default.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(kn.default.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(kn.default.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(kn.default.JUSTIFY_SPACE_AROUND))},wft=(e,t)=>{var r,s;"width"in t&&(typeof t.width=="number"?e.setWidth(t.width):typeof t.width=="string"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&(typeof t.height=="number"?e.setHeight(t.height):typeof t.height=="string"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&(typeof t.minWidth=="string"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth((r=t.minWidth)!==null&&r!==void 0?r:0)),"minHeight"in t&&(typeof t.minHeight=="string"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight((s=t.minHeight)!==null&&s!==void 0?s:0))},Bft=(e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?kn.default.DISPLAY_FLEX:kn.default.DISPLAY_NONE)},vft=(e,t)=>{if("borderStyle"in t){let r=typeof t.borderStyle=="string"?1:0;e.setBorder(kn.default.EDGE_TOP,r),e.setBorder(kn.default.EDGE_BOTTOM,r),e.setBorder(kn.default.EDGE_LEFT,r),e.setBorder(kn.default.EDGE_RIGHT,r)}};zS.default=(e,t={})=>{yft(e,t),Eft(e,t),Ift(e,t),Cft(e,t),wft(e,t),Bft(e,t),vft(e,t)}});var WIe=G((w7t,YIe)=>{"use strict";var ZS=KS(),Sft=Ik(),bft=ck(),Rq=new Set(["\x1B","\x9B"]),Dft=39,qIe=e=>`${Rq.values().next().value}[${e}m`,Pft=e=>e.split(" ").map(t=>ZS(t)),Tq=(e,t,r)=>{let s=[...t],a=!1,n=ZS(Sft(e[e.length-1]));for(let[c,f]of s.entries()){let p=ZS(f);if(n+p<=r?e[e.length-1]+=f:(e.push(f),n=0),Rq.has(f))a=!0;else if(a&&f==="m"){a=!1;continue}a||(n+=p,n===r&&c0&&e.length>1&&(e[e.length-2]+=e.pop())},xft=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(ZS(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},kft=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let s="",a="",n,c=Pft(e),f=[""];for(let[p,h]of e.split(" ").entries()){r.trim!==!1&&(f[f.length-1]=f[f.length-1].trimLeft());let E=ZS(f[f.length-1]);if(p!==0&&(E>=t&&(r.wordWrap===!1||r.trim===!1)&&(f.push(""),E=0),(E>0||r.trim===!1)&&(f[f.length-1]+=" ",E++)),r.hard&&c[p]>t){let C=t-E,S=1+Math.floor((c[p]-C-1)/t);Math.floor((c[p]-1)/t)t&&E>0&&c[p]>0){if(r.wordWrap===!1&&Et&&r.wordWrap===!1){Tq(f,h,t);continue}f[f.length-1]+=h}r.trim!==!1&&(f=f.map(xft)),s=f.join(` +`);for(let[p,h]of[...s].entries()){if(a+=h,Rq.has(h)){let C=parseFloat(/\d[^m]*/.exec(s.slice(p,p+4)));n=C===Dft?null:C}let E=bft.codes.get(Number(n));n&&E&&(s[p+1]===` +`?a+=qIe(E):h===` +`&&(a+=qIe(n)))}return a};YIe.exports=(e,t,r)=>String(e).normalize().replace(/\r\n/g,` +`).split(` +`).map(s=>kft(s,t,r)).join(` +`)});var JIe=G((B7t,KIe)=>{"use strict";var VIe="[\uD800-\uDBFF][\uDC00-\uDFFF]",Qft=e=>e&&e.exact?new RegExp(`^${VIe}$`):new RegExp(VIe,"g");KIe.exports=Qft});var Fq=G((v7t,$Ie)=>{"use strict";var Tft=Dq(),Rft=JIe(),zIe=ck(),XIe=["\x1B","\x9B"],vF=e=>`${XIe[0]}[${e}m`,ZIe=(e,t,r)=>{let s=[];e=[...e];for(let a of e){let n=a;a.match(";")&&(a=a.split(";")[0][0]+"0");let c=zIe.codes.get(parseInt(a,10));if(c){let f=e.indexOf(c.toString());f>=0?e.splice(f,1):s.push(vF(t?c:n))}else if(t){s.push(vF(0));break}else s.push(vF(n))}if(t&&(s=s.filter((a,n)=>s.indexOf(a)===n),r!==void 0)){let a=vF(zIe.codes.get(parseInt(r,10)));s=s.reduce((n,c)=>c===a?[c,...n]:[...n,c],[])}return s.join("")};$Ie.exports=(e,t,r)=>{let s=[...e.normalize()],a=[];r=typeof r=="number"?r:s.length;let n=!1,c,f=0,p="";for(let[h,E]of s.entries()){let C=!1;if(XIe.includes(E)){let S=/\d[^m]*/.exec(e.slice(h,h+18));c=S&&S.length>0?S[0]:void 0,ft&&f<=r)p+=E;else if(f===t&&!n&&c!==void 0)p=ZIe(a);else if(f>=r){p+=ZIe(a,!0,c);break}}return p}});var tCe=G((S7t,eCe)=>{"use strict";var eg=Fq(),Fft=KS();function SF(e,t,r){if(e.charAt(t)===" ")return t;for(let s=1;s<=3;s++)if(r){if(e.charAt(t+s)===" ")return t+s}else if(e.charAt(t-s)===" ")return t-s;return t}eCe.exports=(e,t,r)=>{r={position:"end",preferTruncationOnSpace:!1,...r};let{position:s,space:a,preferTruncationOnSpace:n}=r,c="\u2026",f=1;if(typeof e!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof e}`);if(typeof t!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof t}`);if(t<1)return"";if(t===1)return c;let p=Fft(e);if(p<=t)return e;if(s==="start"){if(n){let h=SF(e,p-t+1,!0);return c+eg(e,h,p).trim()}return a===!0&&(c+=" ",f=2),c+eg(e,p-t+f,p)}if(s==="middle"){a===!0&&(c=" "+c+" ",f=3);let h=Math.floor(t/2);if(n){let E=SF(e,h),C=SF(e,p-(t-h)+1,!0);return eg(e,0,E)+c+eg(e,C,p).trim()}return eg(e,0,h)+c+eg(e,p-(t-h)+f,p)}if(s==="end"){if(n){let h=SF(e,t-1);return eg(e,0,h)+c}return a===!0&&(c=" "+c,f=2),eg(e,0,t-f)+c}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${s}`)}});var Oq=G(XS=>{"use strict";var rCe=XS&&XS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(XS,"__esModule",{value:!0});var Nft=rCe(WIe()),Oft=rCe(tCe()),Nq={};XS.default=(e,t,r)=>{let s=e+String(t)+String(r);if(Nq[s])return Nq[s];let a=e;if(r==="wrap"&&(a=Nft.default(e,t,{trim:!1,hard:!0})),r.startsWith("truncate")){let n="end";r==="truncate-middle"&&(n="middle"),r==="truncate-start"&&(n="start"),a=Oft.default(e,t,{position:n})}return Nq[s]=a,a}});var Mq=G(Lq=>{"use strict";Object.defineProperty(Lq,"__esModule",{value:!0});var nCe=e=>{let t="";if(e.childNodes.length>0)for(let r of e.childNodes){let s="";r.nodeName==="#text"?s=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(s=nCe(r)),s.length>0&&typeof r.internal_transform=="function"&&(s=r.internal_transform(s))),t+=s}return t};Lq.default=nCe});var Uq=G(Pi=>{"use strict";var $S=Pi&&Pi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Pi,"__esModule",{value:!0});Pi.setTextNodeValue=Pi.createTextNode=Pi.setStyle=Pi.setAttribute=Pi.removeChildNode=Pi.insertBeforeNode=Pi.appendChildNode=Pi.createNode=Pi.TEXT_NAME=void 0;var Lft=$S(_m()),iCe=$S(jIe()),Mft=$S(GIe()),Uft=$S(Oq()),_ft=$S(Mq());Pi.TEXT_NAME="#text";Pi.createNode=e=>{var t;let r={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:e==="ink-virtual-text"?void 0:Lft.default.Node.create()};return e==="ink-text"&&((t=r.yogaNode)===null||t===void 0||t.setMeasureFunc(Hft.bind(null,r))),r};Pi.appendChildNode=(e,t)=>{var r;t.parentNode&&Pi.removeChildNode(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&((r=e.yogaNode)===null||r===void 0||r.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&bF(e)};Pi.insertBeforeNode=(e,t,r)=>{var s,a;t.parentNode&&Pi.removeChildNode(t.parentNode,t),t.parentNode=e;let n=e.childNodes.indexOf(r);if(n>=0){e.childNodes.splice(n,0,t),t.yogaNode&&((s=e.yogaNode)===null||s===void 0||s.insertChild(t.yogaNode,n));return}e.childNodes.push(t),t.yogaNode&&((a=e.yogaNode)===null||a===void 0||a.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&bF(e)};Pi.removeChildNode=(e,t)=>{var r,s;t.yogaNode&&((s=(r=t.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||s===void 0||s.removeChild(t.yogaNode)),t.parentNode=null;let a=e.childNodes.indexOf(t);a>=0&&e.childNodes.splice(a,1),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&bF(e)};Pi.setAttribute=(e,t,r)=>{e.attributes[t]=r};Pi.setStyle=(e,t)=>{e.style=t,e.yogaNode&&Mft.default(e.yogaNode,t)};Pi.createTextNode=e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:null,style:{}};return Pi.setTextNodeValue(t,e),t};var Hft=function(e,t){var r,s;let a=e.nodeName==="#text"?e.nodeValue:_ft.default(e),n=iCe.default(a);if(n.width<=t||n.width>=1&&t>0&&t<1)return n;let c=(s=(r=e.style)===null||r===void 0?void 0:r.textWrap)!==null&&s!==void 0?s:"wrap",f=Uft.default(a,t,c);return iCe.default(f)},sCe=e=>{var t;if(!(!e||!e.parentNode))return(t=e.yogaNode)!==null&&t!==void 0?t:sCe(e.parentNode)},bF=e=>{let t=sCe(e);t?.markDirty()};Pi.setTextNodeValue=(e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,bF(e)}});var uCe=G(eb=>{"use strict";var cCe=eb&&eb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eb,"__esModule",{value:!0});var oCe=Cq(),jft=cCe(PIe()),aCe=cCe(_m()),oa=Uq(),lCe=e=>{e?.unsetMeasureFunc(),e?.freeRecursive()};eb.default=jft.default({schedulePassiveEffects:oCe.unstable_scheduleCallback,cancelPassiveEffects:oCe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>null,preparePortalMount:()=>null,clearContainer:()=>!1,shouldDeprioritizeSubtree:()=>!1,resetAfterCommit:e=>{if(e.isStaticDirty){e.isStaticDirty=!1,typeof e.onImmediateRender=="function"&&e.onImmediateRender();return}typeof e.onRender=="function"&&e.onRender()},getChildHostContext:(e,t)=>{let r=e.isInsideText,s=t==="ink-text"||t==="ink-virtual-text";return r===s?e:{isInsideText:s}},shouldSetTextContent:()=>!1,createInstance:(e,t,r,s)=>{if(s.isInsideText&&e==="ink-box")throw new Error(" can\u2019t be nested inside component");let a=e==="ink-text"&&s.isInsideText?"ink-virtual-text":e,n=oa.createNode(a);for(let[c,f]of Object.entries(t))c!=="children"&&(c==="style"?oa.setStyle(n,f):c==="internal_transform"?n.internal_transform=f:c==="internal_static"?n.internal_static=!0:oa.setAttribute(n,c,f));return n},createTextInstance:(e,t,r)=>{if(!r.isInsideText)throw new Error(`Text string "${e}" must be rendered inside component`);return oa.createTextNode(e)},resetTextContent:()=>{},hideTextInstance:e=>{oa.setTextNodeValue(e,"")},unhideTextInstance:(e,t)=>{oa.setTextNodeValue(e,t)},getPublicInstance:e=>e,hideInstance:e=>{var t;(t=e.yogaNode)===null||t===void 0||t.setDisplay(aCe.default.DISPLAY_NONE)},unhideInstance:e=>{var t;(t=e.yogaNode)===null||t===void 0||t.setDisplay(aCe.default.DISPLAY_FLEX)},appendInitialChild:oa.appendChildNode,appendChild:oa.appendChildNode,insertBefore:oa.insertBeforeNode,finalizeInitialChildren:(e,t,r,s)=>(e.internal_static&&(s.isStaticDirty=!0,s.staticNode=e),!1),supportsMutation:!0,appendChildToContainer:oa.appendChildNode,insertInContainerBefore:oa.insertBeforeNode,removeChildFromContainer:(e,t)=>{oa.removeChildNode(e,t),lCe(t.yogaNode)},prepareUpdate:(e,t,r,s,a)=>{e.internal_static&&(a.isStaticDirty=!0);let n={},c=Object.keys(s);for(let f of c)if(s[f]!==r[f]){if(f==="style"&&typeof s.style=="object"&&typeof r.style=="object"){let h=s.style,E=r.style,C=Object.keys(h);for(let S of C){if(S==="borderStyle"||S==="borderColor"){if(typeof n.style!="object"){let x={};n.style=x}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[S]!==E[S]){if(typeof n.style!="object"){let x={};n.style=x}n.style[S]=h[S]}}continue}n[f]=s[f]}return n},commitUpdate:(e,t)=>{for(let[r,s]of Object.entries(t))r!=="children"&&(r==="style"?oa.setStyle(e,s):r==="internal_transform"?e.internal_transform=s:r==="internal_static"?e.internal_static=!0:oa.setAttribute(e,r,s))},commitTextUpdate:(e,t,r)=>{oa.setTextNodeValue(e,r)},removeChild:(e,t)=>{oa.removeChildNode(e,t),lCe(t.yogaNode)}})});var ACe=G((k7t,fCe)=>{"use strict";fCe.exports=(e,t=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof e!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if(typeof t!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(t===0)return e;let s=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(s,r.indent.repeat(t))}});var pCe=G(tb=>{"use strict";var Gft=tb&&tb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(tb,"__esModule",{value:!0});var DF=Gft(_m());tb.default=e=>e.getComputedWidth()-e.getComputedPadding(DF.default.EDGE_LEFT)-e.getComputedPadding(DF.default.EDGE_RIGHT)-e.getComputedBorder(DF.default.EDGE_LEFT)-e.getComputedBorder(DF.default.EDGE_RIGHT)});var hCe=G((T7t,qft)=>{qft.exports={single:{topLeft:"\u250C",topRight:"\u2510",bottomRight:"\u2518",bottomLeft:"\u2514",vertical:"\u2502",horizontal:"\u2500"},double:{topLeft:"\u2554",topRight:"\u2557",bottomRight:"\u255D",bottomLeft:"\u255A",vertical:"\u2551",horizontal:"\u2550"},round:{topLeft:"\u256D",topRight:"\u256E",bottomRight:"\u256F",bottomLeft:"\u2570",vertical:"\u2502",horizontal:"\u2500"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomRight:"\u251B",bottomLeft:"\u2517",vertical:"\u2503",horizontal:"\u2501"},singleDouble:{topLeft:"\u2553",topRight:"\u2556",bottomRight:"\u255C",bottomLeft:"\u2559",vertical:"\u2551",horizontal:"\u2500"},doubleSingle:{topLeft:"\u2552",topRight:"\u2555",bottomRight:"\u255B",bottomLeft:"\u2558",vertical:"\u2502",horizontal:"\u2550"},classic:{topLeft:"+",topRight:"+",bottomRight:"+",bottomLeft:"+",vertical:"|",horizontal:"-"}}});var gCe=G((R7t,_q)=>{"use strict";var dCe=hCe();_q.exports=dCe;_q.exports.default=dCe});var Hq=G(nb=>{"use strict";var Yft=nb&&nb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(nb,"__esModule",{value:!0});var rb=Yft(LE()),Wft=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,Vft=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,PF=(e,t)=>t==="foreground"?e:"bg"+e[0].toUpperCase()+e.slice(1);nb.default=(e,t,r)=>{if(!t)return e;if(t in rb.default){let a=PF(t,r);return rb.default[a](e)}if(t.startsWith("#")){let a=PF("hex",r);return rb.default[a](t)(e)}if(t.startsWith("ansi")){let a=Vft.exec(t);if(!a)return e;let n=PF(a[1],r),c=Number(a[2]);return rb.default[n](c)(e)}if(t.startsWith("rgb")||t.startsWith("hsl")||t.startsWith("hsv")||t.startsWith("hwb")){let a=Wft.exec(t);if(!a)return e;let n=PF(a[1],r),c=Number(a[2]),f=Number(a[3]),p=Number(a[4]);return rb.default[n](c,f,p)(e)}return e}});var yCe=G(ib=>{"use strict";var mCe=ib&&ib.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ib,"__esModule",{value:!0});var Kft=mCe(gCe()),jq=mCe(Hq());ib.default=(e,t,r,s)=>{if(typeof r.style.borderStyle=="string"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),c=r.style.borderColor,f=Kft.default[r.style.borderStyle],p=jq.default(f.topLeft+f.horizontal.repeat(a-2)+f.topRight,c,"foreground"),h=(jq.default(f.vertical,c,"foreground")+` +`).repeat(n-2),E=jq.default(f.bottomLeft+f.horizontal.repeat(a-2)+f.bottomRight,c,"foreground");s.write(e,t,p,{transformers:[]}),s.write(e,t+1,h,{transformers:[]}),s.write(e+a-1,t+1,h,{transformers:[]}),s.write(e,t+n-1,E,{transformers:[]})}}});var ICe=G(sb=>{"use strict";var Hm=sb&&sb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(sb,"__esModule",{value:!0});var Jft=Hm(_m()),zft=Hm(kq()),Zft=Hm(ACe()),Xft=Hm(Oq()),$ft=Hm(pCe()),eAt=Hm(Mq()),tAt=Hm(yCe()),rAt=(e,t)=>{var r;let s=(r=e.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(s){let a=s.getComputedLeft(),n=s.getComputedTop();t=` +`.repeat(n)+Zft.default(t,a)}return t},ECe=(e,t,r)=>{var s;let{offsetX:a=0,offsetY:n=0,transformers:c=[],skipStaticElements:f}=r;if(f&&e.internal_static)return;let{yogaNode:p}=e;if(p){if(p.getDisplay()===Jft.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),C=c;if(typeof e.internal_transform=="function"&&(C=[e.internal_transform,...c]),e.nodeName==="ink-text"){let S=eAt.default(e);if(S.length>0){let x=zft.default(S),I=$ft.default(p);if(x>I){let R=(s=e.style.textWrap)!==null&&s!==void 0?s:"wrap";S=Xft.default(S,I,R)}S=rAt(e,S),t.write(h,E,S,{transformers:C})}return}if(e.nodeName==="ink-box"&&tAt.default(h,E,e,t),e.nodeName==="ink-root"||e.nodeName==="ink-box")for(let S of e.childNodes)ECe(S,t,{offsetX:h,offsetY:E,transformers:C,skipStaticElements:f})}};sb.default=ECe});var BCe=G(ob=>{"use strict";var wCe=ob&&ob.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ob,"__esModule",{value:!0});var CCe=wCe(Fq()),nAt=wCe(KS()),Gq=class{constructor(t){this.writes=[];let{width:r,height:s}=t;this.width=r,this.height=s}write(t,r,s,a){let{transformers:n}=a;s&&this.writes.push({x:t,y:r,text:s,transformers:n})}get(){let t=[];for(let s=0;ss.trimRight()).join(` +`),height:t.length}}};ob.default=Gq});var bCe=G(ab=>{"use strict";var qq=ab&&ab.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ab,"__esModule",{value:!0});var iAt=qq(_m()),vCe=qq(ICe()),SCe=qq(BCe());ab.default=(e,t)=>{var r;if(e.yogaNode.setWidth(t),e.yogaNode){e.yogaNode.calculateLayout(void 0,void 0,iAt.default.DIRECTION_LTR);let s=new SCe.default({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});vCe.default(e,s,{skipStaticElements:!0});let a;!((r=e.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new SCe.default({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),vCe.default(e.staticNode,a,{skipStaticElements:!1}));let{output:n,height:c}=s.get();return{output:n,outputHeight:c,staticOutput:a?`${a.get().output} +`:""}}return{output:"",outputHeight:0,staticOutput:""}}});var kCe=G((U7t,xCe)=>{"use strict";var DCe=Ce("stream"),PCe=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],Yq={},sAt=e=>{let t=new DCe.PassThrough,r=new DCe.PassThrough;t.write=a=>e("stdout",a),r.write=a=>e("stderr",a);let s=new console.Console(t,r);for(let a of PCe)Yq[a]=console[a],console[a]=s[a];return()=>{for(let a of PCe)console[a]=Yq[a];Yq={}}};xCe.exports=sAt});var Vq=G(Wq=>{"use strict";Object.defineProperty(Wq,"__esModule",{value:!0});Wq.default=new WeakMap});var Jq=G(Kq=>{"use strict";Object.defineProperty(Kq,"__esModule",{value:!0});var oAt=dn(),QCe=oAt.createContext({exit:()=>{}});QCe.displayName="InternalAppContext";Kq.default=QCe});var Zq=G(zq=>{"use strict";Object.defineProperty(zq,"__esModule",{value:!0});var aAt=dn(),TCe=aAt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});TCe.displayName="InternalStdinContext";zq.default=TCe});var $q=G(Xq=>{"use strict";Object.defineProperty(Xq,"__esModule",{value:!0});var lAt=dn(),RCe=lAt.createContext({stdout:void 0,write:()=>{}});RCe.displayName="InternalStdoutContext";Xq.default=RCe});var tY=G(eY=>{"use strict";Object.defineProperty(eY,"__esModule",{value:!0});var cAt=dn(),FCe=cAt.createContext({stderr:void 0,write:()=>{}});FCe.displayName="InternalStderrContext";eY.default=FCe});var xF=G(rY=>{"use strict";Object.defineProperty(rY,"__esModule",{value:!0});var uAt=dn(),NCe=uAt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{},focus:()=>{}});NCe.displayName="InternalFocusContext";rY.default=NCe});var LCe=G((W7t,OCe)=>{"use strict";var fAt=/[|\\{}()[\]^$+*?.-]/g;OCe.exports=e=>{if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(fAt,"\\$&")}});var HCe=G((V7t,_Ce)=>{"use strict";var AAt=LCe(),pAt=typeof process=="object"&&process&&typeof process.cwd=="function"?process.cwd():".",UCe=[].concat(Ce("module").builtinModules,"bootstrap_node","node").map(e=>new RegExp(`(?:\\((?:node:)?${e}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${e}(?:\\.js)?:\\d+:\\d+$)`));UCe.push(/\((?:node:)?internal\/[^:]+:\d+:\d+\)$/,/\s*at (?:node:)?internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var nY=class e{constructor(t){t={ignoredPackages:[],...t},"internals"in t||(t.internals=e.nodeInternals()),"cwd"in t||(t.cwd=pAt),this._cwd=t.cwd.replace(/\\/g,"/"),this._internals=[].concat(t.internals,hAt(t.ignoredPackages)),this._wrapCallSite=t.wrapCallSite||!1}static nodeInternals(){return[...UCe]}clean(t,r=0){r=" ".repeat(r),Array.isArray(t)||(t=t.split(` +`)),!/^\s*at /.test(t[0])&&/^\s*at /.test(t[1])&&(t=t.slice(1));let s=!1,a=null,n=[];return t.forEach(c=>{if(c=c.replace(/\\/g,"/"),this._internals.some(p=>p.test(c)))return;let f=/^\s*at /.test(c);s?c=c.trimEnd().replace(/^(\s+)at /,"$1"):(c=c.trim(),f&&(c=c.slice(3))),c=c.replace(`${this._cwd}/`,""),c&&(f?(a&&(n.push(a),a=null),n.push(c)):(s=!0,a=c))}),n.map(c=>`${r}${c} +`).join("")}captureString(t,r=this.captureString){typeof t=="function"&&(r=t,t=1/0);let{stackTraceLimit:s}=Error;t&&(Error.stackTraceLimit=t);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=s,this.clean(n)}capture(t,r=this.capture){typeof t=="function"&&(r=t,t=1/0);let{prepareStackTrace:s,stackTraceLimit:a}=Error;Error.prepareStackTrace=(f,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,t&&(Error.stackTraceLimit=t);let n={};Error.captureStackTrace(n,r);let{stack:c}=n;return Object.assign(Error,{prepareStackTrace:s,stackTraceLimit:a}),c}at(t=this.at){let[r]=this.capture(1,t);if(!r)return{};let s={line:r.getLineNumber(),column:r.getColumnNumber()};MCe(s,r.getFileName(),this._cwd),r.isConstructor()&&(s.constructor=!0),r.isEval()&&(s.evalOrigin=r.getEvalOrigin()),r.isNative()&&(s.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!=="Object"&&a!=="[object Object]"&&(s.type=a);let n=r.getFunctionName();n&&(s.function=n);let c=r.getMethodName();return c&&n!==c&&(s.method=c),s}parseLine(t){let r=t&&t.match(dAt);if(!r)return null;let s=r[1]==="new",a=r[2],n=r[3],c=r[4],f=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],C=r[9],S=r[10]==="native",x=r[11]===")",I,R={};if(E&&(R.line=Number(E)),C&&(R.column=Number(C)),x&&h){let N=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===")")N++;else if(h.charAt(U)==="("&&h.charAt(U-1)===" "&&(N--,N===-1&&h.charAt(U-1)===" ")){let K=h.slice(0,U-1);h=h.slice(U+1),a+=` (${K}`;break}}if(a){let N=a.match(gAt);N&&(a=N[1],I=N[2])}return MCe(R,h,this._cwd),s&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=f,R.evalColumn=p,R.evalFile=c&&c.replace(/\\/g,"/")),S&&(R.native=!0),a&&(R.function=a),I&&a!==I&&(R.method=I),R}};function MCe(e,t,r){t&&(t=t.replace(/\\/g,"/"),t.startsWith(`${r}/`)&&(t=t.slice(r.length+1)),e.file=t)}function hAt(e){if(e.length===0)return[];let t=e.map(r=>AAt(r));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${t.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var dAt=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),gAt=/^(.*?) \[as (.*?)\]$/;_Ce.exports=nY});var GCe=G((K7t,jCe)=>{"use strict";jCe.exports=(e,t)=>e.replace(/^\t+/gm,r=>" ".repeat(r.length*(t||2)))});var YCe=G((J7t,qCe)=>{"use strict";var mAt=GCe(),yAt=(e,t)=>{let r=[],s=e-t,a=e+t;for(let n=s;n<=a;n++)r.push(n);return r};qCe.exports=(e,t,r)=>{if(typeof e!="string")throw new TypeError("Source code is missing.");if(!t||t<1)throw new TypeError("Line number must start from `1`.");if(e=mAt(e).split(/\r?\n/),!(t>e.length))return r={around:3,...r},yAt(t,r.around).filter(s=>e[s-1]!==void 0).map(s=>({line:s,value:e[s-1]}))}});var kF=G(of=>{"use strict";var EAt=of&&of.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),IAt=of&&of.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),CAt=of&&of.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&EAt(t,e,r);return IAt(t,e),t},wAt=of&&of.__rest||function(e,t){var r={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,s=Object.getOwnPropertySymbols(e);a{var{children:r}=e,s=wAt(e,["children"]);let a=Object.assign(Object.assign({},s),{marginLeft:s.marginLeft||s.marginX||s.margin||0,marginRight:s.marginRight||s.marginX||s.margin||0,marginTop:s.marginTop||s.marginY||s.margin||0,marginBottom:s.marginBottom||s.marginY||s.margin||0,paddingLeft:s.paddingLeft||s.paddingX||s.padding||0,paddingRight:s.paddingRight||s.paddingX||s.padding||0,paddingTop:s.paddingTop||s.paddingY||s.padding||0,paddingBottom:s.paddingBottom||s.paddingY||s.padding||0});return WCe.default.createElement("ink-box",{ref:t,style:a},r)});iY.displayName="Box";iY.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};of.default=iY});var aY=G(lb=>{"use strict";var sY=lb&&lb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lb,"__esModule",{value:!0});var BAt=sY(dn()),Aw=sY(LE()),VCe=sY(Hq()),oY=({color:e,backgroundColor:t,dimColor:r,bold:s,italic:a,underline:n,strikethrough:c,inverse:f,wrap:p,children:h})=>{if(h==null)return null;let E=C=>(r&&(C=Aw.default.dim(C)),e&&(C=VCe.default(C,e,"foreground")),t&&(C=VCe.default(C,t,"background")),s&&(C=Aw.default.bold(C)),a&&(C=Aw.default.italic(C)),n&&(C=Aw.default.underline(C)),c&&(C=Aw.default.strikethrough(C)),f&&(C=Aw.default.inverse(C)),C);return BAt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:p},internal_transform:E},h)};oY.displayName="Text";oY.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"};lb.default=oY});var ZCe=G(af=>{"use strict";var vAt=af&&af.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),SAt=af&&af.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),bAt=af&&af.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&vAt(t,e,r);return SAt(t,e),t},ub=af&&af.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(af,"__esModule",{value:!0});var KCe=bAt(Ce("fs")),Fs=ub(dn()),JCe=ub(HCe()),DAt=ub(YCe()),th=ub(kF()),dA=ub(aY()),zCe=new JCe.default({cwd:process.cwd(),internals:JCe.default.nodeInternals()}),PAt=({error:e})=>{let t=e.stack?e.stack.split(` +`).slice(1):void 0,r=t?zCe.parseLine(t[0]):void 0,s,a=0;if(r?.file&&r?.line&&KCe.existsSync(r.file)){let n=KCe.readFileSync(r.file,"utf8");if(s=DAt.default(n,r.line),s)for(let{line:c}of s)a=Math.max(a,String(c).length)}return Fs.default.createElement(th.default,{flexDirection:"column",padding:1},Fs.default.createElement(th.default,null,Fs.default.createElement(dA.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),Fs.default.createElement(dA.default,null," ",e.message)),r&&Fs.default.createElement(th.default,{marginTop:1},Fs.default.createElement(dA.default,{dimColor:!0},r.file,":",r.line,":",r.column)),r&&s&&Fs.default.createElement(th.default,{marginTop:1,flexDirection:"column"},s.map(({line:n,value:c})=>Fs.default.createElement(th.default,{key:n},Fs.default.createElement(th.default,{width:a+1},Fs.default.createElement(dA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0},String(n).padStart(a," "),":")),Fs.default.createElement(dA.default,{key:n,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0}," "+c)))),e.stack&&Fs.default.createElement(th.default,{marginTop:1,flexDirection:"column"},e.stack.split(` +`).slice(1).map(n=>{let c=zCe.parseLine(n);return c?Fs.default.createElement(th.default,{key:n},Fs.default.createElement(dA.default,{dimColor:!0},"- "),Fs.default.createElement(dA.default,{dimColor:!0,bold:!0},c.function),Fs.default.createElement(dA.default,{dimColor:!0,color:"gray"}," ","(",c.file,":",c.line,":",c.column,")")):Fs.default.createElement(th.default,{key:n},Fs.default.createElement(dA.default,{dimColor:!0},"- "),Fs.default.createElement(dA.default,{dimColor:!0,bold:!0},n))})))};af.default=PAt});var $Ce=G(lf=>{"use strict";var xAt=lf&&lf.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),kAt=lf&&lf.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),QAt=lf&&lf.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&xAt(t,e,r);return kAt(t,e),t},Gm=lf&&lf.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lf,"__esModule",{value:!0});var jm=QAt(dn()),XCe=Gm(cq()),TAt=Gm(Jq()),RAt=Gm(Zq()),FAt=Gm($q()),NAt=Gm(tY()),OAt=Gm(xF()),LAt=Gm(ZCe()),MAt=" ",UAt="\x1B[Z",_At="\x1B",QF=class extends jm.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=t=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default. +Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink. +Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding("utf8"),t){this.rawModeEnabledCount===0&&(r.addListener("data",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener("data",this.handleInput),r.pause())},this.handleInput=t=>{t===""&&this.props.exitOnCtrlC&&this.handleExit(),t===_At&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(t===MAt&&this.focusNext(),t===UAt&&this.focusPrevious())},this.handleExit=t=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(t)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focus=t=>{this.setState(r=>r.focusables.some(a=>a?.id===t)?{activeFocusId:t}:r)},this.focusNext=()=>{this.setState(t=>{var r;let s=(r=t.focusables[0])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findNextFocusable(t)||s}})},this.focusPrevious=()=>{this.setState(t=>{var r;let s=(r=t.focusables[t.focusables.length-1])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findPreviousFocusable(t)||s}})},this.addFocusable=(t,{autoFocus:r})=>{this.setState(s=>{let a=s.activeFocusId;return!a&&r&&(a=t),{activeFocusId:a,focusables:[...s.focusables,{id:t,isActive:!0}]}})},this.removeFocusable=t=>{this.setState(r=>({activeFocusId:r.activeFocusId===t?void 0:r.activeFocusId,focusables:r.focusables.filter(s=>s.id!==t)}))},this.activateFocusable=t=>{this.setState(r=>({focusables:r.focusables.map(s=>s.id!==t?s:{id:t,isActive:!0})}))},this.deactivateFocusable=t=>{this.setState(r=>({activeFocusId:r.activeFocusId===t?void 0:r.activeFocusId,focusables:r.focusables.map(s=>s.id!==t?s:{id:t,isActive:!1})}))},this.findNextFocusable=t=>{var r;let s=t.focusables.findIndex(a=>a.id===t.activeFocusId);for(let a=s+1;a{var r;let s=t.focusables.findIndex(a=>a.id===t.activeFocusId);for(let a=s-1;a>=0;a--)if(!((r=t.focusables[a])===null||r===void 0)&&r.isActive)return t.focusables[a].id}}static getDerivedStateFromError(t){return{error:t}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return jm.default.createElement(TAt.default.Provider,{value:{exit:this.handleExit}},jm.default.createElement(RAt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},jm.default.createElement(FAt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},jm.default.createElement(NAt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},jm.default.createElement(OAt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?jm.default.createElement(LAt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){XCe.default.hide(this.props.stdout)}componentWillUnmount(){XCe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(t){this.handleExit(t)}};lf.default=QF;QF.displayName="InternalApp"});var rwe=G(cf=>{"use strict";var HAt=cf&&cf.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),jAt=cf&&cf.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),GAt=cf&&cf.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&HAt(t,e,r);return jAt(t,e),t},uf=cf&&cf.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cf,"__esModule",{value:!0});var qAt=uf(dn()),ewe=KEe(),YAt=uf(uIe()),WAt=uf(iq()),VAt=uf(gIe()),KAt=uf(yIe()),lY=uf(uCe()),JAt=uf(bCe()),zAt=uf(lq()),ZAt=uf(kCe()),XAt=GAt(Uq()),$At=uf(Vq()),ept=uf($Ce()),pw=process.env.CI==="false"?!1:VAt.default,twe=()=>{},cY=class{constructor(t){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:s,staticOutput:a}=JAt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==` +`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(pw){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),s>=this.options.stdout.rows){this.options.stdout.write(WAt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},KAt.default(this),this.options=t,this.rootNode=XAt.createNode("ink-root"),this.rootNode.onRender=t.debug?this.onRender:ewe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=YAt.default.create(t.stdout),this.throttledLog=t.debug?this.log:ewe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=lY.default.createContainer(this.rootNode,0,!1,null),this.unsubscribeExit=zAt.default(this.unmount,{alwaysLast:!1}),t.patchConsole&&this.patchConsole(),pw||(t.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{t.stdout.off("resize",this.onRender)})}render(t){let r=qAt.default.createElement(ept.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},t);lY.default.updateContainer(r,this.container,null,twe)}writeToStdout(t){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(t+this.fullStaticOutput+this.lastOutput);return}if(pw){this.options.stdout.write(t);return}this.log.clear(),this.options.stdout.write(t),this.log(this.lastOutput)}}writeToStderr(t){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(t),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(pw){this.options.stderr.write(t);return}this.log.clear(),this.options.stderr.write(t),this.log(this.lastOutput)}}unmount(t){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),pw?this.options.stdout.write(this.lastOutput+` +`):this.options.debug||this.log.done(),this.isUnmounted=!0,lY.default.updateContainer(null,this.container,null,twe),$At.default.delete(this.options.stdout),t instanceof Error?this.rejectExitPromise(t):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((t,r)=>{this.resolveExitPromise=t,this.rejectExitPromise=r})),this.exitPromise}clear(){!pw&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=ZAt.default((t,r)=>{t==="stdout"&&this.writeToStdout(r),t==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}};cf.default=cY});var iwe=G(fb=>{"use strict";var nwe=fb&&fb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(fb,"__esModule",{value:!0});var tpt=nwe(rwe()),TF=nwe(Vq()),rpt=Ce("stream"),npt=(e,t)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},ipt(t)),s=spt(r.stdout,()=>new tpt.default(r));return s.render(e),{rerender:s.render,unmount:()=>s.unmount(),waitUntilExit:s.waitUntilExit,cleanup:()=>TF.default.delete(r.stdout),clear:s.clear}};fb.default=npt;var ipt=(e={})=>e instanceof rpt.Stream?{stdout:e,stdin:process.stdin}:e,spt=(e,t)=>{let r;return TF.default.has(e)?r=TF.default.get(e):(r=t(),TF.default.set(e,r)),r}});var owe=G(rh=>{"use strict";var opt=rh&&rh.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),apt=rh&&rh.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),lpt=rh&&rh.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&opt(t,e,r);return apt(t,e),t};Object.defineProperty(rh,"__esModule",{value:!0});var Ab=lpt(dn()),swe=e=>{let{items:t,children:r,style:s}=e,[a,n]=Ab.useState(0),c=Ab.useMemo(()=>t.slice(a),[t,a]);Ab.useLayoutEffect(()=>{n(t.length)},[t.length]);let f=c.map((h,E)=>r(h,a+E)),p=Ab.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},s),[s]);return Ab.default.createElement("ink-box",{internal_static:!0,style:p},f)};swe.displayName="Static";rh.default=swe});var lwe=G(pb=>{"use strict";var cpt=pb&&pb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pb,"__esModule",{value:!0});var upt=cpt(dn()),awe=({children:e,transform:t})=>e==null?null:upt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:t},e);awe.displayName="Transform";pb.default=awe});var uwe=G(hb=>{"use strict";var fpt=hb&&hb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(hb,"__esModule",{value:!0});var Apt=fpt(dn()),cwe=({count:e=1})=>Apt.default.createElement("ink-text",null,` +`.repeat(e));cwe.displayName="Newline";hb.default=cwe});var pwe=G(db=>{"use strict";var fwe=db&&db.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(db,"__esModule",{value:!0});var ppt=fwe(dn()),hpt=fwe(kF()),Awe=()=>ppt.default.createElement(hpt.default,{flexGrow:1});Awe.displayName="Spacer";db.default=Awe});var RF=G(gb=>{"use strict";var dpt=gb&&gb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(gb,"__esModule",{value:!0});var gpt=dn(),mpt=dpt(Zq()),ypt=()=>gpt.useContext(mpt.default);gb.default=ypt});var dwe=G(mb=>{"use strict";var Ept=mb&&mb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(mb,"__esModule",{value:!0});var hwe=dn(),Ipt=Ept(RF()),Cpt=(e,t={})=>{let{stdin:r,setRawMode:s,internal_exitOnCtrlC:a}=Ipt.default();hwe.useEffect(()=>{if(t.isActive!==!1)return s(!0),()=>{s(!1)}},[t.isActive,s]),hwe.useEffect(()=>{if(t.isActive===!1)return;let n=c=>{let f=String(c),p={upArrow:f==="\x1B[A",downArrow:f==="\x1B[B",leftArrow:f==="\x1B[D",rightArrow:f==="\x1B[C",pageDown:f==="\x1B[6~",pageUp:f==="\x1B[5~",return:f==="\r",escape:f==="\x1B",ctrl:!1,shift:!1,tab:f===" "||f==="\x1B[Z",backspace:f==="\b",delete:f==="\x7F"||f==="\x1B[3~",meta:!1};f<=""&&!p.return&&(f=String.fromCharCode(f.charCodeAt(0)+97-1),p.ctrl=!0),f.startsWith("\x1B")&&(f=f.slice(1),p.meta=!0);let h=f>="A"&&f<="Z",E=f>="\u0410"&&f<="\u042F";f.length===1&&(h||E)&&(p.shift=!0),p.tab&&f==="[Z"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(f=""),(!(f==="c"&&p.ctrl)||!a)&&e(f,p)};return r?.on("data",n),()=>{r?.off("data",n)}},[t.isActive,r,a,e])};mb.default=Cpt});var gwe=G(yb=>{"use strict";var wpt=yb&&yb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(yb,"__esModule",{value:!0});var Bpt=dn(),vpt=wpt(Jq()),Spt=()=>Bpt.useContext(vpt.default);yb.default=Spt});var mwe=G(Eb=>{"use strict";var bpt=Eb&&Eb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Eb,"__esModule",{value:!0});var Dpt=dn(),Ppt=bpt($q()),xpt=()=>Dpt.useContext(Ppt.default);Eb.default=xpt});var ywe=G(Ib=>{"use strict";var kpt=Ib&&Ib.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ib,"__esModule",{value:!0});var Qpt=dn(),Tpt=kpt(tY()),Rpt=()=>Qpt.useContext(Tpt.default);Ib.default=Rpt});var Iwe=G(wb=>{"use strict";var Ewe=wb&&wb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(wb,"__esModule",{value:!0});var Cb=dn(),Fpt=Ewe(xF()),Npt=Ewe(RF()),Opt=({isActive:e=!0,autoFocus:t=!1,id:r}={})=>{let{isRawModeSupported:s,setRawMode:a}=Npt.default(),{activeId:n,add:c,remove:f,activate:p,deactivate:h,focus:E}=Cb.useContext(Fpt.default),C=Cb.useMemo(()=>r??Math.random().toString().slice(2,7),[r]);return Cb.useEffect(()=>(c(C,{autoFocus:t}),()=>{f(C)}),[C,t]),Cb.useEffect(()=>{e?p(C):h(C)},[e,C]),Cb.useEffect(()=>{if(!(!s||!e))return a(!0),()=>{a(!1)}},[e]),{isFocused:!!C&&n===C,focus:E}};wb.default=Opt});var Cwe=G(Bb=>{"use strict";var Lpt=Bb&&Bb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Bb,"__esModule",{value:!0});var Mpt=dn(),Upt=Lpt(xF()),_pt=()=>{let e=Mpt.useContext(Upt.default);return{enableFocus:e.enableFocus,disableFocus:e.disableFocus,focusNext:e.focusNext,focusPrevious:e.focusPrevious,focus:e.focus}};Bb.default=_pt});var wwe=G(uY=>{"use strict";Object.defineProperty(uY,"__esModule",{value:!0});uY.default=e=>{var t,r,s,a;return{width:(r=(t=e.yogaNode)===null||t===void 0?void 0:t.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(s=e.yogaNode)===null||s===void 0?void 0:s.getComputedHeight())!==null&&a!==void 0?a:0}}});var Yc=G(vo=>{"use strict";Object.defineProperty(vo,"__esModule",{value:!0});var Hpt=iwe();Object.defineProperty(vo,"render",{enumerable:!0,get:function(){return Hpt.default}});var jpt=kF();Object.defineProperty(vo,"Box",{enumerable:!0,get:function(){return jpt.default}});var Gpt=aY();Object.defineProperty(vo,"Text",{enumerable:!0,get:function(){return Gpt.default}});var qpt=owe();Object.defineProperty(vo,"Static",{enumerable:!0,get:function(){return qpt.default}});var Ypt=lwe();Object.defineProperty(vo,"Transform",{enumerable:!0,get:function(){return Ypt.default}});var Wpt=uwe();Object.defineProperty(vo,"Newline",{enumerable:!0,get:function(){return Wpt.default}});var Vpt=pwe();Object.defineProperty(vo,"Spacer",{enumerable:!0,get:function(){return Vpt.default}});var Kpt=dwe();Object.defineProperty(vo,"useInput",{enumerable:!0,get:function(){return Kpt.default}});var Jpt=gwe();Object.defineProperty(vo,"useApp",{enumerable:!0,get:function(){return Jpt.default}});var zpt=RF();Object.defineProperty(vo,"useStdin",{enumerable:!0,get:function(){return zpt.default}});var Zpt=mwe();Object.defineProperty(vo,"useStdout",{enumerable:!0,get:function(){return Zpt.default}});var Xpt=ywe();Object.defineProperty(vo,"useStderr",{enumerable:!0,get:function(){return Xpt.default}});var $pt=Iwe();Object.defineProperty(vo,"useFocus",{enumerable:!0,get:function(){return $pt.default}});var eht=Cwe();Object.defineProperty(vo,"useFocusManager",{enumerable:!0,get:function(){return eht.default}});var tht=wwe();Object.defineProperty(vo,"measureElement",{enumerable:!0,get:function(){return tht.default}})});var AY={};Vt(AY,{Gem:()=>fY});var Bwe,qm,fY,FF=Ze(()=>{Bwe=et(Yc()),qm=et(dn()),fY=(0,qm.memo)(({active:e})=>{let t=(0,qm.useMemo)(()=>e?"\u25C9":"\u25EF",[e]),r=(0,qm.useMemo)(()=>e?"green":"yellow",[e]);return qm.default.createElement(Bwe.Text,{color:r},t)})});var pY={};Vt(pY,{useKeypress:()=>Ym});function Ym({active:e},t,r){let{stdin:s}=(0,vwe.useStdin)(),a=(0,NF.useCallback)((n,c)=>t(n,c),r);(0,NF.useEffect)(()=>{if(!(!e||!s))return s.on("keypress",a),()=>{s.off("keypress",a)}},[e,a,s])}var vwe,NF,hw=Ze(()=>{vwe=et(Yc()),NF=et(dn())});var bwe={};Vt(bwe,{FocusRequest:()=>Swe,useFocusRequest:()=>hY});var Swe,hY,dY=Ze(()=>{hw();Swe=(r=>(r.BEFORE="before",r.AFTER="after",r))(Swe||{}),hY=function({active:e},t,r){Ym({active:e},(s,a)=>{a.name==="tab"&&(a.shift?t("before"):t("after"))},r)}});var Dwe={};Vt(Dwe,{useListInput:()=>vb});var vb,OF=Ze(()=>{hw();vb=function(e,t,{active:r,minus:s,plus:a,set:n,loop:c=!0}){Ym({active:r},(f,p)=>{let h=t.indexOf(e);switch(p.name){case s:{let E=h-1;if(c){n(t[(t.length+E)%t.length]);return}if(E<0)return;n(t[E])}break;case a:{let E=h+1;if(c){n(t[E%t.length]);return}if(E>=t.length)return;n(t[E])}break}},[t,e,a,n,c])}});var LF={};Vt(LF,{ScrollableItems:()=>rht});var tg,vl,rht,MF=Ze(()=>{tg=et(Yc()),vl=et(dn());dY();OF();rht=({active:e=!0,children:t=[],radius:r=10,size:s=1,loop:a=!0,onFocusRequest:n,willReachEnd:c})=>{let f=N=>{if(N.key===null)throw new Error("Expected all children to have a key");return N.key},p=vl.default.Children.map(t,N=>f(N)),h=p[0],[E,C]=(0,vl.useState)(h),S=p.indexOf(E);(0,vl.useEffect)(()=>{p.includes(E)||C(h)},[t]),(0,vl.useEffect)(()=>{c&&S>=p.length-2&&c()},[S]),hY({active:e&&!!n},N=>{n?.(N)},[n]),vb(E,p,{active:e,minus:"up",plus:"down",set:C,loop:a});let x=S-r,I=S+r;I>p.length&&(x-=I-p.length,I=p.length),x<0&&(I+=-x,x=0),I>=p.length&&(I=p.length-1);let R=[];for(let N=x;N<=I;++N){let U=p[N],K=e&&U===E;R.push(vl.default.createElement(tg.Box,{key:U,height:s},vl.default.createElement(tg.Box,{marginLeft:1,marginRight:1},vl.default.createElement(tg.Text,null,K?vl.default.createElement(tg.Text,{color:"cyan",bold:!0},">"):" ")),vl.default.createElement(tg.Box,null,vl.default.cloneElement(t[N],{active:K}))))}return vl.default.createElement(tg.Box,{flexDirection:"column",width:"100%"},R)}});var Pwe,nh,xwe,UF,kwe,gY=Ze(()=>{Pwe=et(Yc()),nh=et(dn()),xwe=Ce("readline"),UF=nh.default.createContext(null),kwe=({children:e})=>{let{stdin:t,setRawMode:r}=(0,Pwe.useStdin)();(0,nh.useEffect)(()=>{r&&r(!0),t&&(0,xwe.emitKeypressEvents)(t)},[t,r]);let[s,a]=(0,nh.useState)(new Map),n=(0,nh.useMemo)(()=>({getAll:()=>s,get:c=>s.get(c),set:(c,f)=>a(p=>new Map([...p,[c,f]])),setAll:c=>a(f=>new Map([...f,...c]))}),[s,a]);return nh.default.createElement(UF.Provider,{value:n,children:e})}});var mY={};Vt(mY,{useMinistore:()=>nht,useMinistoreSetAll:()=>iht});function nht(e,t){let r=(0,Sb.useContext)(UF);if(r===null)throw new Error("Expected this hook to run with a ministore context attached");if(typeof e>"u")return r.getAll();let s=(0,Sb.useCallback)(n=>{r.set(e,n)},[e,r.set]),a=r.get(e);return typeof a>"u"&&(a=t),[a,s]}function iht(){let e=(0,Sb.useContext)(UF);if(e===null)throw new Error("Expected this hook to run with a ministore context attached");return e.setAll}var Sb,yY=Ze(()=>{Sb=et(dn());gY()});var HF={};Vt(HF,{renderForm:()=>sht});async function sht(e,t,{stdin:r,stdout:s,stderr:a}){let n,c=p=>{let{exit:h}=(0,_F.useApp)();Ym({active:!0},(E,C)=>{C.name==="return"&&(n=p,h())},[h,p])},{waitUntilExit:f}=(0,_F.render)(EY.default.createElement(kwe,null,EY.default.createElement(e,{...t,useSubmit:c})),{stdin:r,stdout:s,stderr:a});return await f(),n}var _F,EY,jF=Ze(()=>{_F=et(Yc()),EY=et(dn());gY();hw()});var Fwe=G(bb=>{"use strict";Object.defineProperty(bb,"__esModule",{value:!0});bb.UncontrolledTextInput=void 0;var Twe=dn(),IY=dn(),Qwe=Yc(),Wm=LE(),Rwe=({value:e,placeholder:t="",focus:r=!0,mask:s,highlightPastedText:a=!1,showCursor:n=!0,onChange:c,onSubmit:f})=>{let[{cursorOffset:p,cursorWidth:h},E]=IY.useState({cursorOffset:(e||"").length,cursorWidth:0});IY.useEffect(()=>{E(R=>{if(!r||!n)return R;let N=e||"";return R.cursorOffset>N.length-1?{cursorOffset:N.length,cursorWidth:0}:R})},[e,r,n]);let C=a?h:0,S=s?s.repeat(e.length):e,x=S,I=t?Wm.grey(t):void 0;if(n&&r){I=t.length>0?Wm.inverse(t[0])+Wm.grey(t.slice(1)):Wm.inverse(" "),x=S.length>0?"":Wm.inverse(" ");let R=0;for(let N of S)R>=p-C&&R<=p?x+=Wm.inverse(N):x+=N,R++;S.length>0&&p===S.length&&(x+=Wm.inverse(" "))}return Qwe.useInput((R,N)=>{if(N.upArrow||N.downArrow||N.ctrl&&R==="c"||N.tab||N.shift&&N.tab)return;if(N.return){f&&f(e);return}let U=p,K=e,$=0;N.leftArrow?n&&U--:N.rightArrow?n&&U++:N.backspace||N.delete?p>0&&(K=e.slice(0,p-1)+e.slice(p,e.length),U--):(K=e.slice(0,p)+R+e.slice(p,e.length),U+=R.length,R.length>1&&($=R.length)),p<0&&(U=0),p>e.length&&(U=e.length),E({cursorOffset:U,cursorWidth:$}),K!==e&&c(K)},{isActive:r}),Twe.createElement(Qwe.Text,null,t?S.length>0?x:I:x)};bb.default=Rwe;bb.UncontrolledTextInput=({initialValue:e="",...t})=>{let[r,s]=IY.useState(e);return Twe.createElement(Rwe,Object.assign({},t,{value:r,onChange:s}))}});var Lwe={};Vt(Lwe,{Pad:()=>CY});var Nwe,Owe,CY,wY=Ze(()=>{Nwe=et(Yc()),Owe=et(dn()),CY=({length:e,active:t})=>{if(e===0)return null;let r=e>1?` ${"-".repeat(e-1)}`:" ";return Owe.default.createElement(Nwe.Text,{dimColor:!t},r)}});var Mwe={};Vt(Mwe,{ItemOptions:()=>oht});var Pb,rg,oht,Uwe=Ze(()=>{Pb=et(Yc()),rg=et(dn());OF();FF();wY();oht=function({active:e,skewer:t,options:r,value:s,onChange:a,sizes:n=[]}){let c=r.filter(({label:p})=>!!p).map(({value:p})=>p),f=r.findIndex(p=>p.value===s&&p.label!="");return vb(s,c,{active:e,minus:"left",plus:"right",set:a}),rg.default.createElement(rg.default.Fragment,null,r.map(({label:p},h)=>{let E=h===f,C=n[h]-1||0,S=p.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),x=Math.max(0,C-S.length-2);return p?rg.default.createElement(Pb.Box,{key:p,width:C,marginLeft:1},rg.default.createElement(Pb.Text,{wrap:"truncate"},rg.default.createElement(fY,{active:E})," ",p),t?rg.default.createElement(CY,{active:e,length:x}):null):rg.default.createElement(Pb.Box,{key:`spacer-${h}`,width:C,marginLeft:1})}))}});var t1e=G((izt,e1e)=>{var OY;e1e.exports=()=>(typeof OY>"u"&&(OY=Ce("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),OY)});var w1e=G((xzt,C1e)=>{var YY=Symbol("arg flag"),Wc=class e extends Error{constructor(t,r){super(t),this.name="ArgError",this.code=r,Object.setPrototypeOf(this,e.prototype)}};function Yb(e,{argv:t=process.argv.slice(2),permissive:r=!1,stopAtPositional:s=!1}={}){if(!e)throw new Wc("argument specification object is required","ARG_CONFIG_NO_SPEC");let a={_:[]},n={},c={};for(let f of Object.keys(e)){if(!f)throw new Wc("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(f[0]!=="-")throw new Wc(`argument key must start with '-' but found: '${f}'`,"ARG_CONFIG_NONOPT_KEY");if(f.length===1)throw new Wc(`argument key must have a name; singular '-' keys are not allowed: ${f}`,"ARG_CONFIG_NONAME_KEY");if(typeof e[f]=="string"){n[f]=e[f];continue}let p=e[f],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]=="function"){let[E]=p;p=(C,S,x=[])=>(x.push(E(C,S,x[x.length-1])),x),h=E===Boolean||E[YY]===!0}else if(typeof p=="function")h=p===Boolean||p[YY]===!0;else throw new Wc(`type missing or not a function or valid array type: ${f}`,"ARG_CONFIG_VAD_TYPE");if(f[1]!=="-"&&f.length>2)throw new Wc(`short argument keys (with a single hyphen) must have only one character: ${f}`,"ARG_CONFIG_SHORTOPT_TOOLONG");c[f]=[p,h]}for(let f=0,p=t.length;f0){a._=a._.concat(t.slice(f));break}if(h==="--"){a._=a._.concat(t.slice(f+1));break}if(h.length>1&&h[0]==="-"){let E=h[1]==="-"||h.length===2?[h]:h.slice(1).split("").map(C=>`-${C}`);for(let C=0;C1&&t[f+1][0]==="-"&&!(t[f+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(N===Number||typeof BigInt<"u"&&N===BigInt))){let K=x===R?"":` (alias for ${R})`;throw new Wc(`option requires argument: ${x}${K}`,"ARG_MISSING_REQUIRED_LONGARG")}a[R]=N(t[f+1],R,a[R]),++f}else a[R]=N(I,R,a[R])}}else a._.push(h)}return a}Yb.flag=e=>(e[YY]=!0,e);Yb.COUNT=Yb.flag((e,t,r)=>(r||0)+1);Yb.ArgError=Wc;C1e.exports=Yb});var x1e=G((sZt,P1e)=>{var zY;P1e.exports=()=>(typeof zY>"u"&&(zY=Ce("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),zY)});var F1e=G((nW,iW)=>{(function(e){nW&&typeof nW=="object"&&typeof iW<"u"?iW.exports=e():typeof define=="function"&&define.amd?define([],e):typeof window<"u"?window.isWindows=e():typeof global<"u"?global.isWindows=e():typeof self<"u"?self.isWindows=e():this.isWindows=e()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var M1e=G((nXt,L1e)=>{"use strict";sW.ifExists=gdt;var Cw=Ce("util"),Vc=Ce("path"),N1e=F1e(),pdt=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,hdt={createPwshFile:!0,createCmdFile:N1e(),fs:Ce("fs")},ddt=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function O1e(e){let t={...hdt,...e},r=t.fs;return t.fs_={chmod:r.chmod?Cw.promisify(r.chmod):async()=>{},mkdir:Cw.promisify(r.mkdir),readFile:Cw.promisify(r.readFile),stat:Cw.promisify(r.stat),unlink:Cw.promisify(r.unlink),writeFile:Cw.promisify(r.writeFile)},t}async function sW(e,t,r){let s=O1e(r);await s.fs_.stat(e),await ydt(e,t,s)}function gdt(e,t,r){return sW(e,t,r).catch(()=>{})}function mdt(e,t){return t.fs_.unlink(e).catch(()=>{})}async function ydt(e,t,r){let s=await Bdt(e,r);return await Edt(t,r),Idt(e,t,s,r)}function Edt(e,t){return t.fs_.mkdir(Vc.dirname(e),{recursive:!0})}function Idt(e,t,r,s){let a=O1e(s),n=[{generator:bdt,extension:""}];return a.createCmdFile&&n.push({generator:Sdt,extension:".cmd"}),a.createPwshFile&&n.push({generator:Ddt,extension:".ps1"}),Promise.all(n.map(c=>vdt(e,t+c.extension,r,c.generator,a)))}function Cdt(e,t){return mdt(e,t)}function wdt(e,t){return Pdt(e,t)}async function Bdt(e,t){let a=(await t.fs_.readFile(e,"utf8")).trim().split(/\r*\n/)[0].match(pdt);if(!a){let n=Vc.extname(e).toLowerCase();return{program:ddt.get(n)||null,additionalArgs:""}}return{program:a[1],additionalArgs:a[2]}}async function vdt(e,t,r,s,a){let n=a.preserveSymlinks?"--preserve-symlinks":"",c=[r.additionalArgs,n].filter(f=>f).join(" ");return a=Object.assign({},a,{prog:r.program,args:c}),await Cdt(t,a),await a.fs_.writeFile(t,s(e,t,a),"utf8"),wdt(t,a)}function Sdt(e,t,r){let a=Vc.relative(Vc.dirname(t),e).split("/").join("\\"),n=Vc.isAbsolute(a)?`"${a}"`:`"%~dp0\\${a}"`,c,f=r.prog,p=r.args||"",h=oW(r.nodePath).win32;f?(c=`"%~dp0\\${f}.exe"`,a=n):(f=n,p="",a="");let E=r.progArgs?`${r.progArgs.join(" ")} `:"",C=h?`@SET NODE_PATH=${h}\r +`:"";return c?C+=`@IF EXIST ${c} (\r + ${c} ${p} ${a} ${E}%*\r +) ELSE (\r + @SETLOCAL\r + @SET PATHEXT=%PATHEXT:;.JS;=;%\r + ${f} ${p} ${a} ${E}%*\r +)\r +`:C+=`@${f} ${p} ${a} ${E}%*\r +`,C}function bdt(e,t,r){let s=Vc.relative(Vc.dirname(t),e),a=r.prog&&r.prog.split("\\").join("/"),n;s=s.split("\\").join("/");let c=Vc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,f=r.args||"",p=oW(r.nodePath).posix;a?(n=`"$basedir/${r.prog}"`,s=c):(a=c,f="",s="");let h=r.progArgs?`${r.progArgs.join(" ")} `:"",E=`#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") + +case \`uname\` in + *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; +esac + +`,C=r.nodePath?`export NODE_PATH="${p}" +`:"";return n?E+=`${C}if [ -x ${n} ]; then + exec ${n} ${f} ${s} ${h}"$@" +else + exec ${a} ${f} ${s} ${h}"$@" +fi +`:E+=`${C}${a} ${f} ${s} ${h}"$@" +exit $? +`,E}function Ddt(e,t,r){let s=Vc.relative(Vc.dirname(t),e),a=r.prog&&r.prog.split("\\").join("/"),n=a&&`"${a}$exe"`,c;s=s.split("\\").join("/");let f=Vc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,p=r.args||"",h=oW(r.nodePath),E=h.win32,C=h.posix;n?(c=`"$basedir/${r.prog}$exe"`,s=f):(n=f,p="",s="");let S=r.progArgs?`${r.progArgs.join(" ")} `:"",x=`#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +${r.nodePath?`$env_node_path=$env:NODE_PATH +$env:NODE_PATH="${E}" +`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +}`;return r.nodePath&&(x+=` else { + $env:NODE_PATH="${C}" +}`),c?x+=` +$ret=0 +if (Test-Path ${c}) { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${c} ${p} ${s} ${S}$args + } else { + & ${c} ${p} ${s} ${S}$args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${n} ${p} ${s} ${S}$args + } else { + & ${n} ${p} ${s} ${S}$args + } + $ret=$LASTEXITCODE +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $ret +`:x+=` +# Support pipeline input +if ($MyInvocation.ExpectingInput) { + $input | & ${n} ${p} ${s} ${S}$args +} else { + & ${n} ${p} ${s} ${S}$args +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $LASTEXITCODE +`,x}function Pdt(e,t){return t.fs_.chmod(e,493)}function oW(e){if(!e)return{win32:"",posix:""};let t=typeof e=="string"?e.split(Vc.delimiter):Array.from(e),r={};for(let s=0;s`/mnt/${f.toLowerCase()}`):t[s];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[s]={win32:a,posix:n}}return r}L1e.exports=sW});var IW=G((Q$t,i2e)=>{i2e.exports=Ce("stream")});var l2e=G((T$t,a2e)=>{"use strict";function s2e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,s)}return r}function fgt(e){for(var t=1;t0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:"unshift",value:function(r){var s={data:r,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var s=this.head,a=""+s.data;s=s.next;)a+=r+s.data;return a}},{key:"concat",value:function(r){if(this.length===0)return sN.alloc(0);for(var s=sN.allocUnsafe(r>>>0),a=this.head,n=0;a;)ygt(a.data,s,n),n+=a.data.length,a=a.next;return s}},{key:"consume",value:function(r,s){var a;return rc.length?c.length:r;if(f===c.length?n+=c:n+=c.slice(0,r),r-=f,r===0){f===c.length?(++a,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=c.slice(f));break}++a}return this.length-=a,n}},{key:"_getBuffer",value:function(r){var s=sN.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(s),r-=a.data.length;a=a.next;){var c=a.data,f=r>c.length?c.length:r;if(c.copy(s,s.length-r,0,f),r-=f,r===0){f===c.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=c.slice(f));break}++n}return this.length-=n,s}},{key:mgt,value:function(r,s){return CW(this,fgt({},s,{depth:0,customInspect:!1}))}}]),e}()});var BW=G((R$t,u2e)=>{"use strict";function Egt(e,t){var r=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(wW,this,e)):process.nextTick(wW,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(oN,r):(r._writableState.errorEmitted=!0,process.nextTick(c2e,r,n)):process.nextTick(c2e,r,n):t?(process.nextTick(oN,r),t(n)):process.nextTick(oN,r)}),this)}function c2e(e,t){wW(e,t),oN(e)}function oN(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function Igt(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function wW(e,t){e.emit("error",t)}function Cgt(e,t){var r=e._readableState,s=e._writableState;r&&r.autoDestroy||s&&s.autoDestroy?e.destroy(t):e.emit("error",t)}u2e.exports={destroy:Egt,undestroy:Igt,errorOrDestroy:Cgt}});var cg=G((F$t,p2e)=>{"use strict";var A2e={};function Jc(e,t,r){r||(r=Error);function s(n,c,f){return typeof t=="string"?t:t(n,c,f)}class a extends r{constructor(c,f,p){super(s(c,f,p))}}a.prototype.name=r.name,a.prototype.code=e,A2e[e]=a}function f2e(e,t){if(Array.isArray(e)){let r=e.length;return e=e.map(s=>String(s)),r>2?`one of ${t} ${e.slice(0,r-1).join(", ")}, or `+e[r-1]:r===2?`one of ${t} ${e[0]} or ${e[1]}`:`of ${t} ${e[0]}`}else return`of ${t} ${String(e)}`}function wgt(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function Bgt(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function vgt(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Jc("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Jc("ERR_INVALID_ARG_TYPE",function(e,t,r){let s;typeof t=="string"&&wgt(t,"not ")?(s="must not be",t=t.replace(/^not /,"")):s="must be";let a;if(Bgt(e," argument"))a=`The ${e} ${s} ${f2e(t,"type")}`;else{let n=vgt(e,".")?"property":"argument";a=`The "${e}" ${n} ${s} ${f2e(t,"type")}`}return a+=`. Received type ${typeof r}`,a},TypeError);Jc("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Jc("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Jc("ERR_STREAM_PREMATURE_CLOSE","Premature close");Jc("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Jc("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Jc("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Jc("ERR_STREAM_WRITE_AFTER_END","write after end");Jc("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Jc("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Jc("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");p2e.exports.codes=A2e});var vW=G((N$t,h2e)=>{"use strict";var Sgt=cg().codes.ERR_INVALID_OPT_VALUE;function bgt(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function Dgt(e,t,r,s){var a=bgt(t,s,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=s?r:"highWaterMark";throw new Sgt(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}h2e.exports={getHighWaterMark:Dgt}});var d2e=G((O$t,SW)=>{typeof Object.create=="function"?SW.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:SW.exports=function(t,r){if(r){t.super_=r;var s=function(){};s.prototype=r.prototype,t.prototype=new s,t.prototype.constructor=t}}});var ug=G((L$t,DW)=>{try{if(bW=Ce("util"),typeof bW.inherits!="function")throw"";DW.exports=bW.inherits}catch{DW.exports=d2e()}var bW});var m2e=G((M$t,g2e)=>{g2e.exports=Ce("util").deprecate});var kW=G((U$t,B2e)=>{"use strict";B2e.exports=Vi;function E2e(e){var t=this;this.next=null,this.entry=null,this.finish=function(){e0t(t,e)}}var Dw;Vi.WritableState=iD;var Pgt={deprecate:m2e()},I2e=IW(),lN=Ce("buffer").Buffer,xgt=global.Uint8Array||function(){};function kgt(e){return lN.from(e)}function Qgt(e){return lN.isBuffer(e)||e instanceof xgt}var xW=BW(),Tgt=vW(),Rgt=Tgt.getHighWaterMark,fg=cg().codes,Fgt=fg.ERR_INVALID_ARG_TYPE,Ngt=fg.ERR_METHOD_NOT_IMPLEMENTED,Ogt=fg.ERR_MULTIPLE_CALLBACK,Lgt=fg.ERR_STREAM_CANNOT_PIPE,Mgt=fg.ERR_STREAM_DESTROYED,Ugt=fg.ERR_STREAM_NULL_VALUES,_gt=fg.ERR_STREAM_WRITE_AFTER_END,Hgt=fg.ERR_UNKNOWN_ENCODING,Pw=xW.errorOrDestroy;ug()(Vi,I2e);function jgt(){}function iD(e,t,r){Dw=Dw||Xm(),e=e||{},typeof r!="boolean"&&(r=t instanceof Dw),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=Rgt(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=e.decodeStrings===!1;this.decodeStrings=!s,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){Jgt(t,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new E2e(this)}iD.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};(function(){try{Object.defineProperty(iD.prototype,"buffer",{get:Pgt.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var aN;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(aN=Function.prototype[Symbol.hasInstance],Object.defineProperty(Vi,Symbol.hasInstance,{value:function(t){return aN.call(this,t)?!0:this!==Vi?!1:t&&t._writableState instanceof iD}})):aN=function(t){return t instanceof this};function Vi(e){Dw=Dw||Xm();var t=this instanceof Dw;if(!t&&!aN.call(Vi,this))return new Vi(e);this._writableState=new iD(e,this,t),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),I2e.call(this)}Vi.prototype.pipe=function(){Pw(this,new Lgt)};function Ggt(e,t){var r=new _gt;Pw(e,r),process.nextTick(t,r)}function qgt(e,t,r,s){var a;return r===null?a=new Ugt:typeof r!="string"&&!t.objectMode&&(a=new Fgt("chunk",["string","Buffer"],r)),a?(Pw(e,a),process.nextTick(s,a),!1):!0}Vi.prototype.write=function(e,t,r){var s=this._writableState,a=!1,n=!s.objectMode&&Qgt(e);return n&&!lN.isBuffer(e)&&(e=kgt(e)),typeof t=="function"&&(r=t,t=null),n?t="buffer":t||(t=s.defaultEncoding),typeof r!="function"&&(r=jgt),s.ending?Ggt(this,r):(n||qgt(this,s,e,r))&&(s.pendingcb++,a=Wgt(this,s,n,e,t,r)),a};Vi.prototype.cork=function(){this._writableState.corked++};Vi.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&C2e(this,e))};Vi.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new Hgt(t);return this._writableState.defaultEncoding=t,this};Object.defineProperty(Vi.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function Ygt(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=lN.from(t,r)),t}Object.defineProperty(Vi.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function Wgt(e,t,r,s,a,n){if(!r){var c=Ygt(t,s,a);s!==c&&(r=!0,a="buffer",s=c)}var f=t.objectMode?1:s.length;t.length+=f;var p=t.length{"use strict";var t0t=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};S2e.exports=EA;var v2e=RW(),TW=kW();ug()(EA,v2e);for(QW=t0t(TW.prototype),cN=0;cN{var fN=Ce("buffer"),lh=fN.Buffer;function b2e(e,t){for(var r in e)t[r]=e[r]}lh.from&&lh.alloc&&lh.allocUnsafe&&lh.allocUnsafeSlow?D2e.exports=fN:(b2e(fN,FW),FW.Buffer=xw);function xw(e,t,r){return lh(e,t,r)}b2e(lh,xw);xw.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return lh(e,t,r)};xw.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var s=lh(e);return t!==void 0?typeof r=="string"?s.fill(t,r):s.fill(t):s.fill(0),s};xw.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return lh(e)};xw.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return fN.SlowBuffer(e)}});var LW=G(k2e=>{"use strict";var OW=P2e().Buffer,x2e=OW.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function i0t(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function s0t(e){var t=i0t(e);if(typeof t!="string"&&(OW.isEncoding===x2e||!x2e(e)))throw new Error("Unknown encoding: "+e);return t||e}k2e.StringDecoder=sD;function sD(e){this.encoding=s0t(e);var t;switch(this.encoding){case"utf16le":this.text=f0t,this.end=A0t,t=4;break;case"utf8":this.fillLast=l0t,t=4;break;case"base64":this.text=p0t,this.end=h0t,t=3;break;default:this.write=d0t,this.end=g0t;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=OW.allocUnsafe(t)}sD.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function o0t(e,t,r){var s=t.length-1;if(s=0?(a>0&&(e.lastNeed=a-1),a):--s=0?(a>0&&(e.lastNeed=a-2),a):--s=0?(a>0&&(a===2?a=0:e.lastNeed=a-3),a):0))}function a0t(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"\uFFFD";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"\uFFFD";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"\uFFFD"}}function l0t(e){var t=this.lastTotal-this.lastNeed,r=a0t(this,e,t);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function c0t(e,t){var r=o0t(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var s=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,s),e.toString("utf8",t,s)}function u0t(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\uFFFD":t}function f0t(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var s=r.charCodeAt(r.length-1);if(s>=55296&&s<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function A0t(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function p0t(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function h0t(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function d0t(e){return e.toString(this.encoding)}function g0t(e){return e&&e.length?this.write(e):""}});var AN=G((j$t,R2e)=>{"use strict";var Q2e=cg().codes.ERR_STREAM_PREMATURE_CLOSE;function m0t(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,s=new Array(r),a=0;a{"use strict";var pN;function Ag(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var I0t=AN(),pg=Symbol("lastResolve"),$m=Symbol("lastReject"),oD=Symbol("error"),hN=Symbol("ended"),ey=Symbol("lastPromise"),MW=Symbol("handlePromise"),ty=Symbol("stream");function hg(e,t){return{value:e,done:t}}function C0t(e){var t=e[pg];if(t!==null){var r=e[ty].read();r!==null&&(e[ey]=null,e[pg]=null,e[$m]=null,t(hg(r,!1)))}}function w0t(e){process.nextTick(C0t,e)}function B0t(e,t){return function(r,s){e.then(function(){if(t[hN]){r(hg(void 0,!0));return}t[MW](r,s)},s)}}var v0t=Object.getPrototypeOf(function(){}),S0t=Object.setPrototypeOf((pN={get stream(){return this[ty]},next:function(){var t=this,r=this[oD];if(r!==null)return Promise.reject(r);if(this[hN])return Promise.resolve(hg(void 0,!0));if(this[ty].destroyed)return new Promise(function(c,f){process.nextTick(function(){t[oD]?f(t[oD]):c(hg(void 0,!0))})});var s=this[ey],a;if(s)a=new Promise(B0t(s,this));else{var n=this[ty].read();if(n!==null)return Promise.resolve(hg(n,!1));a=new Promise(this[MW])}return this[ey]=a,a}},Ag(pN,Symbol.asyncIterator,function(){return this}),Ag(pN,"return",function(){var t=this;return new Promise(function(r,s){t[ty].destroy(null,function(a){if(a){s(a);return}r(hg(void 0,!0))})})}),pN),v0t),b0t=function(t){var r,s=Object.create(S0t,(r={},Ag(r,ty,{value:t,writable:!0}),Ag(r,pg,{value:null,writable:!0}),Ag(r,$m,{value:null,writable:!0}),Ag(r,oD,{value:null,writable:!0}),Ag(r,hN,{value:t._readableState.endEmitted,writable:!0}),Ag(r,MW,{value:function(n,c){var f=s[ty].read();f?(s[ey]=null,s[pg]=null,s[$m]=null,n(hg(f,!1))):(s[pg]=n,s[$m]=c)},writable:!0}),r));return s[ey]=null,I0t(t,function(a){if(a&&a.code!=="ERR_STREAM_PREMATURE_CLOSE"){var n=s[$m];n!==null&&(s[ey]=null,s[pg]=null,s[$m]=null,n(a)),s[oD]=a;return}var c=s[pg];c!==null&&(s[ey]=null,s[pg]=null,s[$m]=null,c(hg(void 0,!0))),s[hN]=!0}),t.on("readable",w0t.bind(null,s)),s};F2e.exports=b0t});var U2e=G((q$t,M2e)=>{"use strict";function O2e(e,t,r,s,a,n,c){try{var f=e[n](c),p=f.value}catch(h){r(h);return}f.done?t(p):Promise.resolve(p).then(s,a)}function D0t(e){return function(){var t=this,r=arguments;return new Promise(function(s,a){var n=e.apply(t,r);function c(p){O2e(n,s,a,c,f,"next",p)}function f(p){O2e(n,s,a,c,f,"throw",p)}c(void 0)})}}function L2e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,s)}return r}function P0t(e){for(var t=1;t{"use strict";J2e.exports=Qn;var kw;Qn.ReadableState=G2e;var Y$t=Ce("events").EventEmitter,j2e=function(t,r){return t.listeners(r).length},lD=IW(),dN=Ce("buffer").Buffer,T0t=global.Uint8Array||function(){};function R0t(e){return dN.from(e)}function F0t(e){return dN.isBuffer(e)||e instanceof T0t}var UW=Ce("util"),un;UW&&UW.debuglog?un=UW.debuglog("stream"):un=function(){};var N0t=l2e(),WW=BW(),O0t=vW(),L0t=O0t.getHighWaterMark,gN=cg().codes,M0t=gN.ERR_INVALID_ARG_TYPE,U0t=gN.ERR_STREAM_PUSH_AFTER_EOF,_0t=gN.ERR_METHOD_NOT_IMPLEMENTED,H0t=gN.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Qw,_W,HW;ug()(Qn,lD);var aD=WW.errorOrDestroy,jW=["error","close","destroy","pause","resume"];function j0t(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function G2e(e,t,r){kw=kw||Xm(),e=e||{},typeof r!="boolean"&&(r=t instanceof kw),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=L0t(this,e,"readableHighWaterMark",r),this.buffer=new N0t,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(Qw||(Qw=LW().StringDecoder),this.decoder=new Qw(e.encoding),this.encoding=e.encoding)}function Qn(e){if(kw=kw||Xm(),!(this instanceof Qn))return new Qn(e);var t=this instanceof kw;this._readableState=new G2e(e,this,t),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),lD.call(this)}Object.defineProperty(Qn.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}});Qn.prototype.destroy=WW.destroy;Qn.prototype._undestroy=WW.undestroy;Qn.prototype._destroy=function(e,t){t(e)};Qn.prototype.push=function(e,t){var r=this._readableState,s;return r.objectMode?s=!0:typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=dN.from(e,t),t=""),s=!0),q2e(this,e,t,!1,s)};Qn.prototype.unshift=function(e){return q2e(this,e,null,!0,!1)};function q2e(e,t,r,s,a){un("readableAddChunk",t);var n=e._readableState;if(t===null)n.reading=!1,Y0t(e,n);else{var c;if(a||(c=G0t(n,t)),c)aD(e,c);else if(n.objectMode||t&&t.length>0)if(typeof t!="string"&&!n.objectMode&&Object.getPrototypeOf(t)!==dN.prototype&&(t=R0t(t)),s)n.endEmitted?aD(e,new H0t):GW(e,n,t,!0);else if(n.ended)aD(e,new U0t);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(t=n.decoder.write(t),n.objectMode||t.length!==0?GW(e,n,t,!1):YW(e,n)):GW(e,n,t,!1)}else s||(n.reading=!1,YW(e,n))}return!n.ended&&(n.length=_2e?e=_2e:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function H2e(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=q0t(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}Qn.prototype.read=function(e){un("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended))return un("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?qW(this):mN(this),null;if(e=H2e(e,t),e===0&&t.ended)return t.length===0&&qW(this),null;var s=t.needReadable;un("need readable",s),(t.length===0||t.length-e0?a=V2e(e,t):a=null,a===null?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&qW(this)),a!==null&&this.emit("data",a),a};function Y0t(e,t){if(un("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?mN(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,Y2e(e)))}}function mN(e){var t=e._readableState;un("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(un("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(Y2e,e))}function Y2e(e){var t=e._readableState;un("emitReadable_",t.destroyed,t.length,t.ended),!t.destroyed&&(t.length||t.ended)&&(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,VW(e)}function YW(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(W0t,e,t))}function W0t(e,t){for(;!t.reading&&!t.ended&&(t.length1&&K2e(s.pipes,e)!==-1)&&!h&&(un("false write response, pause",s.awaitDrain),s.awaitDrain++),r.pause())}function S(N){un("onerror",N),R(),e.removeListener("error",S),j2e(e,"error")===0&&aD(e,N)}j0t(e,"error",S);function x(){e.removeListener("finish",I),R()}e.once("close",x);function I(){un("onfinish"),e.removeListener("close",x),R()}e.once("finish",I);function R(){un("unpipe"),r.unpipe(e)}return e.emit("pipe",r),s.flowing||(un("pipe resume"),r.resume()),e};function V0t(e){return function(){var r=e._readableState;un("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&j2e(e,"data")&&(r.flowing=!0,VW(e))}}Qn.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var s=t.pipes,a=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var n=0;n0,s.flowing!==!1&&this.resume()):e==="readable"&&!s.endEmitted&&!s.readableListening&&(s.readableListening=s.needReadable=!0,s.flowing=!1,s.emittedReadable=!1,un("on readable",s.length,s.reading),s.length?mN(this):s.reading||process.nextTick(K0t,this)),r};Qn.prototype.addListener=Qn.prototype.on;Qn.prototype.removeListener=function(e,t){var r=lD.prototype.removeListener.call(this,e,t);return e==="readable"&&process.nextTick(W2e,this),r};Qn.prototype.removeAllListeners=function(e){var t=lD.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&process.nextTick(W2e,this),t};function W2e(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function K0t(e){un("readable nexttick read 0"),e.read(0)}Qn.prototype.resume=function(){var e=this._readableState;return e.flowing||(un("resume"),e.flowing=!e.readableListening,J0t(this,e)),e.paused=!1,this};function J0t(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(z0t,e,t))}function z0t(e,t){un("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),VW(e),t.flowing&&!t.reading&&e.read(0)}Qn.prototype.pause=function(){return un("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(un("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function VW(e){var t=e._readableState;for(un("flow",t.flowing);t.flowing&&e.read()!==null;);}Qn.prototype.wrap=function(e){var t=this,r=this._readableState,s=!1;e.on("end",function(){if(un("wrapped end"),r.decoder&&!r.ended){var c=r.decoder.end();c&&c.length&&t.push(c)}t.push(null)}),e.on("data",function(c){if(un("wrapped data"),r.decoder&&(c=r.decoder.write(c)),!(r.objectMode&&c==null)&&!(!r.objectMode&&(!c||!c.length))){var f=t.push(c);f||(s=!0,e.pause())}});for(var a in e)this[a]===void 0&&typeof e[a]=="function"&&(this[a]=function(f){return function(){return e[f].apply(e,arguments)}}(a));for(var n=0;n=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.first():r=t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function qW(e){var t=e._readableState;un("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(Z0t,t,e))}function Z0t(e,t){if(un("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}typeof Symbol=="function"&&(Qn.from=function(e,t){return HW===void 0&&(HW=U2e()),HW(Qn,e,t)});function K2e(e,t){for(var r=0,s=e.length;r{"use strict";Z2e.exports=ch;var yN=cg().codes,X0t=yN.ERR_METHOD_NOT_IMPLEMENTED,$0t=yN.ERR_MULTIPLE_CALLBACK,emt=yN.ERR_TRANSFORM_ALREADY_TRANSFORMING,tmt=yN.ERR_TRANSFORM_WITH_LENGTH_0,EN=Xm();ug()(ch,EN);function rmt(e,t){var r=this._transformState;r.transforming=!1;var s=r.writecb;if(s===null)return this.emit("error",new $0t);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),s(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length{"use strict";$2e.exports=cD;var X2e=KW();ug()(cD,X2e);function cD(e){if(!(this instanceof cD))return new cD(e);X2e.call(this,e)}cD.prototype._transform=function(e,t,r){r(null,e)}});var sBe=G((J$t,iBe)=>{"use strict";var JW;function imt(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var nBe=cg().codes,smt=nBe.ERR_MISSING_ARGS,omt=nBe.ERR_STREAM_DESTROYED;function tBe(e){if(e)throw e}function amt(e){return e.setHeader&&typeof e.abort=="function"}function lmt(e,t,r,s){s=imt(s);var a=!1;e.on("close",function(){a=!0}),JW===void 0&&(JW=AN()),JW(e,{readable:t,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,amt(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();s(c||new omt("pipe"))}}}function rBe(e){e()}function cmt(e,t){return e.pipe(t)}function umt(e){return!e.length||typeof e[e.length-1]!="function"?tBe:e.pop()}function fmt(){for(var e=arguments.length,t=new Array(e),r=0;r0;return lmt(c,p,h,function(E){a||(a=E),E&&n.forEach(rBe),!p&&(n.forEach(rBe),s(a))})});return t.reduce(cmt)}iBe.exports=fmt});var Tw=G((zc,fD)=>{var uD=Ce("stream");process.env.READABLE_STREAM==="disable"&&uD?(fD.exports=uD.Readable,Object.assign(fD.exports,uD),fD.exports.Stream=uD):(zc=fD.exports=RW(),zc.Stream=uD||zc,zc.Readable=zc,zc.Writable=kW(),zc.Duplex=Xm(),zc.Transform=KW(),zc.PassThrough=eBe(),zc.finished=AN(),zc.pipeline=sBe())});var lBe=G((z$t,aBe)=>{"use strict";var{Buffer:Af}=Ce("buffer"),oBe=Symbol.for("BufferList");function Bi(e){if(!(this instanceof Bi))return new Bi(e);Bi._init.call(this,e)}Bi._init=function(t){Object.defineProperty(this,oBe,{value:!0}),this._bufs=[],this.length=0,t&&this.append(t)};Bi.prototype._new=function(t){return new Bi(t)};Bi.prototype._offset=function(t){if(t===0)return[0,0];let r=0;for(let s=0;sthis.length||t<0)return;let r=this._offset(t);return this._bufs[r[0]][r[1]]};Bi.prototype.slice=function(t,r){return typeof t=="number"&&t<0&&(t+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,t,r)};Bi.prototype.copy=function(t,r,s,a){if((typeof s!="number"||s<0)&&(s=0),(typeof a!="number"||a>this.length)&&(a=this.length),s>=this.length||a<=0)return t||Af.alloc(0);let n=!!t,c=this._offset(s),f=a-s,p=f,h=n&&r||0,E=c[1];if(s===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:Af.concat(this._bufs,this.length);for(let C=0;CS)this._bufs[C].copy(t,h,E),h+=S;else{this._bufs[C].copy(t,h,E,E+p),h+=S;break}p-=S,E&&(E=0)}return t.length>h?t.slice(0,h):t};Bi.prototype.shallowSlice=function(t,r){if(t=t||0,r=typeof r!="number"?this.length:r,t<0&&(t+=this.length),r<0&&(r+=this.length),t===r)return this._new();let s=this._offset(t),a=this._offset(r),n=this._bufs.slice(s[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),s[1]!==0&&(n[0]=n[0].slice(s[1])),this._new(n)};Bi.prototype.toString=function(t,r,s){return this.slice(r,s).toString(t)};Bi.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};Bi.prototype.duplicate=function(){let t=this._new();for(let r=0;rthis.length?this.length:t;let s=this._offset(t),a=s[0],n=s[1];for(;a=e.length){let p=c.indexOf(e,n);if(p!==-1)return this._reverseOffset([a,p]);n=c.length-e.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,e))return p;n++}n=0}return-1};Bi.prototype._match=function(e,t){if(this.length-e{"use strict";var zW=Tw().Duplex,Amt=ug(),AD=lBe();function la(e){if(!(this instanceof la))return new la(e);if(typeof e=="function"){this._callback=e;let t=function(s){this._callback&&(this._callback(s),this._callback=null)}.bind(this);this.on("pipe",function(s){s.on("error",t)}),this.on("unpipe",function(s){s.removeListener("error",t)}),e=null}AD._init.call(this,e),zW.call(this)}Amt(la,zW);Object.assign(la.prototype,AD.prototype);la.prototype._new=function(t){return new la(t)};la.prototype._write=function(t,r,s){this._appendBuffer(t),typeof s=="function"&&s()};la.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};la.prototype.end=function(t){zW.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};la.prototype._destroy=function(t,r){this._bufs.length=0,this.length=0,r(t)};la.prototype._isBufferList=function(t){return t instanceof la||t instanceof AD||la.isBufferList(t)};la.isBufferList=AD.isBufferList;IN.exports=la;IN.exports.BufferListStream=la;IN.exports.BufferList=AD});var $W=G(Fw=>{var pmt=Buffer.alloc,hmt="0000000000000000000",dmt="7777777777777777777",uBe=48,fBe=Buffer.from("ustar\0","binary"),gmt=Buffer.from("00","binary"),mmt=Buffer.from("ustar ","binary"),ymt=Buffer.from(" \0","binary"),Emt=parseInt("7777",8),pD=257,XW=263,Imt=function(e,t,r){return typeof e!="number"?r:(e=~~e,e>=t?t:e>=0||(e+=t,e>=0)?e:0)},Cmt=function(e){switch(e){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},wmt=function(e){switch(e){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},ABe=function(e,t,r,s){for(;rt?dmt.slice(0,t)+" ":hmt.slice(0,t-e.length)+e+" "};function Bmt(e){var t;if(e[0]===128)t=!0;else if(e[0]===255)t=!1;else return null;for(var r=[],s=e.length-1;s>0;s--){var a=e[s];t?r.push(a):r.push(255-a)}var n=0,c=r.length;for(s=0;s=Math.pow(10,r)&&r++,t+r+e};Fw.decodeLongPath=function(e,t){return Rw(e,0,e.length,t)};Fw.encodePax=function(e){var t="";e.name&&(t+=ZW(" path="+e.name+` +`)),e.linkname&&(t+=ZW(" linkpath="+e.linkname+` +`));var r=e.pax;if(r)for(var s in r)t+=ZW(" "+s+"="+r[s]+` +`);return Buffer.from(t)};Fw.decodePax=function(e){for(var t={};e.length;){for(var r=0;r100;){var a=r.indexOf("/");if(a===-1)return null;s+=s?"/"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(s)>155||e.linkname&&Buffer.byteLength(e.linkname)>100?null:(t.write(r),t.write(dg(e.mode&Emt,6),100),t.write(dg(e.uid,6),108),t.write(dg(e.gid,6),116),t.write(dg(e.size,11),124),t.write(dg(e.mtime.getTime()/1e3|0,11),136),t[156]=uBe+wmt(e.type),e.linkname&&t.write(e.linkname,157),fBe.copy(t,pD),gmt.copy(t,XW),e.uname&&t.write(e.uname,265),e.gname&&t.write(e.gname,297),t.write(dg(e.devmajor||0,6),329),t.write(dg(e.devminor||0,6),337),s&&t.write(s,345),t.write(dg(pBe(t),6),148),t)};Fw.decode=function(e,t,r){var s=e[156]===0?0:e[156]-uBe,a=Rw(e,0,100,t),n=gg(e,100,8),c=gg(e,108,8),f=gg(e,116,8),p=gg(e,124,12),h=gg(e,136,12),E=Cmt(s),C=e[157]===0?null:Rw(e,157,100,t),S=Rw(e,265,32),x=Rw(e,297,32),I=gg(e,329,8),R=gg(e,337,8),N=pBe(e);if(N===8*32)return null;if(N!==gg(e,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(fBe.compare(e,pD,pD+6)===0)e[345]&&(a=Rw(e,345,155,t)+"/"+a);else if(!(mmt.compare(e,pD,pD+6)===0&&ymt.compare(e,XW,XW+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return s===0&&a&&a[a.length-1]==="/"&&(s=5),{name:a,mode:n,uid:c,gid:f,size:p,mtime:new Date(1e3*h),type:E,linkname:C,uname:S,gname:x,devmajor:I,devminor:R}}});var IBe=G(($$t,EBe)=>{var dBe=Ce("util"),vmt=cBe(),hD=$W(),gBe=Tw().Writable,mBe=Tw().PassThrough,yBe=function(){},hBe=function(e){return e&=511,e&&512-e},Smt=function(e,t){var r=new CN(e,t);return r.end(),r},bmt=function(e,t){return t.path&&(e.name=t.path),t.linkpath&&(e.linkname=t.linkpath),t.size&&(e.size=parseInt(t.size,10)),e.pax=t,e},CN=function(e,t){this._parent=e,this.offset=t,mBe.call(this,{autoDestroy:!1})};dBe.inherits(CN,mBe);CN.prototype.destroy=function(e){this._parent.destroy(e)};var uh=function(e){if(!(this instanceof uh))return new uh(e);gBe.call(this,e),e=e||{},this._offset=0,this._buffer=vmt(),this._missing=0,this._partial=!1,this._onparse=yBe,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var t=this,r=t._buffer,s=function(){t._continue()},a=function(S){if(t._locked=!1,S)return t.destroy(S);t._stream||s()},n=function(){t._stream=null;var S=hBe(t._header.size);S?t._parse(S,c):t._parse(512,C),t._locked||s()},c=function(){t._buffer.consume(hBe(t._header.size)),t._parse(512,C),s()},f=function(){var S=t._header.size;t._paxGlobal=hD.decodePax(r.slice(0,S)),r.consume(S),n()},p=function(){var S=t._header.size;t._pax=hD.decodePax(r.slice(0,S)),t._paxGlobal&&(t._pax=Object.assign({},t._paxGlobal,t._pax)),r.consume(S),n()},h=function(){var S=t._header.size;this._gnuLongPath=hD.decodeLongPath(r.slice(0,S),e.filenameEncoding),r.consume(S),n()},E=function(){var S=t._header.size;this._gnuLongLinkPath=hD.decodeLongPath(r.slice(0,S),e.filenameEncoding),r.consume(S),n()},C=function(){var S=t._offset,x;try{x=t._header=hD.decode(r.slice(0,512),e.filenameEncoding,e.allowUnknownFormat)}catch(I){t.emit("error",I)}if(r.consume(512),!x){t._parse(512,C),s();return}if(x.type==="gnu-long-path"){t._parse(x.size,h),s();return}if(x.type==="gnu-long-link-path"){t._parse(x.size,E),s();return}if(x.type==="pax-global-header"){t._parse(x.size,f),s();return}if(x.type==="pax-header"){t._parse(x.size,p),s();return}if(t._gnuLongPath&&(x.name=t._gnuLongPath,t._gnuLongPath=null),t._gnuLongLinkPath&&(x.linkname=t._gnuLongLinkPath,t._gnuLongLinkPath=null),t._pax&&(t._header=x=bmt(x,t._pax),t._pax=null),t._locked=!0,!x.size||x.type==="directory"){t._parse(512,C),t.emit("entry",x,Smt(t,S),a);return}t._stream=new CN(t,S),t.emit("entry",x,t._stream,a),t._parse(x.size,n),s()};this._onheader=C,this._parse(512,C)};dBe.inherits(uh,gBe);uh.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.emit("close"))};uh.prototype._parse=function(e,t){this._destroyed||(this._offset+=e,this._missing=e,t===this._onheader&&(this._partial=!1),this._onparse=t)};uh.prototype._continue=function(){if(!this._destroyed){var e=this._cb;this._cb=yBe,this._overflow?this._write(this._overflow,void 0,e):e()}};uh.prototype._write=function(e,t,r){if(!this._destroyed){var s=this._stream,a=this._buffer,n=this._missing;if(e.length&&(this._partial=!0),e.lengthn&&(c=e.slice(n),e=e.slice(0,n)),s?s.end(e):a.append(e),this._overflow=c,this._onparse()}};uh.prototype._final=function(e){if(this._partial)return this.destroy(new Error("Unexpected end of data"));e()};EBe.exports=uh});var wBe=G((eer,CBe)=>{CBe.exports=Ce("fs").constants||Ce("constants")});var DBe=G((ter,bBe)=>{var Nw=wBe(),BBe=iH(),BN=ug(),Dmt=Buffer.alloc,vBe=Tw().Readable,Ow=Tw().Writable,Pmt=Ce("string_decoder").StringDecoder,wN=$W(),xmt=parseInt("755",8),kmt=parseInt("644",8),SBe=Dmt(1024),tV=function(){},eV=function(e,t){t&=511,t&&e.push(SBe.slice(0,512-t))};function Qmt(e){switch(e&Nw.S_IFMT){case Nw.S_IFBLK:return"block-device";case Nw.S_IFCHR:return"character-device";case Nw.S_IFDIR:return"directory";case Nw.S_IFIFO:return"fifo";case Nw.S_IFLNK:return"symlink"}return"file"}var vN=function(e){Ow.call(this),this.written=0,this._to=e,this._destroyed=!1};BN(vN,Ow);vN.prototype._write=function(e,t,r){if(this.written+=e.length,this._to.push(e))return r();this._to._drain=r};vN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var SN=function(){Ow.call(this),this.linkname="",this._decoder=new Pmt("utf-8"),this._destroyed=!1};BN(SN,Ow);SN.prototype._write=function(e,t,r){this.linkname+=this._decoder.write(e),r()};SN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var dD=function(){Ow.call(this),this._destroyed=!1};BN(dD,Ow);dD.prototype._write=function(e,t,r){r(new Error("No body allowed for this entry"))};dD.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var IA=function(e){if(!(this instanceof IA))return new IA(e);vBe.call(this,e),this._drain=tV,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};BN(IA,vBe);IA.prototype.entry=function(e,t,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof t=="function"&&(r=t,t=null),r||(r=tV);var s=this;if((!e.size||e.type==="symlink")&&(e.size=0),e.type||(e.type=Qmt(e.mode)),e.mode||(e.mode=e.type==="directory"?xmt:kmt),e.uid||(e.uid=0),e.gid||(e.gid=0),e.mtime||(e.mtime=new Date),typeof t=="string"&&(t=Buffer.from(t)),Buffer.isBuffer(t)){e.size=t.length,this._encode(e);var a=this.push(t);return eV(s,e.size),a?process.nextTick(r):this._drain=r,new dD}if(e.type==="symlink"&&!e.linkname){var n=new SN;return BBe(n,function(f){if(f)return s.destroy(),r(f);e.linkname=n.linkname,s._encode(e),r()}),n}if(this._encode(e),e.type!=="file"&&e.type!=="contiguous-file")return process.nextTick(r),new dD;var c=new vN(this);return this._stream=c,BBe(c,function(f){if(s._stream=null,f)return s.destroy(),r(f);if(c.written!==e.size)return s.destroy(),r(new Error("size mismatch"));eV(s,e.size),s._finalizing&&s.finalize(),r()}),c}};IA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(SBe),this.push(null))};IA.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};IA.prototype._encode=function(e){if(!e.pax){var t=wN.encode(e);if(t){this.push(t);return}}this._encodePax(e)};IA.prototype._encodePax=function(e){var t=wN.encodePax({name:e.name,linkname:e.linkname,pax:e.pax}),r={name:"PaxHeader",mode:e.mode,uid:e.uid,gid:e.gid,size:t.length,mtime:e.mtime,type:"pax-header",linkname:e.linkname&&"PaxHeader",uname:e.uname,gname:e.gname,devmajor:e.devmajor,devminor:e.devminor};this.push(wN.encode(r)),this.push(t),eV(this,t.length),r.size=e.size,r.type=e.type,this.push(wN.encode(r))};IA.prototype._read=function(e){var t=this._drain;this._drain=tV,t()};bBe.exports=IA});var PBe=G(rV=>{rV.extract=IBe();rV.pack=DBe()});var HBe=G(Ha=>{"use strict";var qmt=Ha&&Ha.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ha,"__esModule",{value:!0});Ha.Minipass=Ha.isWritable=Ha.isReadable=Ha.isStream=void 0;var OBe=typeof process=="object"&&process?process:{stdout:null,stderr:null},hV=Ce("node:events"),_Be=qmt(Ce("node:stream")),Ymt=Ce("node:string_decoder"),Wmt=e=>!!e&&typeof e=="object"&&(e instanceof FN||e instanceof _Be.default||(0,Ha.isReadable)(e)||(0,Ha.isWritable)(e));Ha.isStream=Wmt;var Vmt=e=>!!e&&typeof e=="object"&&e instanceof hV.EventEmitter&&typeof e.pipe=="function"&&e.pipe!==_Be.default.Writable.prototype.pipe;Ha.isReadable=Vmt;var Kmt=e=>!!e&&typeof e=="object"&&e instanceof hV.EventEmitter&&typeof e.write=="function"&&typeof e.end=="function";Ha.isWritable=Kmt;var fh=Symbol("EOF"),Ah=Symbol("maybeEmitEnd"),mg=Symbol("emittedEnd"),PN=Symbol("emittingEnd"),gD=Symbol("emittedError"),xN=Symbol("closed"),LBe=Symbol("read"),kN=Symbol("flush"),MBe=Symbol("flushChunk"),pf=Symbol("encoding"),Mw=Symbol("decoder"),no=Symbol("flowing"),mD=Symbol("paused"),Uw=Symbol("resume"),io=Symbol("buffer"),Ua=Symbol("pipes"),so=Symbol("bufferLength"),lV=Symbol("bufferPush"),QN=Symbol("bufferShift"),ca=Symbol("objectMode"),ns=Symbol("destroyed"),cV=Symbol("error"),uV=Symbol("emitData"),UBe=Symbol("emitEnd"),fV=Symbol("emitEnd2"),wA=Symbol("async"),AV=Symbol("abort"),TN=Symbol("aborted"),yD=Symbol("signal"),ry=Symbol("dataListeners"),sc=Symbol("discarded"),ED=e=>Promise.resolve().then(e),Jmt=e=>e(),zmt=e=>e==="end"||e==="finish"||e==="prefinish",Zmt=e=>e instanceof ArrayBuffer||!!e&&typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,Xmt=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e),RN=class{src;dest;opts;ondrain;constructor(t,r,s){this.src=t,this.dest=r,this.opts=s,this.ondrain=()=>t[Uw](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},pV=class extends RN{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,r,s){super(t,r,s),this.proxyErrors=a=>r.emit("error",a),t.on("error",this.proxyErrors)}},$mt=e=>!!e.objectMode,eyt=e=>!e.objectMode&&!!e.encoding&&e.encoding!=="buffer",FN=class extends hV.EventEmitter{[no]=!1;[mD]=!1;[Ua]=[];[io]=[];[ca];[pf];[wA];[Mw];[fh]=!1;[mg]=!1;[PN]=!1;[xN]=!1;[gD]=null;[so]=0;[ns]=!1;[yD];[TN]=!1;[ry]=0;[sc]=!1;writable=!0;readable=!0;constructor(...t){let r=t[0]||{};if(super(),r.objectMode&&typeof r.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");$mt(r)?(this[ca]=!0,this[pf]=null):eyt(r)?(this[pf]=r.encoding,this[ca]=!1):(this[ca]=!1,this[pf]=null),this[wA]=!!r.async,this[Mw]=this[pf]?new Ymt.StringDecoder(this[pf]):null,r&&r.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[io]}),r&&r.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[Ua]});let{signal:s}=r;s&&(this[yD]=s,s.aborted?this[AV]():s.addEventListener("abort",()=>this[AV]()))}get bufferLength(){return this[so]}get encoding(){return this[pf]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[ca]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[wA]}set async(t){this[wA]=this[wA]||!!t}[AV](){this[TN]=!0,this.emit("abort",this[yD]?.reason),this.destroy(this[yD]?.reason)}get aborted(){return this[TN]}set aborted(t){}write(t,r,s){if(this[TN])return!1;if(this[fh])throw new Error("write after end");if(this[ns])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let a=this[wA]?ED:Jmt;if(!this[ca]&&!Buffer.isBuffer(t)){if(Xmt(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Zmt(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[ca]?(this[no]&&this[so]!==0&&this[kN](!0),this[no]?this.emit("data",t):this[lV](t),this[so]!==0&&this.emit("readable"),s&&a(s),this[no]):t.length?(typeof t=="string"&&!(r===this[pf]&&!this[Mw]?.lastNeed)&&(t=Buffer.from(t,r)),Buffer.isBuffer(t)&&this[pf]&&(t=this[Mw].write(t)),this[no]&&this[so]!==0&&this[kN](!0),this[no]?this.emit("data",t):this[lV](t),this[so]!==0&&this.emit("readable"),s&&a(s),this[no]):(this[so]!==0&&this.emit("readable"),s&&a(s),this[no])}read(t){if(this[ns])return null;if(this[sc]=!1,this[so]===0||t===0||t&&t>this[so])return this[Ah](),null;this[ca]&&(t=null),this[io].length>1&&!this[ca]&&(this[io]=[this[pf]?this[io].join(""):Buffer.concat(this[io],this[so])]);let r=this[LBe](t||null,this[io][0]);return this[Ah](),r}[LBe](t,r){if(this[ca])this[QN]();else{let s=r;t===s.length||t===null?this[QN]():typeof s=="string"?(this[io][0]=s.slice(t),r=s.slice(0,t),this[so]-=t):(this[io][0]=s.subarray(t),r=s.subarray(0,t),this[so]-=t)}return this.emit("data",r),!this[io].length&&!this[fh]&&this.emit("drain"),r}end(t,r,s){return typeof t=="function"&&(s=t,t=void 0),typeof r=="function"&&(s=r,r="utf8"),t!==void 0&&this.write(t,r),s&&this.once("end",s),this[fh]=!0,this.writable=!1,(this[no]||!this[mD])&&this[Ah](),this}[Uw](){this[ns]||(!this[ry]&&!this[Ua].length&&(this[sc]=!0),this[mD]=!1,this[no]=!0,this.emit("resume"),this[io].length?this[kN]():this[fh]?this[Ah]():this.emit("drain"))}resume(){return this[Uw]()}pause(){this[no]=!1,this[mD]=!0,this[sc]=!1}get destroyed(){return this[ns]}get flowing(){return this[no]}get paused(){return this[mD]}[lV](t){this[ca]?this[so]+=1:this[so]+=t.length,this[io].push(t)}[QN](){return this[ca]?this[so]-=1:this[so]-=this[io][0].length,this[io].shift()}[kN](t=!1){do;while(this[MBe](this[QN]())&&this[io].length);!t&&!this[io].length&&!this[fh]&&this.emit("drain")}[MBe](t){return this.emit("data",t),this[no]}pipe(t,r){if(this[ns])return t;this[sc]=!1;let s=this[mg];return r=r||{},t===OBe.stdout||t===OBe.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&t.end():(this[Ua].push(r.proxyErrors?new pV(this,t,r):new RN(this,t,r)),this[wA]?ED(()=>this[Uw]()):this[Uw]()),t}unpipe(t){let r=this[Ua].find(s=>s.dest===t);r&&(this[Ua].length===1?(this[no]&&this[ry]===0&&(this[no]=!1),this[Ua]=[]):this[Ua].splice(this[Ua].indexOf(r),1),r.unpipe())}addListener(t,r){return this.on(t,r)}on(t,r){let s=super.on(t,r);if(t==="data")this[sc]=!1,this[ry]++,!this[Ua].length&&!this[no]&&this[Uw]();else if(t==="readable"&&this[so]!==0)super.emit("readable");else if(zmt(t)&&this[mg])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[gD]){let a=r;this[wA]?ED(()=>a.call(this,this[gD])):a.call(this,this[gD])}return s}removeListener(t,r){return this.off(t,r)}off(t,r){let s=super.off(t,r);return t==="data"&&(this[ry]=this.listeners("data").length,this[ry]===0&&!this[sc]&&!this[Ua].length&&(this[no]=!1)),s}removeAllListeners(t){let r=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[ry]=0,!this[sc]&&!this[Ua].length&&(this[no]=!1)),r}get emittedEnd(){return this[mg]}[Ah](){!this[PN]&&!this[mg]&&!this[ns]&&this[io].length===0&&this[fh]&&(this[PN]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[xN]&&this.emit("close"),this[PN]=!1)}emit(t,...r){let s=r[0];if(t!=="error"&&t!=="close"&&t!==ns&&this[ns])return!1;if(t==="data")return!this[ca]&&!s?!1:this[wA]?(ED(()=>this[uV](s)),!0):this[uV](s);if(t==="end")return this[UBe]();if(t==="close"){if(this[xN]=!0,!this[mg]&&!this[ns])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[gD]=s,super.emit(cV,s);let n=!this[yD]||this.listeners("error").length?super.emit("error",s):!1;return this[Ah](),n}else if(t==="resume"){let n=super.emit("resume");return this[Ah](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let a=super.emit(t,...r);return this[Ah](),a}[uV](t){for(let s of this[Ua])s.dest.write(t)===!1&&this.pause();let r=this[sc]?!1:super.emit("data",t);return this[Ah](),r}[UBe](){return this[mg]?!1:(this[mg]=!0,this.readable=!1,this[wA]?(ED(()=>this[fV]()),!0):this[fV]())}[fV](){if(this[Mw]){let r=this[Mw].end();if(r){for(let s of this[Ua])s.dest.write(r);this[sc]||super.emit("data",r)}}for(let r of this[Ua])r.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[ca]||(t.dataLength=0);let r=this.promise();return this.on("data",s=>{t.push(s),this[ca]||(t.dataLength+=s.length)}),await r,t}async concat(){if(this[ca])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[pf]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,r)=>{this.on(ns,()=>r(new Error("stream destroyed"))),this.on("error",s=>r(s)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[sc]=!1;let t=!1,r=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return r();let a=this.read();if(a!==null)return Promise.resolve({done:!1,value:a});if(this[fh])return r();let n,c,f=C=>{this.off("data",p),this.off("end",h),this.off(ns,E),r(),c(C)},p=C=>{this.off("error",f),this.off("end",h),this.off(ns,E),this.pause(),n({value:C,done:!!this[fh]})},h=()=>{this.off("error",f),this.off("data",p),this.off(ns,E),r(),n({done:!0,value:void 0})},E=()=>f(new Error("stream destroyed"));return new Promise((C,S)=>{c=S,n=C,this.once(ns,E),this.once("error",f),this.once("end",h),this.once("data",p)})},throw:r,return:r,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[sc]=!1;let t=!1,r=()=>(this.pause(),this.off(cV,r),this.off(ns,r),this.off("end",r),t=!0,{done:!0,value:void 0}),s=()=>{if(t)return r();let a=this.read();return a===null?r():{done:!1,value:a}};return this.once("end",r),this.once(cV,r),this.once(ns,r),{next:s,throw:r,return:r,[Symbol.iterator](){return this}}}destroy(t){if(this[ns])return t?this.emit("error",t):this.emit(ns),this;this[ns]=!0,this[sc]=!0,this[io].length=0,this[so]=0;let r=this;return typeof r.close=="function"&&!this[xN]&&r.close(),t?this.emit("error",t):this.emit(ns),this}static get isStream(){return Ha.isStream}};Ha.Minipass=FN});var qBe=G((wer,BA)=>{"use strict";var CD=Ce("crypto"),{Minipass:tyt}=HBe(),gV=["sha512","sha384","sha256"],yV=["sha512"],ryt=/^[a-z0-9+/]+(?:=?=?)$/i,nyt=/^([a-z0-9]+)-([^?]+)([?\S*]*)$/,iyt=/^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)?$/,syt=/^[\x21-\x7E]+$/,wD=e=>e?.length?`?${e.join("?")}`:"",mV=class extends tyt{#e;#t;#s;constructor(t){super(),this.size=0,this.opts=t,this.#r(),t?.algorithms?this.algorithms=[...t.algorithms]:this.algorithms=[...yV],this.algorithm!==null&&!this.algorithms.includes(this.algorithm)&&this.algorithms.push(this.algorithm),this.hashes=this.algorithms.map(CD.createHash)}#r(){this.sri=this.opts?.integrity?oc(this.opts?.integrity,this.opts):null,this.expectedSize=this.opts?.size,this.sri?this.sri.isHash?(this.goodSri=!0,this.algorithm=this.sri.algorithm):(this.goodSri=!this.sri.isEmpty(),this.algorithm=this.sri.pickAlgorithm(this.opts)):this.algorithm=null,this.digests=this.goodSri?this.sri[this.algorithm]:null,this.optString=wD(this.opts?.options)}on(t,r){return t==="size"&&this.#t?r(this.#t):t==="integrity"&&this.#e?r(this.#e):t==="verified"&&this.#s?r(this.#s):super.on(t,r)}emit(t,r){return t==="end"&&this.#i(),super.emit(t,r)}write(t){return this.size+=t.length,this.hashes.forEach(r=>r.update(t)),super.write(t)}#i(){this.goodSri||this.#r();let t=oc(this.hashes.map((s,a)=>`${this.algorithms[a]}-${s.digest("base64")}${this.optString}`).join(" "),this.opts),r=this.goodSri&&t.match(this.sri,this.opts);if(typeof this.expectedSize=="number"&&this.size!==this.expectedSize){let s=new Error(`stream size mismatch when checking ${this.sri}. + Wanted: ${this.expectedSize} + Found: ${this.size}`);s.code="EBADSIZE",s.found=this.size,s.expected=this.expectedSize,s.sri=this.sri,this.emit("error",s)}else if(this.sri&&!r){let s=new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${t}. (${this.size} bytes)`);s.code="EINTEGRITY",s.found=t,s.expected=this.digests,s.algorithm=this.algorithm,s.sri=this.sri,this.emit("error",s)}else this.#t=this.size,this.emit("size",this.size),this.#e=t,this.emit("integrity",t),r&&(this.#s=r,this.emit("verified",r))}},ph=class{get isHash(){return!0}constructor(t,r){let s=r?.strict;this.source=t.trim(),this.digest="",this.algorithm="",this.options=[];let a=this.source.match(s?iyt:nyt);if(!a||s&&!gV.includes(a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];n&&(this.options=n.slice(1).split("?"))}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}match(t,r){let s=oc(t,r);if(!s)return!1;if(s.isIntegrity){let a=s.pickAlgorithm(r,[this.algorithm]);if(!a)return!1;let n=s[a].find(c=>c.digest===this.digest);return n||!1}return s.digest===this.digest?s:!1}toString(t){return t?.strict&&!(gV.includes(this.algorithm)&&this.digest.match(ryt)&&this.options.every(r=>r.match(syt)))?"":`${this.algorithm}-${this.digest}${wD(this.options)}`}};function jBe(e,t,r,s){let a=e!=="",n=!1,c="",f=s.length-1;for(let h=0;hs[a].find(c=>n.digest===c.digest)))throw new Error("hashes do not match, cannot update integrity")}else this[a]=s[a]}match(t,r){let s=oc(t,r);if(!s)return!1;let a=s.pickAlgorithm(r,Object.keys(this));return!!a&&this[a]&&s[a]&&this[a].find(n=>s[a].find(c=>n.digest===c.digest))||!1}pickAlgorithm(t,r){let s=t?.pickAlgorithm||pyt,a=Object.keys(this).filter(n=>r?.length?r.includes(n):!0);return a.length?a.reduce((n,c)=>s(n,c)||n):null}};BA.exports.parse=oc;function oc(e,t){if(!e)return null;if(typeof e=="string")return dV(e,t);if(e.algorithm&&e.digest){let r=new ny;return r[e.algorithm]=[e],dV(ID(r,t),t)}else return dV(ID(e,t),t)}function dV(e,t){if(t?.single)return new ph(e,t);let r=e.trim().split(/\s+/).reduce((s,a)=>{let n=new ph(a,t);if(n.algorithm&&n.digest){let c=n.algorithm;s[c]||(s[c]=[]),s[c].push(n)}return s},new ny);return r.isEmpty()?null:r}BA.exports.stringify=ID;function ID(e,t){return e.algorithm&&e.digest?ph.prototype.toString.call(e,t):typeof e=="string"?ID(oc(e,t),t):ny.prototype.toString.call(e,t)}BA.exports.fromHex=oyt;function oyt(e,t,r){let s=wD(r?.options);return oc(`${t}-${Buffer.from(e,"hex").toString("base64")}${s}`,r)}BA.exports.fromData=ayt;function ayt(e,t){let r=t?.algorithms||[...yV],s=wD(t?.options);return r.reduce((a,n)=>{let c=CD.createHash(n).update(e).digest("base64"),f=new ph(`${n}-${c}${s}`,t);if(f.algorithm&&f.digest){let p=f.algorithm;a[p]||(a[p]=[]),a[p].push(f)}return a},new ny)}BA.exports.fromStream=lyt;function lyt(e,t){let r=EV(t);return new Promise((s,a)=>{e.pipe(r),e.on("error",a),r.on("error",a);let n;r.on("integrity",c=>{n=c}),r.on("end",()=>s(n)),r.resume()})}BA.exports.checkData=cyt;function cyt(e,t,r){if(t=oc(t,r),!t||!Object.keys(t).length){if(r?.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let s=t.pickAlgorithm(r),a=CD.createHash(s).update(e).digest("base64"),n=oc({algorithm:s,digest:a}),c=n.match(t,r);if(r=r||{},c||!r.error)return c;if(typeof r.size=="number"&&e.length!==r.size){let f=new Error(`data size mismatch when checking ${t}. + Wanted: ${r.size} + Found: ${e.length}`);throw f.code="EBADSIZE",f.found=e.length,f.expected=r.size,f.sri=t,f}else{let f=new Error(`Integrity checksum failed when using ${s}: Wanted ${t}, but got ${n}. (${e.length} bytes)`);throw f.code="EINTEGRITY",f.found=n,f.expected=t,f.algorithm=s,f.sri=t,f}}BA.exports.checkStream=uyt;function uyt(e,t,r){if(r=r||Object.create(null),r.integrity=t,t=oc(t,r),!t||!Object.keys(t).length)return Promise.reject(Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"}));let s=EV(r);return new Promise((a,n)=>{e.pipe(s),e.on("error",n),s.on("error",n);let c;s.on("verified",f=>{c=f}),s.on("end",()=>a(c)),s.resume()})}BA.exports.integrityStream=EV;function EV(e=Object.create(null)){return new mV(e)}BA.exports.create=fyt;function fyt(e){let t=e?.algorithms||[...yV],r=wD(e?.options),s=t.map(CD.createHash);return{update:function(a,n){return s.forEach(c=>c.update(a,n)),this},digest:function(){return t.reduce((n,c)=>{let f=s.shift().digest("base64"),p=new ph(`${c}-${f}${r}`,e);if(p.algorithm&&p.digest){let h=p.algorithm;n[h]||(n[h]=[]),n[h].push(p)}return n},new ny)}}}var Ayt=CD.getHashes(),GBe=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(e=>Ayt.includes(e));function pyt(e,t){return GBe.indexOf(e.toLowerCase())>=GBe.indexOf(t.toLowerCase())?e:t}});var IV=G(yg=>{"use strict";Object.defineProperty(yg,"__esModule",{value:!0});yg.Signature=yg.Envelope=void 0;yg.Envelope={fromJSON(e){return{payload:NN(e.payload)?Buffer.from(YBe(e.payload)):Buffer.alloc(0),payloadType:NN(e.payloadType)?globalThis.String(e.payloadType):"",signatures:globalThis.Array.isArray(e?.signatures)?e.signatures.map(t=>yg.Signature.fromJSON(t)):[]}},toJSON(e){let t={};return e.payload.length!==0&&(t.payload=WBe(e.payload)),e.payloadType!==""&&(t.payloadType=e.payloadType),e.signatures?.length&&(t.signatures=e.signatures.map(r=>yg.Signature.toJSON(r))),t}};yg.Signature={fromJSON(e){return{sig:NN(e.sig)?Buffer.from(YBe(e.sig)):Buffer.alloc(0),keyid:NN(e.keyid)?globalThis.String(e.keyid):""}},toJSON(e){let t={};return e.sig.length!==0&&(t.sig=WBe(e.sig)),e.keyid!==""&&(t.keyid=e.keyid),t}};function YBe(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function WBe(e){return globalThis.Buffer.from(e).toString("base64")}function NN(e){return e!=null}});var KBe=G(ON=>{"use strict";Object.defineProperty(ON,"__esModule",{value:!0});ON.Timestamp=void 0;ON.Timestamp={fromJSON(e){return{seconds:VBe(e.seconds)?globalThis.String(e.seconds):"0",nanos:VBe(e.nanos)?globalThis.Number(e.nanos):0}},toJSON(e){let t={};return e.seconds!=="0"&&(t.seconds=e.seconds),e.nanos!==0&&(t.nanos=Math.round(e.nanos)),t}};function VBe(e){return e!=null}});var _w=G(_r=>{"use strict";Object.defineProperty(_r,"__esModule",{value:!0});_r.TimeRange=_r.X509CertificateChain=_r.SubjectAlternativeName=_r.X509Certificate=_r.DistinguishedName=_r.ObjectIdentifierValuePair=_r.ObjectIdentifier=_r.PublicKeyIdentifier=_r.PublicKey=_r.RFC3161SignedTimestamp=_r.LogId=_r.MessageSignature=_r.HashOutput=_r.SubjectAlternativeNameType=_r.PublicKeyDetails=_r.HashAlgorithm=void 0;_r.hashAlgorithmFromJSON=zBe;_r.hashAlgorithmToJSON=ZBe;_r.publicKeyDetailsFromJSON=XBe;_r.publicKeyDetailsToJSON=$Be;_r.subjectAlternativeNameTypeFromJSON=eve;_r.subjectAlternativeNameTypeToJSON=tve;var hyt=KBe(),bl;(function(e){e[e.HASH_ALGORITHM_UNSPECIFIED=0]="HASH_ALGORITHM_UNSPECIFIED",e[e.SHA2_256=1]="SHA2_256",e[e.SHA2_384=2]="SHA2_384",e[e.SHA2_512=3]="SHA2_512",e[e.SHA3_256=4]="SHA3_256",e[e.SHA3_384=5]="SHA3_384"})(bl||(_r.HashAlgorithm=bl={}));function zBe(e){switch(e){case 0:case"HASH_ALGORITHM_UNSPECIFIED":return bl.HASH_ALGORITHM_UNSPECIFIED;case 1:case"SHA2_256":return bl.SHA2_256;case 2:case"SHA2_384":return bl.SHA2_384;case 3:case"SHA2_512":return bl.SHA2_512;case 4:case"SHA3_256":return bl.SHA3_256;case 5:case"SHA3_384":return bl.SHA3_384;default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum HashAlgorithm")}}function ZBe(e){switch(e){case bl.HASH_ALGORITHM_UNSPECIFIED:return"HASH_ALGORITHM_UNSPECIFIED";case bl.SHA2_256:return"SHA2_256";case bl.SHA2_384:return"SHA2_384";case bl.SHA2_512:return"SHA2_512";case bl.SHA3_256:return"SHA3_256";case bl.SHA3_384:return"SHA3_384";default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum HashAlgorithm")}}var sn;(function(e){e[e.PUBLIC_KEY_DETAILS_UNSPECIFIED=0]="PUBLIC_KEY_DETAILS_UNSPECIFIED",e[e.PKCS1_RSA_PKCS1V5=1]="PKCS1_RSA_PKCS1V5",e[e.PKCS1_RSA_PSS=2]="PKCS1_RSA_PSS",e[e.PKIX_RSA_PKCS1V5=3]="PKIX_RSA_PKCS1V5",e[e.PKIX_RSA_PSS=4]="PKIX_RSA_PSS",e[e.PKIX_RSA_PKCS1V15_2048_SHA256=9]="PKIX_RSA_PKCS1V15_2048_SHA256",e[e.PKIX_RSA_PKCS1V15_3072_SHA256=10]="PKIX_RSA_PKCS1V15_3072_SHA256",e[e.PKIX_RSA_PKCS1V15_4096_SHA256=11]="PKIX_RSA_PKCS1V15_4096_SHA256",e[e.PKIX_RSA_PSS_2048_SHA256=16]="PKIX_RSA_PSS_2048_SHA256",e[e.PKIX_RSA_PSS_3072_SHA256=17]="PKIX_RSA_PSS_3072_SHA256",e[e.PKIX_RSA_PSS_4096_SHA256=18]="PKIX_RSA_PSS_4096_SHA256",e[e.PKIX_ECDSA_P256_HMAC_SHA_256=6]="PKIX_ECDSA_P256_HMAC_SHA_256",e[e.PKIX_ECDSA_P256_SHA_256=5]="PKIX_ECDSA_P256_SHA_256",e[e.PKIX_ECDSA_P384_SHA_384=12]="PKIX_ECDSA_P384_SHA_384",e[e.PKIX_ECDSA_P521_SHA_512=13]="PKIX_ECDSA_P521_SHA_512",e[e.PKIX_ED25519=7]="PKIX_ED25519",e[e.PKIX_ED25519_PH=8]="PKIX_ED25519_PH",e[e.LMS_SHA256=14]="LMS_SHA256",e[e.LMOTS_SHA256=15]="LMOTS_SHA256"})(sn||(_r.PublicKeyDetails=sn={}));function XBe(e){switch(e){case 0:case"PUBLIC_KEY_DETAILS_UNSPECIFIED":return sn.PUBLIC_KEY_DETAILS_UNSPECIFIED;case 1:case"PKCS1_RSA_PKCS1V5":return sn.PKCS1_RSA_PKCS1V5;case 2:case"PKCS1_RSA_PSS":return sn.PKCS1_RSA_PSS;case 3:case"PKIX_RSA_PKCS1V5":return sn.PKIX_RSA_PKCS1V5;case 4:case"PKIX_RSA_PSS":return sn.PKIX_RSA_PSS;case 9:case"PKIX_RSA_PKCS1V15_2048_SHA256":return sn.PKIX_RSA_PKCS1V15_2048_SHA256;case 10:case"PKIX_RSA_PKCS1V15_3072_SHA256":return sn.PKIX_RSA_PKCS1V15_3072_SHA256;case 11:case"PKIX_RSA_PKCS1V15_4096_SHA256":return sn.PKIX_RSA_PKCS1V15_4096_SHA256;case 16:case"PKIX_RSA_PSS_2048_SHA256":return sn.PKIX_RSA_PSS_2048_SHA256;case 17:case"PKIX_RSA_PSS_3072_SHA256":return sn.PKIX_RSA_PSS_3072_SHA256;case 18:case"PKIX_RSA_PSS_4096_SHA256":return sn.PKIX_RSA_PSS_4096_SHA256;case 6:case"PKIX_ECDSA_P256_HMAC_SHA_256":return sn.PKIX_ECDSA_P256_HMAC_SHA_256;case 5:case"PKIX_ECDSA_P256_SHA_256":return sn.PKIX_ECDSA_P256_SHA_256;case 12:case"PKIX_ECDSA_P384_SHA_384":return sn.PKIX_ECDSA_P384_SHA_384;case 13:case"PKIX_ECDSA_P521_SHA_512":return sn.PKIX_ECDSA_P521_SHA_512;case 7:case"PKIX_ED25519":return sn.PKIX_ED25519;case 8:case"PKIX_ED25519_PH":return sn.PKIX_ED25519_PH;case 14:case"LMS_SHA256":return sn.LMS_SHA256;case 15:case"LMOTS_SHA256":return sn.LMOTS_SHA256;default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum PublicKeyDetails")}}function $Be(e){switch(e){case sn.PUBLIC_KEY_DETAILS_UNSPECIFIED:return"PUBLIC_KEY_DETAILS_UNSPECIFIED";case sn.PKCS1_RSA_PKCS1V5:return"PKCS1_RSA_PKCS1V5";case sn.PKCS1_RSA_PSS:return"PKCS1_RSA_PSS";case sn.PKIX_RSA_PKCS1V5:return"PKIX_RSA_PKCS1V5";case sn.PKIX_RSA_PSS:return"PKIX_RSA_PSS";case sn.PKIX_RSA_PKCS1V15_2048_SHA256:return"PKIX_RSA_PKCS1V15_2048_SHA256";case sn.PKIX_RSA_PKCS1V15_3072_SHA256:return"PKIX_RSA_PKCS1V15_3072_SHA256";case sn.PKIX_RSA_PKCS1V15_4096_SHA256:return"PKIX_RSA_PKCS1V15_4096_SHA256";case sn.PKIX_RSA_PSS_2048_SHA256:return"PKIX_RSA_PSS_2048_SHA256";case sn.PKIX_RSA_PSS_3072_SHA256:return"PKIX_RSA_PSS_3072_SHA256";case sn.PKIX_RSA_PSS_4096_SHA256:return"PKIX_RSA_PSS_4096_SHA256";case sn.PKIX_ECDSA_P256_HMAC_SHA_256:return"PKIX_ECDSA_P256_HMAC_SHA_256";case sn.PKIX_ECDSA_P256_SHA_256:return"PKIX_ECDSA_P256_SHA_256";case sn.PKIX_ECDSA_P384_SHA_384:return"PKIX_ECDSA_P384_SHA_384";case sn.PKIX_ECDSA_P521_SHA_512:return"PKIX_ECDSA_P521_SHA_512";case sn.PKIX_ED25519:return"PKIX_ED25519";case sn.PKIX_ED25519_PH:return"PKIX_ED25519_PH";case sn.LMS_SHA256:return"LMS_SHA256";case sn.LMOTS_SHA256:return"LMOTS_SHA256";default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum PublicKeyDetails")}}var vA;(function(e){e[e.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED=0]="SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED",e[e.EMAIL=1]="EMAIL",e[e.URI=2]="URI",e[e.OTHER_NAME=3]="OTHER_NAME"})(vA||(_r.SubjectAlternativeNameType=vA={}));function eve(e){switch(e){case 0:case"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED":return vA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED;case 1:case"EMAIL":return vA.EMAIL;case 2:case"URI":return vA.URI;case 3:case"OTHER_NAME":return vA.OTHER_NAME;default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum SubjectAlternativeNameType")}}function tve(e){switch(e){case vA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED:return"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED";case vA.EMAIL:return"EMAIL";case vA.URI:return"URI";case vA.OTHER_NAME:return"OTHER_NAME";default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum SubjectAlternativeNameType")}}_r.HashOutput={fromJSON(e){return{algorithm:Is(e.algorithm)?zBe(e.algorithm):0,digest:Is(e.digest)?Buffer.from(iy(e.digest)):Buffer.alloc(0)}},toJSON(e){let t={};return e.algorithm!==0&&(t.algorithm=ZBe(e.algorithm)),e.digest.length!==0&&(t.digest=sy(e.digest)),t}};_r.MessageSignature={fromJSON(e){return{messageDigest:Is(e.messageDigest)?_r.HashOutput.fromJSON(e.messageDigest):void 0,signature:Is(e.signature)?Buffer.from(iy(e.signature)):Buffer.alloc(0)}},toJSON(e){let t={};return e.messageDigest!==void 0&&(t.messageDigest=_r.HashOutput.toJSON(e.messageDigest)),e.signature.length!==0&&(t.signature=sy(e.signature)),t}};_r.LogId={fromJSON(e){return{keyId:Is(e.keyId)?Buffer.from(iy(e.keyId)):Buffer.alloc(0)}},toJSON(e){let t={};return e.keyId.length!==0&&(t.keyId=sy(e.keyId)),t}};_r.RFC3161SignedTimestamp={fromJSON(e){return{signedTimestamp:Is(e.signedTimestamp)?Buffer.from(iy(e.signedTimestamp)):Buffer.alloc(0)}},toJSON(e){let t={};return e.signedTimestamp.length!==0&&(t.signedTimestamp=sy(e.signedTimestamp)),t}};_r.PublicKey={fromJSON(e){return{rawBytes:Is(e.rawBytes)?Buffer.from(iy(e.rawBytes)):void 0,keyDetails:Is(e.keyDetails)?XBe(e.keyDetails):0,validFor:Is(e.validFor)?_r.TimeRange.fromJSON(e.validFor):void 0}},toJSON(e){let t={};return e.rawBytes!==void 0&&(t.rawBytes=sy(e.rawBytes)),e.keyDetails!==0&&(t.keyDetails=$Be(e.keyDetails)),e.validFor!==void 0&&(t.validFor=_r.TimeRange.toJSON(e.validFor)),t}};_r.PublicKeyIdentifier={fromJSON(e){return{hint:Is(e.hint)?globalThis.String(e.hint):""}},toJSON(e){let t={};return e.hint!==""&&(t.hint=e.hint),t}};_r.ObjectIdentifier={fromJSON(e){return{id:globalThis.Array.isArray(e?.id)?e.id.map(t=>globalThis.Number(t)):[]}},toJSON(e){let t={};return e.id?.length&&(t.id=e.id.map(r=>Math.round(r))),t}};_r.ObjectIdentifierValuePair={fromJSON(e){return{oid:Is(e.oid)?_r.ObjectIdentifier.fromJSON(e.oid):void 0,value:Is(e.value)?Buffer.from(iy(e.value)):Buffer.alloc(0)}},toJSON(e){let t={};return e.oid!==void 0&&(t.oid=_r.ObjectIdentifier.toJSON(e.oid)),e.value.length!==0&&(t.value=sy(e.value)),t}};_r.DistinguishedName={fromJSON(e){return{organization:Is(e.organization)?globalThis.String(e.organization):"",commonName:Is(e.commonName)?globalThis.String(e.commonName):""}},toJSON(e){let t={};return e.organization!==""&&(t.organization=e.organization),e.commonName!==""&&(t.commonName=e.commonName),t}};_r.X509Certificate={fromJSON(e){return{rawBytes:Is(e.rawBytes)?Buffer.from(iy(e.rawBytes)):Buffer.alloc(0)}},toJSON(e){let t={};return e.rawBytes.length!==0&&(t.rawBytes=sy(e.rawBytes)),t}};_r.SubjectAlternativeName={fromJSON(e){return{type:Is(e.type)?eve(e.type):0,identity:Is(e.regexp)?{$case:"regexp",regexp:globalThis.String(e.regexp)}:Is(e.value)?{$case:"value",value:globalThis.String(e.value)}:void 0}},toJSON(e){let t={};return e.type!==0&&(t.type=tve(e.type)),e.identity?.$case==="regexp"?t.regexp=e.identity.regexp:e.identity?.$case==="value"&&(t.value=e.identity.value),t}};_r.X509CertificateChain={fromJSON(e){return{certificates:globalThis.Array.isArray(e?.certificates)?e.certificates.map(t=>_r.X509Certificate.fromJSON(t)):[]}},toJSON(e){let t={};return e.certificates?.length&&(t.certificates=e.certificates.map(r=>_r.X509Certificate.toJSON(r))),t}};_r.TimeRange={fromJSON(e){return{start:Is(e.start)?JBe(e.start):void 0,end:Is(e.end)?JBe(e.end):void 0}},toJSON(e){let t={};return e.start!==void 0&&(t.start=e.start.toISOString()),e.end!==void 0&&(t.end=e.end.toISOString()),t}};function iy(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function sy(e){return globalThis.Buffer.from(e).toString("base64")}function dyt(e){let t=(globalThis.Number(e.seconds)||0)*1e3;return t+=(e.nanos||0)/1e6,new globalThis.Date(t)}function JBe(e){return e instanceof globalThis.Date?e:typeof e=="string"?new globalThis.Date(e):dyt(hyt.Timestamp.fromJSON(e))}function Is(e){return e!=null}});var CV=G(Cs=>{"use strict";Object.defineProperty(Cs,"__esModule",{value:!0});Cs.TransparencyLogEntry=Cs.InclusionPromise=Cs.InclusionProof=Cs.Checkpoint=Cs.KindVersion=void 0;var rve=_w();Cs.KindVersion={fromJSON(e){return{kind:ja(e.kind)?globalThis.String(e.kind):"",version:ja(e.version)?globalThis.String(e.version):""}},toJSON(e){let t={};return e.kind!==""&&(t.kind=e.kind),e.version!==""&&(t.version=e.version),t}};Cs.Checkpoint={fromJSON(e){return{envelope:ja(e.envelope)?globalThis.String(e.envelope):""}},toJSON(e){let t={};return e.envelope!==""&&(t.envelope=e.envelope),t}};Cs.InclusionProof={fromJSON(e){return{logIndex:ja(e.logIndex)?globalThis.String(e.logIndex):"0",rootHash:ja(e.rootHash)?Buffer.from(LN(e.rootHash)):Buffer.alloc(0),treeSize:ja(e.treeSize)?globalThis.String(e.treeSize):"0",hashes:globalThis.Array.isArray(e?.hashes)?e.hashes.map(t=>Buffer.from(LN(t))):[],checkpoint:ja(e.checkpoint)?Cs.Checkpoint.fromJSON(e.checkpoint):void 0}},toJSON(e){let t={};return e.logIndex!=="0"&&(t.logIndex=e.logIndex),e.rootHash.length!==0&&(t.rootHash=MN(e.rootHash)),e.treeSize!=="0"&&(t.treeSize=e.treeSize),e.hashes?.length&&(t.hashes=e.hashes.map(r=>MN(r))),e.checkpoint!==void 0&&(t.checkpoint=Cs.Checkpoint.toJSON(e.checkpoint)),t}};Cs.InclusionPromise={fromJSON(e){return{signedEntryTimestamp:ja(e.signedEntryTimestamp)?Buffer.from(LN(e.signedEntryTimestamp)):Buffer.alloc(0)}},toJSON(e){let t={};return e.signedEntryTimestamp.length!==0&&(t.signedEntryTimestamp=MN(e.signedEntryTimestamp)),t}};Cs.TransparencyLogEntry={fromJSON(e){return{logIndex:ja(e.logIndex)?globalThis.String(e.logIndex):"0",logId:ja(e.logId)?rve.LogId.fromJSON(e.logId):void 0,kindVersion:ja(e.kindVersion)?Cs.KindVersion.fromJSON(e.kindVersion):void 0,integratedTime:ja(e.integratedTime)?globalThis.String(e.integratedTime):"0",inclusionPromise:ja(e.inclusionPromise)?Cs.InclusionPromise.fromJSON(e.inclusionPromise):void 0,inclusionProof:ja(e.inclusionProof)?Cs.InclusionProof.fromJSON(e.inclusionProof):void 0,canonicalizedBody:ja(e.canonicalizedBody)?Buffer.from(LN(e.canonicalizedBody)):Buffer.alloc(0)}},toJSON(e){let t={};return e.logIndex!=="0"&&(t.logIndex=e.logIndex),e.logId!==void 0&&(t.logId=rve.LogId.toJSON(e.logId)),e.kindVersion!==void 0&&(t.kindVersion=Cs.KindVersion.toJSON(e.kindVersion)),e.integratedTime!=="0"&&(t.integratedTime=e.integratedTime),e.inclusionPromise!==void 0&&(t.inclusionPromise=Cs.InclusionPromise.toJSON(e.inclusionPromise)),e.inclusionProof!==void 0&&(t.inclusionProof=Cs.InclusionProof.toJSON(e.inclusionProof)),e.canonicalizedBody.length!==0&&(t.canonicalizedBody=MN(e.canonicalizedBody)),t}};function LN(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function MN(e){return globalThis.Buffer.from(e).toString("base64")}function ja(e){return e!=null}});var wV=G(Zc=>{"use strict";Object.defineProperty(Zc,"__esModule",{value:!0});Zc.Bundle=Zc.VerificationMaterial=Zc.TimestampVerificationData=void 0;var nve=IV(),SA=_w(),ive=CV();Zc.TimestampVerificationData={fromJSON(e){return{rfc3161Timestamps:globalThis.Array.isArray(e?.rfc3161Timestamps)?e.rfc3161Timestamps.map(t=>SA.RFC3161SignedTimestamp.fromJSON(t)):[]}},toJSON(e){let t={};return e.rfc3161Timestamps?.length&&(t.rfc3161Timestamps=e.rfc3161Timestamps.map(r=>SA.RFC3161SignedTimestamp.toJSON(r))),t}};Zc.VerificationMaterial={fromJSON(e){return{content:Eg(e.publicKey)?{$case:"publicKey",publicKey:SA.PublicKeyIdentifier.fromJSON(e.publicKey)}:Eg(e.x509CertificateChain)?{$case:"x509CertificateChain",x509CertificateChain:SA.X509CertificateChain.fromJSON(e.x509CertificateChain)}:Eg(e.certificate)?{$case:"certificate",certificate:SA.X509Certificate.fromJSON(e.certificate)}:void 0,tlogEntries:globalThis.Array.isArray(e?.tlogEntries)?e.tlogEntries.map(t=>ive.TransparencyLogEntry.fromJSON(t)):[],timestampVerificationData:Eg(e.timestampVerificationData)?Zc.TimestampVerificationData.fromJSON(e.timestampVerificationData):void 0}},toJSON(e){let t={};return e.content?.$case==="publicKey"?t.publicKey=SA.PublicKeyIdentifier.toJSON(e.content.publicKey):e.content?.$case==="x509CertificateChain"?t.x509CertificateChain=SA.X509CertificateChain.toJSON(e.content.x509CertificateChain):e.content?.$case==="certificate"&&(t.certificate=SA.X509Certificate.toJSON(e.content.certificate)),e.tlogEntries?.length&&(t.tlogEntries=e.tlogEntries.map(r=>ive.TransparencyLogEntry.toJSON(r))),e.timestampVerificationData!==void 0&&(t.timestampVerificationData=Zc.TimestampVerificationData.toJSON(e.timestampVerificationData)),t}};Zc.Bundle={fromJSON(e){return{mediaType:Eg(e.mediaType)?globalThis.String(e.mediaType):"",verificationMaterial:Eg(e.verificationMaterial)?Zc.VerificationMaterial.fromJSON(e.verificationMaterial):void 0,content:Eg(e.messageSignature)?{$case:"messageSignature",messageSignature:SA.MessageSignature.fromJSON(e.messageSignature)}:Eg(e.dsseEnvelope)?{$case:"dsseEnvelope",dsseEnvelope:nve.Envelope.fromJSON(e.dsseEnvelope)}:void 0}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.verificationMaterial!==void 0&&(t.verificationMaterial=Zc.VerificationMaterial.toJSON(e.verificationMaterial)),e.content?.$case==="messageSignature"?t.messageSignature=SA.MessageSignature.toJSON(e.content.messageSignature):e.content?.$case==="dsseEnvelope"&&(t.dsseEnvelope=nve.Envelope.toJSON(e.content.dsseEnvelope)),t}};function Eg(e){return e!=null}});var BV=G(Ri=>{"use strict";Object.defineProperty(Ri,"__esModule",{value:!0});Ri.ClientTrustConfig=Ri.SigningConfig=Ri.TrustedRoot=Ri.CertificateAuthority=Ri.TransparencyLogInstance=void 0;var Dl=_w();Ri.TransparencyLogInstance={fromJSON(e){return{baseUrl:ua(e.baseUrl)?globalThis.String(e.baseUrl):"",hashAlgorithm:ua(e.hashAlgorithm)?(0,Dl.hashAlgorithmFromJSON)(e.hashAlgorithm):0,publicKey:ua(e.publicKey)?Dl.PublicKey.fromJSON(e.publicKey):void 0,logId:ua(e.logId)?Dl.LogId.fromJSON(e.logId):void 0,checkpointKeyId:ua(e.checkpointKeyId)?Dl.LogId.fromJSON(e.checkpointKeyId):void 0}},toJSON(e){let t={};return e.baseUrl!==""&&(t.baseUrl=e.baseUrl),e.hashAlgorithm!==0&&(t.hashAlgorithm=(0,Dl.hashAlgorithmToJSON)(e.hashAlgorithm)),e.publicKey!==void 0&&(t.publicKey=Dl.PublicKey.toJSON(e.publicKey)),e.logId!==void 0&&(t.logId=Dl.LogId.toJSON(e.logId)),e.checkpointKeyId!==void 0&&(t.checkpointKeyId=Dl.LogId.toJSON(e.checkpointKeyId)),t}};Ri.CertificateAuthority={fromJSON(e){return{subject:ua(e.subject)?Dl.DistinguishedName.fromJSON(e.subject):void 0,uri:ua(e.uri)?globalThis.String(e.uri):"",certChain:ua(e.certChain)?Dl.X509CertificateChain.fromJSON(e.certChain):void 0,validFor:ua(e.validFor)?Dl.TimeRange.fromJSON(e.validFor):void 0}},toJSON(e){let t={};return e.subject!==void 0&&(t.subject=Dl.DistinguishedName.toJSON(e.subject)),e.uri!==""&&(t.uri=e.uri),e.certChain!==void 0&&(t.certChain=Dl.X509CertificateChain.toJSON(e.certChain)),e.validFor!==void 0&&(t.validFor=Dl.TimeRange.toJSON(e.validFor)),t}};Ri.TrustedRoot={fromJSON(e){return{mediaType:ua(e.mediaType)?globalThis.String(e.mediaType):"",tlogs:globalThis.Array.isArray(e?.tlogs)?e.tlogs.map(t=>Ri.TransparencyLogInstance.fromJSON(t)):[],certificateAuthorities:globalThis.Array.isArray(e?.certificateAuthorities)?e.certificateAuthorities.map(t=>Ri.CertificateAuthority.fromJSON(t)):[],ctlogs:globalThis.Array.isArray(e?.ctlogs)?e.ctlogs.map(t=>Ri.TransparencyLogInstance.fromJSON(t)):[],timestampAuthorities:globalThis.Array.isArray(e?.timestampAuthorities)?e.timestampAuthorities.map(t=>Ri.CertificateAuthority.fromJSON(t)):[]}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.tlogs?.length&&(t.tlogs=e.tlogs.map(r=>Ri.TransparencyLogInstance.toJSON(r))),e.certificateAuthorities?.length&&(t.certificateAuthorities=e.certificateAuthorities.map(r=>Ri.CertificateAuthority.toJSON(r))),e.ctlogs?.length&&(t.ctlogs=e.ctlogs.map(r=>Ri.TransparencyLogInstance.toJSON(r))),e.timestampAuthorities?.length&&(t.timestampAuthorities=e.timestampAuthorities.map(r=>Ri.CertificateAuthority.toJSON(r))),t}};Ri.SigningConfig={fromJSON(e){return{mediaType:ua(e.mediaType)?globalThis.String(e.mediaType):"",caUrl:ua(e.caUrl)?globalThis.String(e.caUrl):"",oidcUrl:ua(e.oidcUrl)?globalThis.String(e.oidcUrl):"",tlogUrls:globalThis.Array.isArray(e?.tlogUrls)?e.tlogUrls.map(t=>globalThis.String(t)):[],tsaUrls:globalThis.Array.isArray(e?.tsaUrls)?e.tsaUrls.map(t=>globalThis.String(t)):[]}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.caUrl!==""&&(t.caUrl=e.caUrl),e.oidcUrl!==""&&(t.oidcUrl=e.oidcUrl),e.tlogUrls?.length&&(t.tlogUrls=e.tlogUrls),e.tsaUrls?.length&&(t.tsaUrls=e.tsaUrls),t}};Ri.ClientTrustConfig={fromJSON(e){return{mediaType:ua(e.mediaType)?globalThis.String(e.mediaType):"",trustedRoot:ua(e.trustedRoot)?Ri.TrustedRoot.fromJSON(e.trustedRoot):void 0,signingConfig:ua(e.signingConfig)?Ri.SigningConfig.fromJSON(e.signingConfig):void 0}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.trustedRoot!==void 0&&(t.trustedRoot=Ri.TrustedRoot.toJSON(e.trustedRoot)),e.signingConfig!==void 0&&(t.signingConfig=Ri.SigningConfig.toJSON(e.signingConfig)),t}};function ua(e){return e!=null}});var ave=G(Kr=>{"use strict";Object.defineProperty(Kr,"__esModule",{value:!0});Kr.Input=Kr.Artifact=Kr.ArtifactVerificationOptions_ObserverTimestampOptions=Kr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions=Kr.ArtifactVerificationOptions_TimestampAuthorityOptions=Kr.ArtifactVerificationOptions_CtlogOptions=Kr.ArtifactVerificationOptions_TlogOptions=Kr.ArtifactVerificationOptions=Kr.PublicKeyIdentities=Kr.CertificateIdentities=Kr.CertificateIdentity=void 0;var sve=wV(),Ig=_w(),ove=BV();Kr.CertificateIdentity={fromJSON(e){return{issuer:gi(e.issuer)?globalThis.String(e.issuer):"",san:gi(e.san)?Ig.SubjectAlternativeName.fromJSON(e.san):void 0,oids:globalThis.Array.isArray(e?.oids)?e.oids.map(t=>Ig.ObjectIdentifierValuePair.fromJSON(t)):[]}},toJSON(e){let t={};return e.issuer!==""&&(t.issuer=e.issuer),e.san!==void 0&&(t.san=Ig.SubjectAlternativeName.toJSON(e.san)),e.oids?.length&&(t.oids=e.oids.map(r=>Ig.ObjectIdentifierValuePair.toJSON(r))),t}};Kr.CertificateIdentities={fromJSON(e){return{identities:globalThis.Array.isArray(e?.identities)?e.identities.map(t=>Kr.CertificateIdentity.fromJSON(t)):[]}},toJSON(e){let t={};return e.identities?.length&&(t.identities=e.identities.map(r=>Kr.CertificateIdentity.toJSON(r))),t}};Kr.PublicKeyIdentities={fromJSON(e){return{publicKeys:globalThis.Array.isArray(e?.publicKeys)?e.publicKeys.map(t=>Ig.PublicKey.fromJSON(t)):[]}},toJSON(e){let t={};return e.publicKeys?.length&&(t.publicKeys=e.publicKeys.map(r=>Ig.PublicKey.toJSON(r))),t}};Kr.ArtifactVerificationOptions={fromJSON(e){return{signers:gi(e.certificateIdentities)?{$case:"certificateIdentities",certificateIdentities:Kr.CertificateIdentities.fromJSON(e.certificateIdentities)}:gi(e.publicKeys)?{$case:"publicKeys",publicKeys:Kr.PublicKeyIdentities.fromJSON(e.publicKeys)}:void 0,tlogOptions:gi(e.tlogOptions)?Kr.ArtifactVerificationOptions_TlogOptions.fromJSON(e.tlogOptions):void 0,ctlogOptions:gi(e.ctlogOptions)?Kr.ArtifactVerificationOptions_CtlogOptions.fromJSON(e.ctlogOptions):void 0,tsaOptions:gi(e.tsaOptions)?Kr.ArtifactVerificationOptions_TimestampAuthorityOptions.fromJSON(e.tsaOptions):void 0,integratedTsOptions:gi(e.integratedTsOptions)?Kr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.fromJSON(e.integratedTsOptions):void 0,observerOptions:gi(e.observerOptions)?Kr.ArtifactVerificationOptions_ObserverTimestampOptions.fromJSON(e.observerOptions):void 0}},toJSON(e){let t={};return e.signers?.$case==="certificateIdentities"?t.certificateIdentities=Kr.CertificateIdentities.toJSON(e.signers.certificateIdentities):e.signers?.$case==="publicKeys"&&(t.publicKeys=Kr.PublicKeyIdentities.toJSON(e.signers.publicKeys)),e.tlogOptions!==void 0&&(t.tlogOptions=Kr.ArtifactVerificationOptions_TlogOptions.toJSON(e.tlogOptions)),e.ctlogOptions!==void 0&&(t.ctlogOptions=Kr.ArtifactVerificationOptions_CtlogOptions.toJSON(e.ctlogOptions)),e.tsaOptions!==void 0&&(t.tsaOptions=Kr.ArtifactVerificationOptions_TimestampAuthorityOptions.toJSON(e.tsaOptions)),e.integratedTsOptions!==void 0&&(t.integratedTsOptions=Kr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.toJSON(e.integratedTsOptions)),e.observerOptions!==void 0&&(t.observerOptions=Kr.ArtifactVerificationOptions_ObserverTimestampOptions.toJSON(e.observerOptions)),t}};Kr.ArtifactVerificationOptions_TlogOptions={fromJSON(e){return{threshold:gi(e.threshold)?globalThis.Number(e.threshold):0,performOnlineVerification:gi(e.performOnlineVerification)?globalThis.Boolean(e.performOnlineVerification):!1,disable:gi(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.performOnlineVerification!==!1&&(t.performOnlineVerification=e.performOnlineVerification),e.disable!==!1&&(t.disable=e.disable),t}};Kr.ArtifactVerificationOptions_CtlogOptions={fromJSON(e){return{threshold:gi(e.threshold)?globalThis.Number(e.threshold):0,disable:gi(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Kr.ArtifactVerificationOptions_TimestampAuthorityOptions={fromJSON(e){return{threshold:gi(e.threshold)?globalThis.Number(e.threshold):0,disable:gi(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Kr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions={fromJSON(e){return{threshold:gi(e.threshold)?globalThis.Number(e.threshold):0,disable:gi(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Kr.ArtifactVerificationOptions_ObserverTimestampOptions={fromJSON(e){return{threshold:gi(e.threshold)?globalThis.Number(e.threshold):0,disable:gi(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Kr.Artifact={fromJSON(e){return{data:gi(e.artifactUri)?{$case:"artifactUri",artifactUri:globalThis.String(e.artifactUri)}:gi(e.artifact)?{$case:"artifact",artifact:Buffer.from(gyt(e.artifact))}:gi(e.artifactDigest)?{$case:"artifactDigest",artifactDigest:Ig.HashOutput.fromJSON(e.artifactDigest)}:void 0}},toJSON(e){let t={};return e.data?.$case==="artifactUri"?t.artifactUri=e.data.artifactUri:e.data?.$case==="artifact"?t.artifact=myt(e.data.artifact):e.data?.$case==="artifactDigest"&&(t.artifactDigest=Ig.HashOutput.toJSON(e.data.artifactDigest)),t}};Kr.Input={fromJSON(e){return{artifactTrustRoot:gi(e.artifactTrustRoot)?ove.TrustedRoot.fromJSON(e.artifactTrustRoot):void 0,artifactVerificationOptions:gi(e.artifactVerificationOptions)?Kr.ArtifactVerificationOptions.fromJSON(e.artifactVerificationOptions):void 0,bundle:gi(e.bundle)?sve.Bundle.fromJSON(e.bundle):void 0,artifact:gi(e.artifact)?Kr.Artifact.fromJSON(e.artifact):void 0}},toJSON(e){let t={};return e.artifactTrustRoot!==void 0&&(t.artifactTrustRoot=ove.TrustedRoot.toJSON(e.artifactTrustRoot)),e.artifactVerificationOptions!==void 0&&(t.artifactVerificationOptions=Kr.ArtifactVerificationOptions.toJSON(e.artifactVerificationOptions)),e.bundle!==void 0&&(t.bundle=sve.Bundle.toJSON(e.bundle)),e.artifact!==void 0&&(t.artifact=Kr.Artifact.toJSON(e.artifact)),t}};function gyt(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function myt(e){return globalThis.Buffer.from(e).toString("base64")}function gi(e){return e!=null}});var BD=G(Xc=>{"use strict";var yyt=Xc&&Xc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Hw=Xc&&Xc.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&yyt(t,e,r)};Object.defineProperty(Xc,"__esModule",{value:!0});Hw(IV(),Xc);Hw(wV(),Xc);Hw(_w(),Xc);Hw(CV(),Xc);Hw(BV(),Xc);Hw(ave(),Xc)});var UN=G(Pl=>{"use strict";Object.defineProperty(Pl,"__esModule",{value:!0});Pl.BUNDLE_V03_MEDIA_TYPE=Pl.BUNDLE_V03_LEGACY_MEDIA_TYPE=Pl.BUNDLE_V02_MEDIA_TYPE=Pl.BUNDLE_V01_MEDIA_TYPE=void 0;Pl.isBundleWithCertificateChain=Eyt;Pl.isBundleWithPublicKey=Iyt;Pl.isBundleWithMessageSignature=Cyt;Pl.isBundleWithDsseEnvelope=wyt;Pl.BUNDLE_V01_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.1";Pl.BUNDLE_V02_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.2";Pl.BUNDLE_V03_LEGACY_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.3";Pl.BUNDLE_V03_MEDIA_TYPE="application/vnd.dev.sigstore.bundle.v0.3+json";function Eyt(e){return e.verificationMaterial.content.$case==="x509CertificateChain"}function Iyt(e){return e.verificationMaterial.content.$case==="publicKey"}function Cyt(e){return e.content.$case==="messageSignature"}function wyt(e){return e.content.$case==="dsseEnvelope"}});var cve=G(HN=>{"use strict";Object.defineProperty(HN,"__esModule",{value:!0});HN.toMessageSignatureBundle=vyt;HN.toDSSEBundle=Syt;var Byt=BD(),_N=UN();function vyt(e){return{mediaType:e.certificateChain?_N.BUNDLE_V02_MEDIA_TYPE:_N.BUNDLE_V03_MEDIA_TYPE,content:{$case:"messageSignature",messageSignature:{messageDigest:{algorithm:Byt.HashAlgorithm.SHA2_256,digest:e.digest},signature:e.signature}},verificationMaterial:lve(e)}}function Syt(e){return{mediaType:e.certificateChain?_N.BUNDLE_V02_MEDIA_TYPE:_N.BUNDLE_V03_MEDIA_TYPE,content:{$case:"dsseEnvelope",dsseEnvelope:byt(e)},verificationMaterial:lve(e)}}function byt(e){return{payloadType:e.artifactType,payload:e.artifact,signatures:[Dyt(e)]}}function Dyt(e){return{keyid:e.keyHint||"",sig:e.signature}}function lve(e){return{content:Pyt(e),tlogEntries:[],timestampVerificationData:{rfc3161Timestamps:[]}}}function Pyt(e){return e.certificate?e.certificateChain?{$case:"x509CertificateChain",x509CertificateChain:{certificates:[{rawBytes:e.certificate}]}}:{$case:"certificate",certificate:{rawBytes:e.certificate}}:{$case:"publicKey",publicKey:{hint:e.keyHint||""}}}});var SV=G(jN=>{"use strict";Object.defineProperty(jN,"__esModule",{value:!0});jN.ValidationError=void 0;var vV=class extends Error{constructor(t,r){super(t),this.fields=r}};jN.ValidationError=vV});var bV=G(oy=>{"use strict";Object.defineProperty(oy,"__esModule",{value:!0});oy.assertBundle=xyt;oy.assertBundleV01=uve;oy.isBundleV01=kyt;oy.assertBundleV02=Qyt;oy.assertBundleLatest=Tyt;var GN=SV();function xyt(e){let t=qN(e);if(t.length>0)throw new GN.ValidationError("invalid bundle",t)}function uve(e){let t=[];if(t.push(...qN(e)),t.push(...Ryt(e)),t.length>0)throw new GN.ValidationError("invalid v0.1 bundle",t)}function kyt(e){try{return uve(e),!0}catch{return!1}}function Qyt(e){let t=[];if(t.push(...qN(e)),t.push(...fve(e)),t.length>0)throw new GN.ValidationError("invalid v0.2 bundle",t)}function Tyt(e){let t=[];if(t.push(...qN(e)),t.push(...fve(e)),t.push(...Fyt(e)),t.length>0)throw new GN.ValidationError("invalid bundle",t)}function qN(e){let t=[];if((e.mediaType===void 0||!e.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\+json;version=\d\.\d/)&&!e.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\.v\d\.\d\+json/))&&t.push("mediaType"),e.content===void 0)t.push("content");else switch(e.content.$case){case"messageSignature":e.content.messageSignature.messageDigest===void 0?t.push("content.messageSignature.messageDigest"):e.content.messageSignature.messageDigest.digest.length===0&&t.push("content.messageSignature.messageDigest.digest"),e.content.messageSignature.signature.length===0&&t.push("content.messageSignature.signature");break;case"dsseEnvelope":e.content.dsseEnvelope.payload.length===0&&t.push("content.dsseEnvelope.payload"),e.content.dsseEnvelope.signatures.length!==1?t.push("content.dsseEnvelope.signatures"):e.content.dsseEnvelope.signatures[0].sig.length===0&&t.push("content.dsseEnvelope.signatures[0].sig");break}if(e.verificationMaterial===void 0)t.push("verificationMaterial");else{if(e.verificationMaterial.content===void 0)t.push("verificationMaterial.content");else switch(e.verificationMaterial.content.$case){case"x509CertificateChain":e.verificationMaterial.content.x509CertificateChain.certificates.length===0&&t.push("verificationMaterial.content.x509CertificateChain.certificates"),e.verificationMaterial.content.x509CertificateChain.certificates.forEach((r,s)=>{r.rawBytes.length===0&&t.push(`verificationMaterial.content.x509CertificateChain.certificates[${s}].rawBytes`)});break;case"certificate":e.verificationMaterial.content.certificate.rawBytes.length===0&&t.push("verificationMaterial.content.certificate.rawBytes");break}e.verificationMaterial.tlogEntries===void 0?t.push("verificationMaterial.tlogEntries"):e.verificationMaterial.tlogEntries.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.logId===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].logId`),r.kindVersion===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].kindVersion`)})}return t}function Ryt(e){let t=[];return e.verificationMaterial&&e.verificationMaterial.tlogEntries?.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionPromise===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].inclusionPromise`)}),t}function fve(e){let t=[];return e.verificationMaterial&&e.verificationMaterial.tlogEntries?.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionProof===void 0?t.push(`verificationMaterial.tlogEntries[${s}].inclusionProof`):r.inclusionProof.checkpoint===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].inclusionProof.checkpoint`)}),t}function Fyt(e){let t=[];return e.verificationMaterial?.content?.$case==="x509CertificateChain"&&t.push("verificationMaterial.content.$case"),t}});var pve=G(bA=>{"use strict";Object.defineProperty(bA,"__esModule",{value:!0});bA.envelopeToJSON=bA.envelopeFromJSON=bA.bundleToJSON=bA.bundleFromJSON=void 0;var YN=BD(),Ave=UN(),DV=bV(),Nyt=e=>{let t=YN.Bundle.fromJSON(e);switch(t.mediaType){case Ave.BUNDLE_V01_MEDIA_TYPE:(0,DV.assertBundleV01)(t);break;case Ave.BUNDLE_V02_MEDIA_TYPE:(0,DV.assertBundleV02)(t);break;default:(0,DV.assertBundleLatest)(t);break}return t};bA.bundleFromJSON=Nyt;var Oyt=e=>YN.Bundle.toJSON(e);bA.bundleToJSON=Oyt;var Lyt=e=>YN.Envelope.fromJSON(e);bA.envelopeFromJSON=Lyt;var Myt=e=>YN.Envelope.toJSON(e);bA.envelopeToJSON=Myt});var SD=G(Xr=>{"use strict";Object.defineProperty(Xr,"__esModule",{value:!0});Xr.isBundleV01=Xr.assertBundleV02=Xr.assertBundleV01=Xr.assertBundleLatest=Xr.assertBundle=Xr.envelopeToJSON=Xr.envelopeFromJSON=Xr.bundleToJSON=Xr.bundleFromJSON=Xr.ValidationError=Xr.isBundleWithPublicKey=Xr.isBundleWithMessageSignature=Xr.isBundleWithDsseEnvelope=Xr.isBundleWithCertificateChain=Xr.BUNDLE_V03_MEDIA_TYPE=Xr.BUNDLE_V03_LEGACY_MEDIA_TYPE=Xr.BUNDLE_V02_MEDIA_TYPE=Xr.BUNDLE_V01_MEDIA_TYPE=Xr.toMessageSignatureBundle=Xr.toDSSEBundle=void 0;var hve=cve();Object.defineProperty(Xr,"toDSSEBundle",{enumerable:!0,get:function(){return hve.toDSSEBundle}});Object.defineProperty(Xr,"toMessageSignatureBundle",{enumerable:!0,get:function(){return hve.toMessageSignatureBundle}});var Cg=UN();Object.defineProperty(Xr,"BUNDLE_V01_MEDIA_TYPE",{enumerable:!0,get:function(){return Cg.BUNDLE_V01_MEDIA_TYPE}});Object.defineProperty(Xr,"BUNDLE_V02_MEDIA_TYPE",{enumerable:!0,get:function(){return Cg.BUNDLE_V02_MEDIA_TYPE}});Object.defineProperty(Xr,"BUNDLE_V03_LEGACY_MEDIA_TYPE",{enumerable:!0,get:function(){return Cg.BUNDLE_V03_LEGACY_MEDIA_TYPE}});Object.defineProperty(Xr,"BUNDLE_V03_MEDIA_TYPE",{enumerable:!0,get:function(){return Cg.BUNDLE_V03_MEDIA_TYPE}});Object.defineProperty(Xr,"isBundleWithCertificateChain",{enumerable:!0,get:function(){return Cg.isBundleWithCertificateChain}});Object.defineProperty(Xr,"isBundleWithDsseEnvelope",{enumerable:!0,get:function(){return Cg.isBundleWithDsseEnvelope}});Object.defineProperty(Xr,"isBundleWithMessageSignature",{enumerable:!0,get:function(){return Cg.isBundleWithMessageSignature}});Object.defineProperty(Xr,"isBundleWithPublicKey",{enumerable:!0,get:function(){return Cg.isBundleWithPublicKey}});var Uyt=SV();Object.defineProperty(Xr,"ValidationError",{enumerable:!0,get:function(){return Uyt.ValidationError}});var WN=pve();Object.defineProperty(Xr,"bundleFromJSON",{enumerable:!0,get:function(){return WN.bundleFromJSON}});Object.defineProperty(Xr,"bundleToJSON",{enumerable:!0,get:function(){return WN.bundleToJSON}});Object.defineProperty(Xr,"envelopeFromJSON",{enumerable:!0,get:function(){return WN.envelopeFromJSON}});Object.defineProperty(Xr,"envelopeToJSON",{enumerable:!0,get:function(){return WN.envelopeToJSON}});var vD=bV();Object.defineProperty(Xr,"assertBundle",{enumerable:!0,get:function(){return vD.assertBundle}});Object.defineProperty(Xr,"assertBundleLatest",{enumerable:!0,get:function(){return vD.assertBundleLatest}});Object.defineProperty(Xr,"assertBundleV01",{enumerable:!0,get:function(){return vD.assertBundleV01}});Object.defineProperty(Xr,"assertBundleV02",{enumerable:!0,get:function(){return vD.assertBundleV02}});Object.defineProperty(Xr,"isBundleV01",{enumerable:!0,get:function(){return vD.isBundleV01}})});var bD=G(KN=>{"use strict";Object.defineProperty(KN,"__esModule",{value:!0});KN.ByteStream=void 0;var PV=class extends Error{},VN=class e{constructor(t){this.start=0,t?(this.buf=t,this.view=Buffer.from(t)):(this.buf=new ArrayBuffer(0),this.view=Buffer.from(this.buf))}get buffer(){return this.view.subarray(0,this.start)}get length(){return this.view.byteLength}get position(){return this.start}seek(t){this.start=t}slice(t,r){let s=t+r;if(s>this.length)throw new PV("request past end of buffer");return this.view.subarray(t,s)}appendChar(t){this.ensureCapacity(1),this.view[this.start]=t,this.start+=1}appendUint16(t){this.ensureCapacity(2);let r=new Uint16Array([t]),s=new Uint8Array(r.buffer);this.view[this.start]=s[1],this.view[this.start+1]=s[0],this.start+=2}appendUint24(t){this.ensureCapacity(3);let r=new Uint32Array([t]),s=new Uint8Array(r.buffer);this.view[this.start]=s[2],this.view[this.start+1]=s[1],this.view[this.start+2]=s[0],this.start+=3}appendView(t){this.ensureCapacity(t.length),this.view.set(t,this.start),this.start+=t.length}getBlock(t){if(t<=0)return Buffer.alloc(0);if(this.start+t>this.view.length)throw new Error("request past end of buffer");let r=this.view.subarray(this.start,this.start+t);return this.start+=t,r}getUint8(){return this.getBlock(1)[0]}getUint16(){let t=this.getBlock(2);return t[0]<<8|t[1]}ensureCapacity(t){if(this.start+t>this.view.byteLength){let r=e.BLOCK_SIZE+(t>e.BLOCK_SIZE?t:0);this.realloc(this.view.byteLength+r)}}realloc(t){let r=new ArrayBuffer(t),s=Buffer.from(r);s.set(this.view),this.buf=r,this.view=s}};KN.ByteStream=VN;VN.BLOCK_SIZE=1024});var JN=G(jw=>{"use strict";Object.defineProperty(jw,"__esModule",{value:!0});jw.ASN1TypeError=jw.ASN1ParseError=void 0;var xV=class extends Error{};jw.ASN1ParseError=xV;var kV=class extends Error{};jw.ASN1TypeError=kV});var gve=G(zN=>{"use strict";Object.defineProperty(zN,"__esModule",{value:!0});zN.decodeLength=_yt;zN.encodeLength=Hyt;var dve=JN();function _yt(e){let t=e.getUint8();if(!(t&128))return t;let r=t&127;if(r>6)throw new dve.ASN1ParseError("length exceeds 6 byte limit");let s=0;for(let a=0;a0n;)r.unshift(Number(t&255n)),t=t>>8n;return Buffer.from([128|r.length,...r])}});var yve=G(wg=>{"use strict";Object.defineProperty(wg,"__esModule",{value:!0});wg.parseInteger=qyt;wg.parseStringASCII=mve;wg.parseTime=Yyt;wg.parseOID=Wyt;wg.parseBoolean=Vyt;wg.parseBitString=Kyt;var jyt=/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/,Gyt=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/;function qyt(e){let t=0,r=e.length,s=e[t],a=s>127,n=a?255:0;for(;s==n&&++t=50?1900:2e3,s[1]=a.toString()}return new Date(`${s[1]}-${s[2]}-${s[3]}T${s[4]}:${s[5]}:${s[6]}Z`)}function Wyt(e){let t=0,r=e.length,s=e[t++],a=Math.floor(s/40),n=s%40,c=`${a}.${n}`,f=0;for(;t=f;--p)a.push(c>>p&1)}return a}});var Ive=G(ZN=>{"use strict";Object.defineProperty(ZN,"__esModule",{value:!0});ZN.ASN1Tag=void 0;var Eve=JN(),ay={BOOLEAN:1,INTEGER:2,BIT_STRING:3,OCTET_STRING:4,OBJECT_IDENTIFIER:6,SEQUENCE:16,SET:17,PRINTABLE_STRING:19,UTC_TIME:23,GENERALIZED_TIME:24},QV={UNIVERSAL:0,APPLICATION:1,CONTEXT_SPECIFIC:2,PRIVATE:3},TV=class{constructor(t){if(this.number=t&31,this.constructed=(t&32)===32,this.class=t>>6,this.number===31)throw new Eve.ASN1ParseError("long form tags not supported");if(this.class===QV.UNIVERSAL&&this.number===0)throw new Eve.ASN1ParseError("unsupported tag 0x00")}isUniversal(){return this.class===QV.UNIVERSAL}isContextSpecific(t){let r=this.class===QV.CONTEXT_SPECIFIC;return t!==void 0?r&&this.number===t:r}isBoolean(){return this.isUniversal()&&this.number===ay.BOOLEAN}isInteger(){return this.isUniversal()&&this.number===ay.INTEGER}isBitString(){return this.isUniversal()&&this.number===ay.BIT_STRING}isOctetString(){return this.isUniversal()&&this.number===ay.OCTET_STRING}isOID(){return this.isUniversal()&&this.number===ay.OBJECT_IDENTIFIER}isUTCTime(){return this.isUniversal()&&this.number===ay.UTC_TIME}isGeneralizedTime(){return this.isUniversal()&&this.number===ay.GENERALIZED_TIME}toDER(){return this.number|(this.constructed?32:0)|this.class<<6}};ZN.ASN1Tag=TV});var vve=G($N=>{"use strict";Object.defineProperty($N,"__esModule",{value:!0});$N.ASN1Obj=void 0;var RV=bD(),ly=JN(),wve=gve(),Gw=yve(),Jyt=Ive(),XN=class{constructor(t,r,s){this.tag=t,this.value=r,this.subs=s}static parseBuffer(t){return Bve(new RV.ByteStream(t))}toDER(){let t=new RV.ByteStream;if(this.subs.length>0)for(let a of this.subs)t.appendView(a.toDER());else t.appendView(this.value);let r=t.buffer,s=new RV.ByteStream;return s.appendChar(this.tag.toDER()),s.appendView((0,wve.encodeLength)(r.length)),s.appendView(r),s.buffer}toBoolean(){if(!this.tag.isBoolean())throw new ly.ASN1TypeError("not a boolean");return(0,Gw.parseBoolean)(this.value)}toInteger(){if(!this.tag.isInteger())throw new ly.ASN1TypeError("not an integer");return(0,Gw.parseInteger)(this.value)}toOID(){if(!this.tag.isOID())throw new ly.ASN1TypeError("not an OID");return(0,Gw.parseOID)(this.value)}toDate(){switch(!0){case this.tag.isUTCTime():return(0,Gw.parseTime)(this.value,!0);case this.tag.isGeneralizedTime():return(0,Gw.parseTime)(this.value,!1);default:throw new ly.ASN1TypeError("not a date")}}toBitString(){if(!this.tag.isBitString())throw new ly.ASN1TypeError("not a bit string");return(0,Gw.parseBitString)(this.value)}};$N.ASN1Obj=XN;function Bve(e){let t=new Jyt.ASN1Tag(e.getUint8()),r=(0,wve.decodeLength)(e),s=e.slice(e.position,r),a=e.position,n=[];if(t.constructed)n=Cve(e,r);else if(t.isOctetString())try{n=Cve(e,r)}catch{}return n.length===0&&e.seek(a+r),new XN(t,s,n)}function Cve(e,t){let r=e.position+t;if(r>e.length)throw new ly.ASN1ParseError("invalid length");let s=[];for(;e.position{"use strict";Object.defineProperty(eO,"__esModule",{value:!0});eO.ASN1Obj=void 0;var zyt=vve();Object.defineProperty(eO,"ASN1Obj",{enumerable:!0,get:function(){return zyt.ASN1Obj}})});var qw=G(Bg=>{"use strict";var Zyt=Bg&&Bg.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Bg,"__esModule",{value:!0});Bg.createPublicKey=Xyt;Bg.digest=$yt;Bg.verify=eEt;Bg.bufferEqual=tEt;var DD=Zyt(Ce("crypto"));function Xyt(e,t="spki"){return typeof e=="string"?DD.default.createPublicKey(e):DD.default.createPublicKey({key:e,format:"der",type:t})}function $yt(e,...t){let r=DD.default.createHash(e);for(let s of t)r.update(s);return r.digest()}function eEt(e,t,r,s){try{return DD.default.verify(s,e,t,r)}catch{return!1}}function tEt(e,t){try{return DD.default.timingSafeEqual(e,t)}catch{return!1}}});var Sve=G(FV=>{"use strict";Object.defineProperty(FV,"__esModule",{value:!0});FV.preAuthEncoding=nEt;var rEt="DSSEv1";function nEt(e,t){let r=[rEt,e.length,e,t.length,""].join(" ");return Buffer.concat([Buffer.from(r,"ascii"),t])}});var Pve=G(rO=>{"use strict";Object.defineProperty(rO,"__esModule",{value:!0});rO.base64Encode=iEt;rO.base64Decode=sEt;var bve="base64",Dve="utf-8";function iEt(e){return Buffer.from(e,Dve).toString(bve)}function sEt(e){return Buffer.from(e,bve).toString(Dve)}});var xve=G(OV=>{"use strict";Object.defineProperty(OV,"__esModule",{value:!0});OV.canonicalize=NV;function NV(e){let t="";if(e===null||typeof e!="object"||e.toJSON!=null)t+=JSON.stringify(e);else if(Array.isArray(e)){t+="[";let r=!0;e.forEach(s=>{r||(t+=","),r=!1,t+=NV(s)}),t+="]"}else{t+="{";let r=!0;Object.keys(e).sort().forEach(s=>{r||(t+=","),r=!1,t+=JSON.stringify(s),t+=":",t+=NV(e[s])}),t+="}"}return t}});var LV=G(nO=>{"use strict";Object.defineProperty(nO,"__esModule",{value:!0});nO.toDER=lEt;nO.fromDER=cEt;var oEt=/-----BEGIN (.*)-----/,aEt=/-----END (.*)-----/;function lEt(e){let t="";return e.split(` +`).forEach(r=>{r.match(oEt)||r.match(aEt)||(t+=r)}),Buffer.from(t,"base64")}function cEt(e,t="CERTIFICATE"){let s=e.toString("base64").match(/.{1,64}/g)||"";return[`-----BEGIN ${t}-----`,...s,`-----END ${t}-----`].join(` +`).concat(` +`)}});var iO=G(Yw=>{"use strict";Object.defineProperty(Yw,"__esModule",{value:!0});Yw.SHA2_HASH_ALGOS=Yw.ECDSA_SIGNATURE_ALGOS=void 0;Yw.ECDSA_SIGNATURE_ALGOS={"1.2.840.10045.4.3.1":"sha224","1.2.840.10045.4.3.2":"sha256","1.2.840.10045.4.3.3":"sha384","1.2.840.10045.4.3.4":"sha512"};Yw.SHA2_HASH_ALGOS={"2.16.840.1.101.3.4.2.1":"sha256","2.16.840.1.101.3.4.2.2":"sha384","2.16.840.1.101.3.4.2.3":"sha512"}});var UV=G(sO=>{"use strict";Object.defineProperty(sO,"__esModule",{value:!0});sO.RFC3161TimestampVerificationError=void 0;var MV=class extends Error{};sO.RFC3161TimestampVerificationError=MV});var Qve=G(DA=>{"use strict";var uEt=DA&&DA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),fEt=DA&&DA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),AEt=DA&&DA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&uEt(t,e,r);return fEt(t,e),t};Object.defineProperty(DA,"__esModule",{value:!0});DA.TSTInfo=void 0;var kve=AEt(qw()),pEt=iO(),hEt=UV(),_V=class{constructor(t){this.root=t}get version(){return this.root.subs[0].toInteger()}get genTime(){return this.root.subs[4].toDate()}get messageImprintHashAlgorithm(){let t=this.messageImprintObj.subs[0].subs[0].toOID();return pEt.SHA2_HASH_ALGOS[t]}get messageImprintHashedMessage(){return this.messageImprintObj.subs[1].value}get raw(){return this.root.toDER()}verify(t){let r=kve.digest(this.messageImprintHashAlgorithm,t);if(!kve.bufferEqual(r,this.messageImprintHashedMessage))throw new hEt.RFC3161TimestampVerificationError("message imprint does not match artifact")}get messageImprintObj(){return this.root.subs[2]}};DA.TSTInfo=_V});var Rve=G(PA=>{"use strict";var dEt=PA&&PA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),gEt=PA&&PA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),mEt=PA&&PA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&dEt(t,e,r);return gEt(t,e),t};Object.defineProperty(PA,"__esModule",{value:!0});PA.RFC3161Timestamp=void 0;var yEt=tO(),HV=mEt(qw()),Tve=iO(),PD=UV(),EEt=Qve(),IEt="1.2.840.113549.1.7.2",CEt="1.2.840.113549.1.9.16.1.4",wEt="1.2.840.113549.1.9.4",jV=class e{constructor(t){this.root=t}static parse(t){let r=yEt.ASN1Obj.parseBuffer(t);return new e(r)}get status(){return this.pkiStatusInfoObj.subs[0].toInteger()}get contentType(){return this.contentTypeObj.toOID()}get eContentType(){return this.eContentTypeObj.toOID()}get signingTime(){return this.tstInfo.genTime}get signerIssuer(){return this.signerSidObj.subs[0].value}get signerSerialNumber(){return this.signerSidObj.subs[1].value}get signerDigestAlgorithm(){let t=this.signerDigestAlgorithmObj.subs[0].toOID();return Tve.SHA2_HASH_ALGOS[t]}get signatureAlgorithm(){let t=this.signatureAlgorithmObj.subs[0].toOID();return Tve.ECDSA_SIGNATURE_ALGOS[t]}get signatureValue(){return this.signatureValueObj.value}get tstInfo(){return new EEt.TSTInfo(this.eContentObj.subs[0].subs[0])}verify(t,r){if(!this.timeStampTokenObj)throw new PD.RFC3161TimestampVerificationError("timeStampToken is missing");if(this.contentType!==IEt)throw new PD.RFC3161TimestampVerificationError(`incorrect content type: ${this.contentType}`);if(this.eContentType!==CEt)throw new PD.RFC3161TimestampVerificationError(`incorrect encapsulated content type: ${this.eContentType}`);this.tstInfo.verify(t),this.verifyMessageDigest(),this.verifySignature(r)}verifyMessageDigest(){let t=HV.digest(this.signerDigestAlgorithm,this.tstInfo.raw),r=this.messageDigestAttributeObj.subs[1].subs[0].value;if(!HV.bufferEqual(t,r))throw new PD.RFC3161TimestampVerificationError("signed data does not match tstInfo")}verifySignature(t){let r=this.signedAttrsObj.toDER();if(r[0]=49,!HV.verify(r,t,this.signatureValue,this.signatureAlgorithm))throw new PD.RFC3161TimestampVerificationError("signature verification failed")}get pkiStatusInfoObj(){return this.root.subs[0]}get timeStampTokenObj(){return this.root.subs[1]}get contentTypeObj(){return this.timeStampTokenObj.subs[0]}get signedDataObj(){return this.timeStampTokenObj.subs.find(r=>r.tag.isContextSpecific(0)).subs[0]}get encapContentInfoObj(){return this.signedDataObj.subs[2]}get signerInfosObj(){let t=this.signedDataObj;return t.subs[t.subs.length-1]}get signerInfoObj(){return this.signerInfosObj.subs[0]}get eContentTypeObj(){return this.encapContentInfoObj.subs[0]}get eContentObj(){return this.encapContentInfoObj.subs[1]}get signedAttrsObj(){return this.signerInfoObj.subs.find(r=>r.tag.isContextSpecific(0))}get messageDigestAttributeObj(){return this.signedAttrsObj.subs.find(r=>r.subs[0].tag.isOID()&&r.subs[0].toOID()===wEt)}get signerSidObj(){return this.signerInfoObj.subs[1]}get signerDigestAlgorithmObj(){return this.signerInfoObj.subs[2]}get signatureAlgorithmObj(){return this.signerInfoObj.subs[4]}get signatureValueObj(){return this.signerInfoObj.subs[5]}};PA.RFC3161Timestamp=jV});var Fve=G(oO=>{"use strict";Object.defineProperty(oO,"__esModule",{value:!0});oO.RFC3161Timestamp=void 0;var BEt=Rve();Object.defineProperty(oO,"RFC3161Timestamp",{enumerable:!0,get:function(){return BEt.RFC3161Timestamp}})});var Ove=G(xA=>{"use strict";var vEt=xA&&xA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),SEt=xA&&xA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),bEt=xA&&xA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&vEt(t,e,r);return SEt(t,e),t};Object.defineProperty(xA,"__esModule",{value:!0});xA.SignedCertificateTimestamp=void 0;var DEt=bEt(qw()),Nve=bD(),GV=class e{constructor(t){this.version=t.version,this.logID=t.logID,this.timestamp=t.timestamp,this.extensions=t.extensions,this.hashAlgorithm=t.hashAlgorithm,this.signatureAlgorithm=t.signatureAlgorithm,this.signature=t.signature}get datetime(){return new Date(Number(this.timestamp.readBigInt64BE()))}get algorithm(){switch(this.hashAlgorithm){case 0:return"none";case 1:return"md5";case 2:return"sha1";case 3:return"sha224";case 4:return"sha256";case 5:return"sha384";case 6:return"sha512";default:return"unknown"}}verify(t,r){let s=new Nve.ByteStream;return s.appendChar(this.version),s.appendChar(0),s.appendView(this.timestamp),s.appendUint16(1),s.appendView(t),s.appendUint16(this.extensions.byteLength),this.extensions.byteLength>0&&s.appendView(this.extensions),DEt.verify(s.buffer,r,this.signature,this.algorithm)}static parse(t){let r=new Nve.ByteStream(t),s=r.getUint8(),a=r.getBlock(32),n=r.getBlock(8),c=r.getUint16(),f=r.getBlock(c),p=r.getUint8(),h=r.getUint8(),E=r.getUint16(),C=r.getBlock(E);if(r.position!==t.length)throw new Error("SCT buffer length mismatch");return new e({version:s,logID:a,timestamp:n,extensions:f,hashAlgorithm:p,signatureAlgorithm:h,signature:C})}};xA.SignedCertificateTimestamp=GV});var zV=G(fa=>{"use strict";Object.defineProperty(fa,"__esModule",{value:!0});fa.X509SCTExtension=fa.X509SubjectKeyIDExtension=fa.X509AuthorityKeyIDExtension=fa.X509SubjectAlternativeNameExtension=fa.X509KeyUsageExtension=fa.X509BasicConstraintsExtension=fa.X509Extension=void 0;var PEt=bD(),xEt=Ove(),hh=class{constructor(t){this.root=t}get oid(){return this.root.subs[0].toOID()}get critical(){return this.root.subs.length===3?this.root.subs[1].toBoolean():!1}get value(){return this.extnValueObj.value}get valueObj(){return this.extnValueObj}get extnValueObj(){return this.root.subs[this.root.subs.length-1]}};fa.X509Extension=hh;var qV=class extends hh{get isCA(){return this.sequence.subs[0]?.toBoolean()??!1}get pathLenConstraint(){return this.sequence.subs.length>1?this.sequence.subs[1].toInteger():void 0}get sequence(){return this.extnValueObj.subs[0]}};fa.X509BasicConstraintsExtension=qV;var YV=class extends hh{get digitalSignature(){return this.bitString[0]===1}get keyCertSign(){return this.bitString[5]===1}get crlSign(){return this.bitString[6]===1}get bitString(){return this.extnValueObj.subs[0].toBitString()}};fa.X509KeyUsageExtension=YV;var WV=class extends hh{get rfc822Name(){return this.findGeneralName(1)?.value.toString("ascii")}get uri(){return this.findGeneralName(6)?.value.toString("ascii")}otherName(t){let r=this.findGeneralName(0);return r===void 0||r.subs[0].toOID()!==t?void 0:r.subs[1].subs[0].value.toString("ascii")}findGeneralName(t){return this.generalNames.find(r=>r.tag.isContextSpecific(t))}get generalNames(){return this.extnValueObj.subs[0].subs}};fa.X509SubjectAlternativeNameExtension=WV;var VV=class extends hh{get keyIdentifier(){return this.findSequenceMember(0)?.value}findSequenceMember(t){return this.sequence.subs.find(r=>r.tag.isContextSpecific(t))}get sequence(){return this.extnValueObj.subs[0]}};fa.X509AuthorityKeyIDExtension=VV;var KV=class extends hh{get keyIdentifier(){return this.extnValueObj.subs[0].value}};fa.X509SubjectKeyIDExtension=KV;var JV=class extends hh{constructor(t){super(t)}get signedCertificateTimestamps(){let t=this.extnValueObj.subs[0].value,r=new PEt.ByteStream(t),s=r.getUint16()+2,a=[];for(;r.position{"use strict";var kEt=ac&&ac.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),QEt=ac&&ac.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Mve=ac&&ac.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&kEt(t,e,r);return QEt(t,e),t};Object.defineProperty(ac,"__esModule",{value:!0});ac.X509Certificate=ac.EXTENSION_OID_SCT=void 0;var TEt=tO(),Lve=Mve(qw()),REt=iO(),FEt=Mve(LV()),cy=zV(),NEt="2.5.29.14",OEt="2.5.29.15",LEt="2.5.29.17",MEt="2.5.29.19",UEt="2.5.29.35";ac.EXTENSION_OID_SCT="1.3.6.1.4.1.11129.2.4.2";var ZV=class e{constructor(t){this.root=t}static parse(t){let r=typeof t=="string"?FEt.toDER(t):t,s=TEt.ASN1Obj.parseBuffer(r);return new e(s)}get tbsCertificate(){return this.tbsCertificateObj}get version(){return`v${(this.versionObj.subs[0].toInteger()+BigInt(1)).toString()}`}get serialNumber(){return this.serialNumberObj.value}get notBefore(){return this.validityObj.subs[0].toDate()}get notAfter(){return this.validityObj.subs[1].toDate()}get issuer(){return this.issuerObj.value}get subject(){return this.subjectObj.value}get publicKey(){return this.subjectPublicKeyInfoObj.toDER()}get signatureAlgorithm(){let t=this.signatureAlgorithmObj.subs[0].toOID();return REt.ECDSA_SIGNATURE_ALGOS[t]}get signatureValue(){return this.signatureValueObj.value.subarray(1)}get subjectAltName(){let t=this.extSubjectAltName;return t?.uri||t?.rfc822Name}get extensions(){return this.extensionsObj?.subs[0]?.subs||[]}get extKeyUsage(){let t=this.findExtension(OEt);return t?new cy.X509KeyUsageExtension(t):void 0}get extBasicConstraints(){let t=this.findExtension(MEt);return t?new cy.X509BasicConstraintsExtension(t):void 0}get extSubjectAltName(){let t=this.findExtension(LEt);return t?new cy.X509SubjectAlternativeNameExtension(t):void 0}get extAuthorityKeyID(){let t=this.findExtension(UEt);return t?new cy.X509AuthorityKeyIDExtension(t):void 0}get extSubjectKeyID(){let t=this.findExtension(NEt);return t?new cy.X509SubjectKeyIDExtension(t):void 0}get extSCT(){let t=this.findExtension(ac.EXTENSION_OID_SCT);return t?new cy.X509SCTExtension(t):void 0}get isCA(){let t=this.extBasicConstraints?.isCA||!1;return this.extKeyUsage?t&&this.extKeyUsage.keyCertSign:t}extension(t){let r=this.findExtension(t);return r?new cy.X509Extension(r):void 0}verify(t){let r=t?.publicKey||this.publicKey,s=Lve.createPublicKey(r);return Lve.verify(this.tbsCertificate.toDER(),s,this.signatureValue,this.signatureAlgorithm)}validForDate(t){return this.notBefore<=t&&t<=this.notAfter}equals(t){return this.root.toDER().equals(t.root.toDER())}clone(){let t=this.root.toDER(),r=Buffer.alloc(t.length);return t.copy(r),e.parse(r)}findExtension(t){return this.extensions.find(r=>r.subs[0].toOID()===t)}get tbsCertificateObj(){return this.root.subs[0]}get signatureAlgorithmObj(){return this.root.subs[1]}get signatureValueObj(){return this.root.subs[2]}get versionObj(){return this.tbsCertificateObj.subs[0]}get serialNumberObj(){return this.tbsCertificateObj.subs[1]}get issuerObj(){return this.tbsCertificateObj.subs[3]}get validityObj(){return this.tbsCertificateObj.subs[4]}get subjectObj(){return this.tbsCertificateObj.subs[5]}get subjectPublicKeyInfoObj(){return this.tbsCertificateObj.subs[6]}get extensionsObj(){return this.tbsCertificateObj.subs.find(t=>t.tag.isContextSpecific(3))}};ac.X509Certificate=ZV});var Hve=G(vg=>{"use strict";Object.defineProperty(vg,"__esModule",{value:!0});vg.X509SCTExtension=vg.X509Certificate=vg.EXTENSION_OID_SCT=void 0;var _ve=Uve();Object.defineProperty(vg,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return _ve.EXTENSION_OID_SCT}});Object.defineProperty(vg,"X509Certificate",{enumerable:!0,get:function(){return _ve.X509Certificate}});var _Et=zV();Object.defineProperty(vg,"X509SCTExtension",{enumerable:!0,get:function(){return _Et.X509SCTExtension}})});var xl=G(Zn=>{"use strict";var HEt=Zn&&Zn.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),jEt=Zn&&Zn.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xD=Zn&&Zn.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&HEt(t,e,r);return jEt(t,e),t};Object.defineProperty(Zn,"__esModule",{value:!0});Zn.X509SCTExtension=Zn.X509Certificate=Zn.EXTENSION_OID_SCT=Zn.ByteStream=Zn.RFC3161Timestamp=Zn.pem=Zn.json=Zn.encoding=Zn.dsse=Zn.crypto=Zn.ASN1Obj=void 0;var GEt=tO();Object.defineProperty(Zn,"ASN1Obj",{enumerable:!0,get:function(){return GEt.ASN1Obj}});Zn.crypto=xD(qw());Zn.dsse=xD(Sve());Zn.encoding=xD(Pve());Zn.json=xD(xve());Zn.pem=xD(LV());var qEt=Fve();Object.defineProperty(Zn,"RFC3161Timestamp",{enumerable:!0,get:function(){return qEt.RFC3161Timestamp}});var YEt=bD();Object.defineProperty(Zn,"ByteStream",{enumerable:!0,get:function(){return YEt.ByteStream}});var XV=Hve();Object.defineProperty(Zn,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return XV.EXTENSION_OID_SCT}});Object.defineProperty(Zn,"X509Certificate",{enumerable:!0,get:function(){return XV.X509Certificate}});Object.defineProperty(Zn,"X509SCTExtension",{enumerable:!0,get:function(){return XV.X509SCTExtension}})});var jve=G($V=>{"use strict";Object.defineProperty($V,"__esModule",{value:!0});$V.extractJWTSubject=VEt;var WEt=xl();function VEt(e){let t=e.split(".",3),r=JSON.parse(WEt.encoding.base64Decode(t[1]));switch(r.iss){case"https://accounts.google.com":case"https://oauth2.sigstore.dev/auth":return r.email;default:return r.sub}}});var Gve=G((otr,KEt)=>{KEt.exports={name:"@sigstore/sign",version:"3.1.0",description:"Sigstore signing library",main:"dist/index.js",types:"dist/index.d.ts",scripts:{clean:"shx rm -rf dist *.tsbuildinfo",build:"tsc --build",test:"jest"},files:["dist"],author:"bdehamer@github.com",license:"Apache-2.0",repository:{type:"git",url:"git+https://github.com/sigstore/sigstore-js.git"},bugs:{url:"https://github.com/sigstore/sigstore-js/issues"},homepage:"https://github.com/sigstore/sigstore-js/tree/main/packages/sign#readme",publishConfig:{provenance:!0},devDependencies:{"@sigstore/jest":"^0.0.0","@sigstore/mock":"^0.10.0","@sigstore/rekor-types":"^3.0.0","@types/make-fetch-happen":"^10.0.4","@types/promise-retry":"^1.1.6"},dependencies:{"@sigstore/bundle":"^3.1.0","@sigstore/core":"^2.0.0","@sigstore/protobuf-specs":"^0.4.0","make-fetch-happen":"^14.0.2","proc-log":"^5.0.0","promise-retry":"^2.0.1"},engines:{node:"^18.17.0 || >=20.5.0"}}});var Yve=G(Ww=>{"use strict";var JEt=Ww&&Ww.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ww,"__esModule",{value:!0});Ww.getUserAgent=void 0;var qve=JEt(Ce("os")),zEt=()=>{let e=Gve().version,t=process.version,r=qve.default.platform(),s=qve.default.arch();return`sigstore-js/${e} (Node ${t}) (${r}/${s})`};Ww.getUserAgent=zEt});var Sg=G(Ki=>{"use strict";var ZEt=Ki&&Ki.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),XEt=Ki&&Ki.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Wve=Ki&&Ki.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;a{"use strict";Object.defineProperty(aO,"__esModule",{value:!0});aO.BaseBundleBuilder=void 0;var e7=class{constructor(t){this.signer=t.signer,this.witnesses=t.witnesses}async create(t){let r=await this.prepare(t).then(f=>this.signer.sign(f)),s=await this.package(t,r),a=await Promise.all(this.witnesses.map(f=>f.testify(s.content,$Et(r.key)))),n=[],c=[];return a.forEach(({tlogEntries:f,rfc3161Timestamps:p})=>{n.push(...f??[]),c.push(...p??[])}),s.verificationMaterial.tlogEntries=n,s.verificationMaterial.timestampVerificationData={rfc3161Timestamps:c},s}async prepare(t){return t.data}};aO.BaseBundleBuilder=e7;function $Et(e){switch(e.$case){case"publicKey":return e.publicKey;case"x509Certificate":return e.certificate}}});var n7=G(kA=>{"use strict";var eIt=kA&&kA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),tIt=kA&&kA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),rIt=kA&&kA.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;a{"use strict";Object.defineProperty(lO,"__esModule",{value:!0});lO.DSSEBundleBuilder=void 0;var sIt=Sg(),oIt=t7(),aIt=n7(),i7=class extends oIt.BaseBundleBuilder{constructor(t){super(t),this.certificateChain=t.certificateChain??!1}async prepare(t){let r=Kve(t);return sIt.dsse.preAuthEncoding(r.type,r.data)}async package(t,r){return(0,aIt.toDSSEBundle)(Kve(t),r,this.certificateChain)}};lO.DSSEBundleBuilder=i7;function Kve(e){return{...e,type:e.type??""}}});var zve=G(cO=>{"use strict";Object.defineProperty(cO,"__esModule",{value:!0});cO.MessageSignatureBundleBuilder=void 0;var lIt=t7(),cIt=n7(),s7=class extends lIt.BaseBundleBuilder{constructor(t){super(t)}async package(t,r){return(0,cIt.toMessageSignatureBundle)(t,r)}};cO.MessageSignatureBundleBuilder=s7});var Zve=G(Vw=>{"use strict";Object.defineProperty(Vw,"__esModule",{value:!0});Vw.MessageSignatureBundleBuilder=Vw.DSSEBundleBuilder=void 0;var uIt=Jve();Object.defineProperty(Vw,"DSSEBundleBuilder",{enumerable:!0,get:function(){return uIt.DSSEBundleBuilder}});var fIt=zve();Object.defineProperty(Vw,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return fIt.MessageSignatureBundleBuilder}})});var fO=G(uO=>{"use strict";Object.defineProperty(uO,"__esModule",{value:!0});uO.HTTPError=void 0;var o7=class extends Error{constructor({status:t,message:r,location:s}){super(`(${t}) ${r}`),this.statusCode=t,this.location=s}};uO.HTTPError=o7});var Kw=G(QD=>{"use strict";Object.defineProperty(QD,"__esModule",{value:!0});QD.InternalError=void 0;QD.internalError=pIt;var AIt=fO(),AO=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.name=this.constructor.name,this.cause=s,this.code=t}};QD.InternalError=AO;function pIt(e,t,r){throw e instanceof AIt.HTTPError&&(r+=` - ${e.message}`),new AO({code:t,message:r,cause:e})}});var pO=G((mtr,Xve)=>{Xve.exports=fetch});var $ve=G(Jw=>{"use strict";var hIt=Jw&&Jw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Jw,"__esModule",{value:!0});Jw.CIContextProvider=void 0;var dIt=hIt(pO()),gIt=[mIt,yIt],a7=class{constructor(t="sigstore"){this.audience=t}async getToken(){return Promise.any(gIt.map(t=>t(this.audience))).catch(()=>Promise.reject("CI: no tokens available"))}};Jw.CIContextProvider=a7;async function mIt(e){if(!process.env.ACTIONS_ID_TOKEN_REQUEST_URL||!process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN)return Promise.reject("no token available");let t=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);return t.searchParams.append("audience",e),(await(0,dIt.default)(t.href,{retry:2,headers:{Accept:"application/json",Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).json().then(s=>s.value)}async function yIt(){return process.env.SIGSTORE_ID_TOKEN?process.env.SIGSTORE_ID_TOKEN:Promise.reject("no token available")}});var eSe=G(hO=>{"use strict";Object.defineProperty(hO,"__esModule",{value:!0});hO.CIContextProvider=void 0;var EIt=$ve();Object.defineProperty(hO,"CIContextProvider",{enumerable:!0,get:function(){return EIt.CIContextProvider}})});var rSe=G((Itr,tSe)=>{var IIt=Symbol("proc-log.meta");tSe.exports={META:IIt,output:{LEVELS:["standard","error","buffer","flush"],KEYS:{standard:"standard",error:"error",buffer:"buffer",flush:"flush"},standard:function(...e){return process.emit("output","standard",...e)},error:function(...e){return process.emit("output","error",...e)},buffer:function(...e){return process.emit("output","buffer",...e)},flush:function(...e){return process.emit("output","flush",...e)}},log:{LEVELS:["notice","error","warn","info","verbose","http","silly","timing","pause","resume"],KEYS:{notice:"notice",error:"error",warn:"warn",info:"info",verbose:"verbose",http:"http",silly:"silly",timing:"timing",pause:"pause",resume:"resume"},error:function(...e){return process.emit("log","error",...e)},notice:function(...e){return process.emit("log","notice",...e)},warn:function(...e){return process.emit("log","warn",...e)},info:function(...e){return process.emit("log","info",...e)},verbose:function(...e){return process.emit("log","verbose",...e)},http:function(...e){return process.emit("log","http",...e)},silly:function(...e){return process.emit("log","silly",...e)},timing:function(...e){return process.emit("log","timing",...e)},pause:function(){return process.emit("log","pause")},resume:function(){return process.emit("log","resume")}},time:{LEVELS:["start","end"],KEYS:{start:"start",end:"end"},start:function(e,t){process.emit("time","start",e);function r(){return process.emit("time","end",e)}if(typeof t=="function"){let s=t();return s&&s.finally?s.finally(r):(r(),s)}return r},end:function(e){return process.emit("time","end",e)}},input:{LEVELS:["start","end","read"],KEYS:{start:"start",end:"end",read:"read"},start:function(e){process.emit("input","start");function t(){return process.emit("input","end")}if(typeof e=="function"){let r=e();return r&&r.finally?r.finally(t):(t(),r)}return t},end:function(){return process.emit("input","end")},read:function(...e){let t,r,s=new Promise((a,n)=>{t=a,r=n});return process.emit("input","read",t,r,...e),s}}}});var sSe=G((Ctr,iSe)=>{"use strict";function nSe(e,t){for(let r in t)Object.defineProperty(e,r,{value:t[r],enumerable:!0,configurable:!0});return e}function CIt(e,t,r){if(!e||typeof e=="string")throw new TypeError("Please pass an Error to err-code");r||(r={}),typeof t=="object"&&(r=t,t=void 0),t!=null&&(r.code=t);try{return nSe(e,r)}catch{r.message=e.message,r.stack=e.stack;let a=function(){};return a.prototype=Object.create(Object.getPrototypeOf(e)),nSe(new a,r)}}iSe.exports=CIt});var aSe=G((wtr,oSe)=>{function $c(e,t){typeof t=="boolean"&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}oSe.exports=$c;$c.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};$c.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};$c.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(e);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var s=this,a=setTimeout(function(){s._attempts++,s._operationTimeoutCb&&(s._timeout=setTimeout(function(){s._operationTimeoutCb(s._attempts)},s._operationTimeout),s._options.unref&&s._timeout.unref()),s._fn(s._attempts)},r);return this._options.unref&&a.unref(),!0};$c.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};$c.prototype.try=function(e){console.log("Using RetryOperation.try() is deprecated"),this.attempt(e)};$c.prototype.start=function(e){console.log("Using RetryOperation.start() is deprecated"),this.attempt(e)};$c.prototype.start=$c.prototype.try;$c.prototype.errors=function(){return this._errors};$c.prototype.attempts=function(){return this._attempts};$c.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,r=0,s=0;s=r&&(t=a,r=c)}return t}});var lSe=G(uy=>{var wIt=aSe();uy.operation=function(e){var t=uy.timeouts(e);return new wIt(t,{forever:e&&e.forever,unref:e&&e.unref,maxRetryTime:e&&e.maxRetryTime})};uy.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var r in e)t[r]=e[r];if(t.minTimeout>t.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var s=[],a=0;a{cSe.exports=lSe()});var pSe=G((Str,ASe)=>{"use strict";var BIt=sSe(),vIt=uSe(),SIt=Object.prototype.hasOwnProperty;function fSe(e){return e&&e.code==="EPROMISERETRY"&&SIt.call(e,"retried")}function bIt(e,t){var r,s;return typeof e=="object"&&typeof t=="function"&&(r=t,t=e,e=r),s=vIt.operation(t),new Promise(function(a,n){s.attempt(function(c){Promise.resolve().then(function(){return e(function(f){throw fSe(f)&&(f=f.retried),BIt(new Error("Retrying"),"EPROMISERETRY",{retried:f})},c)}).then(a,function(f){fSe(f)&&(f=f.retried,s.retry(f||new Error))||n(f)})})})}ASe.exports=bIt});var dO=G(TD=>{"use strict";var dSe=TD&&TD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(TD,"__esModule",{value:!0});TD.fetchWithRetry=MIt;var DIt=Ce("http2"),PIt=dSe(pO()),hSe=rSe(),xIt=dSe(pSe()),kIt=Sg(),QIt=fO(),{HTTP2_HEADER_LOCATION:TIt,HTTP2_HEADER_CONTENT_TYPE:RIt,HTTP2_HEADER_USER_AGENT:FIt,HTTP_STATUS_INTERNAL_SERVER_ERROR:NIt,HTTP_STATUS_TOO_MANY_REQUESTS:OIt,HTTP_STATUS_REQUEST_TIMEOUT:LIt}=DIt.constants;async function MIt(e,t){return(0,xIt.default)(async(r,s)=>{let a=t.method||"POST",n={[FIt]:kIt.ua.getUserAgent(),...t.headers},c=await(0,PIt.default)(e,{method:a,headers:n,body:t.body,timeout:t.timeout,retry:!1}).catch(f=>(hSe.log.http("fetch",`${a} ${e} attempt ${s} failed with ${f}`),r(f)));if(c.ok)return c;{let f=await UIt(c);if(hSe.log.http("fetch",`${a} ${e} attempt ${s} failed with ${c.status}`),_It(c.status))return r(f);throw f}},HIt(t.retry))}var UIt=async e=>{let t=e.statusText,r=e.headers.get(TIt)||void 0;if(e.headers.get(RIt)?.includes("application/json"))try{t=(await e.json()).message||t}catch{}return new QIt.HTTPError({status:e.status,message:t,location:r})},_It=e=>[LIt,OIt].includes(e)||e>=NIt,HIt=e=>typeof e=="boolean"?{retries:e?1:0}:typeof e=="number"?{retries:e}:{retries:0,...e}});var gSe=G(gO=>{"use strict";Object.defineProperty(gO,"__esModule",{value:!0});gO.Fulcio=void 0;var jIt=dO(),l7=class{constructor(t){this.options=t}async createSigningCertificate(t){let{baseURL:r,retry:s,timeout:a}=this.options,n=`${r}/api/v2/signingCert`;return(await(0,jIt.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(t),timeout:a,retry:s})).json()}};gO.Fulcio=l7});var mSe=G(mO=>{"use strict";Object.defineProperty(mO,"__esModule",{value:!0});mO.CAClient=void 0;var GIt=Kw(),qIt=gSe(),c7=class{constructor(t){this.fulcio=new qIt.Fulcio({baseURL:t.fulcioBaseURL,retry:t.retry,timeout:t.timeout})}async createSigningCertificate(t,r,s){let a=YIt(t,r,s);try{let n=await this.fulcio.createSigningCertificate(a);return(n.signedCertificateEmbeddedSct?n.signedCertificateEmbeddedSct:n.signedCertificateDetachedSct).chain.certificates}catch(n){(0,GIt.internalError)(n,"CA_CREATE_SIGNING_CERTIFICATE_ERROR","error creating signing certificate")}}};mO.CAClient=c7;function YIt(e,t,r){return{credentials:{oidcIdentityToken:e},publicKeyRequest:{publicKey:{algorithm:"ECDSA",content:t},proofOfPossession:r.toString("base64")}}}});var ESe=G(zw=>{"use strict";var WIt=zw&&zw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(zw,"__esModule",{value:!0});zw.EphemeralSigner=void 0;var ySe=WIt(Ce("crypto")),VIt="ec",KIt="P-256",u7=class{constructor(){this.keypair=ySe.default.generateKeyPairSync(VIt,{namedCurve:KIt})}async sign(t){let r=ySe.default.sign(null,t,this.keypair.privateKey),s=this.keypair.publicKey.export({format:"pem",type:"spki"}).toString("ascii");return{signature:r,key:{$case:"publicKey",publicKey:s}}}};zw.EphemeralSigner=u7});var ISe=G(fy=>{"use strict";Object.defineProperty(fy,"__esModule",{value:!0});fy.FulcioSigner=fy.DEFAULT_FULCIO_URL=void 0;var f7=Kw(),JIt=Sg(),zIt=mSe(),ZIt=ESe();fy.DEFAULT_FULCIO_URL="https://fulcio.sigstore.dev";var A7=class{constructor(t){this.ca=new zIt.CAClient({...t,fulcioBaseURL:t.fulcioBaseURL||fy.DEFAULT_FULCIO_URL}),this.identityProvider=t.identityProvider,this.keyHolder=t.keyHolder||new ZIt.EphemeralSigner}async sign(t){let r=await this.getIdentityToken(),s;try{s=JIt.oidc.extractJWTSubject(r)}catch(f){throw new f7.InternalError({code:"IDENTITY_TOKEN_PARSE_ERROR",message:`invalid identity token: ${r}`,cause:f})}let a=await this.keyHolder.sign(Buffer.from(s));if(a.key.$case!=="publicKey")throw new f7.InternalError({code:"CA_CREATE_SIGNING_CERTIFICATE_ERROR",message:"unexpected format for signing key"});let n=await this.ca.createSigningCertificate(r,a.key.publicKey,a.signature);return{signature:(await this.keyHolder.sign(t)).signature,key:{$case:"x509Certificate",certificate:n[0]}}}async getIdentityToken(){try{return await this.identityProvider.getToken()}catch(t){throw new f7.InternalError({code:"IDENTITY_TOKEN_READ_ERROR",message:"error retrieving identity token",cause:t})}}};fy.FulcioSigner=A7});var wSe=G(Zw=>{"use strict";Object.defineProperty(Zw,"__esModule",{value:!0});Zw.FulcioSigner=Zw.DEFAULT_FULCIO_URL=void 0;var CSe=ISe();Object.defineProperty(Zw,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return CSe.DEFAULT_FULCIO_URL}});Object.defineProperty(Zw,"FulcioSigner",{enumerable:!0,get:function(){return CSe.FulcioSigner}})});var SSe=G(yO=>{"use strict";Object.defineProperty(yO,"__esModule",{value:!0});yO.Rekor=void 0;var BSe=dO(),p7=class{constructor(t){this.options=t}async createEntry(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries`,f=await(await(0,BSe.fetchWithRetry)(n,{headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(t),timeout:s,retry:a})).json();return vSe(f)}async getEntry(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries/${t}`,f=await(await(0,BSe.fetchWithRetry)(n,{method:"GET",headers:{Accept:"application/json"},timeout:s,retry:a})).json();return vSe(f)}};yO.Rekor=p7;function vSe(e){let t=Object.entries(e);if(t.length!=1)throw new Error("Received multiple entries in Rekor response");let[r,s]=t[0];return{...s,uuid:r}}});var DSe=G(EO=>{"use strict";Object.defineProperty(EO,"__esModule",{value:!0});EO.TLogClient=void 0;var bSe=Kw(),XIt=fO(),$It=SSe(),h7=class{constructor(t){this.fetchOnConflict=t.fetchOnConflict??!1,this.rekor=new $It.Rekor({baseURL:t.rekorBaseURL,retry:t.retry,timeout:t.timeout})}async createEntry(t){let r;try{r=await this.rekor.createEntry(t)}catch(s){if(eCt(s)&&this.fetchOnConflict){let a=s.location.split("/").pop()||"";try{r=await this.rekor.getEntry(a)}catch(n){(0,bSe.internalError)(n,"TLOG_FETCH_ENTRY_ERROR","error fetching tlog entry")}}else(0,bSe.internalError)(s,"TLOG_CREATE_ENTRY_ERROR","error creating tlog entry")}return r}};EO.TLogClient=h7;function eCt(e){return e instanceof XIt.HTTPError&&e.statusCode===409&&e.location!==void 0}});var PSe=G(d7=>{"use strict";Object.defineProperty(d7,"__esModule",{value:!0});d7.toProposedEntry=rCt;var tCt=SD(),bg=Sg(),RD="sha256";function rCt(e,t,r="dsse"){switch(e.$case){case"dsseEnvelope":return r==="intoto"?sCt(e.dsseEnvelope,t):iCt(e.dsseEnvelope,t);case"messageSignature":return nCt(e.messageSignature,t)}}function nCt(e,t){let r=e.messageDigest.digest.toString("hex"),s=e.signature.toString("base64"),a=bg.encoding.base64Encode(t);return{apiVersion:"0.0.1",kind:"hashedrekord",spec:{data:{hash:{algorithm:RD,value:r}},signature:{content:s,publicKey:{content:a}}}}}function iCt(e,t){let r=JSON.stringify((0,tCt.envelopeToJSON)(e)),s=bg.encoding.base64Encode(t);return{apiVersion:"0.0.1",kind:"dsse",spec:{proposedContent:{envelope:r,verifiers:[s]}}}}function sCt(e,t){let r=bg.crypto.digest(RD,e.payload).toString("hex"),s=oCt(e,t),a=bg.encoding.base64Encode(e.payload.toString("base64")),n=bg.encoding.base64Encode(e.signatures[0].sig.toString("base64")),c=e.signatures[0].keyid,f=bg.encoding.base64Encode(t),p={payloadType:e.payloadType,payload:a,signatures:[{sig:n,publicKey:f}]};return c.length>0&&(p.signatures[0].keyid=c),{apiVersion:"0.0.2",kind:"intoto",spec:{content:{envelope:p,hash:{algorithm:RD,value:s},payloadHash:{algorithm:RD,value:r}}}}}function oCt(e,t){let r={payloadType:e.payloadType,payload:e.payload.toString("base64"),signatures:[{sig:e.signatures[0].sig.toString("base64"),publicKey:t}]};return e.signatures[0].keyid.length>0&&(r.signatures[0].keyid=e.signatures[0].keyid),bg.crypto.digest(RD,bg.json.canonicalize(r)).toString("hex")}});var xSe=G(Ay=>{"use strict";Object.defineProperty(Ay,"__esModule",{value:!0});Ay.RekorWitness=Ay.DEFAULT_REKOR_URL=void 0;var aCt=Sg(),lCt=DSe(),cCt=PSe();Ay.DEFAULT_REKOR_URL="https://rekor.sigstore.dev";var g7=class{constructor(t){this.entryType=t.entryType,this.tlog=new lCt.TLogClient({...t,rekorBaseURL:t.rekorBaseURL||Ay.DEFAULT_REKOR_URL})}async testify(t,r){let s=(0,cCt.toProposedEntry)(t,r,this.entryType),a=await this.tlog.createEntry(s);return uCt(a)}};Ay.RekorWitness=g7;function uCt(e){let t=Buffer.from(e.logID,"hex"),r=aCt.encoding.base64Decode(e.body),s=JSON.parse(r),a=e?.verification?.signedEntryTimestamp?fCt(e.verification.signedEntryTimestamp):void 0,n=e?.verification?.inclusionProof?ACt(e.verification.inclusionProof):void 0;return{tlogEntries:[{logIndex:e.logIndex.toString(),logId:{keyId:t},integratedTime:e.integratedTime.toString(),kindVersion:{kind:s.kind,version:s.apiVersion},inclusionPromise:a,inclusionProof:n,canonicalizedBody:Buffer.from(e.body,"base64")}]}}function fCt(e){return{signedEntryTimestamp:Buffer.from(e,"base64")}}function ACt(e){return{logIndex:e.logIndex.toString(),treeSize:e.treeSize.toString(),rootHash:Buffer.from(e.rootHash,"hex"),hashes:e.hashes.map(t=>Buffer.from(t,"hex")),checkpoint:{envelope:e.checkpoint}}}});var kSe=G(IO=>{"use strict";Object.defineProperty(IO,"__esModule",{value:!0});IO.TimestampAuthority=void 0;var pCt=dO(),m7=class{constructor(t){this.options=t}async createTimestamp(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/timestamp`;return(await(0,pCt.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(t),timeout:s,retry:a})).buffer()}};IO.TimestampAuthority=m7});var TSe=G(CO=>{"use strict";Object.defineProperty(CO,"__esModule",{value:!0});CO.TSAClient=void 0;var hCt=Kw(),dCt=kSe(),gCt=Sg(),QSe="sha256",y7=class{constructor(t){this.tsa=new dCt.TimestampAuthority({baseURL:t.tsaBaseURL,retry:t.retry,timeout:t.timeout})}async createTimestamp(t){let r={artifactHash:gCt.crypto.digest(QSe,t).toString("base64"),hashAlgorithm:QSe};try{return await this.tsa.createTimestamp(r)}catch(s){(0,hCt.internalError)(s,"TSA_CREATE_TIMESTAMP_ERROR","error creating timestamp")}}};CO.TSAClient=y7});var RSe=G(wO=>{"use strict";Object.defineProperty(wO,"__esModule",{value:!0});wO.TSAWitness=void 0;var mCt=TSe(),E7=class{constructor(t){this.tsa=new mCt.TSAClient({tsaBaseURL:t.tsaBaseURL,retry:t.retry,timeout:t.timeout})}async testify(t){let r=yCt(t);return{rfc3161Timestamps:[{signedTimestamp:await this.tsa.createTimestamp(r)}]}}};wO.TSAWitness=E7;function yCt(e){switch(e.$case){case"dsseEnvelope":return e.dsseEnvelope.signatures[0].sig;case"messageSignature":return e.messageSignature.signature}}});var NSe=G(Dg=>{"use strict";Object.defineProperty(Dg,"__esModule",{value:!0});Dg.TSAWitness=Dg.RekorWitness=Dg.DEFAULT_REKOR_URL=void 0;var FSe=xSe();Object.defineProperty(Dg,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return FSe.DEFAULT_REKOR_URL}});Object.defineProperty(Dg,"RekorWitness",{enumerable:!0,get:function(){return FSe.RekorWitness}});var ECt=RSe();Object.defineProperty(Dg,"TSAWitness",{enumerable:!0,get:function(){return ECt.TSAWitness}})});var C7=G(ws=>{"use strict";Object.defineProperty(ws,"__esModule",{value:!0});ws.TSAWitness=ws.RekorWitness=ws.DEFAULT_REKOR_URL=ws.FulcioSigner=ws.DEFAULT_FULCIO_URL=ws.CIContextProvider=ws.InternalError=ws.MessageSignatureBundleBuilder=ws.DSSEBundleBuilder=void 0;var OSe=Zve();Object.defineProperty(ws,"DSSEBundleBuilder",{enumerable:!0,get:function(){return OSe.DSSEBundleBuilder}});Object.defineProperty(ws,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return OSe.MessageSignatureBundleBuilder}});var ICt=Kw();Object.defineProperty(ws,"InternalError",{enumerable:!0,get:function(){return ICt.InternalError}});var CCt=eSe();Object.defineProperty(ws,"CIContextProvider",{enumerable:!0,get:function(){return CCt.CIContextProvider}});var LSe=wSe();Object.defineProperty(ws,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return LSe.DEFAULT_FULCIO_URL}});Object.defineProperty(ws,"FulcioSigner",{enumerable:!0,get:function(){return LSe.FulcioSigner}});var I7=NSe();Object.defineProperty(ws,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return I7.DEFAULT_REKOR_URL}});Object.defineProperty(ws,"RekorWitness",{enumerable:!0,get:function(){return I7.RekorWitness}});Object.defineProperty(ws,"TSAWitness",{enumerable:!0,get:function(){return I7.TSAWitness}})});var USe=G(FD=>{"use strict";var MSe=FD&&FD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(FD,"__esModule",{value:!0});FD.appDataPath=BCt;var wCt=MSe(Ce("os")),Xw=MSe(Ce("path"));function BCt(e){let t=wCt.default.homedir();switch(process.platform){case"darwin":{let r=Xw.default.join(t,"Library","Application Support");return Xw.default.join(r,e)}case"win32":{let r=process.env.LOCALAPPDATA||Xw.default.join(t,"AppData","Local");return Xw.default.join(r,e,"Data")}default:{let r=process.env.XDG_DATA_HOME||Xw.default.join(t,".local","share");return Xw.default.join(r,e)}}}});var QA=G(kl=>{"use strict";Object.defineProperty(kl,"__esModule",{value:!0});kl.UnsupportedAlgorithmError=kl.CryptoError=kl.LengthOrHashMismatchError=kl.UnsignedMetadataError=kl.RepositoryError=kl.ValueError=void 0;var w7=class extends Error{};kl.ValueError=w7;var ND=class extends Error{};kl.RepositoryError=ND;var B7=class extends ND{};kl.UnsignedMetadataError=B7;var v7=class extends ND{};kl.LengthOrHashMismatchError=v7;var BO=class extends Error{};kl.CryptoError=BO;var S7=class extends BO{};kl.UnsupportedAlgorithmError=S7});var HSe=G(Pg=>{"use strict";Object.defineProperty(Pg,"__esModule",{value:!0});Pg.isDefined=vCt;Pg.isObject=_Se;Pg.isStringArray=SCt;Pg.isObjectArray=bCt;Pg.isStringRecord=DCt;Pg.isObjectRecord=PCt;function vCt(e){return e!==void 0}function _Se(e){return typeof e=="object"&&e!==null}function SCt(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function bCt(e){return Array.isArray(e)&&e.every(_Se)}function DCt(e){return typeof e=="object"&&e!==null&&Object.keys(e).every(t=>typeof t=="string")&&Object.values(e).every(t=>typeof t=="string")}function PCt(e){return typeof e=="object"&&e!==null&&Object.keys(e).every(t=>typeof t=="string")&&Object.values(e).every(t=>typeof t=="object"&&t!==null)}});var D7=G((qtr,qSe)=>{var jSe=",",xCt=":",kCt="[",QCt="]",TCt="{",RCt="}";function b7(e){let t=[];if(typeof e=="string")t.push(GSe(e));else if(typeof e=="boolean")t.push(JSON.stringify(e));else if(Number.isInteger(e))t.push(JSON.stringify(e));else if(e===null)t.push(JSON.stringify(e));else if(Array.isArray(e)){t.push(kCt);let r=!0;e.forEach(s=>{r||t.push(jSe),r=!1,t.push(b7(s))}),t.push(QCt)}else if(typeof e=="object"){t.push(TCt);let r=!0;Object.keys(e).sort().forEach(s=>{r||t.push(jSe),r=!1,t.push(GSe(s)),t.push(xCt),t.push(b7(e[s]))}),t.push(RCt)}else throw new TypeError("cannot encode "+e.toString());return t.join("")}function GSe(e){return'"'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'}qSe.exports={canonicalize:b7}});var YSe=G($w=>{"use strict";var FCt=$w&&$w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty($w,"__esModule",{value:!0});$w.verifySignature=void 0;var NCt=D7(),OCt=FCt(Ce("crypto")),LCt=(e,t,r)=>{let s=Buffer.from((0,NCt.canonicalize)(e));return OCt.default.verify(void 0,s,t,Buffer.from(r,"hex"))};$w.verifySignature=LCt});var hf=G(eu=>{"use strict";var MCt=eu&&eu.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),UCt=eu&&eu.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),WSe=eu&&eu.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&MCt(t,e,r);return UCt(t,e),t};Object.defineProperty(eu,"__esModule",{value:!0});eu.crypto=eu.guard=void 0;eu.guard=WSe(HSe());eu.crypto=WSe(YSe())});var py=G(dh=>{"use strict";var _Ct=dh&&dh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(dh,"__esModule",{value:!0});dh.Signed=dh.MetadataKind=void 0;dh.isMetadataKind=jCt;var HCt=_Ct(Ce("util")),OD=QA(),P7=hf(),VSe=["1","0","31"],x7;(function(e){e.Root="root",e.Timestamp="timestamp",e.Snapshot="snapshot",e.Targets="targets"})(x7||(dh.MetadataKind=x7={}));function jCt(e){return typeof e=="string"&&Object.values(x7).includes(e)}var k7=class e{constructor(t){this.specVersion=t.specVersion||VSe.join(".");let r=this.specVersion.split(".");if(!(r.length===2||r.length===3)||!r.every(s=>GCt(s)))throw new OD.ValueError("Failed to parse specVersion");if(r[0]!=VSe[0])throw new OD.ValueError("Unsupported specVersion");this.expires=t.expires,this.version=t.version,this.unrecognizedFields=t.unrecognizedFields||{}}equals(t){return t instanceof e?this.specVersion===t.specVersion&&this.expires===t.expires&&this.version===t.version&&HCt.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}isExpired(t){return t||(t=new Date),t>=new Date(this.expires)}static commonFieldsFromJSON(t){let{spec_version:r,expires:s,version:a,...n}=t;if(P7.guard.isDefined(r)){if(typeof r!="string")throw new TypeError("spec_version must be a string")}else throw new OD.ValueError("spec_version is not defined");if(P7.guard.isDefined(s)){if(typeof s!="string")throw new TypeError("expires must be a string")}else throw new OD.ValueError("expires is not defined");if(P7.guard.isDefined(a)){if(typeof a!="number")throw new TypeError("version must be a number")}else throw new OD.ValueError("version is not defined");return{specVersion:r,expires:s,version:a,unrecognizedFields:n}}};dh.Signed=k7;function GCt(e){return!isNaN(Number(e))}});var LD=G(kg=>{"use strict";var KSe=kg&&kg.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(kg,"__esModule",{value:!0});kg.TargetFile=kg.MetaFile=void 0;var JSe=KSe(Ce("crypto")),SO=KSe(Ce("util")),xg=QA(),vO=hf(),Q7=class e{constructor(t){if(t.version<=0)throw new xg.ValueError("Metafile version must be at least 1");t.length!==void 0&&zSe(t.length),this.version=t.version,this.length=t.length,this.hashes=t.hashes,this.unrecognizedFields=t.unrecognizedFields||{}}equals(t){return t instanceof e?this.version===t.version&&this.length===t.length&&SO.default.isDeepStrictEqual(this.hashes,t.hashes)&&SO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}verify(t){if(this.length!==void 0&&t.length!==this.length)throw new xg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${t.length}`);this.hashes&&Object.entries(this.hashes).forEach(([r,s])=>{let a;try{a=JSe.default.createHash(r)}catch{throw new xg.LengthOrHashMismatchError(`Hash algorithm ${r} not supported`)}let n=a.update(t).digest("hex");if(n!==s)throw new xg.LengthOrHashMismatchError(`Expected hash ${s} but got ${n}`)})}toJSON(){let t={version:this.version,...this.unrecognizedFields};return this.length!==void 0&&(t.length=this.length),this.hashes&&(t.hashes=this.hashes),t}static fromJSON(t){let{version:r,length:s,hashes:a,...n}=t;if(typeof r!="number")throw new TypeError("version must be a number");if(vO.guard.isDefined(s)&&typeof s!="number")throw new TypeError("length must be a number");if(vO.guard.isDefined(a)&&!vO.guard.isStringRecord(a))throw new TypeError("hashes must be string keys and values");return new e({version:r,length:s,hashes:a,unrecognizedFields:n})}};kg.MetaFile=Q7;var T7=class e{constructor(t){zSe(t.length),this.length=t.length,this.path=t.path,this.hashes=t.hashes,this.unrecognizedFields=t.unrecognizedFields||{}}get custom(){let t=this.unrecognizedFields.custom;return!t||Array.isArray(t)||typeof t!="object"?{}:t}equals(t){return t instanceof e?this.length===t.length&&this.path===t.path&&SO.default.isDeepStrictEqual(this.hashes,t.hashes)&&SO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}async verify(t){let r=0,s=Object.keys(this.hashes).reduce((a,n)=>{try{a[n]=JSe.default.createHash(n)}catch{throw new xg.LengthOrHashMismatchError(`Hash algorithm ${n} not supported`)}return a},{});for await(let a of t)r+=a.length,Object.values(s).forEach(n=>{n.update(a)});if(r!==this.length)throw new xg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${r}`);Object.entries(s).forEach(([a,n])=>{let c=this.hashes[a],f=n.digest("hex");if(f!==c)throw new xg.LengthOrHashMismatchError(`Expected hash ${c} but got ${f}`)})}toJSON(){return{length:this.length,hashes:this.hashes,...this.unrecognizedFields}}static fromJSON(t,r){let{length:s,hashes:a,...n}=r;if(typeof s!="number")throw new TypeError("length must be a number");if(!vO.guard.isStringRecord(a))throw new TypeError("hashes must have string keys and values");return new e({length:s,path:t,hashes:a,unrecognizedFields:n})}};kg.TargetFile=T7;function zSe(e){if(e<0)throw new xg.ValueError("Length must be at least 0")}});var ZSe=G(R7=>{"use strict";Object.defineProperty(R7,"__esModule",{value:!0});R7.encodeOIDString=YCt;var qCt=6;function YCt(e){let t=e.split("."),r=parseInt(t[0],10)*40+parseInt(t[1],10),s=[];t.slice(2).forEach(n=>{let c=WCt(parseInt(n,10));s.push(...c)});let a=Buffer.from([r,...s]);return Buffer.from([qCt,a.length,...a])}function WCt(e){let t=[],r=0;for(;e>0;)t.unshift(e&127|r),e>>=7,r=128;return t}});var tbe=G(UD=>{"use strict";var VCt=UD&&UD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(UD,"__esModule",{value:!0});UD.getPublicKey=ZCt;var e1=VCt(Ce("crypto")),MD=QA(),F7=ZSe(),bO=48,XSe=3,$Se=0,KCt="1.3.101.112",JCt="1.2.840.10045.2.1",zCt="1.2.840.10045.3.1.7",N7="-----BEGIN PUBLIC KEY-----";function ZCt(e){switch(e.keyType){case"rsa":return XCt(e);case"ed25519":return $Ct(e);case"ecdsa":case"ecdsa-sha2-nistp256":case"ecdsa-sha2-nistp384":return ewt(e);default:throw new MD.UnsupportedAlgorithmError(`Unsupported key type: ${e.keyType}`)}}function XCt(e){if(!e.keyVal.startsWith(N7))throw new MD.CryptoError("Invalid key format");let t=e1.default.createPublicKey(e.keyVal);switch(e.scheme){case"rsassa-pss-sha256":return{key:t,padding:e1.default.constants.RSA_PKCS1_PSS_PADDING};default:throw new MD.UnsupportedAlgorithmError(`Unsupported RSA scheme: ${e.scheme}`)}}function $Ct(e){let t;if(e.keyVal.startsWith(N7))t=e1.default.createPublicKey(e.keyVal);else{if(!ebe(e.keyVal))throw new MD.CryptoError("Invalid key format");t=e1.default.createPublicKey({key:twt.hexToDER(e.keyVal),format:"der",type:"spki"})}return{key:t}}function ewt(e){let t;if(e.keyVal.startsWith(N7))t=e1.default.createPublicKey(e.keyVal);else{if(!ebe(e.keyVal))throw new MD.CryptoError("Invalid key format");t=e1.default.createPublicKey({key:rwt.hexToDER(e.keyVal),format:"der",type:"spki"})}return{key:t}}var twt={hexToDER:e=>{let t=Buffer.from(e,"hex"),r=(0,F7.encodeOIDString)(KCt),s=Buffer.concat([Buffer.concat([Buffer.from([bO]),Buffer.from([r.length]),r]),Buffer.concat([Buffer.from([XSe]),Buffer.from([t.length+1]),Buffer.from([$Se]),t])]);return Buffer.concat([Buffer.from([bO]),Buffer.from([s.length]),s])}},rwt={hexToDER:e=>{let t=Buffer.from(e,"hex"),r=Buffer.concat([Buffer.from([XSe]),Buffer.from([t.length+1]),Buffer.from([$Se]),t]),s=Buffer.concat([(0,F7.encodeOIDString)(JCt),(0,F7.encodeOIDString)(zCt)]),a=Buffer.concat([Buffer.from([bO]),Buffer.from([s.length]),s]);return Buffer.concat([Buffer.from([bO]),Buffer.from([a.length+r.length]),a,r])}},ebe=e=>/^[0-9a-fA-F]+$/.test(e)});var DO=G(t1=>{"use strict";var nwt=t1&&t1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t1,"__esModule",{value:!0});t1.Key=void 0;var rbe=nwt(Ce("util")),_D=QA(),nbe=hf(),iwt=tbe(),O7=class e{constructor(t){let{keyID:r,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c}=t;this.keyID=r,this.keyType=s,this.scheme=a,this.keyVal=n,this.unrecognizedFields=c||{}}verifySignature(t){let r=t.signatures[this.keyID];if(!r)throw new _D.UnsignedMetadataError("no signature for key found in metadata");if(!this.keyVal.public)throw new _D.UnsignedMetadataError("no public key found");let s=(0,iwt.getPublicKey)({keyType:this.keyType,scheme:this.scheme,keyVal:this.keyVal.public}),a=t.signed.toJSON();try{if(!nbe.crypto.verifySignature(a,s,r.sig))throw new _D.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}catch(n){throw n instanceof _D.UnsignedMetadataError?n:new _D.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}}equals(t){return t instanceof e?this.keyID===t.keyID&&this.keyType===t.keyType&&this.scheme===t.scheme&&rbe.default.isDeepStrictEqual(this.keyVal,t.keyVal)&&rbe.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}toJSON(){return{keytype:this.keyType,scheme:this.scheme,keyval:this.keyVal,...this.unrecognizedFields}}static fromJSON(t,r){let{keytype:s,scheme:a,keyval:n,...c}=r;if(typeof s!="string")throw new TypeError("keytype must be a string");if(typeof a!="string")throw new TypeError("scheme must be a string");if(!nbe.guard.isStringRecord(n))throw new TypeError("keyval must be a string record");return new e({keyID:t,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c})}};t1.Key=O7});var lbe=G((Xtr,abe)=>{"use strict";abe.exports=sbe;function sbe(e,t,r){e instanceof RegExp&&(e=ibe(e,r)),t instanceof RegExp&&(t=ibe(t,r));var s=obe(e,t,r);return s&&{start:s[0],end:s[1],pre:r.slice(0,s[0]),body:r.slice(s[0]+e.length,s[1]),post:r.slice(s[1]+t.length)}}function ibe(e,t){var r=t.match(e);return r?r[0]:null}sbe.range=obe;function obe(e,t,r){var s,a,n,c,f,p=r.indexOf(e),h=r.indexOf(t,p+1),E=p;if(p>=0&&h>0){for(s=[],n=r.length;E>=0&&!f;)E==p?(s.push(E),p=r.indexOf(e,E+1)):s.length==1?f=[s.pop(),h]:(a=s.pop(),a=0?p:h;s.length&&(f=[n,c])}return f}});var gbe=G(($tr,dbe)=>{var cbe=lbe();dbe.exports=awt;var ube="\0SLASH"+Math.random()+"\0",fbe="\0OPEN"+Math.random()+"\0",M7="\0CLOSE"+Math.random()+"\0",Abe="\0COMMA"+Math.random()+"\0",pbe="\0PERIOD"+Math.random()+"\0";function L7(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function swt(e){return e.split("\\\\").join(ube).split("\\{").join(fbe).split("\\}").join(M7).split("\\,").join(Abe).split("\\.").join(pbe)}function owt(e){return e.split(ube).join("\\").split(fbe).join("{").split(M7).join("}").split(Abe).join(",").split(pbe).join(".")}function hbe(e){if(!e)return[""];var t=[],r=cbe("{","}",e);if(!r)return e.split(",");var s=r.pre,a=r.body,n=r.post,c=s.split(",");c[c.length-1]+="{"+a+"}";var f=hbe(n);return n.length&&(c[c.length-1]+=f.shift(),c.push.apply(c,f)),t.push.apply(t,c),t}function awt(e){return e?(e.substr(0,2)==="{}"&&(e="\\{\\}"+e.substr(2)),HD(swt(e),!0).map(owt)):[]}function lwt(e){return"{"+e+"}"}function cwt(e){return/^-?0\d/.test(e)}function uwt(e,t){return e<=t}function fwt(e,t){return e>=t}function HD(e,t){var r=[],s=cbe("{","}",e);if(!s)return[e];var a=s.pre,n=s.post.length?HD(s.post,!1):[""];if(/\$$/.test(s.pre))for(var c=0;c=0;if(!E&&!C)return s.post.match(/,.*\}/)?(e=s.pre+"{"+s.body+M7+s.post,HD(e)):[e];var S;if(E)S=s.body.split(/\.\./);else if(S=hbe(s.body),S.length===1&&(S=HD(S[0],!1).map(lwt),S.length===1))return n.map(function(ye){return s.pre+S[0]+ye});var x;if(E){var I=L7(S[0]),R=L7(S[1]),N=Math.max(S[0].length,S[1].length),U=S.length==3?Math.abs(L7(S[2])):1,K=uwt,$=R0){var pe=new Array(ge+1).join("0");fe<0?le="-"+pe+le.slice(1):le=pe+le}}x.push(le)}}else{x=[];for(var De=0;De{"use strict";Object.defineProperty(PO,"__esModule",{value:!0});PO.assertValidPattern=void 0;var Awt=1024*64,pwt=e=>{if(typeof e!="string")throw new TypeError("invalid pattern");if(e.length>Awt)throw new TypeError("pattern is too long")};PO.assertValidPattern=pwt});var Ebe=G(xO=>{"use strict";Object.defineProperty(xO,"__esModule",{value:!0});xO.parseClass=void 0;var hwt={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},jD=e=>e.replace(/[[\]\\-]/g,"\\$&"),dwt=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),ybe=e=>e.join(""),gwt=(e,t)=>{let r=t;if(e.charAt(r)!=="[")throw new Error("not in a brace expression");let s=[],a=[],n=r+1,c=!1,f=!1,p=!1,h=!1,E=r,C="";e:for(;nC?s.push(jD(C)+"-"+jD(R)):R===C&&s.push(jD(R)),C="",n++;continue}if(e.startsWith("-]",n+1)){s.push(jD(R+"-")),n+=2;continue}if(e.startsWith("-",n+1)){C=R,n+=2;continue}s.push(jD(R)),n++}if(E{"use strict";Object.defineProperty(kO,"__esModule",{value:!0});kO.unescape=void 0;var mwt=(e,{windowsPathsNoEscape:t=!1}={})=>t?e.replace(/\[([^\/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");kO.unescape=mwt});var H7=G(FO=>{"use strict";Object.defineProperty(FO,"__esModule",{value:!0});FO.AST=void 0;var ywt=Ebe(),TO=QO(),Ewt=new Set(["!","?","+","*","@"]),Ibe=e=>Ewt.has(e),Iwt="(?!(?:^|/)\\.\\.?(?:$|/))",RO="(?!\\.)",Cwt=new Set(["[","."]),wwt=new Set(["..","."]),Bwt=new Set("().*{}+?[]^$\\!"),vwt=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),_7="[^/]",Cbe=_7+"*?",wbe=_7+"+?",U7=class e{type;#e;#t;#s=!1;#r=[];#i;#n;#o;#l=!1;#a;#c;#f=!1;constructor(t,r,s={}){this.type=t,t&&(this.#t=!0),this.#i=r,this.#e=this.#i?this.#i.#e:this,this.#a=this.#e===this?s:this.#e.#a,this.#o=this.#e===this?[]:this.#e.#o,t==="!"&&!this.#e.#l&&this.#o.push(this),this.#n=this.#i?this.#i.#r.length:0}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let t of this.#r)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#t=!0;return this.#t}toString(){return this.#c!==void 0?this.#c:this.type?this.#c=this.type+"("+this.#r.map(t=>String(t)).join("|")+")":this.#c=this.#r.map(t=>String(t)).join("")}#p(){if(this!==this.#e)throw new Error("should only call on root");if(this.#l)return this;this.toString(),this.#l=!0;let t;for(;t=this.#o.pop();){if(t.type!=="!")continue;let r=t,s=r.#i;for(;s;){for(let a=r.#n+1;!s.type&&atypeof r=="string"?r:r.toJSON()):[this.type,...this.#r.map(r=>r.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#l&&this.#i?.type==="!")&&t.push({}),t}isStart(){if(this.#e===this)return!0;if(!this.#i?.isStart())return!1;if(this.#n===0)return!0;let t=this.#i;for(let r=0;r{let[I,R,N,U]=typeof x=="string"?e.#h(x,this.#t,p):x.toRegExpSource(t);return this.#t=this.#t||N,this.#s=this.#s||U,I}).join(""),E="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&wwt.has(this.#r[0]))){let I=Cwt,R=r&&I.has(h.charAt(0))||h.startsWith("\\.")&&I.has(h.charAt(2))||h.startsWith("\\.\\.")&&I.has(h.charAt(4)),N=!r&&!t&&I.has(h.charAt(0));E=R?Iwt:N?RO:""}let C="";return this.isEnd()&&this.#e.#l&&this.#i?.type==="!"&&(C="(?:$|\\/)"),[E+h+C,(0,TO.unescape)(h),this.#t=!!this.#t,this.#s]}let s=this.type==="*"||this.type==="+",a=this.type==="!"?"(?:(?!(?:":"(?:",n=this.#A(r);if(this.isStart()&&this.isEnd()&&!n&&this.type!=="!"){let p=this.toString();return this.#r=[p],this.type=null,this.#t=void 0,[p,(0,TO.unescape)(this.toString()),!1,!1]}let c=!s||t||r||!RO?"":this.#A(!0);c===n&&(c=""),c&&(n=`(?:${n})(?:${c})*?`);let f="";if(this.type==="!"&&this.#f)f=(this.isStart()&&!r?RO:"")+wbe;else{let p=this.type==="!"?"))"+(this.isStart()&&!r&&!t?RO:"")+Cbe+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&c?")":this.type==="*"&&c?")?":`)${this.type}`;f=a+n+p}return[f,(0,TO.unescape)(n),this.#t=!!this.#t,this.#s]}#A(t){return this.#r.map(r=>{if(typeof r=="string")throw new Error("string type in extglob ast??");let[s,a,n,c]=r.toRegExpSource(t);return this.#s=this.#s||c,s}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join("|")}static#h(t,r,s=!1){let a=!1,n="",c=!1;for(let f=0;f{"use strict";Object.defineProperty(NO,"__esModule",{value:!0});NO.escape=void 0;var Swt=(e,{windowsPathsNoEscape:t=!1}={})=>t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&");NO.escape=Swt});var xbe=G(hr=>{"use strict";var bwt=hr&&hr.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(hr,"__esModule",{value:!0});hr.unescape=hr.escape=hr.AST=hr.Minimatch=hr.match=hr.makeRe=hr.braceExpand=hr.defaults=hr.filter=hr.GLOBSTAR=hr.sep=hr.minimatch=void 0;var Dwt=bwt(gbe()),OO=mbe(),Sbe=H7(),Pwt=j7(),xwt=QO(),kwt=(e,t,r={})=>((0,OO.assertValidPattern)(t),!r.nocomment&&t.charAt(0)==="#"?!1:new hy(t,r).match(e));hr.minimatch=kwt;var Qwt=/^\*+([^+@!?\*\[\(]*)$/,Twt=e=>t=>!t.startsWith(".")&&t.endsWith(e),Rwt=e=>t=>t.endsWith(e),Fwt=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),Nwt=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),Owt=/^\*+\.\*+$/,Lwt=e=>!e.startsWith(".")&&e.includes("."),Mwt=e=>e!=="."&&e!==".."&&e.includes("."),Uwt=/^\.\*+$/,_wt=e=>e!=="."&&e!==".."&&e.startsWith("."),Hwt=/^\*+$/,jwt=e=>e.length!==0&&!e.startsWith("."),Gwt=e=>e.length!==0&&e!=="."&&e!=="..",qwt=/^\?+([^+@!?\*\[\(]*)?$/,Ywt=([e,t=""])=>{let r=bbe([e]);return t?(t=t.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(t)):r},Wwt=([e,t=""])=>{let r=Dbe([e]);return t?(t=t.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(t)):r},Vwt=([e,t=""])=>{let r=Dbe([e]);return t?s=>r(s)&&s.endsWith(t):r},Kwt=([e,t=""])=>{let r=bbe([e]);return t?s=>r(s)&&s.endsWith(t):r},bbe=([e])=>{let t=e.length;return r=>r.length===t&&!r.startsWith(".")},Dbe=([e])=>{let t=e.length;return r=>r.length===t&&r!=="."&&r!==".."},Pbe=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",Bbe={win32:{sep:"\\"},posix:{sep:"/"}};hr.sep=Pbe==="win32"?Bbe.win32.sep:Bbe.posix.sep;hr.minimatch.sep=hr.sep;hr.GLOBSTAR=Symbol("globstar **");hr.minimatch.GLOBSTAR=hr.GLOBSTAR;var Jwt="[^/]",zwt=Jwt+"*?",Zwt="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",Xwt="(?:(?!(?:\\/|^)\\.).)*?",$wt=(e,t={})=>r=>(0,hr.minimatch)(r,e,t);hr.filter=$wt;hr.minimatch.filter=hr.filter;var tu=(e,t={})=>Object.assign({},e,t),e1t=e=>{if(!e||typeof e!="object"||!Object.keys(e).length)return hr.minimatch;let t=hr.minimatch;return Object.assign((s,a,n={})=>t(s,a,tu(e,n)),{Minimatch:class extends t.Minimatch{constructor(a,n={}){super(a,tu(e,n))}static defaults(a){return t.defaults(tu(e,a)).Minimatch}},AST:class extends t.AST{constructor(a,n,c={}){super(a,n,tu(e,c))}static fromGlob(a,n={}){return t.AST.fromGlob(a,tu(e,n))}},unescape:(s,a={})=>t.unescape(s,tu(e,a)),escape:(s,a={})=>t.escape(s,tu(e,a)),filter:(s,a={})=>t.filter(s,tu(e,a)),defaults:s=>t.defaults(tu(e,s)),makeRe:(s,a={})=>t.makeRe(s,tu(e,a)),braceExpand:(s,a={})=>t.braceExpand(s,tu(e,a)),match:(s,a,n={})=>t.match(s,a,tu(e,n)),sep:t.sep,GLOBSTAR:hr.GLOBSTAR})};hr.defaults=e1t;hr.minimatch.defaults=hr.defaults;var t1t=(e,t={})=>((0,OO.assertValidPattern)(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:(0,Dwt.default)(e));hr.braceExpand=t1t;hr.minimatch.braceExpand=hr.braceExpand;var r1t=(e,t={})=>new hy(e,t).makeRe();hr.makeRe=r1t;hr.minimatch.makeRe=hr.makeRe;var n1t=(e,t,r={})=>{let s=new hy(t,r);return e=e.filter(a=>s.match(a)),s.options.nonull&&!e.length&&e.push(t),e};hr.match=n1t;hr.minimatch.match=hr.match;var vbe=/[?*]|[+@!]\(.*?\)|\[|\]/,i1t=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),hy=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,r={}){(0,OO.assertValidPattern)(t),r=r||{},this.options=r,this.pattern=t,this.platform=r.platform||Pbe,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let r of t)if(typeof r!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,r=this.options;if(!r.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...n)=>console.error(...n)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(n=>this.slashSplit(n));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let a=this.globParts.map((n,c,f)=>{if(this.isWindows&&this.windowsNoMagicRoot){let p=n[0]===""&&n[1]===""&&(n[2]==="?"||!vbe.test(n[2]))&&!vbe.test(n[3]),h=/^[a-z]:/i.test(n[0]);if(p)return[...n.slice(0,4),...n.slice(4).map(E=>this.parse(E))];if(h)return[n[0],...n.slice(1).map(E=>this.parse(E))]}return n.map(p=>this.parse(p))});if(this.debug(this.pattern,a),this.set=a.filter(n=>n.indexOf(!1)===-1),this.isWindows)for(let n=0;n=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):r>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(r=>{let s=-1;for(;(s=r.indexOf("**",s+1))!==-1;){let a=s;for(;r[a+1]==="**";)a++;a!==s&&r.splice(s,a-s)}return r})}levelOneOptimize(t){return t.map(r=>(r=r.reduce((s,a)=>{let n=s[s.length-1];return a==="**"&&n==="**"?s:a===".."&&n&&n!==".."&&n!=="."&&n!=="**"?(s.pop(),s):(s.push(a),s)},[]),r.length===0?[""]:r))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let a=1;aa&&s.splice(a+1,c-a);let f=s[a+1],p=s[a+2],h=s[a+3];if(f!==".."||!p||p==="."||p===".."||!h||h==="."||h==="..")continue;r=!0,s.splice(a,1);let E=s.slice(0);E[a]="**",t.push(E),a--}if(!this.preserveMultipleSlashes){for(let c=1;cr.length)}partsMatch(t,r,s=!1){let a=0,n=0,c=[],f="";for(;a$?r=r.slice(ie):$>ie&&(t=t.slice($)))}}let{optimizationLevel:n=1}=this.options;n>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:r}),this.debug("matchOne",t.length,r.length);for(var c=0,f=0,p=t.length,h=r.length;c>> no match, partial?`,t,S,r,x),S===p))}let R;if(typeof E=="string"?(R=C===E,this.debug("string match",E,C,R)):(R=E.test(C),this.debug("pattern match",E,C,R)),!R)return!1}if(c===p&&f===h)return!0;if(c===p)return s;if(f===h)return c===p-1&&t[c]==="";throw new Error("wtf?")}braceExpand(){return(0,hr.braceExpand)(this.pattern,this.options)}parse(t){(0,OO.assertValidPattern)(t);let r=this.options;if(t==="**")return hr.GLOBSTAR;if(t==="")return"";let s,a=null;(s=t.match(Hwt))?a=r.dot?Gwt:jwt:(s=t.match(Qwt))?a=(r.nocase?r.dot?Nwt:Fwt:r.dot?Rwt:Twt)(s[1]):(s=t.match(qwt))?a=(r.nocase?r.dot?Wwt:Ywt:r.dot?Vwt:Kwt)(s):(s=t.match(Owt))?a=r.dot?Mwt:Lwt:(s=t.match(Uwt))&&(a=_wt);let n=Sbe.AST.fromGlob(t,this.options).toMMPattern();return a&&typeof n=="object"&&Reflect.defineProperty(n,"test",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let r=this.options,s=r.noglobstar?zwt:r.dot?Zwt:Xwt,a=new Set(r.nocase?["i"]:[]),n=t.map(p=>{let h=p.map(E=>{if(E instanceof RegExp)for(let C of E.flags.split(""))a.add(C);return typeof E=="string"?i1t(E):E===hr.GLOBSTAR?hr.GLOBSTAR:E._src});return h.forEach((E,C)=>{let S=h[C+1],x=h[C-1];E!==hr.GLOBSTAR||x===hr.GLOBSTAR||(x===void 0?S!==void 0&&S!==hr.GLOBSTAR?h[C+1]="(?:\\/|"+s+"\\/)?"+S:h[C]=s:S===void 0?h[C-1]=x+"(?:\\/|"+s+")?":S!==hr.GLOBSTAR&&(h[C-1]=x+"(?:\\/|\\/"+s+"\\/)"+S,h[C+1]=hr.GLOBSTAR))}),h.filter(E=>E!==hr.GLOBSTAR).join("/")}).join("|"),[c,f]=t.length>1?["(?:",")"]:["",""];n="^"+c+n+f+"$",this.negate&&(n="^(?!"+n+").+$");try{this.regexp=new RegExp(n,[...a].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,r=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&r)return!0;let s=this.options;this.isWindows&&(t=t.split("\\").join("/"));let a=this.slashSplit(t);this.debug(this.pattern,"split",a);let n=this.set;this.debug(this.pattern,"set",n);let c=a[a.length-1];if(!c)for(let f=a.length-2;!c&&f>=0;f--)c=a[f];for(let f=0;f{"use strict";var kbe=ru&&ru.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ru,"__esModule",{value:!0});ru.SuccinctRoles=ru.DelegatedRole=ru.Role=ru.TOP_LEVEL_ROLE_NAMES=void 0;var Qbe=kbe(Ce("crypto")),l1t=xbe(),LO=kbe(Ce("util")),MO=QA(),dy=hf();ru.TOP_LEVEL_ROLE_NAMES=["root","targets","snapshot","timestamp"];var GD=class e{constructor(t){let{keyIDs:r,threshold:s,unrecognizedFields:a}=t;if(c1t(r))throw new MO.ValueError("duplicate key IDs found");if(s<1)throw new MO.ValueError("threshold must be at least 1");this.keyIDs=r,this.threshold=s,this.unrecognizedFields=a||{}}equals(t){return t instanceof e?this.threshold===t.threshold&&LO.default.isDeepStrictEqual(this.keyIDs,t.keyIDs)&&LO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}toJSON(){return{keyids:this.keyIDs,threshold:this.threshold,...this.unrecognizedFields}}static fromJSON(t){let{keyids:r,threshold:s,...a}=t;if(!dy.guard.isStringArray(r))throw new TypeError("keyids must be an array");if(typeof s!="number")throw new TypeError("threshold must be a number");return new e({keyIDs:r,threshold:s,unrecognizedFields:a})}};ru.Role=GD;function c1t(e){return new Set(e).size!==e.length}var G7=class e extends GD{constructor(t){super(t);let{name:r,terminating:s,paths:a,pathHashPrefixes:n}=t;if(this.name=r,this.terminating=s,t.paths&&t.pathHashPrefixes)throw new MO.ValueError("paths and pathHashPrefixes are mutually exclusive");this.paths=a,this.pathHashPrefixes=n}equals(t){return t instanceof e?super.equals(t)&&this.name===t.name&&this.terminating===t.terminating&&LO.default.isDeepStrictEqual(this.paths,t.paths)&&LO.default.isDeepStrictEqual(this.pathHashPrefixes,t.pathHashPrefixes):!1}isDelegatedPath(t){if(this.paths)return this.paths.some(r=>f1t(t,r));if(this.pathHashPrefixes){let s=Qbe.default.createHash("sha256").update(t).digest("hex");return this.pathHashPrefixes.some(a=>s.startsWith(a))}return!1}toJSON(){let t={...super.toJSON(),name:this.name,terminating:this.terminating};return this.paths&&(t.paths=this.paths),this.pathHashPrefixes&&(t.path_hash_prefixes=this.pathHashPrefixes),t}static fromJSON(t){let{keyids:r,threshold:s,name:a,terminating:n,paths:c,path_hash_prefixes:f,...p}=t;if(!dy.guard.isStringArray(r))throw new TypeError("keyids must be an array of strings");if(typeof s!="number")throw new TypeError("threshold must be a number");if(typeof a!="string")throw new TypeError("name must be a string");if(typeof n!="boolean")throw new TypeError("terminating must be a boolean");if(dy.guard.isDefined(c)&&!dy.guard.isStringArray(c))throw new TypeError("paths must be an array of strings");if(dy.guard.isDefined(f)&&!dy.guard.isStringArray(f))throw new TypeError("path_hash_prefixes must be an array of strings");return new e({keyIDs:r,threshold:s,name:a,terminating:n,paths:c,pathHashPrefixes:f,unrecognizedFields:p})}};ru.DelegatedRole=G7;var u1t=(e,t)=>e.map((r,s)=>[r,t[s]]);function f1t(e,t){let r=e.split("/"),s=t.split("/");return s.length!=r.length?!1:u1t(r,s).every(([a,n])=>(0,l1t.minimatch)(a,n))}var q7=class e extends GD{constructor(t){super(t);let{bitLength:r,namePrefix:s}=t;if(r<=0||r>32)throw new MO.ValueError("bitLength must be between 1 and 32");this.bitLength=r,this.namePrefix=s,this.numberOfBins=Math.pow(2,r),this.suffixLen=(this.numberOfBins-1).toString(16).length}equals(t){return t instanceof e?super.equals(t)&&this.bitLength===t.bitLength&&this.namePrefix===t.namePrefix:!1}getRoleForTarget(t){let a=Qbe.default.createHash("sha256").update(t).digest().subarray(0,4),n=32-this.bitLength,f=(a.readUInt32BE()>>>n).toString(16).padStart(this.suffixLen,"0");return`${this.namePrefix}-${f}`}*getRoles(){for(let t=0;t{"use strict";var A1t=r1&&r1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r1,"__esModule",{value:!0});r1.Root=void 0;var Tbe=A1t(Ce("util")),W7=py(),Rbe=QA(),p1t=DO(),UO=Y7(),_O=hf(),V7=class e extends W7.Signed{constructor(t){if(super(t),this.type=W7.MetadataKind.Root,this.keys=t.keys||{},this.consistentSnapshot=t.consistentSnapshot??!0,!t.roles)this.roles=UO.TOP_LEVEL_ROLE_NAMES.reduce((r,s)=>({...r,[s]:new UO.Role({keyIDs:[],threshold:1})}),{});else{let r=new Set(Object.keys(t.roles));if(!UO.TOP_LEVEL_ROLE_NAMES.every(s=>r.has(s)))throw new Rbe.ValueError("missing top-level role");this.roles=t.roles}}addKey(t,r){if(!this.roles[r])throw new Rbe.ValueError(`role ${r} does not exist`);this.roles[r].keyIDs.includes(t.keyID)||this.roles[r].keyIDs.push(t.keyID),this.keys[t.keyID]=t}equals(t){return t instanceof e?super.equals(t)&&this.consistentSnapshot===t.consistentSnapshot&&Tbe.default.isDeepStrictEqual(this.keys,t.keys)&&Tbe.default.isDeepStrictEqual(this.roles,t.roles):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,keys:h1t(this.keys),roles:d1t(this.roles),consistent_snapshot:this.consistentSnapshot,...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=W7.Signed.commonFieldsFromJSON(t),{keys:a,roles:n,consistent_snapshot:c,...f}=r;if(typeof c!="boolean")throw new TypeError("consistent_snapshot must be a boolean");return new e({...s,keys:g1t(a),roles:m1t(n),consistentSnapshot:c,unrecognizedFields:f})}};r1.Root=V7;function h1t(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function d1t(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function g1t(e){let t;if(_O.guard.isDefined(e)){if(!_O.guard.isObjectRecord(e))throw new TypeError("keys must be an object");t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:p1t.Key.fromJSON(s,a)}),{})}return t}function m1t(e){let t;if(_O.guard.isDefined(e)){if(!_O.guard.isObjectRecord(e))throw new TypeError("roles must be an object");t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:UO.Role.fromJSON(a)}),{})}return t}});var z7=G(HO=>{"use strict";Object.defineProperty(HO,"__esModule",{value:!0});HO.Signature=void 0;var J7=class e{constructor(t){let{keyID:r,sig:s}=t;this.keyID=r,this.sig=s}toJSON(){return{keyid:this.keyID,sig:this.sig}}static fromJSON(t){let{keyid:r,sig:s}=t;if(typeof r!="string")throw new TypeError("keyid must be a string");if(typeof s!="string")throw new TypeError("sig must be a string");return new e({keyID:r,sig:s})}};HO.Signature=J7});var $7=G(n1=>{"use strict";var y1t=n1&&n1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n1,"__esModule",{value:!0});n1.Snapshot=void 0;var E1t=y1t(Ce("util")),Z7=py(),Nbe=LD(),Fbe=hf(),X7=class e extends Z7.Signed{constructor(t){super(t),this.type=Z7.MetadataKind.Snapshot,this.meta=t.meta||{"targets.json":new Nbe.MetaFile({version:1})}}equals(t){return t instanceof e?super.equals(t)&&E1t.default.isDeepStrictEqual(this.meta,t.meta):!1}toJSON(){return{_type:this.type,meta:I1t(this.meta),spec_version:this.specVersion,version:this.version,expires:this.expires,...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=Z7.Signed.commonFieldsFromJSON(t),{meta:a,...n}=r;return new e({...s,meta:C1t(a),unrecognizedFields:n})}};n1.Snapshot=X7;function I1t(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function C1t(e){let t;if(Fbe.guard.isDefined(e))if(Fbe.guard.isObjectRecord(e))t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:Nbe.MetaFile.fromJSON(a)}),{});else throw new TypeError("meta field is malformed");return t}});var Obe=G(i1=>{"use strict";var w1t=i1&&i1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(i1,"__esModule",{value:!0});i1.Delegations=void 0;var jO=w1t(Ce("util")),B1t=QA(),v1t=DO(),eK=Y7(),GO=hf(),tK=class e{constructor(t){if(this.keys=t.keys,this.unrecognizedFields=t.unrecognizedFields||{},t.roles&&Object.keys(t.roles).some(r=>eK.TOP_LEVEL_ROLE_NAMES.includes(r)))throw new B1t.ValueError("Delegated role name conflicts with top-level role name");this.succinctRoles=t.succinctRoles,this.roles=t.roles}equals(t){return t instanceof e?jO.default.isDeepStrictEqual(this.keys,t.keys)&&jO.default.isDeepStrictEqual(this.roles,t.roles)&&jO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields)&&jO.default.isDeepStrictEqual(this.succinctRoles,t.succinctRoles):!1}*rolesForTarget(t){if(this.roles)for(let r of Object.values(this.roles))r.isDelegatedPath(t)&&(yield{role:r.name,terminating:r.terminating});else this.succinctRoles&&(yield{role:this.succinctRoles.getRoleForTarget(t),terminating:!0})}toJSON(){let t={keys:S1t(this.keys),...this.unrecognizedFields};return this.roles?t.roles=b1t(this.roles):this.succinctRoles&&(t.succinct_roles=this.succinctRoles.toJSON()),t}static fromJSON(t){let{keys:r,roles:s,succinct_roles:a,...n}=t,c;return GO.guard.isObject(a)&&(c=eK.SuccinctRoles.fromJSON(a)),new e({keys:D1t(r),roles:P1t(s),unrecognizedFields:n,succinctRoles:c})}};i1.Delegations=tK;function S1t(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function b1t(e){return Object.values(e).map(t=>t.toJSON())}function D1t(e){if(!GO.guard.isObjectRecord(e))throw new TypeError("keys is malformed");return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:v1t.Key.fromJSON(r,s)}),{})}function P1t(e){let t;if(GO.guard.isDefined(e)){if(!GO.guard.isObjectArray(e))throw new TypeError("roles is malformed");t=e.reduce((r,s)=>{let a=eK.DelegatedRole.fromJSON(s);return{...r,[a.name]:a}},{})}return t}});var iK=G(s1=>{"use strict";var x1t=s1&&s1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(s1,"__esModule",{value:!0});s1.Targets=void 0;var Lbe=x1t(Ce("util")),rK=py(),k1t=Obe(),Q1t=LD(),qO=hf(),nK=class e extends rK.Signed{constructor(t){super(t),this.type=rK.MetadataKind.Targets,this.targets=t.targets||{},this.delegations=t.delegations}addTarget(t){this.targets[t.path]=t}equals(t){return t instanceof e?super.equals(t)&&Lbe.default.isDeepStrictEqual(this.targets,t.targets)&&Lbe.default.isDeepStrictEqual(this.delegations,t.delegations):!1}toJSON(){let t={_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,targets:T1t(this.targets),...this.unrecognizedFields};return this.delegations&&(t.delegations=this.delegations.toJSON()),t}static fromJSON(t){let{unrecognizedFields:r,...s}=rK.Signed.commonFieldsFromJSON(t),{targets:a,delegations:n,...c}=r;return new e({...s,targets:R1t(a),delegations:F1t(n),unrecognizedFields:c})}};s1.Targets=nK;function T1t(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function R1t(e){let t;if(qO.guard.isDefined(e))if(qO.guard.isObjectRecord(e))t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:Q1t.TargetFile.fromJSON(s,a)}),{});else throw new TypeError("targets must be an object");return t}function F1t(e){let t;if(qO.guard.isDefined(e))if(qO.guard.isObject(e))t=k1t.Delegations.fromJSON(e);else throw new TypeError("delegations must be an object");return t}});var lK=G(YO=>{"use strict";Object.defineProperty(YO,"__esModule",{value:!0});YO.Timestamp=void 0;var sK=py(),Mbe=LD(),oK=hf(),aK=class e extends sK.Signed{constructor(t){super(t),this.type=sK.MetadataKind.Timestamp,this.snapshotMeta=t.snapshotMeta||new Mbe.MetaFile({version:1})}equals(t){return t instanceof e?super.equals(t)&&this.snapshotMeta.equals(t.snapshotMeta):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,meta:{"snapshot.json":this.snapshotMeta.toJSON()},...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=sK.Signed.commonFieldsFromJSON(t),{meta:a,...n}=r;return new e({...s,snapshotMeta:N1t(a),unrecognizedFields:n})}};YO.Timestamp=aK;function N1t(e){let t;if(oK.guard.isDefined(e)){let r=e["snapshot.json"];if(!oK.guard.isDefined(r)||!oK.guard.isObject(r))throw new TypeError("missing snapshot.json in meta");t=Mbe.MetaFile.fromJSON(r)}return t}});var _be=G(a1=>{"use strict";var O1t=a1&&a1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a1,"__esModule",{value:!0});a1.Metadata=void 0;var L1t=D7(),Ube=O1t(Ce("util")),o1=py(),qD=QA(),M1t=K7(),U1t=z7(),_1t=$7(),H1t=iK(),j1t=lK(),cK=hf(),uK=class e{constructor(t,r,s){this.signed=t,this.signatures=r||{},this.unrecognizedFields=s||{}}sign(t,r=!0){let s=Buffer.from((0,L1t.canonicalize)(this.signed.toJSON())),a=t(s);r||(this.signatures={}),this.signatures[a.keyID]=a}verifyDelegate(t,r){let s,a={};switch(this.signed.type){case o1.MetadataKind.Root:a=this.signed.keys,s=this.signed.roles[t];break;case o1.MetadataKind.Targets:if(!this.signed.delegations)throw new qD.ValueError(`No delegations found for ${t}`);a=this.signed.delegations.keys,this.signed.delegations.roles?s=this.signed.delegations.roles[t]:this.signed.delegations.succinctRoles&&this.signed.delegations.succinctRoles.isDelegatedRole(t)&&(s=this.signed.delegations.succinctRoles);break;default:throw new TypeError("invalid metadata type")}if(!s)throw new qD.ValueError(`no delegation found for ${t}`);let n=new Set;if(s.keyIDs.forEach(c=>{let f=a[c];if(f)try{f.verifySignature(r),n.add(f.keyID)}catch{}}),n.sizer.toJSON()),signed:this.signed.toJSON(),...this.unrecognizedFields}}static fromJSON(t,r){let{signed:s,signatures:a,...n}=r;if(!cK.guard.isDefined(s)||!cK.guard.isObject(s))throw new TypeError("signed is not defined");if(t!==s._type)throw new qD.ValueError(`expected '${t}', got ${s._type}`);if(!cK.guard.isObjectArray(a))throw new TypeError("signatures is not an array");let c;switch(t){case o1.MetadataKind.Root:c=M1t.Root.fromJSON(s);break;case o1.MetadataKind.Timestamp:c=j1t.Timestamp.fromJSON(s);break;case o1.MetadataKind.Snapshot:c=_1t.Snapshot.fromJSON(s);break;case o1.MetadataKind.Targets:c=H1t.Targets.fromJSON(s);break;default:throw new TypeError("invalid metadata type")}let f={};return a.forEach(p=>{let h=U1t.Signature.fromJSON(p);if(f[h.keyID])throw new qD.ValueError(`multiple signatures found for keyid: ${h.keyID}`);f[h.keyID]=h}),new e(c,f,n)}};a1.Metadata=uK});var WO=G(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.Timestamp=Fi.Targets=Fi.Snapshot=Fi.Signature=Fi.Root=Fi.Metadata=Fi.Key=Fi.TargetFile=Fi.MetaFile=Fi.ValueError=Fi.MetadataKind=void 0;var G1t=py();Object.defineProperty(Fi,"MetadataKind",{enumerable:!0,get:function(){return G1t.MetadataKind}});var q1t=QA();Object.defineProperty(Fi,"ValueError",{enumerable:!0,get:function(){return q1t.ValueError}});var Hbe=LD();Object.defineProperty(Fi,"MetaFile",{enumerable:!0,get:function(){return Hbe.MetaFile}});Object.defineProperty(Fi,"TargetFile",{enumerable:!0,get:function(){return Hbe.TargetFile}});var Y1t=DO();Object.defineProperty(Fi,"Key",{enumerable:!0,get:function(){return Y1t.Key}});var W1t=_be();Object.defineProperty(Fi,"Metadata",{enumerable:!0,get:function(){return W1t.Metadata}});var V1t=K7();Object.defineProperty(Fi,"Root",{enumerable:!0,get:function(){return V1t.Root}});var K1t=z7();Object.defineProperty(Fi,"Signature",{enumerable:!0,get:function(){return K1t.Signature}});var J1t=$7();Object.defineProperty(Fi,"Snapshot",{enumerable:!0,get:function(){return J1t.Snapshot}});var z1t=iK();Object.defineProperty(Fi,"Targets",{enumerable:!0,get:function(){return z1t.Targets}});var Z1t=lK();Object.defineProperty(Fi,"Timestamp",{enumerable:!0,get:function(){return Z1t.Timestamp}})});var Gbe=G((yrr,jbe)=>{var l1=1e3,c1=l1*60,u1=c1*60,gy=u1*24,X1t=gy*7,$1t=gy*365.25;jbe.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return e2t(e);if(r==="number"&&isFinite(e))return t.long?r2t(e):t2t(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function e2t(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),s=(t[2]||"ms").toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return r*$1t;case"weeks":case"week":case"w":return r*X1t;case"days":case"day":case"d":return r*gy;case"hours":case"hour":case"hrs":case"hr":case"h":return r*u1;case"minutes":case"minute":case"mins":case"min":case"m":return r*c1;case"seconds":case"second":case"secs":case"sec":case"s":return r*l1;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function t2t(e){var t=Math.abs(e);return t>=gy?Math.round(e/gy)+"d":t>=u1?Math.round(e/u1)+"h":t>=c1?Math.round(e/c1)+"m":t>=l1?Math.round(e/l1)+"s":e+"ms"}function r2t(e){var t=Math.abs(e);return t>=gy?VO(e,t,gy,"day"):t>=u1?VO(e,t,u1,"hour"):t>=c1?VO(e,t,c1,"minute"):t>=l1?VO(e,t,l1,"second"):e+" ms"}function VO(e,t,r,s){var a=t>=r*1.5;return Math.round(e/r)+" "+s+(a?"s":"")}});var fK=G((Err,qbe)=>{function n2t(e){r.debug=r,r.default=r,r.coerce=p,r.disable=c,r.enable=a,r.enabled=f,r.humanize=Gbe(),r.destroy=h,Object.keys(e).forEach(E=>{r[E]=e[E]}),r.names=[],r.skips=[],r.formatters={};function t(E){let C=0;for(let S=0;S{if(le==="%%")return"%";ie++;let pe=r.formatters[ge];if(typeof pe=="function"){let De=N[ie];le=pe.call(U,De),N.splice(ie,1),ie--}return le}),r.formatArgs.call(U,N),(U.log||r.log).apply(U,N)}return R.namespace=E,R.useColors=r.useColors(),R.color=r.selectColor(E),R.extend=s,R.destroy=r.destroy,Object.defineProperty(R,"enabled",{enumerable:!0,configurable:!1,get:()=>S!==null?S:(x!==r.namespaces&&(x=r.namespaces,I=r.enabled(E)),I),set:N=>{S=N}}),typeof r.init=="function"&&r.init(R),R}function s(E,C){let S=r(this.namespace+(typeof C>"u"?":":C)+E);return S.log=this.log,S}function a(E){r.save(E),r.namespaces=E,r.names=[],r.skips=[];let C=(typeof E=="string"?E:"").trim().replace(" ",",").split(",").filter(Boolean);for(let S of C)S[0]==="-"?r.skips.push(S.slice(1)):r.names.push(S)}function n(E,C){let S=0,x=0,I=-1,R=0;for(;S"-"+C)].join(",");return r.enable(""),E}function f(E){for(let C of r.skips)if(n(E,C))return!1;for(let C of r.names)if(n(E,C))return!0;return!1}function p(E){return E instanceof Error?E.stack||E.message:E}function h(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}qbe.exports=n2t});var Ybe=G((lc,KO)=>{lc.formatArgs=s2t;lc.save=o2t;lc.load=a2t;lc.useColors=i2t;lc.storage=l2t();lc.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();lc.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function i2t(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function s2t(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+KO.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice(1,0,t,"color: inherit");let r=0,s=0;e[0].replace(/%[a-zA-Z%]/g,a=>{a!=="%%"&&(r++,a==="%c"&&(s=r))}),e.splice(s,0,t)}lc.log=console.debug||console.log||(()=>{});function o2t(e){try{e?lc.storage.setItem("debug",e):lc.storage.removeItem("debug")}catch{}}function a2t(){let e;try{e=lc.storage.getItem("debug")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function l2t(){try{return localStorage}catch{}}KO.exports=fK()(lc);var{formatters:c2t}=KO.exports;c2t.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var Vbe=G((oo,zO)=>{var u2t=Ce("tty"),JO=Ce("util");oo.init=m2t;oo.log=h2t;oo.formatArgs=A2t;oo.save=d2t;oo.load=g2t;oo.useColors=f2t;oo.destroy=JO.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");oo.colors=[6,2,3,4,5,1];try{let e=Ce("supports-color");e&&(e.stderr||e).level>=2&&(oo.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}oo.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let r=t.substring(6).toLowerCase().replace(/_([a-z])/g,(a,n)=>n.toUpperCase()),s=process.env[t];return/^(yes|on|true|enabled)$/i.test(s)?s=!0:/^(no|off|false|disabled)$/i.test(s)?s=!1:s==="null"?s=null:s=Number(s),e[r]=s,e},{});function f2t(){return"colors"in oo.inspectOpts?!!oo.inspectOpts.colors:u2t.isatty(process.stderr.fd)}function A2t(e){let{namespace:t,useColors:r}=this;if(r){let s=this.color,a="\x1B[3"+(s<8?s:"8;5;"+s),n=` ${a};1m${t} \x1B[0m`;e[0]=n+e[0].split(` +`).join(` +`+n),e.push(a+"m+"+zO.exports.humanize(this.diff)+"\x1B[0m")}else e[0]=p2t()+t+" "+e[0]}function p2t(){return oo.inspectOpts.hideDate?"":new Date().toISOString()+" "}function h2t(...e){return process.stderr.write(JO.formatWithOptions(oo.inspectOpts,...e)+` +`)}function d2t(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function g2t(){return process.env.DEBUG}function m2t(e){e.inspectOpts={};let t=Object.keys(oo.inspectOpts);for(let r=0;rt.trim()).join(" ")};Wbe.O=function(e){return this.inspectOpts.colors=this.useColors,JO.inspect(e,this.inspectOpts)}});var pK=G((Irr,AK)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?AK.exports=Ybe():AK.exports=Vbe()});var XO=G(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.DownloadHTTPError=Ji.DownloadLengthMismatchError=Ji.DownloadError=Ji.ExpiredMetadataError=Ji.EqualVersionError=Ji.BadVersionError=Ji.RepositoryError=Ji.PersistError=Ji.RuntimeError=Ji.ValueError=void 0;var hK=class extends Error{};Ji.ValueError=hK;var dK=class extends Error{};Ji.RuntimeError=dK;var gK=class extends Error{};Ji.PersistError=gK;var YD=class extends Error{};Ji.RepositoryError=YD;var ZO=class extends YD{};Ji.BadVersionError=ZO;var mK=class extends ZO{};Ji.EqualVersionError=mK;var yK=class extends YD{};Ji.ExpiredMetadataError=yK;var WD=class extends Error{};Ji.DownloadError=WD;var EK=class extends WD{};Ji.DownloadLengthMismatchError=EK;var IK=class extends WD{constructor(t,r){super(t),this.statusCode=r}};Ji.DownloadHTTPError=IK});var Jbe=G(f1=>{"use strict";var wK=f1&&f1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(f1,"__esModule",{value:!0});f1.withTempFile=void 0;var CK=wK(Ce("fs/promises")),y2t=wK(Ce("os")),Kbe=wK(Ce("path")),E2t=async e=>I2t(async t=>e(Kbe.default.join(t,"tempfile")));f1.withTempFile=E2t;var I2t=async e=>{let t=await CK.default.realpath(y2t.default.tmpdir()),r=await CK.default.mkdtemp(t+Kbe.default.sep);try{return await e(r)}finally{await CK.default.rm(r,{force:!0,recursive:!0,maxRetries:3})}}});var vK=G(Qg=>{"use strict";var eL=Qg&&Qg.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Qg,"__esModule",{value:!0});Qg.DefaultFetcher=Qg.BaseFetcher=void 0;var C2t=eL(pK()),zbe=eL(Ce("fs")),w2t=eL(pO()),B2t=eL(Ce("util")),Zbe=XO(),v2t=Jbe(),S2t=(0,C2t.default)("tuf:fetch"),$O=class{async downloadFile(t,r,s){return(0,v2t.withTempFile)(async a=>{let n=await this.fetch(t),c=0,f=zbe.default.createWriteStream(a);try{for await(let p of n){let h=Buffer.from(p);if(c+=h.length,c>r)throw new Zbe.DownloadLengthMismatchError("Max length reached");await b2t(f,h)}}finally{await B2t.default.promisify(f.close).bind(f)()}return s(a)})}async downloadBytes(t,r){return this.downloadFile(t,r,async s=>{let a=zbe.default.createReadStream(s),n=[];for await(let c of a)n.push(c);return Buffer.concat(n)})}};Qg.BaseFetcher=$O;var BK=class extends $O{constructor(t={}){super(),this.timeout=t.timeout,this.retry=t.retry}async fetch(t){S2t("GET %s",t);let r=await(0,w2t.default)(t,{timeout:this.timeout,retry:this.retry});if(!r.ok||!r?.body)throw new Zbe.DownloadHTTPError("Failed to download",r.status);return r.body}};Qg.DefaultFetcher=BK;var b2t=async(e,t)=>new Promise((r,s)=>{e.write(t,a=>{a&&s(a),r(!0)})})});var Xbe=G(tL=>{"use strict";Object.defineProperty(tL,"__esModule",{value:!0});tL.defaultConfig=void 0;tL.defaultConfig={maxRootRotations:256,maxDelegations:32,rootMaxLength:512e3,timestampMaxLength:16384,snapshotMaxLength:2e6,targetsMaxLength:5e6,prefixTargetsWithHash:!0,fetchTimeout:1e5,fetchRetries:void 0,fetchRetry:2}});var $be=G(rL=>{"use strict";Object.defineProperty(rL,"__esModule",{value:!0});rL.TrustedMetadataStore=void 0;var Bs=WO(),Hi=XO(),SK=class{constructor(t){this.trustedSet={},this.referenceTime=new Date,this.loadTrustedRoot(t)}get root(){if(!this.trustedSet.root)throw new ReferenceError("No trusted root metadata");return this.trustedSet.root}get timestamp(){return this.trustedSet.timestamp}get snapshot(){return this.trustedSet.snapshot}get targets(){return this.trustedSet.targets}getRole(t){return this.trustedSet[t]}updateRoot(t){let r=JSON.parse(t.toString("utf8")),s=Bs.Metadata.fromJSON(Bs.MetadataKind.Root,r);if(s.signed.type!=Bs.MetadataKind.Root)throw new Hi.RepositoryError(`Expected 'root', got ${s.signed.type}`);if(this.root.verifyDelegate(Bs.MetadataKind.Root,s),s.signed.version!=this.root.signed.version+1)throw new Hi.BadVersionError(`Expected version ${this.root.signed.version+1}, got ${s.signed.version}`);return s.verifyDelegate(Bs.MetadataKind.Root,s),this.trustedSet.root=s,s}updateTimestamp(t){if(this.snapshot)throw new Hi.RuntimeError("Cannot update timestamp after snapshot");if(this.root.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError("Final root.json is expired");let r=JSON.parse(t.toString("utf8")),s=Bs.Metadata.fromJSON(Bs.MetadataKind.Timestamp,r);if(s.signed.type!=Bs.MetadataKind.Timestamp)throw new Hi.RepositoryError(`Expected 'timestamp', got ${s.signed.type}`);if(this.root.verifyDelegate(Bs.MetadataKind.Timestamp,s),this.timestamp){if(s.signed.version{let p=n.signed.meta[c];if(!p)throw new Hi.RepositoryError(`Missing file ${c} in new snapshot`);if(p.version{"use strict";Object.defineProperty(bK,"__esModule",{value:!0});bK.join=P2t;var D2t=Ce("url");function P2t(e,t){return new D2t.URL(x2t(e)+k2t(t)).toString()}function x2t(e){return e.endsWith("/")?e:e+"/"}function k2t(e){return e.startsWith("/")?e.slice(1):e}});var tDe=G(nu=>{"use strict";var Q2t=nu&&nu.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),T2t=nu&&nu.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xK=nu&&nu.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Q2t(t,e,r);return T2t(t,e),t},R2t=nu&&nu.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(nu,"__esModule",{value:!0});nu.Updater=void 0;var TA=WO(),F2t=R2t(pK()),A1=xK(Ce("fs")),nL=xK(Ce("path")),N2t=Xbe(),my=XO(),O2t=vK(),L2t=$be(),VD=xK(eDe()),DK=(0,F2t.default)("tuf:cache"),PK=class{constructor(t){let{metadataDir:r,metadataBaseUrl:s,targetDir:a,targetBaseUrl:n,fetcher:c,config:f}=t;this.dir=r,this.metadataBaseUrl=s,this.targetDir=a,this.targetBaseUrl=n,this.forceCache=t.forceCache??!1;let p=this.loadLocalMetadata(TA.MetadataKind.Root);this.trustedSet=new L2t.TrustedMetadataStore(p),this.config={...N2t.defaultConfig,...f},this.fetcher=c||new O2t.DefaultFetcher({timeout:this.config.fetchTimeout,retry:this.config.fetchRetries??this.config.fetchRetry})}async refresh(){if(this.forceCache)try{await this.loadTimestamp({checkRemote:!1})}catch{await this.loadRoot(),await this.loadTimestamp()}else await this.loadRoot(),await this.loadTimestamp();await this.loadSnapshot(),await this.loadTargets(TA.MetadataKind.Targets,TA.MetadataKind.Root)}async getTargetInfo(t){return this.trustedSet.targets||await this.refresh(),this.preorderDepthFirstWalk(t)}async downloadTarget(t,r,s){let a=r||this.generateTargetPath(t);if(!s){if(!this.targetBaseUrl)throw new my.ValueError("Target base URL not set");s=this.targetBaseUrl}let n=t.path;if(this.trustedSet.root.signed.consistentSnapshot&&this.config.prefixTargetsWithHash){let p=Object.values(t.hashes),{dir:h,base:E}=nL.parse(n),C=`${p[0]}.${E}`;n=h?`${h}/${C}`:C}let f=VD.join(s,n);return await this.fetcher.downloadFile(f,t.length,async p=>{await t.verify(A1.createReadStream(p)),DK("WRITE %s",a),A1.copyFileSync(p,a)}),a}async findCachedTarget(t,r){r||(r=this.generateTargetPath(t));try{if(A1.existsSync(r))return await t.verify(A1.createReadStream(r)),r}catch{return}}loadLocalMetadata(t){let r=nL.join(this.dir,`${t}.json`);return DK("READ %s",r),A1.readFileSync(r)}async loadRoot(){let r=this.trustedSet.root.signed.version+1,s=r+this.config.maxRootRotations;for(let a=r;a0;){let{roleName:a,parentRoleName:n}=r.pop();if(s.has(a))continue;let c=(await this.loadTargets(a,n))?.signed;if(!c)continue;let f=c.targets?.[t];if(f)return f;if(s.add(a),c.delegations){let p=[],h=c.delegations.rolesForTarget(t);for(let{role:E,terminating:C}of h)if(p.push({roleName:E,parentRoleName:a}),C){r.splice(0);break}p.reverse(),r.push(...p)}}}generateTargetPath(t){if(!this.targetDir)throw new my.ValueError("Target directory not set");let r=encodeURIComponent(t.path);return nL.join(this.targetDir,r)}persistMetadata(t,r){let s=encodeURIComponent(t);try{let a=nL.join(this.dir,`${s}.json`);DK("WRITE %s",a),A1.writeFileSync(a,r.toString("utf8"))}catch(a){throw new my.PersistError(`Failed to persist metadata ${s} error: ${a}`)}}};nu.Updater=PK});var rDe=G(Tg=>{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});Tg.Updater=Tg.BaseFetcher=Tg.TargetFile=void 0;var M2t=WO();Object.defineProperty(Tg,"TargetFile",{enumerable:!0,get:function(){return M2t.TargetFile}});var U2t=vK();Object.defineProperty(Tg,"BaseFetcher",{enumerable:!0,get:function(){return U2t.BaseFetcher}});var _2t=tDe();Object.defineProperty(Tg,"Updater",{enumerable:!0,get:function(){return _2t.Updater}})});var QK=G(iL=>{"use strict";Object.defineProperty(iL,"__esModule",{value:!0});iL.TUFError=void 0;var kK=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.code=t,this.cause=s,this.name=this.constructor.name}};iL.TUFError=kK});var nDe=G(KD=>{"use strict";var H2t=KD&&KD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(KD,"__esModule",{value:!0});KD.readTarget=G2t;var j2t=H2t(Ce("fs")),sL=QK();async function G2t(e,t){let r=await q2t(e,t);return new Promise((s,a)=>{j2t.default.readFile(r,"utf-8",(n,c)=>{n?a(new sL.TUFError({code:"TUF_READ_TARGET_ERROR",message:`error reading target ${r}`,cause:n})):s(c)})})}async function q2t(e,t){let r;try{r=await e.getTargetInfo(t)}catch(a){throw new sL.TUFError({code:"TUF_REFRESH_METADATA_ERROR",message:"error refreshing TUF metadata",cause:a})}if(!r)throw new sL.TUFError({code:"TUF_FIND_TARGET_ERROR",message:`target ${t} not found`});let s=await e.findCachedTarget(r);if(!s)try{s=await e.downloadTarget(r)}catch(a){throw new sL.TUFError({code:"TUF_DOWNLOAD_TARGET_ERROR",message:`error downloading target ${s}`,cause:a})}return s}});var iDe=G((Qrr,Y2t)=>{Y2t.exports={"https://tuf-repo-cdn.sigstore.dev":{"root.json":"ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICJzaWciOiAiMzA0NjAyMjEwMDhhYjFmNmYxN2Q0ZjllNmQ3ZGNmMWM4ODkxMmI2YjUzY2MxMDM4ODY0NGFlMWYwOWJjMzdhMDgyY2QwNjAwM2UwMjIxMDBlMTQ1ZWY0YzdiNzgyZDRlODEwN2I1MzQzN2U2NjlkMDQ3Njg5MmNlOTk5OTAzYWUzM2QxNDQ0ODM2Njk5NmU3IgogIH0sCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGM3NjhiMmY4NmRhOTk1NjkwMTljMTYwYTA4MWRhNTRhZTM2YzM0YzBhMzEyMGQzY2I2OWI1M2I3ZDExMzc1OGUwMjIwNGY2NzE1MThmNjE3YjIwZDQ2NTM3ZmFlNmMzYjYzYmFlODkxM2Y0ZjE5NjIxNTYxMDVjYzRmMDE5YWMzNWM2YSIKICB9LAogIHsKICAgImtleWlkIjogIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAic2lnIjogIjMwNDUwMjIxMDBiNDQzNGU2OTk1ZDM2OGQyM2U3NDc1OWFjZDBjYjkwMTNjODNhNWQzNTExZjBmOTk3ZWM1NGM0NTZhZTQzNTBhMDIyMDE1YjBlMjY1ZDE4MmQyYjYxZGM3NGUxNTVkOThiM2MzZmJlNTY0YmEwNTI4NmFhMTRjOGRmMDJjOWI3NTY1MTYiCiAgfSwKICB7CiAgICJrZXlpZCI6ICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgInNpZyI6ICIzMDQ1MDIyMTAwODJjNTg0MTFkOTg5ZWI5Zjg2MTQxMDg1N2Q0MjM4MTU5MGVjOTQyNGRiZGFhNTFlNzhlZDEzNTE1NDMxOTA0ZTAyMjAxMTgxODVkYTZhNmMyOTQ3MTMxYzE3Nzk3ZTJiYjc2MjBjZTI2ZTVmMzAxZDFjZWFjNWYyYTdlNThmOWRjZjJlIgogIH0sCiAgewogICAia2V5aWQiOiAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGM3ODUxMzg1NGNhZTljMzJlYWE2Yjg4ZTE4OTEyZjQ4MDA2YzI3NTdhMjU4ZjkxNzMxMmNhYmE3NTk0OGViOWUwMjIxMDBkOWUxYjRjZTBhZGZlOWZkMmUyMTQ4ZDdmYTI3YTJmNDBiYTExMjJiZDY5ZGE3NjEyZDhkMTc3NmIwMTNjOTFkIgogIH0sCiAgewogICAia2V5aWQiOiAiZmRmYTgzYTA3YjVhODM1ODliODdkZWQ0MWY3N2YzOWQyMzJhZDkxZjdjY2U1Mjg2OGRhY2QwNmJhMDg5ODQ5ZiIsCiAgICJzaWciOiAiMzA0NTAyMjA1NjQ4M2EyZDVkOWVhOWNlYzZlMTFlYWRmYjMzYzQ4NGI2MTQyOThmYWNhMTVhY2YxYzQzMWIxMWVkN2Y3MzRjMDIyMTAwZDBjMWQ3MjZhZjkyYTg3ZTRlNjY0NTljYTVhZGYzOGEwNWI0NGUxZjk0MzE4NDIzZjk1NGJhZThiY2E1YmIyZSIKICB9LAogIHsKICAgImtleWlkIjogImUyZjU5YWNiOTQ4ODUxOTQwN2UxOGNiZmM5MzI5NTEwYmUwM2MwNGFjYTk5MjlkMmYwMzAxMzQzZmVjODU1MjMiLAogICAic2lnIjogIjMwNDYwMjIxMDBkMDA0ZGU4ODAyNGMzMmRjNTY1M2E5ZjQ4NDNjZmM1MjE1NDI3MDQ4YWQ5NjAwZDJjZjljOTY5ZTZlZGZmM2QyMDIyMTAwZDllYmI3OThmNWZjNjZhZjEwODk5ZGVjZTAxNGE4NjI4Y2NmM2M1NDAyY2Q0YTQyNzAyMDc0NzJmOGY2ZTcxMiIKICB9LAogIHsKICAgImtleWlkIjogIjNjMzQ0YWEwNjhmZDRjYzRlODdkYzUwYjYxMmMwMjQzMWZiYzc3MWU5NTAwMzk5MzY4M2EyYjBiZjI2MGNmMGUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiN2IwOTk5NmM0NWNhMmQ0YjA1NjAzZTU2YmFlZmEyOTcxOGEwYjcxMTQ3Y2Y4YzZlNjYzNDliYWE2MTQ3N2RmMDIyMTAwYzRkYTgwYzcxN2I0ZmE3YmJhMGZkNWM3MmRhOGEwNDk5MzU4YjAxMzU4YjIzMDlmNDFkMTQ1NmVhMWU3ZTFkOSIKICB9LAogIHsKICAgImtleWlkIjogImVjODE2Njk3MzRlMDE3OTk2YzViODVmM2QwMmMzZGUxZGQ0NjM3YTE1MjAxOWZlMWFmMTI1ZDJmOTM2OGI5NWUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiZTk3ODJjMzA3NDRlNDExYTgyZmE4NWI1MTM4ZDYwMWNlMTQ4YmMxOTI1OGFlYzY0ZTdlYzI0NDc4ZjM4ODEyMDIyMTAwY2FlZjYzZGNhZjFhNGI5YTUwMGQzYmQwZTNmMTY0ZWMxOGYxYjYzZDdhOTQ2MGQ5YWNhYjEwNjZkYjBmMDE2ZCIKICB9LAogIHsKICAgImtleWlkIjogIjFlMWQ2NWNlOThiMTBhZGRhZDQ3NjRmZWJmN2RkYTJkMDQzNmIzZDNhMzg5MzU3OWMwZGRkYWVhMjBlNTQ4NDkiLAogICAic2lnIjogIjMwNDUwMjIwNzQ2ZWMzZjg1MzRjZTU1NTMxZDBkMDFmZjY0OTY0ZWY0NDBkMWU3ZDJjNGMxNDI0MDliOGU5NzY5ZjFhZGE2ZjAyMjEwMGUzYjkyOWZjZDkzZWExOGZlYWEwODI1ODg3YTcyMTA0ODk4NzlhNjY3ODBjMDdhODNmNGJkNDZlMmYwOWFiM2IiCiAgfQogXSwKICJzaWduZWQiOiB7CiAgIl90eXBlIjogInJvb3QiLAogICJjb25zaXN0ZW50X3NuYXBzaG90IjogdHJ1ZSwKICAiZXhwaXJlcyI6ICIyMDI1LTAyLTE5VDA4OjA0OjMyWiIsCiAgImtleXMiOiB7CiAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFekJ6Vk9tSENQb2pNVkxTSTM2NFdpaVY4TlByRFxuNklnUnhWbGlza3ovdit5M0pFUjVtY1ZHY09ObGlEY1dNQzVKMmxmSG1qUE5QaGI0SDd4bThMemZTQT09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBzYW50aWFnb3RvcnJlcyIKICAgfSwKICAgIjYxNjQzODM4MTI1YjQ0MGI0MGRiNjk0MmY1Y2I1YTMxYzBkYzA0MzY4MzE2ZWIyYWFhNThiOTU5MDRhNTgyMjIiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpbmlrU3NBUW1Za05lSDVlWXEvQ25JekxhYWNPXG54bFNhYXdRRE93cUt5L3RDcXhxNXh4UFNKYzIxSzRXSWhzOUd5T2tLZnp1ZVkzR0lMemNNSlo0Y1d3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGJvYmNhbGxhd2F5IgogICB9LAogICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXk4WEtzbWhCWURJOEpjMEd3ekJ4ZUtheDBjbTVcblNUS0VVNjVIUEZ1blVuNDFzVDhwaTBGak00SWtIei9ZVW13bUxVTzBXdDdseGhqNkJrTElLNHFZQXc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAZGxvcmVuYyIKICAgfSwKICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXUmlHcjUraiszSjVTc0grWnRyNW5FMkgyd083XG5CVituTzNzOTNnTGNhMThxVE96SFkxb1d5QUdEeWtNU3NHVFVCU3Q5RCtBbjBLZktzRDJtZlNNNDJRPT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2ktb25saW5lLXVyaSI6ICJnY3BrbXM6Ly9wcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wIgogICB9LAogICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTBnaHJoOTJMdzFZcjNpZEdWNVdxQ3RNREI4Q3hcbitEOGhkQzR3MlpMTklwbFZSb1ZHTHNrWWEzZ2hlTXlPamlKOGtQaTE1YVEyLy83UCtvajdVdkpQR3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAam9zaHVhZ2wiCiAgIH0sCiAgICJlNzFhNTRkNTQzODM1YmE4NmFkYWQ5NDYwMzc5Yzc2NDFmYjg3MjZkMTY0ZWE3NjY4MDFhMWM1MjJhYmE3ZWEyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRVhzejNTWlhGYjhqTVY0Mmo2cEpseWpialI4S1xuTjNCd29jZXhxNkxNSWI1cXNXS09RdkxOMTZOVWVmTGM0SHN3T291bVJzVlZhYWpTcFFTNmZvYmtSdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBtbm02NzgiCiAgIH0KICB9LAogICJyb2xlcyI6IHsKICAgInJvb3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI2ZjI2MDA4OWQ1OTIzZGFmMjAxNjZjYTY1N2M1NDNhZjYxODM0NmFiOTcxODg0YTk5OTYyYjAxOTg4YmJlMGMzIiwKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMwogICB9LAogICAic25hcHNob3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI3MjQ3ZjBkYmFkODViMTQ3ZTE4NjNiYWRlNzYxMjQzY2M3ODVkY2I3YWE0MTBlNzEwNWRkM2QyYjYxYTM2ZDJjIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiAzNjUwLAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogMzY1CiAgIH0sCiAgICJ0YXJnZXRzIjogewogICAgImtleWlkcyI6IFsKICAgICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInRpbWVzdGFtcCI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDEsCiAgICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDcsCiAgICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0CiAgIH0KICB9LAogICJzcGVjX3ZlcnNpb24iOiAiMS4wIiwKICAidmVyc2lvbiI6IDEwLAogICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMTgyLAogICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDMxCiB9Cn0=",targets:{"trusted_root.json":"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjcuMDAwWiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAid05JOWF0UUdseitWV2ZPNkxSeWdINFFVZlkvOFc0UkZ3aVQ1aTVXUmdCMD0iCiAgICAgIH0KICAgIH0KICBdLAogICJjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQitEQ0NBWDZnQXdJQkFnSVROVmtEWm9DaW9mUERzeTdkZm02Z2VMYnVoekFLQmdncWhrak9QUVFEQXpBcU1SVXdFd1lEVlFRS0V3eHphV2R6ZEc5eVpTNWtaWFl4RVRBUEJnTlZCQU1UQ0hOcFozTjBiM0psTUI0WERUSXhNRE13TnpBek1qQXlPVm9YRFRNeE1ESXlNekF6TWpBeU9Wb3dLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkxTeUE3SWk1aytwTk84WkVXWTB5bGVtV0Rvd09rTmEza0wrR1pFNVo1R1dlaEw5L0E5YlJOQTNSYnJzWjVpMEpjYXN0YVJMN1NwNWZwL2pENWR4cWMvVWRUVm5sdlMxNmFuKzJZZnN3ZS9RdUxvbFJVQ3JjT0UyKzJpQTUrdHpkNk5tTUdRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFFd0hRWURWUjBPQkJZRUZNakZIUUJCbWlRcE1sRWs2dzJ1U3UxS0J0UHNNQjhHQTFVZEl3UVlNQmFBRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01IOGxpV0pmTXVpNnZYWEJoakRnWTRNd3NsbU4vVEp4VmUvODNXckZvbXdtTmYwNTZ5MVg0OEY5YzRtM2Ezb3pYQUl4QUtqUmF5NS9hai9qc0tLR0lrbVFhdGpJOHV1cEhyLytDeEZ2YUpXbXBZcU5rTERHUlUrOW9yemg1aEkyUnJjdWFRPT0iCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMDdUMDM6MjA6MjkuMDAwWiIsCiAgICAgICAgImVuZCI6ICIyMDIyLTEyLTMxVDIzOjU5OjU5Ljk5OVoiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDR2pDQ0FhR2dBd0lCQWdJVUFMblZpVmZuVTBickphc21Sa0hybi9VbmZhUXdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1qQTBNVE15TURBMk1UVmFGdzB6TVRFd01EVXhNelUyTlRoYU1EY3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFZU1Cd0dBMVVFQXhNVmMybG5jM1J2Y21VdGFXNTBaWEp0WldScFlYUmxNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRThSVlMveXNIK05PdnVEWnlQSVp0aWxnVUY5TmxhcllwQWQ5SFAxdkJCSDFVNUNWNzdMU1M3czBaaUg0bkU3SHY3cHRTNkx2dlIvU1RrNzk4TFZnTXpMbEo0SGVJZkYzdEhTYWV4TGNZcFNBU3Ixa1MwTi9SZ0JKei85aldDaVhubzNzd2VUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3TXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMzlQcHoxWWtFWmI1cU5qcEtGV2l4aTRZWkQ4d0h3WURWUjBqQkJnd0ZvQVVXTUFlWDVGRnBXYXBlc3lRb1pNaTBDckZ4Zm93Q2dZSUtvWkl6ajBFQXdNRFp3QXdaQUl3UENzUUs0RFlpWllEUElhRGk1SEZLbmZ4WHg2QVNTVm1FUmZzeW5ZQmlYMlg2U0pSblpVODQvOURaZG5GdnZ4bUFqQk90NlFwQmxjNEovMER4dmtUQ3FwY2x2emlMNkJDQ1BuamRsSUIzUHUzQnhzUG15Z1VZN0lpMnpiZENkbGlpb3c9IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXdLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQWVGdzB5TVRFd01EY3hNelUyTlRsYUZ3MHpNVEV3TURVeE16VTJOVGhhTUNveEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDdYZUZUNHJiM1BRR3dTNElhanRMazMvT2xucGdhbmdhQmNsWXBzWUJyNWkrNHluQjA3Y2ViM0xQME9JT1pkeGV4WDY5YzVpVnV5SlJRK0h6MDV5aStVRjN1QldBbEhwaVM1c2gwK0gyR0hFN1NYcmsxRUM1bTFUcjE5TDlnZzkyall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFmQmdOVkhTTUVHREFXZ0JSWXdCNWZrVVdsWnFsNnpKQ2hreUxRS3NYRitqQUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUFqMW5IZVhacCsxM05XQk5hK0VEc0RQOEcxV1dnMXRDTVdQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjlUTk1lYTdJeC9zdEo1VGZjTExlQUJMRTRCTkpPc1E0dm5CSEoiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjItMDQtMTNUMjA6MDY6MTUuMDAwWiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDAuMDAwWiIsCiAgICAgICAgICAiZW5kIjogIjIwMjItMTAtMzFUMjM6NTk6NTkuOTk5WiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAiQ0dDUzhDaFMvMmhGMGRGcko0U2NSV2NZckJZOXd6alNiZWE4SWdZMmIzST0iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vY3RmZS5zaWdzdG9yZS5kZXYvMjAyMiIsCiAgICAgICJoYXNoQWxnb3JpdGhtIjogIlNIQTJfMjU2IiwKICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAicmF3Qnl0ZXMiOiAiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaVBTbEZpMENtRlRmRWpDVXFGOUh1Q0VjWVhOS0FhWWFsSUptQlo4eXllelBqVHFoeHJLQnBNbmFvY1Z0TEpCSTFlTTN1WG5RelFHQUpkSjRnczlGeXc9PSIsCiAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICJzdGFydCI6ICIyMDIyLTEwLTIwVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgfQogICAgICB9LAogICAgICAibG9nSWQiOiB7CiAgICAgICAgImtleUlkIjogIjNUMHdhc2JIRVRKakdSNGNtV2MzQXFKS1hyamVQSzMvaDRweWdDOHA3bzQ9IgogICAgICB9CiAgICB9CiAgXSwKICAidGltZXN0YW1wQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAiR2l0SHViLCBJbmMuIiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJJbnRlcm5hbCBTZXJ2aWNlcyBSb290IgogICAgICB9LAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCM0RDQ0FXS2dBd0lCQWdJVWNoa05zSDM2WGEwNGIxTHFJYytxcjlEVmVjTXdDZ1lJS29aSXpqMEVBd013TWpFVk1CTUdBMVVFQ2hNTVIybDBTSFZpTENCSmJtTXVNUmt3RndZRFZRUURFeEJVVTBFZ2FXNTBaWEp0WldScFlYUmxNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVEkwTURReE16QXdNREF3TUZvd01qRVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVJrd0Z3WURWUVFERXhCVVUwRWdWR2x0WlhOMFlXMXdhVzVuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVUQ1Wk5iU3FZTWQ2cjhxcE9PRVg5aWJHblpUOUdzdVhPaHIvZjhVOUZKdWdCR0V4S1lwNDBPVUxTMGVyalpXN3hWOXhWNTJObkpmNU9lRHE0ZTVaS3FOV01GUXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUlNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVhVzFSdWRPZ1Z0MGxlcVkwV0tZYnVQcjQ3d0F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl3YlVIOUh2RDRlakNaSk9XUW5xQWxrcVVSbGx2dTlNOCtWcUxiaVJLK3pTZlpDWndzaWxqUm44TVFRUlNrWEVFNUFqRUFnK1Z4cXRvamZWZnU4RGh6emhDeDlHS0VUYkpIYjE5aVY3Mm1NS1ViREFGbXpaNmJROGI1NFpiOHRpZHk1YVdlIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUNFRENDQVpXZ0F3SUJBZ0lVWDhaTzVRWFA3dk40ZE1RNWU5c1UzbnViOE9nd0NnWUlLb1pJemowRUF3TXdPREVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1SOHdIUVlEVlFRREV4WkpiblJsY201aGJDQlRaWEoyYVdObGN5QlNiMjkwTUI0WERUSXpNRFF4TkRBd01EQXdNRm9YRFRJNE1EUXhNakF3TURBd01Gb3dNakVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1Sa3dGd1lEVlFRREV4QlVVMEVnYVc1MFpYSnRaV1JwWVhSbE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdk1MWS9kVFZidklKWUFOQXVzekV3Sm5RRTFsbGZ0eW55TUtJTWhoNDhIbXFiVnI1eWd5YnpzTFJMVktiQldPZFoyMWFlSnorZ1ppeXRaZXRxY3lGOVdsRVI1TkVNZjZKVjdaTm9qUXB4SHE0UkhHb0dTY2VRdi9xdlRpWnhFREtvMll3WkRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVWFXMVJ1ZE9nVnQwbGVxWTBXS1lidVByNDd3QXdId1lEVlIwakJCZ3dGb0FVOU5ZWWxvYm5BRzRjMC9xanh5SC9scS93eitRd0NnWUlLb1pJemowRUF3TURhUUF3WmdJeEFLMUIxODV5Z0NySVlGbElzM0dqc3dqbndTTUc2TFk4d29MVmRha0tEWnhWYThmOGNxTXMxRGhjeEowKzA5dzk1UUl4QU8rdEJ6Wms3dmpVSjlpSmdENFI2WldUeFFXS3FObTc0ak85OW8rbzlzdjRGSS9TWlRaVEZ5TW4wSUpFSGRObXlBPT0iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQjlEQ0NBWHFnQXdJQkFnSVVhL0pBa2RVaks0SlV3c3F0YWlSSkdXaHFMU293Q2dZSUtvWkl6ajBFQXdNd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVE16TURReE1UQXdNREF3TUZvd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRWY5akZBWHh6NGt4NjhBSFJNT2tGQmhmbERjTVR2emFYejR4L0ZDY1hqSi8xcUVLb24vcVBJR25hVVJza0R0eU5iTkRPcGVKVERERnF0NDhpTVBybnpweDZJWndxZW1mVUpONHhCRVpmemErcFl0L2l5b2QrOXRacjIwUlJXU3YvbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFqQWRCZ05WSFE0RUZnUVU5TllZbG9ibkFHNGMwL3FqeHlIL2xxL3d6K1F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QUxaTFo4QmdSWHpLeExNTU45VklsTytlNGhyQm5OQmdGN3R6N0hucm93djJOZXRaRXJJQUNLRnltQmx2V0R2dE1BSXdaTytraTZzc1ExYnNabzk4TzhtRUFmMk5aN2lpQ2dERFUwVndqZWNvNnp5ZWgwekJUczkvN2dWNkFITlE1M3hEIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIzLTA0LTE0VDAwOjAwOjAwLjAwMFoiCiAgICAgIH0KICAgIH0KICBdCn0K","registry.npmjs.org%2Fkeys.json":"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICJlbmQiOiAiMjAyNS0wMS0yOVQwMDowMDowMC4wMDBaIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJrZXlJZCI6ICJTSEEyNTY6amwzYndzd3U4MFBqam9rQ2doMG8ydzVjMlU0TGhRQUU1N2dqOWN6MWt6QSIsCiAgICAgICAgICAgICJrZXlVc2FnZSI6ICJucG06YXR0ZXN0YXRpb25zIiwKICAgICAgICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUxT2xiM3pNQUZGeFhLSGlJa1FPNWNKM1lobDVpNlVQcCtJaHV0ZUJKYnVIY0E1VW9nS28wRVd0bFd3VzZLU2FLb1RORVlMN0psQ1FpVm5raEJrdFVnZz09IiwKICAgICAgICAgICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUNEU0FfUDI1Nl9TSEFfMjU2IiwKICAgICAgICAgICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICAgICAgICAgICAic3RhcnQiOiAiMjAyMi0xMi0wMVQwMDowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgICAgICAiZW5kIjogIjIwMjUtMDEtMjlUMDA6MDA6MDAuMDAwWiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OkRoUTh3UjVBUEJ2RkhMRi8rVGMrQVl2UE9kVHBjSURxT2h4c0JIUndDN1UiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpEaFE4d1I1QVBCdkZITEYvK1RjK0FZdlBPZFRwY0lEcU9oeHNCSFJ3QzdVIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K"}}}});var oDe=G(p1=>{"use strict";var sDe=p1&&p1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(p1,"__esModule",{value:!0});p1.TUFClient=void 0;var Rg=sDe(Ce("fs")),JD=sDe(Ce("path")),W2t=rDe(),V2t=oL(),K2t=nDe(),RK="targets",TK=class{constructor(t){let r=new URL(t.mirrorURL),s=encodeURIComponent(r.host+r.pathname.replace(/\/$/,"")),a=JD.default.join(t.cachePath,s);J2t(a),z2t({cachePath:a,mirrorURL:t.mirrorURL,tufRootPath:t.rootPath,forceInit:t.forceInit}),this.updater=Z2t({mirrorURL:t.mirrorURL,cachePath:a,forceCache:t.forceCache,retry:t.retry,timeout:t.timeout})}async refresh(){return this.updater.refresh()}getTarget(t){return(0,K2t.readTarget)(this.updater,t)}};p1.TUFClient=TK;function J2t(e){let t=JD.default.join(e,RK);Rg.default.existsSync(e)||Rg.default.mkdirSync(e,{recursive:!0}),Rg.default.existsSync(t)||Rg.default.mkdirSync(t)}function z2t({cachePath:e,mirrorURL:t,tufRootPath:r,forceInit:s}){let a=JD.default.join(e,"root.json");if(!Rg.default.existsSync(a)||s)if(r)Rg.default.copyFileSync(r,a);else{let c=iDe()[t];if(!c)throw new V2t.TUFError({code:"TUF_INIT_CACHE_ERROR",message:`No root.json found for mirror: ${t}`});Rg.default.writeFileSync(a,Buffer.from(c["root.json"],"base64")),Object.entries(c.targets).forEach(([f,p])=>{Rg.default.writeFileSync(JD.default.join(e,RK,f),Buffer.from(p,"base64"))})}}function Z2t(e){let t={fetchTimeout:e.timeout,fetchRetry:e.retry};return new W2t.Updater({metadataBaseUrl:e.mirrorURL,targetBaseUrl:`${e.mirrorURL}/targets`,metadataDir:e.cachePath,targetDir:JD.default.join(e.cachePath,RK),forceCache:e.forceCache,config:t})}});var oL=G(gh=>{"use strict";Object.defineProperty(gh,"__esModule",{value:!0});gh.TUFError=gh.DEFAULT_MIRROR_URL=void 0;gh.getTrustedRoot=sBt;gh.initTUF=oBt;var X2t=BD(),$2t=USe(),eBt=oDe();gh.DEFAULT_MIRROR_URL="https://tuf-repo-cdn.sigstore.dev";var tBt="sigstore-js",rBt={retries:2},nBt=5e3,iBt="trusted_root.json";async function sBt(e={}){let r=await aDe(e).getTarget(iBt);return X2t.TrustedRoot.fromJSON(JSON.parse(r))}async function oBt(e={}){let t=aDe(e);return t.refresh().then(()=>t)}function aDe(e){return new eBt.TUFClient({cachePath:e.cachePath||(0,$2t.appDataPath)(tBt),rootPath:e.rootPath,mirrorURL:e.mirrorURL||gh.DEFAULT_MIRROR_URL,retry:e.retry??rBt,timeout:e.timeout??nBt,forceCache:e.forceCache??!1,forceInit:e.forceInit??e.force??!1})}var aBt=QK();Object.defineProperty(gh,"TUFError",{enumerable:!0,get:function(){return aBt.TUFError}})});var lDe=G(aL=>{"use strict";Object.defineProperty(aL,"__esModule",{value:!0});aL.DSSESignatureContent=void 0;var zD=xl(),FK=class{constructor(t){this.env=t}compareDigest(t){return zD.crypto.bufferEqual(t,zD.crypto.digest("sha256",this.env.payload))}compareSignature(t){return zD.crypto.bufferEqual(t,this.signature)}verifySignature(t){return zD.crypto.verify(this.preAuthEncoding,t,this.signature)}get signature(){return this.env.signatures.length>0?this.env.signatures[0].sig:Buffer.from("")}get preAuthEncoding(){return zD.dsse.preAuthEncoding(this.env.payloadType,this.env.payload)}};aL.DSSESignatureContent=FK});var cDe=G(lL=>{"use strict";Object.defineProperty(lL,"__esModule",{value:!0});lL.MessageSignatureContent=void 0;var NK=xl(),OK=class{constructor(t,r){this.signature=t.signature,this.messageDigest=t.messageDigest.digest,this.artifact=r}compareSignature(t){return NK.crypto.bufferEqual(t,this.signature)}compareDigest(t){return NK.crypto.bufferEqual(t,this.messageDigest)}verifySignature(t){return NK.crypto.verify(this.artifact,t,this.signature)}};lL.MessageSignatureContent=OK});var fDe=G(cL=>{"use strict";Object.defineProperty(cL,"__esModule",{value:!0});cL.toSignedEntity=uBt;cL.signatureContent=uDe;var LK=xl(),lBt=lDe(),cBt=cDe();function uBt(e,t){let{tlogEntries:r,timestampVerificationData:s}=e.verificationMaterial,a=[];for(let n of r)a.push({$case:"transparency-log",tlogEntry:n});for(let n of s?.rfc3161Timestamps??[])a.push({$case:"timestamp-authority",timestamp:LK.RFC3161Timestamp.parse(n.signedTimestamp)});return{signature:uDe(e,t),key:fBt(e),tlogEntries:r,timestamps:a}}function uDe(e,t){switch(e.content.$case){case"dsseEnvelope":return new lBt.DSSESignatureContent(e.content.dsseEnvelope);case"messageSignature":return new cBt.MessageSignatureContent(e.content.messageSignature,t)}}function fBt(e){switch(e.verificationMaterial.content.$case){case"publicKey":return{$case:"public-key",hint:e.verificationMaterial.content.publicKey.hint};case"x509CertificateChain":return{$case:"certificate",certificate:LK.X509Certificate.parse(e.verificationMaterial.content.x509CertificateChain.certificates[0].rawBytes)};case"certificate":return{$case:"certificate",certificate:LK.X509Certificate.parse(e.verificationMaterial.content.certificate.rawBytes)}}}});var bo=G(h1=>{"use strict";Object.defineProperty(h1,"__esModule",{value:!0});h1.PolicyError=h1.VerificationError=void 0;var uL=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.code=t,this.cause=s,this.name=this.constructor.name}},MK=class extends uL{};h1.VerificationError=MK;var UK=class extends uL{};h1.PolicyError=UK});var ADe=G(fL=>{"use strict";Object.defineProperty(fL,"__esModule",{value:!0});fL.filterCertAuthorities=ABt;fL.filterTLogAuthorities=pBt;function ABt(e,t){return e.filter(r=>r.validFor.start<=t.start&&r.validFor.end>=t.end)}function pBt(e,t){return e.filter(r=>t.logID&&!r.logID.equals(t.logID)?!1:r.validFor.start<=t.targetDate&&t.targetDate<=r.validFor.end)}});var Ey=G(yy=>{"use strict";Object.defineProperty(yy,"__esModule",{value:!0});yy.filterTLogAuthorities=yy.filterCertAuthorities=void 0;yy.toTrustMaterial=dBt;var _K=xl(),ZD=BD(),hBt=bo(),HK=new Date(0),jK=new Date(864e13),dDe=ADe();Object.defineProperty(yy,"filterCertAuthorities",{enumerable:!0,get:function(){return dDe.filterCertAuthorities}});Object.defineProperty(yy,"filterTLogAuthorities",{enumerable:!0,get:function(){return dDe.filterTLogAuthorities}});function dBt(e,t){let r=typeof t=="function"?t:gBt(t);return{certificateAuthorities:e.certificateAuthorities.map(hDe),timestampAuthorities:e.timestampAuthorities.map(hDe),tlogs:e.tlogs.map(pDe),ctlogs:e.ctlogs.map(pDe),publicKey:r}}function pDe(e){let t=e.publicKey.keyDetails,r=t===ZD.PublicKeyDetails.PKCS1_RSA_PKCS1V5||t===ZD.PublicKeyDetails.PKIX_RSA_PKCS1V5||t===ZD.PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256||t===ZD.PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256||t===ZD.PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256?"pkcs1":"spki";return{logID:e.logId.keyId,publicKey:_K.crypto.createPublicKey(e.publicKey.rawBytes,r),validFor:{start:e.publicKey.validFor?.start||HK,end:e.publicKey.validFor?.end||jK}}}function hDe(e){return{certChain:e.certChain.certificates.map(t=>_K.X509Certificate.parse(t.rawBytes)),validFor:{start:e.validFor?.start||HK,end:e.validFor?.end||jK}}}function gBt(e){return t=>{let r=(e||{})[t];if(!r)throw new hBt.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${t}`});return{publicKey:_K.crypto.createPublicKey(r.rawBytes),validFor:s=>(r.validFor?.start||HK)<=s&&(r.validFor?.end||jK)>=s}}}});var GK=G(XD=>{"use strict";Object.defineProperty(XD,"__esModule",{value:!0});XD.CertificateChainVerifier=void 0;XD.verifyCertificateChain=yBt;var Iy=bo(),mBt=Ey();function yBt(e,t){let r=(0,mBt.filterCertAuthorities)(t,{start:e.notBefore,end:e.notAfter}),s;for(let a of r)try{return new AL({trustedCerts:a.certChain,untrustedCert:e}).verify()}catch(n){s=n}throw new Iy.VerificationError({code:"CERTIFICATE_ERROR",message:"Failed to verify certificate chain",cause:s})}var AL=class{constructor(t){this.untrustedCert=t.untrustedCert,this.trustedCerts=t.trustedCerts,this.localCerts=EBt([...t.trustedCerts,t.untrustedCert])}verify(){let t=this.sort();return this.checkPath(t),t}sort(){let t=this.untrustedCert,r=this.buildPaths(t);if(r=r.filter(a=>a.some(n=>this.trustedCerts.includes(n))),r.length===0)throw new Iy.VerificationError({code:"CERTIFICATE_ERROR",message:"no trusted certificate path found"});let s=r.reduce((a,n)=>a.length{if(s&&a.extSubjectKeyID){a.extSubjectKeyID.keyIdentifier.equals(s)&&r.push(a);return}a.subject.equals(t.issuer)&&r.push(a)}),r=r.filter(a=>{try{return t.verify(a)}catch{return!1}}),r)}checkPath(t){if(t.length<1)throw new Iy.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate chain must contain at least one certificate"});if(!t.slice(1).every(s=>s.isCA))throw new Iy.VerificationError({code:"CERTIFICATE_ERROR",message:"intermediate certificate is not a CA"});for(let s=t.length-2;s>=0;s--)if(!t[s].issuer.equals(t[s+1].subject))throw new Iy.VerificationError({code:"CERTIFICATE_ERROR",message:"incorrect certificate name chaining"});for(let s=0;s{"use strict";Object.defineProperty(qK,"__esModule",{value:!0});qK.verifySCTs=wBt;var pL=xl(),IBt=bo(),CBt=Ey();function wBt(e,t,r){let s,a=e.clone();for(let p=0;p{if(!(0,CBt.filterTLogAuthorities)(r,{logID:p.logID,targetDate:p.datetime}).some(C=>p.verify(n.buffer,C.publicKey)))throw new IBt.VerificationError({code:"CERTIFICATE_ERROR",message:"SCT verification failed"});return p.logID})}});var yDe=G(hL=>{"use strict";Object.defineProperty(hL,"__esModule",{value:!0});hL.verifyPublicKey=PBt;hL.verifyCertificate=xBt;var BBt=xl(),mDe=bo(),vBt=GK(),SBt=gDe(),bBt="1.3.6.1.4.1.57264.1.1",DBt="1.3.6.1.4.1.57264.1.8";function PBt(e,t,r){let s=r.publicKey(e);return t.forEach(a=>{if(!s.validFor(a))throw new mDe.VerificationError({code:"PUBLIC_KEY_ERROR",message:`Public key is not valid for timestamp: ${a.toISOString()}`})}),{key:s.publicKey}}function xBt(e,t,r){let s=(0,vBt.verifyCertificateChain)(e,r.certificateAuthorities);if(!t.every(n=>s.every(c=>c.validForDate(n))))throw new mDe.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate is not valid or expired at the specified date"});return{scts:(0,SBt.verifySCTs)(s[0],s[1],r.ctlogs),signer:kBt(s[0])}}function kBt(e){let t,r=e.extension(DBt);r?t=r.valueObj.subs?.[0]?.value.toString("ascii"):t=e.extension(bBt)?.value.toString("ascii");let s={extensions:{issuer:t},subjectAlternativeName:e.subjectAltName};return{key:BBt.crypto.createPublicKey(e.publicKey),identity:s}}});var IDe=G(dL=>{"use strict";Object.defineProperty(dL,"__esModule",{value:!0});dL.verifySubjectAlternativeName=QBt;dL.verifyExtensions=TBt;var EDe=bo();function QBt(e,t){if(t===void 0||!t.match(e))throw new EDe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`certificate identity error - expected ${e}, got ${t}`})}function TBt(e,t={}){let r;for(r in e)if(t[r]!==e[r])throw new EDe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`invalid certificate extension - expected ${r}=${e[r]}, got ${r}=${t[r]}`})}});var CDe=G(JK=>{"use strict";Object.defineProperty(JK,"__esModule",{value:!0});JK.verifyCheckpoint=NBt;var WK=xl(),d1=bo(),RBt=Ey(),YK=` + +`,FBt=/\u2014 (\S+) (\S+)\n/g;function NBt(e,t){let r=(0,RBt.filterTLogAuthorities)(t,{targetDate:new Date(Number(e.integratedTime)*1e3)}),s=e.inclusionProof,a=VK.fromString(s.checkpoint.envelope),n=KK.fromString(a.note);if(!OBt(a,r))throw new d1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid checkpoint signature"});if(!WK.crypto.bufferEqual(n.logHash,s.rootHash))throw new d1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"root hash mismatch"})}function OBt(e,t){let r=Buffer.from(e.note,"utf-8");return e.signatures.every(s=>{let a=t.find(n=>WK.crypto.bufferEqual(n.logID.subarray(0,4),s.keyHint));return a?WK.crypto.verify(r,a.publicKey,s.signature):!1})}var VK=class e{constructor(t,r){this.note=t,this.signatures=r}static fromString(t){if(!t.includes(YK))throw new d1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"missing checkpoint separator"});let r=t.indexOf(YK),s=t.slice(0,r+1),n=t.slice(r+YK.length).matchAll(FBt),c=Array.from(n,f=>{let[,p,h]=f,E=Buffer.from(h,"base64");if(E.length<5)throw new d1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"malformed checkpoint signature"});return{name:p,keyHint:E.subarray(0,4),signature:E.subarray(4)}});if(c.length===0)throw new d1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"no signatures found in checkpoint"});return new e(s,c)}},KK=class e{constructor(t,r,s,a){this.origin=t,this.logSize=r,this.logHash=s,this.rest=a}static fromString(t){let r=t.trimEnd().split(` +`);if(r.length<3)throw new d1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"too few lines in checkpoint header"});let s=r[0],a=BigInt(r[1]),n=Buffer.from(r[2],"base64"),c=r.slice(3);return new e(s,a,n,c)}}});var wDe=G($K=>{"use strict";Object.defineProperty($K,"__esModule",{value:!0});$K.verifyMerkleInclusion=UBt;var XK=xl(),zK=bo(),LBt=Buffer.from([0]),MBt=Buffer.from([1]);function UBt(e){let t=e.inclusionProof,r=BigInt(t.logIndex),s=BigInt(t.treeSize);if(r<0n||r>=s)throw new zK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:`invalid index: ${r}`});let{inner:a,border:n}=_Bt(r,s);if(t.hashes.length!==a+n)throw new zK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid hash count"});let c=t.hashes.slice(0,a),f=t.hashes.slice(a),p=WBt(e.canonicalizedBody),h=jBt(HBt(p,c,r),f);if(!XK.crypto.bufferEqual(h,t.rootHash))throw new zK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"calculated root hash does not match inclusion proof"})}function _Bt(e,t){let r=GBt(e,t),s=qBt(e>>BigInt(r));return{inner:r,border:s}}function HBt(e,t,r){return t.reduce((s,a,n)=>r>>BigInt(n)&BigInt(1)?ZK(a,s):ZK(s,a),e)}function jBt(e,t){return t.reduce((r,s)=>ZK(s,r),e)}function GBt(e,t){return YBt(e^t-BigInt(1))}function qBt(e){return e.toString(2).split("1").length-1}function YBt(e){return e===0n?0:e.toString(2).length}function ZK(e,t){return XK.crypto.digest("sha256",MBt,e,t)}function WBt(e){return XK.crypto.digest("sha256",LBt,e)}});var vDe=G(eJ=>{"use strict";Object.defineProperty(eJ,"__esModule",{value:!0});eJ.verifyTLogSET=JBt;var BDe=xl(),VBt=bo(),KBt=Ey();function JBt(e,t){if(!(0,KBt.filterTLogAuthorities)(t,{logID:e.logId.keyId,targetDate:new Date(Number(e.integratedTime)*1e3)}).some(a=>{let n=zBt(e),c=Buffer.from(BDe.json.canonicalize(n),"utf8"),f=e.inclusionPromise.signedEntryTimestamp;return BDe.crypto.verify(c,a.publicKey,f)}))throw new VBt.VerificationError({code:"TLOG_INCLUSION_PROMISE_ERROR",message:"inclusion promise could not be verified"})}function zBt(e){let{integratedTime:t,logIndex:r,logId:s,canonicalizedBody:a}=e;return{body:a.toString("base64"),integratedTime:Number(t),logIndex:Number(r),logID:s.keyId.toString("hex")}}});var SDe=G(nJ=>{"use strict";Object.defineProperty(nJ,"__esModule",{value:!0});nJ.verifyRFC3161Timestamp=$Bt;var tJ=xl(),rJ=bo(),ZBt=GK(),XBt=Ey();function $Bt(e,t,r){let s=e.signingTime;if(r=(0,XBt.filterCertAuthorities)(r,{start:s,end:s}),r=tvt(r,{serialNumber:e.signerSerialNumber,issuer:e.signerIssuer}),!r.some(n=>{try{return evt(e,t,n),!0}catch{return!1}}))throw new rJ.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp could not be verified"})}function evt(e,t,r){let[s,...a]=r.certChain,n=tJ.crypto.createPublicKey(s.publicKey),c=e.signingTime;try{new ZBt.CertificateChainVerifier({untrustedCert:s,trustedCerts:a}).verify()}catch{throw new rJ.VerificationError({code:"TIMESTAMP_ERROR",message:"invalid certificate chain"})}if(!r.certChain.every(p=>p.validForDate(c)))throw new rJ.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp was signed with an expired certificate"});e.verify(t,n)}function tvt(e,t){return e.filter(r=>r.certChain.length>0&&tJ.crypto.bufferEqual(r.certChain[0].serialNumber,t.serialNumber)&&tJ.crypto.bufferEqual(r.certChain[0].issuer,t.issuer))}});var bDe=G(gL=>{"use strict";Object.defineProperty(gL,"__esModule",{value:!0});gL.verifyTSATimestamp=avt;gL.verifyTLogTimestamp=lvt;var rvt=bo(),nvt=CDe(),ivt=wDe(),svt=vDe(),ovt=SDe();function avt(e,t,r){return(0,ovt.verifyRFC3161Timestamp)(e,t,r),{type:"timestamp-authority",logID:e.signerSerialNumber,timestamp:e.signingTime}}function lvt(e,t){let r=!1;if(cvt(e)&&((0,svt.verifyTLogSET)(e,t),r=!0),uvt(e)&&((0,ivt.verifyMerkleInclusion)(e),(0,nvt.verifyCheckpoint)(e,t),r=!0),!r)throw new rvt.VerificationError({code:"TLOG_MISSING_INCLUSION_ERROR",message:"inclusion could not be verified"});return{type:"transparency-log",logID:e.logId.keyId,timestamp:new Date(Number(e.integratedTime)*1e3)}}function cvt(e){return e.inclusionPromise!==void 0}function uvt(e){return e.inclusionProof!==void 0}});var DDe=G(iJ=>{"use strict";Object.defineProperty(iJ,"__esModule",{value:!0});iJ.verifyDSSETLogBody=fvt;var mL=bo();function fvt(e,t){switch(e.apiVersion){case"0.0.1":return Avt(e,t);default:throw new mL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported dsse version: ${e.apiVersion}`})}}function Avt(e,t){if(e.spec.signatures?.length!==1)throw new mL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=e.spec.signatures[0].signature;if(!t.compareSignature(Buffer.from(r,"base64")))throw new mL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=e.spec.payloadHash?.value||"";if(!t.compareDigest(Buffer.from(s,"hex")))throw new mL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}});var PDe=G(oJ=>{"use strict";Object.defineProperty(oJ,"__esModule",{value:!0});oJ.verifyHashedRekordTLogBody=pvt;var sJ=bo();function pvt(e,t){switch(e.apiVersion){case"0.0.1":return hvt(e,t);default:throw new sJ.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported hashedrekord version: ${e.apiVersion}`})}}function hvt(e,t){let r=e.spec.signature.content||"";if(!t.compareSignature(Buffer.from(r,"base64")))throw new sJ.VerificationError({code:"TLOG_BODY_ERROR",message:"signature mismatch"});let s=e.spec.data.hash?.value||"";if(!t.compareDigest(Buffer.from(s,"hex")))throw new sJ.VerificationError({code:"TLOG_BODY_ERROR",message:"digest mismatch"})}});var xDe=G(aJ=>{"use strict";Object.defineProperty(aJ,"__esModule",{value:!0});aJ.verifyIntotoTLogBody=dvt;var yL=bo();function dvt(e,t){switch(e.apiVersion){case"0.0.2":return gvt(e,t);default:throw new yL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported intoto version: ${e.apiVersion}`})}}function gvt(e,t){if(e.spec.content.envelope.signatures?.length!==1)throw new yL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=mvt(e.spec.content.envelope.signatures[0].sig);if(!t.compareSignature(Buffer.from(r,"base64")))throw new yL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=e.spec.content.payloadHash?.value||"";if(!t.compareDigest(Buffer.from(s,"hex")))throw new yL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}function mvt(e){return Buffer.from(e,"base64").toString("utf-8")}});var QDe=G(lJ=>{"use strict";Object.defineProperty(lJ,"__esModule",{value:!0});lJ.verifyTLogBody=Cvt;var kDe=bo(),yvt=DDe(),Evt=PDe(),Ivt=xDe();function Cvt(e,t){let{kind:r,version:s}=e.kindVersion,a=JSON.parse(e.canonicalizedBody.toString("utf8"));if(r!==a.kind||s!==a.apiVersion)throw new kDe.VerificationError({code:"TLOG_BODY_ERROR",message:`kind/version mismatch - expected: ${r}/${s}, received: ${a.kind}/${a.apiVersion}`});switch(a.kind){case"dsse":return(0,yvt.verifyDSSETLogBody)(a,t);case"intoto":return(0,Ivt.verifyIntotoTLogBody)(a,t);case"hashedrekord":return(0,Evt.verifyHashedRekordTLogBody)(a,t);default:throw new kDe.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported kind: ${r}`})}}});var ODe=G(EL=>{"use strict";Object.defineProperty(EL,"__esModule",{value:!0});EL.Verifier=void 0;var wvt=Ce("util"),g1=bo(),TDe=yDe(),RDe=IDe(),FDe=bDe(),Bvt=QDe(),cJ=class{constructor(t,r={}){this.trustMaterial=t,this.options={ctlogThreshold:r.ctlogThreshold??1,tlogThreshold:r.tlogThreshold??1,tsaThreshold:r.tsaThreshold??0}}verify(t,r){let s=this.verifyTimestamps(t),a=this.verifySigningKey(t,s);return this.verifyTLogs(t),this.verifySignature(t,a),r&&this.verifyPolicy(r,a.identity||{}),a}verifyTimestamps(t){let r=0,s=0,a=t.timestamps.map(n=>{switch(n.$case){case"timestamp-authority":return s++,(0,FDe.verifyTSATimestamp)(n.timestamp,t.signature.signature,this.trustMaterial.timestampAuthorities);case"transparency-log":return r++,(0,FDe.verifyTLogTimestamp)(n.tlogEntry,this.trustMaterial.tlogs)}});if(NDe(a))throw new g1.VerificationError({code:"TIMESTAMP_ERROR",message:"duplicate timestamp"});if(rn.timestamp)}verifySigningKey({key:t},r){switch(t.$case){case"public-key":return(0,TDe.verifyPublicKey)(t.hint,r,this.trustMaterial);case"certificate":{let s=(0,TDe.verifyCertificate)(t.certificate,r,this.trustMaterial);if(NDe(s.scts))throw new g1.VerificationError({code:"CERTIFICATE_ERROR",message:"duplicate SCT"});if(s.scts.length(0,Bvt.verifyTLogBody)(s,t))}verifySignature(t,r){if(!t.signature.verifySignature(r.key))throw new g1.VerificationError({code:"SIGNATURE_ERROR",message:"signature verification failed"})}verifyPolicy(t,r){t.subjectAlternativeName&&(0,RDe.verifySubjectAlternativeName)(t.subjectAlternativeName,r.subjectAlternativeName),t.extensions&&(0,RDe.verifyExtensions)(t.extensions,r.extensions)}};EL.Verifier=cJ;function NDe(e){for(let t=0;t{"use strict";Object.defineProperty(iu,"__esModule",{value:!0});iu.Verifier=iu.toTrustMaterial=iu.VerificationError=iu.PolicyError=iu.toSignedEntity=void 0;var vvt=fDe();Object.defineProperty(iu,"toSignedEntity",{enumerable:!0,get:function(){return vvt.toSignedEntity}});var LDe=bo();Object.defineProperty(iu,"PolicyError",{enumerable:!0,get:function(){return LDe.PolicyError}});Object.defineProperty(iu,"VerificationError",{enumerable:!0,get:function(){return LDe.VerificationError}});var Svt=Ey();Object.defineProperty(iu,"toTrustMaterial",{enumerable:!0,get:function(){return Svt.toTrustMaterial}});var bvt=ODe();Object.defineProperty(iu,"Verifier",{enumerable:!0,get:function(){return bvt.Verifier}})});var MDe=G(Ga=>{"use strict";Object.defineProperty(Ga,"__esModule",{value:!0});Ga.DEFAULT_TIMEOUT=Ga.DEFAULT_RETRY=void 0;Ga.createBundleBuilder=xvt;Ga.createKeyFinder=kvt;Ga.createVerificationPolicy=Qvt;var Dvt=xl(),m1=C7(),Pvt=IL();Ga.DEFAULT_RETRY={retries:2};Ga.DEFAULT_TIMEOUT=5e3;function xvt(e,t){let r={signer:Tvt(t),witnesses:Fvt(t)};switch(e){case"messageSignature":return new m1.MessageSignatureBundleBuilder(r);case"dsseEnvelope":return new m1.DSSEBundleBuilder({...r,certificateChain:t.legacyCompatibility})}}function kvt(e){return t=>{let r=e(t);if(!r)throw new Pvt.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${t}`});return{publicKey:Dvt.crypto.createPublicKey(r),validFor:()=>!0}}}function Qvt(e){let t={},r=e.certificateIdentityEmail||e.certificateIdentityURI;return r&&(t.subjectAlternativeName=r),e.certificateIssuer&&(t.extensions={issuer:e.certificateIssuer}),t}function Tvt(e){return new m1.FulcioSigner({fulcioBaseURL:e.fulcioURL,identityProvider:e.identityProvider||Rvt(e),retry:e.retry??Ga.DEFAULT_RETRY,timeout:e.timeout??Ga.DEFAULT_TIMEOUT})}function Rvt(e){let t=e.identityToken;return t?{getToken:()=>Promise.resolve(t)}:new m1.CIContextProvider("sigstore")}function Fvt(e){let t=[];return Nvt(e)&&t.push(new m1.RekorWitness({rekorBaseURL:e.rekorURL,entryType:e.legacyCompatibility?"intoto":"dsse",fetchOnConflict:!1,retry:e.retry??Ga.DEFAULT_RETRY,timeout:e.timeout??Ga.DEFAULT_TIMEOUT})),Ovt(e)&&t.push(new m1.TSAWitness({tsaBaseURL:e.tsaServerURL,retry:e.retry??Ga.DEFAULT_RETRY,timeout:e.timeout??Ga.DEFAULT_TIMEOUT})),t}function Nvt(e){return e.tlogUpload!==!1}function Ovt(e){return e.tsaServerURL!==void 0}});var HDe=G(su=>{"use strict";var Lvt=su&&su.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Mvt=su&&su.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),UDe=su&&su.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;aa.verify(e,s))}async function _De(e={}){let t=await Uvt.getTrustedRoot({mirrorURL:e.tufMirrorURL,rootPath:e.tufRootPath,cachePath:e.tufCachePath,forceCache:e.tufForceCache,retry:e.retry??y1.DEFAULT_RETRY,timeout:e.timeout??y1.DEFAULT_TIMEOUT}),r=e.keySelector?y1.createKeyFinder(e.keySelector):void 0,s=(0,uJ.toTrustMaterial)(t,r),a={ctlogThreshold:e.ctLogThreshold,tlogThreshold:e.tlogThreshold},n=new uJ.Verifier(s,a),c=y1.createVerificationPolicy(e);return{verify:(f,p)=>{let h=(0,fJ.bundleFromJSON)(f),E=(0,uJ.toSignedEntity)(h,p);n.verify(E,c)}}}});var GDe=G(Ni=>{"use strict";Object.defineProperty(Ni,"__esModule",{value:!0});Ni.verify=Ni.sign=Ni.createVerifier=Ni.attest=Ni.VerificationError=Ni.PolicyError=Ni.TUFError=Ni.InternalError=Ni.DEFAULT_REKOR_URL=Ni.DEFAULT_FULCIO_URL=Ni.ValidationError=void 0;var Gvt=SD();Object.defineProperty(Ni,"ValidationError",{enumerable:!0,get:function(){return Gvt.ValidationError}});var AJ=C7();Object.defineProperty(Ni,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return AJ.DEFAULT_FULCIO_URL}});Object.defineProperty(Ni,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return AJ.DEFAULT_REKOR_URL}});Object.defineProperty(Ni,"InternalError",{enumerable:!0,get:function(){return AJ.InternalError}});var qvt=oL();Object.defineProperty(Ni,"TUFError",{enumerable:!0,get:function(){return qvt.TUFError}});var jDe=IL();Object.defineProperty(Ni,"PolicyError",{enumerable:!0,get:function(){return jDe.PolicyError}});Object.defineProperty(Ni,"VerificationError",{enumerable:!0,get:function(){return jDe.VerificationError}});var CL=HDe();Object.defineProperty(Ni,"attest",{enumerable:!0,get:function(){return CL.attest}});Object.defineProperty(Ni,"createVerifier",{enumerable:!0,get:function(){return CL.createVerifier}});Object.defineProperty(Ni,"sign",{enumerable:!0,get:function(){return CL.sign}});Object.defineProperty(Ni,"verify",{enumerable:!0,get:function(){return CL.verify}})});bt();Ge();bt();var BPe=Ce("child_process"),vPe=et(N0());jt();var WI=new Map([]);var Kv={};Vt(Kv,{BaseCommand:()=>ft,WorkspaceRequiredError:()=>ar,getCli:()=>kde,getDynamicLibs:()=>xde,getPluginConfiguration:()=>KI,openWorkspace:()=>VI,pluginCommands:()=>WI,runExit:()=>OR});jt();var ft=class extends st{constructor(){super(...arguments);this.cwd=he.String("--cwd",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<"u")throw new ot("The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path");return super.validateAndExecute()}};Ge();bt();jt();var ar=class extends ot{constructor(t,r){let s=Y.relative(t,r),a=Y.join(t,_t.fileName);super(`This command can only be run from within a workspace of your project (${s} isn't a workspace of ${a}).`)}};Ge();bt();iA();Sc();uv();jt();var $it=et(hi());Jo();var xde=()=>new Map([["@yarnpkg/cli",Kv],["@yarnpkg/core",Vv],["@yarnpkg/fslib",M2],["@yarnpkg/libzip",lv],["@yarnpkg/parsers",W2],["@yarnpkg/shell",hv],["clipanion",nB],["semver",$it],["typanion",qs]]);Ge();async function VI(e,t){let{project:r,workspace:s}=await Tt.find(e,t);if(!s)throw new ar(r.cwd,t);return s}Ge();bt();iA();Sc();uv();jt();var mbt=et(hi());Jo();var G5={};Vt(G5,{AddCommand:()=>$I,BinCommand:()=>eC,CacheCleanCommand:()=>tC,ClipanionCommand:()=>aC,ConfigCommand:()=>sC,ConfigGetCommand:()=>rC,ConfigSetCommand:()=>nC,ConfigUnsetCommand:()=>iC,DedupeCommand:()=>oC,EntryCommand:()=>cC,ExecCommand:()=>fC,ExplainCommand:()=>hC,ExplainPeerRequirementsCommand:()=>AC,HelpCommand:()=>lC,InfoCommand:()=>dC,LinkCommand:()=>mC,NodeCommand:()=>yC,PluginCheckCommand:()=>EC,PluginImportCommand:()=>wC,PluginImportSourcesCommand:()=>BC,PluginListCommand:()=>IC,PluginRemoveCommand:()=>vC,PluginRuntimeCommand:()=>SC,RebuildCommand:()=>bC,RemoveCommand:()=>DC,RunCommand:()=>xC,RunIndexCommand:()=>PC,SetResolutionCommand:()=>kC,SetVersionCommand:()=>pC,SetVersionSourcesCommand:()=>CC,UnlinkCommand:()=>QC,UpCommand:()=>TC,VersionCommand:()=>uC,WhyCommand:()=>RC,WorkspaceCommand:()=>MC,WorkspacesListCommand:()=>LC,YarnCommand:()=>gC,dedupeUtils:()=>YR,default:()=>pat,suggestUtils:()=>ef});var $0e=et(N0());Ge();Ge();Ge();jt();var m0e=et(Xv());Jo();var ef={};Vt(ef,{Modifier:()=>E5,Strategy:()=>GR,Target:()=>$v,WorkspaceModifier:()=>A0e,applyModifier:()=>Eot,disableTimeGate:()=>XI,extractDescriptorFromPath:()=>I5,extractRangeModifier:()=>p0e,fetchDescriptorFrom:()=>C5,findProjectDescriptors:()=>g0e,getModifier:()=>eS,getSuggestedDescriptors:()=>tS,makeWorkspaceDescriptor:()=>d0e,toWorkspaceModifier:()=>h0e});Ge();Ge();bt();var y5=et(hi()),mot="workspace:",$v=(s=>(s.REGULAR="dependencies",s.DEVELOPMENT="devDependencies",s.PEER="peerDependencies",s))($v||{}),E5=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="",s))(E5||{}),A0e=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="*",s))(A0e||{}),GR=(n=>(n.KEEP="keep",n.REUSE="reuse",n.PROJECT="project",n.LATEST="latest",n.CACHE="cache",n))(GR||{});function XI(e){e.useWithSource("",{npmMinimalAgeGate:"0"},e.startingCwd,{overwrite:!0});let t=e.get("npmScopes");for(let r of t.values())r.delete("npmMinimalAgeGate")}function eS(e,t){return e.exact?"":e.caret?"^":e.tilde?"~":t.configuration.get("defaultSemverRangePrefix")}var yot=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function p0e(e,{project:t}){let r=e.match(yot);return r?r[1]:t.configuration.get("defaultSemverRangePrefix")}function Eot(e,t){let{protocol:r,source:s,params:a,selector:n}=H.parseRange(e.range);return y5.default.valid(n)&&(n=`${t}${e.range}`),H.makeDescriptor(e,H.makeRange({protocol:r,source:s,params:a,selector:n}))}function h0e(e){switch(e){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${e}"`)}}function d0e(e,t){return H.makeDescriptor(e.anchoredDescriptor,`${mot}${h0e(t)}`)}async function g0e(e,{project:t,target:r}){let s=new Map,a=n=>{let c=s.get(n.descriptorHash);return c||s.set(n.descriptorHash,c={descriptor:n,locators:[]}),c};for(let n of t.workspaces)if(r==="peerDependencies"){let c=n.manifest.peerDependencies.get(e.identHash);c!==void 0&&a(c).locators.push(n.anchoredLocator)}else{let c=n.manifest.dependencies.get(e.identHash),f=n.manifest.devDependencies.get(e.identHash);r==="devDependencies"?f!==void 0?a(f).locators.push(n.anchoredLocator):c!==void 0&&a(c).locators.push(n.anchoredLocator):c!==void 0?a(c).locators.push(n.anchoredLocator):f!==void 0&&a(f).locators.push(n.anchoredLocator)}return s}async function I5(e,{cwd:t,workspace:r}){return await Cot(async s=>{Y.isAbsolute(e)||(e=Y.relative(r.cwd,Y.resolve(t,e)),e.match(/^\.{0,2}\//)||(e=`./${e}`));let{project:a}=r,n=await C5(H.makeIdent(null,"archive"),e,{project:r.project,cache:s,workspace:r});if(!n)throw new Error("Assertion failed: The descriptor should have been found");let c=new Qi,f=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:s,fetcher:p,report:c,resolver:f},E=f.bindDescriptor(n,r.anchoredLocator,h),C=H.convertDescriptorToLocator(E),S=await p.fetch(C,h),x=await _t.find(S.prefixPath,{baseFs:S.packageFs});if(!x.name)throw new Error("Target path doesn't have a name");return H.makeDescriptor(x.name,e)})}function Iot(e){if(e.range==="unknown")return{type:"resolve",range:"latest"};if(kr.validRange(e.range))return{type:"fixed",range:e.range};if(jp.test(e.range))return{type:"resolve",range:e.range};let t=e.range.match(/^(?:jsr:|npm:)(.*)/);if(!t)return{type:"fixed",range:e.range};let[,r]=t,s=`${H.stringifyIdent(e)}@`;return r.startsWith(s)&&(r=r.slice(s.length)),kr.validRange(r)?{type:"fixed",range:e.range}:jp.test(r)?{type:"resolve",range:e.range}:{type:"fixed",range:e.range}}async function tS(e,{project:t,workspace:r,cache:s,target:a,fixed:n,modifier:c,strategies:f,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let h=!n||e.range==="unknown"?Iot(e):{type:"fixed",range:e.range};if(h.type==="fixed")return{suggestions:[{descriptor:e,name:`Use ${H.prettyDescriptor(t.configuration,e)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let E=typeof r<"u"&&r!==null&&r.manifest[a].get(e.identHash)||null,C=[],S=[],x=async I=>{try{await I()}catch(R){S.push(R)}};for(let I of f){if(C.length>=p)break;switch(I){case"keep":await x(async()=>{E&&C.push({descriptor:E,name:`Keep ${H.prettyDescriptor(t.configuration,E)}`,reason:"(no changes)"})});break;case"reuse":await x(async()=>{for(let{descriptor:R,locators:N}of(await g0e(e,{project:t,target:a})).values()){if(N.length===1&&N[0].locatorHash===r.anchoredLocator.locatorHash&&f.includes("keep"))continue;let U=`(originally used by ${H.prettyLocator(t.configuration,N[0])}`;U+=N.length>1?` and ${N.length-1} other${N.length>2?"s":""})`:")",C.push({descriptor:R,name:`Reuse ${H.prettyDescriptor(t.configuration,R)}`,reason:U})}});break;case"cache":await x(async()=>{for(let R of t.storedDescriptors.values())R.identHash===e.identHash&&C.push({descriptor:R,name:`Reuse ${H.prettyDescriptor(t.configuration,R)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await x(async()=>{if(r.manifest.name!==null&&e.identHash===r.manifest.name.identHash)return;let R=t.tryWorkspaceByIdent(e);if(R===null)return;let N=d0e(R,c);C.push({descriptor:N,name:`Attach ${H.prettyDescriptor(t.configuration,N)}`,reason:`(local workspace at ${ue.pretty(t.configuration,R.relativeCwd,ue.Type.PATH)})`})});break;case"latest":{let R=t.configuration.get("enableNetwork"),N=t.configuration.get("enableOfflineMode");await x(async()=>{if(a==="peerDependencies")C.push({descriptor:H.makeDescriptor(e,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!R&&!N)C.push({descriptor:null,name:"Resolve from latest",reason:ue.pretty(t.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let U=await C5(e,h.range,{project:t,cache:s,workspace:r,modifier:c});U&&C.push({descriptor:U,name:`Use ${H.prettyDescriptor(t.configuration,U)}`,reason:`(resolved from ${N?"the cache":"latest"})`})}})}break}}return{suggestions:C.slice(0,p),rejections:S.slice(0,p)}}async function C5(e,t,{project:r,cache:s,workspace:a,preserveModifier:n=!0,modifier:c}){let f=r.configuration.normalizeDependency(H.makeDescriptor(e,t)),p=new Qi,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),C={project:r,fetcher:h,cache:s,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},S={...C,resolver:E,fetchOptions:C},x=E.bindDescriptor(f,a.anchoredLocator,S),I=await E.getCandidates(x,{},S);if(I.length===0)return null;let R=I[0],{protocol:N,source:U,params:K,selector:$}=H.parseRange(H.convertToManifestRange(R.reference));if(N===r.configuration.get("defaultProtocol")&&(N=null),y5.default.valid($)){let ie=$;if(typeof c<"u")$=c+$;else if(n!==!1){let ge=typeof n=="string"?n:f.range;$=p0e(ge,{project:r})+$}let fe=H.makeDescriptor(R,H.makeRange({protocol:N,source:U,params:K,selector:$}));(await E.getCandidates(r.configuration.normalizeDependency(fe),{},S)).length!==1&&($=ie)}return H.makeDescriptor(R,H.makeRange({protocol:N,source:U,params:K,selector:$}))}async function Cot(e){return await ae.mktempPromise(async t=>{let r=Je.create(t);return r.useWithSource(t,{enableMirror:!1,compressionLevel:0},t,{overwrite:!0}),await e(new zr(t,{configuration:r,check:!1,immutable:!1}))})}var $I=class extends ft{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.fixed=he.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=he.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=he.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=he.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=he.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=he.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=he.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=he.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=he.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=he.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.noTimeGate=he.Boolean("--no-time-gate",!1,{description:"Disable the minimum release age check for this command"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:Qs(La)});this.silent=he.Boolean("--silent",{hidden:!0});this.packages=he.Rest()}static{this.paths=[["add"]]}static{this.usage=st.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"],["Add a local package (gzipped tarball format) to the current workspace","$0 add local-package-name@file:../path/to/local-package-name-v0.1.2.tgz"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins);this.noTimeGate&&XI(r);let{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=f||r.get("preferReuse"),h=eS(this,s),E=[p?"reuse":void 0,"project",this.cached?"cache":void 0,"latest"].filter(K=>typeof K<"u"),C=f?1/0:1,S=K=>{let $=H.tryParseDescriptor(K.slice(4));return $?$.range==="unknown"?H.makeDescriptor($,`jsr:${H.stringifyIdent($)}@latest`):H.makeDescriptor($,`jsr:${$.range}`):null},x=await Promise.all(this.packages.map(async K=>{let $=K.match(/^\.{0,2}\//)?await I5(K,{cwd:this.context.cwd,workspace:a}):K.startsWith("jsr:")?S(K):H.tryParseDescriptor(K),ie=K.match(/^(https?:|git@github)/);if(ie)throw new ot(`It seems you are trying to add a package using a ${ue.pretty(r,`${ie[0]}...`,ue.Type.RANGE)} url; we now require package names to be explicitly specified. +Try running the command again with the package name prefixed: ${ue.pretty(r,"yarn add",ue.Type.CODE)} ${ue.pretty(r,H.makeDescriptor(H.makeIdent(null,"my-package"),`${ie[0]}...`),ue.Type.DESCRIPTOR)}`);if(!$)throw new ot(`The ${ue.pretty(r,K,ue.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let fe=wot(a,$,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(fe.map(async ge=>{let pe=await tS($,{project:s,workspace:a,cache:n,fixed:c,target:ge,modifier:h,strategies:E,maxResults:C});return{request:$,suggestedDescriptors:pe,target:ge}}))})).then(K=>K.flat()),I=await fA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async K=>{for(let{request:$,suggestedDescriptors:{suggestions:ie,rejections:fe}}of x)if(ie.filter(ge=>ge.descriptor!==null).length===0){let[ge]=fe;if(typeof ge>"u")throw new Error("Assertion failed: Expected an error to have been set");s.configuration.get("enableNetwork")?K.reportError(27,`${H.prettyDescriptor(r,$)} can't be resolved to a satisfying range`):K.reportError(27,`${H.prettyDescriptor(r,$)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),K.reportSeparator(),K.reportExceptionOnce(ge)}});if(I.hasErrors())return I.exitCode();let R=!1,N=[],U=[];for(let{suggestedDescriptors:{suggestions:K},target:$}of x){let ie,fe=K.filter(De=>De.descriptor!==null),le=fe[0].descriptor,ge=fe.every(De=>H.areDescriptorsEqual(De.descriptor,le));fe.length===1||ge?ie=le:(R=!0,{answer:ie}=await(0,m0e.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:K.map(({descriptor:De,name:ye,reason:d})=>De?{name:ye,hint:d,descriptor:De}:{name:ye,hint:d,disabled:!0}),onCancel:()=>process.exit(130),result(De){return this.find(De,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let pe=a.manifest[$].get(ie.identHash);(typeof pe>"u"||pe.descriptorHash!==ie.descriptorHash)&&(a.manifest[$].set(ie.identHash,ie),this.optional&&($==="dependencies"?a.manifest.ensureDependencyMeta({...ie,range:"unknown"}).optional=!0:$==="peerDependencies"&&(a.manifest.ensurePeerDependencyMeta({...ie,range:"unknown"}).optional=!0)),typeof pe>"u"?N.push([a,$,ie,E]):U.push([a,$,pe,ie]))}return await r.triggerMultipleHooks(K=>K.afterWorkspaceDependencyAddition,N),await r.triggerMultipleHooks(K=>K.afterWorkspaceDependencyReplacement,U),R&&this.context.stdout.write(` +`),await s.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};function wot(e,t,{dev:r,peer:s,preferDev:a,optional:n}){let c=e.manifest.dependencies.has(t.identHash),f=e.manifest.devDependencies.has(t.identHash),p=e.manifest.peerDependencies.has(t.identHash);if((r||s)&&c)throw new ot(`Package "${H.prettyIdent(e.project.configuration,t)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!s&&p)throw new ot(`Package "${H.prettyIdent(e.project.configuration,t)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&f)throw new ot(`Package "${H.prettyIdent(e.project.configuration,t)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!s&&p)throw new ot(`Package "${H.prettyIdent(e.project.configuration,t)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new ot(`Package "${H.prettyIdent(e.project.configuration,t)}" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return s&&h.push("peerDependencies"),(r||a)&&h.push("devDependencies"),n&&h.push("dependencies"),h.length>0?h:f?["devDependencies"]:p?["peerDependencies"]:["dependencies"]}Ge();Ge();jt();var eC=class extends ft{constructor(){super(...arguments);this.verbose=he.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=he.String({required:!1})}static{this.paths=[["bin"]]}static{this.usage=st.Usage({description:"get the path to a binary script",details:` + When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. + + When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. + `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Tt.find(r,this.context.cwd);if(await s.restoreInstallState(),this.name){let f=(await wn.getPackageAccessibleBinaries(a,{project:s})).get(this.name);if(!f)throw new ot(`Couldn't find a binary named "${this.name}" for package "${H.prettyLocator(r,a)}"`);let[,p]=f;return this.context.stdout.write(`${p} +`),0}return(await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout},async c=>{let f=await wn.getPackageAccessibleBinaries(a,{project:s}),h=Array.from(f.keys()).reduce((E,C)=>Math.max(E,C.length),0);for(let[E,[C,S]]of f)c.reportJson({name:E,source:H.stringifyIdent(C),path:S});if(this.verbose)for(let[E,[C]]of f)c.reportInfo(null,`${E.padEnd(h," ")} ${H.prettyLocator(r,C)}`);else for(let E of f.keys())c.reportInfo(null,E)})).exitCode()}};Ge();bt();jt();var tC=class extends ft{constructor(){super(...arguments);this.mirror=he.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=he.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}static{this.paths=[["cache","clean"],["cache","clear"]]}static{this.usage=st.Usage({description:"remove the shared cache files",details:` + This command will remove all the files from the cache. + `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins);if(!r.get("enableCacheClean"))throw new ot("Cache cleaning is currently disabled. To enable it, set `enableCacheClean: true` in your configuration file. Note: Cache cleaning is typically not required and should be avoided when using Zero-Installs.");let s=await zr.find(r);return(await Ft.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&s.mirrorCwd!==null,c=!this.mirror;n&&(await ae.removePromise(s.mirrorCwd),await r.triggerHook(f=>f.cleanGlobalArtifacts,r)),c&&await ae.removePromise(s.cwd)})).exitCode()}};Ge();jt();Zl();var w5=Ce("util"),rC=class extends ft{constructor(){super(...arguments);this.why=he.Boolean("--why",!1,{description:"Print the explanation for why a setting has its value"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=he.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=he.String()}static{this.paths=[["config","get"]]}static{this.usage=st.Usage({description:"read a configuration settings",details:` + This command will print a configuration setting. + + Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. + `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),s=this.name.replace(/[.[].*$/,""),a=this.name.replace(/^[^.[]*/,"");if(typeof r.settings.get(s)>"u")throw new ot(`Couldn't find a configuration settings named "${s}"`);let c=r.getSpecial(s,{hideSecrets:!this.unsafe,getNativePaths:!0}),f=qe.convertMapsToIndexableObjects(c),p=a?xa(f,a):f,h=await Ft.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p=="string")return this.context.stdout.write(`${p} +`),h.exitCode();w5.inspect.styles.name="cyan",this.context.stdout.write(`${(0,w5.inspect)(p,{depth:1/0,colors:r.get("enableColors"),compact:!1})} +`)}return h.exitCode()}};Ge();jt();Zl();var B5=Ce("util"),nC=class extends ft{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=he.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=he.String();this.value=he.String()}static{this.paths=[["config","set"]]}static{this.usage=st.Usage({description:"change a configuration settings",details:` + This command will set a configuration setting. + + When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). + + When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. + `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new ot("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new ot(`Couldn't find a configuration settings named "${a}"`);if(a==="enableStrictSettings")throw new ot("This setting only affects the file it's in, and thus cannot be set from the CLI");let f=this.json?JSON.parse(this.value):this.value;await(this.home?I=>Je.updateHomeConfiguration(I):I=>Je.updateConfiguration(s(),I))(I=>{if(n){let R=pd(I);return J0(R,this.name,f),R}else return{...I,[a]:f}});let E=(await Je.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),C=qe.convertMapsToIndexableObjects(E),S=n?xa(C,n):C;return(await Ft.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async I=>{B5.inspect.styles.name="cyan",I.reportInfo(0,`Successfully set ${this.name} to ${(0,B5.inspect)(S,{depth:1/0,colors:r.get("enableColors"),compact:!1})}`)})).exitCode()}};Ge();jt();Zl();var iC=class extends ft{constructor(){super(...arguments);this.home=he.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=he.String()}static{this.paths=[["config","unset"]]}static{this.usage=st.Usage({description:"unset a configuration setting",details:` + This command will unset a configuration setting. + `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new ot("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new ot(`Couldn't find a configuration settings named "${a}"`);let f=this.home?h=>Je.updateHomeConfiguration(h):h=>Je.updateConfiguration(s(),h);return(await Ft.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await f(C=>{if(!CB(C,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,C;let S=n?pd(C):{...C};return hd(S,this.name),S}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};Ge();bt();jt();var qR=Ce("util"),sC=class extends ft{constructor(){super(...arguments);this.noDefaults=he.Boolean("--no-defaults",!1,{description:"Omit the default values from the display"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.verbose=he.Boolean("-v,--verbose",{hidden:!0});this.why=he.Boolean("--why",{hidden:!0});this.names=he.Rest()}static{this.paths=[["config"]]}static{this.usage=st.Usage({description:"display the current configuration",details:` + This command prints the current active configuration settings. + `,examples:[["Print the active configuration settings","$0 config"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins,{strict:!1}),s=await kI({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:"The --verbose option is deprecated, the settings' descriptions are now always displayed"},{option:this.why,message:"The --why option is deprecated, the settings' sources are now always displayed"}]);if(s!==null)return s;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,c=await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async f=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)f.reportError(34,`Invalid configuration key "${p}" in ${h}`);f.reportSeparator()}if(this.json)for(let p of a){if(this.noDefaults&&!r.sources.has(p))continue;let h=r.settings.get(p);typeof h>"u"&&f.reportError(34,`No configuration key named "${p}"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),C=r.sources.get(p)??"",S=C&&C[0]!=="<"?Ae.fromPortablePath(C):C;f.reportJson({key:p,effective:E,source:S,...h})}else{let p={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},h={},E={children:h};for(let C of a){if(this.noDefaults&&!r.sources.has(C))continue;let S=r.settings.get(C),x=r.sources.get(C)??"",I=r.getSpecial(C,{hideSecrets:!0,getNativePaths:!0}),R={Description:{label:"Description",value:ue.tuple(ue.Type.MARKDOWN,{text:S.description,format:this.cli.format(),paragraphs:!1})},Source:{label:"Source",value:ue.tuple(x[0]==="<"?ue.Type.CODE:ue.Type.PATH,x)}};h[C]={value:ue.tuple(ue.Type.CODE,C),children:R};let N=(U,K)=>{for(let[$,ie]of K)if(ie instanceof Map){let fe={};U[$]={children:fe},N(fe,ie)}else U[$]={label:$,value:ue.tuple(ue.Type.NO_HINT,(0,qR.inspect)(ie,p))}};I instanceof Map?N(R,I):R.Value={label:"Value",value:ue.tuple(ue.Type.NO_HINT,(0,qR.inspect)(I,p))}}a.length!==1&&(n=void 0),ts.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<"u"){let f=a[0],p=(0,qR.inspect)(r.getSpecial(f,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get("enableColors")});this.context.stdout.write(` +`),this.context.stdout.write(`${p} +`)}return c.exitCode()}};Ge();jt();Jo();var YR={};Vt(YR,{Strategy:()=>rS,acceptedStrategies:()=>Bot,dedupe:()=>v5});Ge();Ge();var y0e=et(Zo()),rS=(t=>(t.HIGHEST="highest",t))(rS||{}),Bot=new Set(Object.values(rS)),vot={highest:async(e,t,{resolver:r,fetcher:s,resolveOptions:a,fetchOptions:n})=>{let c=new Map;for(let[p,h]of e.storedResolutions){let E=e.storedDescriptors.get(p);if(typeof E>"u")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);qe.getSetWithDefault(c,E.identHash).add(h)}let f=new Map(qe.mapAndFilter(e.storedDescriptors.values(),p=>H.isVirtualDescriptor(p)?qe.mapAndFilter.skip:[p.descriptorHash,qe.makeDeferred()]));for(let p of e.storedDescriptors.values()){let h=f.get(p.descriptorHash);if(typeof h>"u")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=e.storedResolutions.get(p.descriptorHash);if(typeof E>"u")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let C=e.originalPackages.get(E);if(typeof C>"u")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let S=r.getResolutionDependencies(p,a),x=Object.fromEntries(await qe.allSettledSafe(Object.entries(S).map(async([$,ie])=>{let fe=f.get(ie.descriptorHash);if(typeof fe>"u")throw new Error(`Assertion failed: The descriptor (${ie.descriptorHash}) should have been registered`);let le=await fe.promise;if(!le)throw new Error("Assertion failed: Expected the dependency to have been through the dedupe process itself");return[$,le.updatedPackage]})));if(t.length&&!y0e.default.isMatch(H.stringifyIdent(p),t)||!r.shouldPersistResolution(C,a))return C;let I=c.get(p.identHash);if(typeof I>"u")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(I.size===1)return C;let R=[...I].map($=>{let ie=e.originalPackages.get($);if(typeof ie>"u")throw new Error(`Assertion failed: The package (${$}) should have been registered`);return ie}),N=await r.getSatisfying(p,x,R,a),U=N.locators?.[0];if(typeof U>"u"||!N.sorted)return C;let K=e.originalPackages.get(U.locatorHash);if(typeof K>"u")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return K}).then(async S=>{let x=await e.preparePackage(S,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:C,updatedPackage:S,resolvedPackage:x})}).catch(S=>{h.reject(S)})}return[...f.values()].map(p=>p.promise)}};async function v5(e,{strategy:t,patterns:r,cache:s,report:a}){let{configuration:n}=e,c=new Qi,f=n.makeResolver(),p=n.makeFetcher(),h={cache:s,checksums:e.storedChecksums,fetcher:p,project:e,report:c,cacheOptions:{skipIntegrityCheck:!0}},E={project:e,resolver:f,report:c,fetchOptions:h};return await a.startTimerPromise("Deduplication step",async()=>{let C=vot[t],S=await C(e,r,{resolver:f,resolveOptions:E,fetcher:p,fetchOptions:h}),x=Io.progressViaCounter(S.length);await a.reportProgress(x);let I=0;await Promise.all(S.map(U=>U.then(K=>{if(K===null||K.currentPackage.locatorHash===K.updatedPackage.locatorHash)return;I++;let{descriptor:$,currentPackage:ie,updatedPackage:fe}=K;a.reportInfo(0,`${H.prettyDescriptor(n,$)} can be deduped from ${H.prettyLocator(n,ie)} to ${H.prettyLocator(n,fe)}`),a.reportJson({descriptor:H.stringifyDescriptor($),currentResolution:H.stringifyLocator(ie),updatedResolution:H.stringifyLocator(fe)}),e.storedResolutions.set($.descriptorHash,fe.locatorHash)}).finally(()=>x.tick())));let R;switch(I){case 0:R="No packages";break;case 1:R="One package";break;default:R=`${I} packages`}let N=ue.pretty(n,t,ue.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${N} strategy`),I})}var oC=class extends ft{constructor(){super(...arguments);this.strategy=he.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:Qs(rS)});this.check=he.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:Qs(La)});this.patterns=he.Rest()}static{this.paths=[["dedupe"]]}static{this.usage=st.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=await zr.find(r);await s.restoreInstallState({restoreResolutions:!1});let n=0,c=await Ft.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async f=>{n=await v5(s,{strategy:this.strategy,patterns:this.patterns,cache:a,report:f})});return c.hasErrors()?c.exitCode():this.check?n?1:0:await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};Ge();jt();var aC=class extends ft{static{this.paths=[["--clipanion=definitions"]]}async execute(){let{plugins:t}=await Je.find(this.context.cwd,this.context.plugins),r=[];for(let c of t){let{commands:f}=c[1];if(f){let h=ba.from(f).definitions();r.push([c[0],h])}}let s=this.cli.definitions(),a=(c,f)=>c.split(" ").slice(1).join()===f.split(" ").slice(1).join(),n=E0e()["@yarnpkg/builder"].bundles.standard;for(let c of r){let f=c[1];for(let p of f)s.find(h=>a(h.path,p.path)).plugin={name:c[0],isDefault:n.includes(c[0])}}this.context.stdout.write(`${JSON.stringify(s,null,2)} +`)}};var lC=class extends ft{static{this.paths=[["help"],["--help"],["-h"]]}async execute(){this.context.stdout.write(this.cli.usage(null))}};Ge();bt();jt();var cC=class extends ft{constructor(){super(...arguments);this.leadingArgument=he.String();this.args=he.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!H.tryParseIdent(this.leadingArgument)){let r=Y.resolve(this.context.cwd,Ae.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};Ge();var uC=class extends ft{static{this.paths=[["-v"],["--version"]]}async execute(){this.context.stdout.write(`${An||""} +`)}};Ge();Ge();jt();var fC=class extends ft{constructor(){super(...arguments);this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[["exec"]]}static{this.usage=st.Usage({description:"execute a shell script",details:` + This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. + + It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). + `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Tt.find(r,this.context.cwd);return await s.restoreInstallState(),await wn.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:s})}};Ge();jt();Jo();var AC=class extends ft{constructor(){super(...arguments);this.hash=he.String({required:!1,validator:ld(Jf(),[Sp(/^p[0-9a-f]{6}$/)])})}static{this.paths=[["explain","peer-requirements"]]}static{this.usage=st.Usage({description:"explain a set of peer requirements",details:` + A peer requirement represents all peer requests that a subject must satisfy when providing a requested package to requesters. + + When the hash argument is specified, this command prints a detailed explanation of the peer requirement corresponding to the hash and whether it is satisfied or not. + + When used without arguments, this command lists all peer requirements and the corresponding hash that can be used to get detailed information about a given requirement. + + **Note:** A hash is a seven-letter code consisting of the letter 'p' followed by six characters that can be obtained from peer dependency warnings or from the list of all peer requirements(\`yarn explain peer-requirements\`). + `,examples:[["Explain the corresponding peer requirement for a hash","$0 explain peer-requirements p1a4ed"],["List all peer requirements","$0 explain peer-requirements"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),await s.applyLightResolution(),typeof this.hash<"u"?await bot(this.hash,s,{stdout:this.context.stdout}):await Dot(s,{stdout:this.context.stdout})}};async function bot(e,t,r){let s=t.peerRequirementNodes.get(e);if(typeof s>"u")throw new Error(`No peerDependency requirements found for hash: "${e}"`);let a=new Set,n=p=>a.has(p.requester.locatorHash)?{value:ue.tuple(ue.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:p.children.size>0?[{value:ue.tuple(ue.Type.NO_HINT,"...")}]:[]}:(a.add(p.requester.locatorHash),{value:ue.tuple(ue.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:Object.fromEntries(Array.from(p.children.values(),h=>[H.stringifyLocator(h.requester),n(h)]))}),c=t.peerWarnings.find(p=>p.hash===e);return(await Ft.start({configuration:t.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async p=>{let h=ue.mark(t.configuration),E=c?h.Cross:h.Check;if(p.reportInfo(0,`Package ${ue.pretty(t.configuration,s.subject,ue.Type.LOCATOR)} is requested to provide ${ue.pretty(t.configuration,s.ident,ue.Type.IDENT)} by its descendants`),p.reportSeparator(),p.reportInfo(0,ue.pretty(t.configuration,s.subject,ue.Type.LOCATOR)),ts.emitTree({children:Object.fromEntries(Array.from(s.requests.values(),C=>[H.stringifyLocator(C.requester),n(C)]))},{configuration:t.configuration,stdout:r.stdout,json:!1}),p.reportSeparator(),s.provided.range==="missing:"){let C=c?"":" , but all peer requests are optional";p.reportInfo(0,`${E} Package ${ue.pretty(t.configuration,s.subject,ue.Type.LOCATOR)} does not provide ${ue.pretty(t.configuration,s.ident,ue.Type.IDENT)}${C}.`)}else{let C=t.storedResolutions.get(s.provided.descriptorHash);if(!C)throw new Error("Assertion failed: Expected the descriptor to be registered");let S=t.storedPackages.get(C);if(!S)throw new Error("Assertion failed: Expected the package to be registered");p.reportInfo(0,`${E} Package ${ue.pretty(t.configuration,s.subject,ue.Type.LOCATOR)} provides ${ue.pretty(t.configuration,s.ident,ue.Type.IDENT)} with version ${H.prettyReference(t.configuration,S.version??"0.0.0")}, ${c?"which does not satisfy all requests.":"which satisfies all requests"}`),c?.type===3&&(c.range?p.reportInfo(0,` The combined requested range is ${ue.pretty(t.configuration,c.range,ue.Type.RANGE)}`):p.reportInfo(0," Unfortunately, the requested ranges have no overlap"))}})).exitCode()}async function Dot(e,t){return(await Ft.start({configuration:e.configuration,stdout:t.stdout,includeFooter:!1,includePrefix:!1},async s=>{let a=ue.mark(e.configuration),n=qe.sortMap(e.peerRequirementNodes,[([,c])=>H.stringifyLocator(c.subject),([,c])=>H.stringifyIdent(c.ident)]);for(let[,c]of n.values()){if(!c.root)continue;let f=e.peerWarnings.find(E=>E.hash===c.hash),p=[...H.allPeerRequests(c)],h;if(p.length>2?h=` and ${p.length-1} other dependencies`:p.length===2?h=" and 1 other dependency":h="",c.provided.range!=="missing:"){let E=e.storedResolutions.get(c.provided.descriptorHash);if(!E)throw new Error("Assertion failed: Expected the resolution to have been registered");let C=e.storedPackages.get(E);if(!C)throw new Error("Assertion failed: Expected the provided package to have been registered");let S=`${ue.pretty(e.configuration,c.hash,ue.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${H.prettyLocator(e.configuration,c.subject)} provides ${H.prettyLocator(e.configuration,C)} to ${H.prettyLocator(e.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,S):s.reportInfo(0,S)}else{let E=`${ue.pretty(e.configuration,c.hash,ue.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${H.prettyLocator(e.configuration,c.subject)} doesn't provide ${H.prettyIdent(e.configuration,c.ident)} to ${H.prettyLocator(e.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,E):s.reportInfo(0,E)}}})).exitCode()}Ge();jt();Jo();Ge();Ge();bt();jt();var I0e=et(hi()),pC=class extends ft{constructor(){super(...arguments);this.useYarnPath=he.Boolean("--yarn-path",{description:"Set the yarnPath setting even if the version can be accessed by Corepack"});this.onlyIfNeeded=he.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=he.String()}static{this.paths=[["set","version"]]}static{this.usage=st.Usage({description:"lock the Yarn version used by the project",details:"\n This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\n\n By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\n\n A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get("yarnPath")){let f=r.sources.get("yarnPath");if(!f)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let p=r.projectCwd??r.startingCwd;if(Y.contains(p,f))return 0}let s=()=>{if(typeof An>"u")throw new ot("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},a,n=(f,p)=>({version:p,url:f.replace(/\{\}/g,p)});if(this.version==="self")a={url:s(),version:An??"self"};else if(this.version==="latest"||this.version==="berry"||this.version==="stable")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await nS(r,"stable"));else if(this.version==="canary")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await nS(r,"canary"));else if(this.version==="classic")a={url:"https://classic.yarnpkg.com/latest.js",version:"classic"};else if(this.version.match(/^https?:/))a={url:this.version,version:"remote"};else if(this.version.match(/^\.{0,2}[\\/]/)||Ae.isAbsolute(this.version))a={url:`file://${Y.resolve(Ae.toPortablePath(this.version))}`,version:"file"};else if(kr.satisfiesWithPrereleases(this.version,">=2.0.0"))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",this.version);else if(kr.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))a=n("https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js",this.version);else if(kr.validRange(this.version))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Pot(r,this.version));else throw new ot(`Invalid version descriptor "${this.version}"`);return(await Ft.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async f=>{let p=async()=>{let h="file://";return a.url.startsWith(h)?(f.reportInfo(0,`Retrieving ${ue.pretty(r,a.url,ue.Type.PATH)}`),await ae.readFilePromise(a.url.slice(h.length))):(f.reportInfo(0,`Downloading ${ue.pretty(r,a.url,ue.Type.URL)}`),await nn.get(a.url,{configuration:r}))};await S5(r,a.version,p,{report:f,useYarnPath:this.useYarnPath})})).exitCode()}};async function Pot(e,t){let s=(await nn.get("https://repo.yarnpkg.com/tags",{configuration:e,jsonResponse:!0})).tags.filter(a=>kr.satisfiesWithPrereleases(a,t));if(s.length===0)throw new ot(`No matching release found for range ${ue.pretty(e,t,ue.Type.RANGE)}.`);return s[0]}async function nS(e,t){let r=await nn.get("https://repo.yarnpkg.com/tags",{configuration:e,jsonResponse:!0});if(!r.latest[t])throw new ot(`Tag ${ue.pretty(e,t,ue.Type.RANGE)} not found`);return r.latest[t]}async function S5(e,t,r,{report:s,useYarnPath:a}){let n,c=async()=>(typeof n>"u"&&(n=await r()),n);if(t===null){let $=await c();await ae.mktempPromise(async ie=>{let fe=Y.join(ie,"yarn.cjs");await ae.writeFilePromise(fe,$);let{stdout:le}=await Yr.execvp(process.execPath,[Ae.fromPortablePath(fe),"--version"],{cwd:ie,env:{...e.env,YARN_IGNORE_PATH:"1"}});if(t=le.trim(),!I0e.default.valid(t))throw new Error(`Invalid semver version. ${ue.pretty(e,"yarn --version",ue.Type.CODE)} returned: +${t}`)})}let f=e.projectCwd??e.startingCwd,p=Y.resolve(f,".yarn/releases"),h=Y.resolve(p,`yarn-${t}.cjs`),E=Y.relative(e.startingCwd,h),C=qe.isTaggedYarnVersion(t),S=e.get("yarnPath"),x=!C,I=x||!!S||!!a;if(a===!1){if(x)throw new Lt(0,"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack");I=!1}else!I&&!process.env.COREPACK_ROOT&&(s.reportWarning(0,`You don't seem to have ${ue.applyHyperlink(e,"Corepack","https://nodejs.org/api/corepack.html")} enabled; we'll have to rely on ${ue.applyHyperlink(e,"yarnPath","https://yarnpkg.com/configuration/yarnrc#yarnPath")} instead`),I=!0);if(I){let $=await c();s.reportInfo(0,`Saving the new release in ${ue.pretty(e,E,"magenta")}`),await ae.removePromise(Y.dirname(h)),await ae.mkdirPromise(Y.dirname(h),{recursive:!0}),await ae.writeFilePromise(h,$,{mode:493}),await Je.updateConfiguration(f,{yarnPath:Y.relative(f,h)})}else await ae.removePromise(Y.dirname(h)),await Je.updateConfiguration(f,{yarnPath:Je.deleteProperty});let R=await _t.tryFind(f)||new _t;R.packageManager=`yarn@${C?t:await nS(e,"stable")}`;let N={};R.exportTo(N);let U=Y.join(f,_t.fileName),K=`${JSON.stringify(N,null,R.indent)} +`;return await ae.changeFilePromise(U,K,{automaticNewlines:!0}),{bundleVersion:t}}function C0e(e){return pr[Vx(e)]}var xot=/## (?YN[0-9]{4}) - `(?[A-Z_]+)`\n\n(?
(?:.(?!##))+)/gs;async function kot(e){let r=`https://repo.yarnpkg.com/${qe.isTaggedYarnVersion(An)?An:await nS(e,"canary")}/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx`,s=await nn.get(r,{configuration:e});return new Map(Array.from(s.toString().matchAll(xot),({groups:a})=>{if(!a)throw new Error("Assertion failed: Expected the match to have been successful");let n=C0e(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected "${a.name}" to be named "${n}"`);return[a.code,a.details]}))}var hC=class extends ft{constructor(){super(...arguments);this.code=he.String({required:!1,validator:z2(Jf(),[Sp(/^YN[0-9]{4}$/)])});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["explain"]]}static{this.usage=st.Usage({description:"explain an error code",details:` + When the code argument is specified, this command prints its name and its details. + + When used without arguments, this command lists all error codes and their names. + `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let s=C0e(this.code),a=ue.pretty(r,s,ue.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),f=(await kot(r)).get(this.code),p=typeof f<"u"?ue.jsonOrPretty(this.json,r,ue.tuple(ue.Type.MARKDOWN,{text:f,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. + +You can help us by editing this page on GitHub \u{1F642}: +${ue.jsonOrPretty(this.json,r,ue.tuple(ue.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx"))} +`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:s,details:p})} +`):this.context.stdout.write(`${n} + +${p} +`)}else{let s={children:qe.mapAndFilter(Object.entries(pr),([a,n])=>Number.isNaN(Number(a))?qe.mapAndFilter.skip:{label:zf(Number(a)),value:ue.tuple(ue.Type.CODE,n)})};ts.emitTree(s,{configuration:r,stdout:this.context.stdout,json:this.json})}}};Ge();bt();jt();var w0e=et(Zo()),dC=class extends ft{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=he.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=he.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=he.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=he.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=he.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=he.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=he.Rest()}static{this.paths=[["info"]]}static{this.usage=st.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(!a&&!this.all)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=new Set(this.extra);this.cache&&c.add("cache"),this.dependents&&c.add("dependents"),this.manifest&&c.add("manifest");let f=(ie,{recursive:fe})=>{let le=ie.anchoredLocator.locatorHash,ge=new Map,pe=[le];for(;pe.length>0;){let De=pe.shift();if(ge.has(De))continue;let ye=s.storedPackages.get(De);if(typeof ye>"u")throw new Error("Assertion failed: Expected the package to be registered");if(ge.set(De,ye),H.isVirtualLocator(ye)&&pe.push(H.devirtualizeLocator(ye).locatorHash),!(!fe&&De!==le))for(let d of ye.dependencies.values()){let ve=s.storedResolutions.get(d.descriptorHash);if(typeof ve>"u")throw new Error("Assertion failed: Expected the resolution to be registered");pe.push(ve)}}return ge.values()},p=({recursive:ie})=>{let fe=new Map;for(let le of s.workspaces)for(let ge of f(le,{recursive:ie}))fe.set(ge.locatorHash,ge);return fe.values()},h=({all:ie,recursive:fe})=>ie&&fe?s.storedPackages.values():ie?p({recursive:fe}):f(a,{recursive:fe}),E=({all:ie,recursive:fe})=>{let le=h({all:ie,recursive:fe}),ge=this.patterns.map(ye=>{let d=H.parseLocator(ye),ve=w0e.default.makeRe(H.stringifyIdent(d)),Ie=H.isVirtualLocator(d),me=Ie?H.devirtualizeLocator(d):d;return ce=>{let X=H.stringifyIdent(ce);if(!ve.test(X))return!1;if(d.reference==="unknown")return!0;let be=H.isVirtualLocator(ce),ke=be?H.devirtualizeLocator(ce):ce;return!(Ie&&be&&d.reference!==ce.reference||me.reference!==ke.reference)}}),pe=qe.sortMap([...le],ye=>H.stringifyLocator(ye));return{selection:pe.filter(ye=>ge.length===0||ge.some(d=>d(ye))),sortedLookup:pe}},{selection:C,sortedLookup:S}=E({all:this.all,recursive:this.recursive});if(C.length===0)throw new ot("No package matched your request");let x=new Map;if(this.dependents)for(let ie of S)for(let fe of ie.dependencies.values()){let le=s.storedResolutions.get(fe.descriptorHash);if(typeof le>"u")throw new Error("Assertion failed: Expected the resolution to be registered");qe.getArrayWithDefault(x,le).push(ie)}let I=new Map;for(let ie of S){if(!H.isVirtualLocator(ie))continue;let fe=H.devirtualizeLocator(ie);qe.getArrayWithDefault(I,fe.locatorHash).push(ie)}let R={},N={children:R},U=r.makeFetcher(),K={project:s,fetcher:U,cache:n,checksums:s.storedChecksums,report:new Qi,cacheOptions:{skipIntegrityCheck:!0}},$=[async(ie,fe,le)=>{if(!fe.has("manifest"))return;let ge=await U.fetch(ie,K),pe;try{pe=await _t.find(ge.prefixPath,{baseFs:ge.packageFs})}finally{ge.releaseFs?.()}le("Manifest",{License:ue.tuple(ue.Type.NO_HINT,pe.license),Homepage:ue.tuple(ue.Type.URL,pe.raw.homepage??null)})},async(ie,fe,le)=>{if(!fe.has("cache"))return;let ge=s.storedChecksums.get(ie.locatorHash)??null,pe=n.getLocatorPath(ie,ge),De;if(pe!==null)try{De=await ae.statPromise(pe)}catch{}let ye=typeof De<"u"?[De.size,ue.Type.SIZE]:void 0;le("Cache",{Checksum:ue.tuple(ue.Type.NO_HINT,ge),Path:ue.tuple(ue.Type.PATH,pe),Size:ye})}];for(let ie of C){let fe=H.isVirtualLocator(ie);if(!this.virtuals&&fe)continue;let le={},ge={value:[ie,ue.Type.LOCATOR],children:le};if(R[H.stringifyLocator(ie)]=ge,this.nameOnly){delete ge.children;continue}let pe=I.get(ie.locatorHash);typeof pe<"u"&&(le.Instances={label:"Instances",value:ue.tuple(ue.Type.NUMBER,pe.length)}),le.Version={label:"Version",value:ue.tuple(ue.Type.NO_HINT,ie.version)};let De=(d,ve)=>{let Ie={};if(le[d]=Ie,Array.isArray(ve))Ie.children=ve.map(me=>({value:me}));else{let me={};Ie.children=me;for(let[ce,X]of Object.entries(ve))typeof X>"u"||(me[ce]={label:ce,value:X})}};if(!fe){for(let d of $)await d(ie,c,De);await r.triggerHook(d=>d.fetchPackageInfo,ie,c,De)}ie.bin.size>0&&!fe&&De("Exported Binaries",[...ie.bin.keys()].map(d=>ue.tuple(ue.Type.PATH,d)));let ye=x.get(ie.locatorHash);typeof ye<"u"&&ye.length>0&&De("Dependents",ye.map(d=>ue.tuple(ue.Type.LOCATOR,d))),ie.dependencies.size>0&&!fe&&De("Dependencies",[...ie.dependencies.values()].map(d=>{let ve=s.storedResolutions.get(d.descriptorHash),Ie=typeof ve<"u"?s.storedPackages.get(ve)??null:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:d,locator:Ie})})),ie.peerDependencies.size>0&&fe&&De("Peer dependencies",[...ie.peerDependencies.values()].map(d=>{let ve=ie.dependencies.get(d.identHash),Ie=typeof ve<"u"?s.storedResolutions.get(ve.descriptorHash)??null:null,me=Ie!==null?s.storedPackages.get(Ie)??null:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:d,locator:me})}))}ts.emitTree(N,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};Ge();bt();Sc();var WR=et(N0());jt();var b5=et(hi());Jo();var Qot=[{selector:e=>e===-1,name:"nodeLinker",value:"node-modules"},{selector:e=>e!==-1&&e<8,name:"enableGlobalCache",value:!1},{selector:e=>e!==-1&&e<8,name:"compressionLevel",value:"mixed"},{selector:e=>e<9,name:"approvedGitRepositories",value:["**"]},{selector:e=>e<9,name:"enableScripts",value:!0},{selector:e=>e<10,name:"npmMinimalAgeGate",value:"0"}],gC=class extends ft{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=he.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=he.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.refreshLockfile=he.Boolean("--refresh-lockfile",{description:"Refresh the package metadata stored in the lockfile"});this.checkCache=he.Boolean("--check-cache",{description:"Always refetch the packages and ensure that their checksums are consistent"});this.checkResolutions=he.Boolean("--check-resolutions",{description:"Validates that the package resolutions are coherent"});this.inlineBuilds=he.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:Qs(La)});this.cacheFolder=he.String("--cache-folder",{hidden:!0});this.frozenLockfile=he.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=he.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=he.Boolean("--non-interactive",{hidden:!0});this.preferOffline=he.Boolean("--prefer-offline",{hidden:!0});this.production=he.Boolean("--production",{hidden:!0});this.registry=he.String("--registry",{hidden:!0});this.silent=he.Boolean("--silent",{hidden:!0});this.networkTimeout=he.String("--network-timeout",{hidden:!0})}static{this.paths=[["install"],st.Default]}static{this.usage=st.Usage({description:"install the project dependencies",details:"\n This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\n\n - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\n\n - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\n\n - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the `.pnp.cjs` file you might know).\n\n - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\n\n Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your `.pnp.cjs` file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\n\n If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\n\n If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\n\n If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\n\n If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\n\n If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&r.useWithSource("",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let s=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await kI({configuration:r,stdout:this.context.stdout},[{option:this.ignoreEngines,message:"The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",error:!WR.default.VERCEL},{option:this.registry,message:"The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file"},{option:this.preferOffline,message:"The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",error:!WR.default.VERCEL},{option:this.production,message:"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",error:!0},{option:this.nonInteractive,message:"The --non-interactive option is deprecated",error:!s},{option:this.frozenLockfile,message:"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:"The cache-folder option has been deprecated; use rc settings instead",error:!WR.default.NETLIFY}]);if(a!==null)return a;let n=this.mode==="update-lockfile";if(n&&(this.immutable||this.immutableCache))throw new ot(`${ue.pretty(r,"--immutable",ue.Type.CODE)} and ${ue.pretty(r,"--immutable-cache",ue.Type.CODE)} cannot be used with ${ue.pretty(r,"--mode=update-lockfile",ue.Type.CODE)}`);let c=(this.immutable??r.get("enableImmutableInstalls"))&&!n,f=this.immutableCache&&!n;if(r.projectCwd!==null){let R=await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U=!1;await Fot(r,c)&&(N.reportInfo(48,"Automatically removed core plugins that are now builtins \u{1F44D}"),U=!0),await Rot(r,c)&&(N.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),U=!0),U&&N.reportSeparator()});if(R.hasErrors())return R.exitCode()}if(r.projectCwd!==null){let R=await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{if(Je.telemetry?.isNew)Je.telemetry.commitTips(),N.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),N.reportInfo(65,`Run ${ue.pretty(r,"yarn config set --home enableTelemetry 0",ue.Type.CODE)} to disable`),N.reportSeparator();else if(Je.telemetry?.shouldShowTips){let U=await nn.get("https://repo.yarnpkg.com/tags",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let K=null;if(An!==null){let ie=b5.default.prerelease(An)?"canary":"stable",fe=U.latest[ie];fe!==null&&b5.default.gt(fe,An)&&(K=[ie,fe])}if(K)Je.telemetry.commitTips(),N.reportInfo(88,`${ue.applyStyle(r,`A new ${K[0]} version of Yarn is available:`,ue.Style.BOLD)} ${H.prettyReference(r,K[1])}!`),N.reportInfo(88,`Upgrade now by running ${ue.pretty(r,`yarn set version ${K[1]}`,ue.Type.CODE)}`),N.reportSeparator();else{let $=Je.telemetry.selectTip(U.tips);$&&(N.reportInfo(89,ue.pretty(r,$.message,ue.Type.MARKDOWN_INLINE)),$.url&&N.reportInfo(89,`Learn more at ${$.url}`),N.reportSeparator())}}}});if(R.hasErrors())return R.exitCode()}let{project:p,workspace:h}=await Tt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let R=await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U={};for(let K of Qot)K.selector(E)&&typeof r.sources.get(K.name)>"u"&&(r.use("",{[K.name]:K.value},p.cwd,{overwrite:!0}),U[K.name]=K.value);Object.keys(U).length>0&&(await Je.updateConfiguration(p.cwd,U),N.reportInfo(87,"Migrated your project to the latest Yarn version \u{1F680}"),N.reportSeparator())});if(R.hasErrors())return R.exitCode()}let C=await zr.find(r,{immutable:f,check:this.checkCache});if(!h)throw new ar(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let S=r.get("enableHardenedMode");S&&typeof r.sources.get("enableHardenedMode")>"u"&&await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{R.reportWarning(0,"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled."),R.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${ue.applyHyperlink(r,"documentation","https://yarnpkg.com/features/security#hardened-mode")} for more details.`),R.reportSeparator()}),(this.refreshLockfile??S)&&(p.lockfileNeedsRefresh=!0);let x=this.checkResolutions??S;return(await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async R=>{await p.install({cache:C,report:R,immutable:c,checkResolutions:x,mode:this.mode})})).exitCode()}},Tot="<<<<<<<";async function Rot(e,t){if(!e.projectCwd)return!1;let r=Y.join(e.projectCwd,yr.lockfile);if(!await ae.existsPromise(r)||!(await ae.readFilePromise(r,"utf8")).includes(Tot))return!1;if(t)throw new Lt(47,"Cannot autofix a lockfile when running an immutable install");let a=await Yr.execvp("git",["rev-parse","MERGE_HEAD","HEAD"],{cwd:e.projectCwd});if(a.code!==0&&(a=await Yr.execvp("git",["rev-parse","REBASE_HEAD","HEAD"],{cwd:e.projectCwd})),a.code!==0&&(a=await Yr.execvp("git",["rev-parse","CHERRY_PICK_HEAD","HEAD"],{cwd:e.projectCwd})),a.code!==0)throw new Lt(83,"Git returned an error when trying to find the commits pertaining to the conflict");let n=await Promise.all(a.stdout.trim().split(/\n/).map(async f=>{let p=await Yr.execvp("git",["show",`${f}:./${yr.lockfile}`],{cwd:e.projectCwd});if(p.code!==0)throw new Lt(83,`Git returned an error when trying to access the lockfile content in ${f}`);try{return us(p.stdout)}catch{throw new Lt(46,"A variant of the conflicting lockfile failed to parse")}}));n=n.filter(f=>!!f.__metadata);for(let f of n){if(f.__metadata.version<7)for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=H.parseDescriptor(p,!0),E=e.normalizeDependency(h),C=H.stringifyDescriptor(E);C!==p&&(f[C]=f[p],delete f[p])}for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=f[p].checksum;typeof h>"u"||h.includes("/")||(f[p].checksum=`${f.__metadata.cacheKey}/${h}`)}}let c=Object.assign({},...n);c.__metadata.version=`${Math.min(...n.map(f=>parseInt(f.__metadata.version??0)))}`,c.__metadata.cacheKey="merged";for(let[f,p]of Object.entries(c))typeof p=="string"&&delete c[f];return await ae.changeFilePromise(r,Al(c),{automaticNewlines:!0}),!0}async function Fot(e,t){if(!e.projectCwd)return!1;let r=[],s=Y.join(e.projectCwd,".yarn/plugins/@yarnpkg");return await Je.updateConfiguration(e.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let c=n.filter(f=>{if(!f.path)return!0;let p=Y.resolve(e.projectCwd,f.path),h=nv.has(f.spec)&&Y.contains(s,p);return h&&r.push(p),!h});return c.length===0?Je.deleteProperty:c.length===n.length?n:c}},{immutable:t})?(await Promise.all(r.map(async n=>{await ae.removePromise(n)})),!0):!1}Ge();bt();jt();var mC=class extends ft{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target projects to the current one"});this.private=he.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target projects to the current one"});this.relative=he.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destinations=he.Rest()}static{this.paths=[["link"]]}static{this.usage=st.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register one or more remote workspaces for use in the current project","$0 link ~/ts-loader ~/jest"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=s.topLevelWorkspace,f=[];for(let p of this.destinations){let h=Y.resolve(this.context.cwd,Ae.toPortablePath(p)),E=await Je.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Tt.find(E,h);if(s.cwd===C.cwd)throw new ot(`Invalid destination '${p}'; Can't link the project to itself`);if(!S)throw new ar(C.cwd,h);if(this.all){let x=!1;for(let I of C.workspaces)I.manifest.name&&(!I.manifest.private||this.private)&&(f.push(I),x=!0);if(!x)throw new ot(`No workspace found to be linked in the target project: ${p}`)}else{if(!S.manifest.name)throw new ot(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(S.manifest.private&&!this.private)throw new ot(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);f.push(S)}}for(let p of f){let h=H.stringifyIdent(p.anchoredLocator),E=this.relative?Y.relative(s.cwd,p.cwd):p.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};jt();var yC=class extends ft{constructor(){super(...arguments);this.args=he.Proxy()}static{this.paths=[["node"]]}static{this.usage=st.Usage({description:"run node with the hook already setup",details:` + This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). + + The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. + `,examples:[["Run a Node script","$0 node ./my-script.js"]]})}async execute(){return this.cli.run(["exec","node",...this.args])}};Ge();jt();var EC=class extends ft{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","check"]]}static{this.usage=st.Usage({category:"Plugin-related commands",description:"find all third-party plugins that differ from their own spec",details:` + Check only the plugins from https. + + If this command detects any plugin differences in the CI environment, it will throw an error. + `,examples:[["find all third-party plugins that differ from their own spec","$0 plugin check"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),s=await Je.findRcFiles(this.context.cwd);return(await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let c of s)if(c.data?.plugins)for(let f of c.data.plugins){if(!f.checksum||!f.spec.match(/^https?:/))continue;let p=await nn.get(f.spec,{configuration:r}),h=Mn.makeHash(p);if(f.checksum===h)continue;let E=ue.pretty(r,f.path,ue.Type.PATH),C=ue.pretty(r,f.spec,ue.Type.URL),S=`${E} is different from the file provided by ${C}`;n.reportJson({...f,newChecksum:h}),n.reportError(0,S)}})).exitCode()}};Ge();Ge();bt();jt();var D0e=Ce("os");Ge();bt();jt();var B0e=Ce("os");Ge();Sc();jt();var Not="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Qm(e,t){let r=await nn.get(Not,{configuration:e}),s=us(r.toString());return Object.fromEntries(Object.entries(s).filter(([a,n])=>!t||kr.satisfiesWithPrereleases(t,n.range??"<4.0.0-rc.1")))}var IC=class extends ft{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","list"]]}static{this.usage=st.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins);return(await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await Qm(r,An);for(let[c,{experimental:f,...p}]of Object.entries(n)){let h=c;f&&(h+=" [experimental]"),a.reportJson({name:c,experimental:f,...p}),a.reportInfo(null,h)}})).exitCode()}};var Oot=/^[0-9]+$/,Lot=process.platform==="win32";function v0e(e){return Oot.test(e)?`pull/${e}/head`:e}var Mot=({repository:e,branch:t},r)=>[["git","init",Ae.fromPortablePath(r)],["git","remote","add","origin",e],["git","fetch","origin","--depth=1",v0e(t)],["git","reset","--hard","FETCH_HEAD"]],Uot=({branch:e})=>[["git","fetch","origin","--depth=1",v0e(e),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx","-e","packages/yarnpkg-cli/bundles"]],_ot=({plugins:e,noMinify:t},r,s)=>[["yarn","build:cli",...new Array().concat(...e.map(a=>["--plugin",Y.resolve(s,a)])),...t?["--no-minify"]:[],"|"],[Lot?"move":"mv","packages/yarnpkg-cli/bundles/yarn.js",Ae.fromPortablePath(r),"|"]],CC=class extends ft{constructor(){super(...arguments);this.installPath=he.String("--path",{description:"The path where the repository should be cloned to"});this.repository=he.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=he.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=he.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.dryRun=he.Boolean("-n,--dry-run",!1,{description:"If set, the bundle will be built but not added to the project"});this.noMinify=he.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=he.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=he.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}static{this.paths=[["set","version","from","sources"]]}static{this.usage=st.Usage({description:"build Yarn from master",details:` + This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. + + By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. + `,examples:[["Build Yarn from master","$0 set version from sources"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=typeof this.installPath<"u"?Y.resolve(this.context.cwd,Ae.toPortablePath(this.installPath)):Y.resolve(Ae.toPortablePath((0,B0e.tmpdir)()),"yarnpkg-sources",Mn.makeHash(this.repository).slice(0,6));return(await Ft.start({configuration:r,stdout:this.context.stdout},async c=>{await D5(this,{configuration:r,report:c,target:a}),c.reportSeparator(),c.reportInfo(0,"Building a fresh bundle"),c.reportSeparator();let f=await Yr.execvp("git",["rev-parse","--short","HEAD"],{cwd:a,strict:!0}),p=Y.join(a,`packages/yarnpkg-cli/bundles/yarn-${f.stdout.trim()}.js`);ae.existsSync(p)||(await iS(_ot(this,p,a),{configuration:r,context:this.context,target:a}),c.reportSeparator());let h=await ae.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await S5(r,null,async()=>h,{report:c});this.skipPlugins||await Hot(this,E,{project:s,report:c,target:a})}})).exitCode()}};async function iS(e,{configuration:t,context:r,target:s}){for(let[a,...n]of e){let c=n[n.length-1]==="|";if(c&&n.pop(),c)await Yr.pipevp(a,n,{cwd:s,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${ue.pretty(t,` $ ${[a,...n].join(" ")}`,"grey")} +`);try{await Yr.execvp(a,n,{cwd:s,strict:!0})}catch(f){throw r.stdout.write(f.stdout||f.stack),f}}}}async function D5(e,{configuration:t,report:r,target:s}){let a=!1;if(!e.force&&ae.existsSync(Y.join(s,".git"))){r.reportInfo(0,"Fetching the latest commits"),r.reportSeparator();try{await iS(Uot(e),{configuration:t,context:e.context,target:s}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}a||(r.reportInfo(0,"Cloning the remote repository"),r.reportSeparator(),await ae.removePromise(s),await ae.mkdirPromise(s,{recursive:!0}),await iS(Mot(e,s),{configuration:t,context:e.context,target:s}))}async function Hot(e,t,{project:r,report:s,target:a}){let n=await Qm(r.configuration,t),c=new Set(Object.keys(n));for(let f of r.configuration.plugins.keys())c.has(f)&&await P5(f,e,{project:r,report:s,target:a})}Ge();Ge();bt();jt();var S0e=et(hi()),b0e=Ce("vm");var wC=class extends ft{constructor(){super(...arguments);this.name=he.String();this.checksum=he.Boolean("--checksum",!0,{description:"Whether to care if this plugin is modified"})}static{this.paths=[["plugin","import"]]}static{this.usage=st.Usage({category:"Plugin-related commands",description:"download a plugin",details:` + This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. + + Three types of plugin references are accepted: + + - If the plugin is stored within the Yarn repository, it can be referenced by name. + - Third-party plugins can be referenced directly through their public urls. + - Local plugins can be referenced by their path on the disk. + + If the \`--no-checksum\` option is set, Yarn will no longer care if the plugin is modified. + + Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). + `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins);return(await Ft.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Tt.find(r,this.context.cwd),c,f;if(this.name.match(/^\.{0,2}[\\/]/)||Ae.isAbsolute(this.name)){let p=Y.resolve(this.context.cwd,Ae.toPortablePath(this.name));a.reportInfo(0,`Reading ${ue.pretty(r,p,ue.Type.PATH)}`),c=Y.relative(n.cwd,p),f=await ae.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new Lt(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}c=this.name,p=this.name}else{let h=H.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(h.reference!=="unknown"&&!S0e.default.valid(h.reference))throw new Lt(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let E=H.stringifyIdent(h),C=await Qm(r,An);if(!Object.hasOwn(C,E)){let S=`Couldn't find a plugin named ${H.prettyIdent(r,h)} on the remote registry. +`;throw r.plugins.has(E)?S+=`A plugin named ${H.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:S+=`Note that only the plugins referenced on our website (${ue.pretty(r,"https://github.com/yarnpkg/berry/blob/master/plugins.yml",ue.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${ue.pretty(r,"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js",ue.Type.URL)}).`,new Lt(51,S)}c=E,p=C[E].url,h.reference!=="unknown"?p=p.replace(/\/master\//,`/${E}/${h.reference}/`):An!==null&&(p=p.replace(/\/master\//,`/@yarnpkg/cli/${An}/`))}a.reportInfo(0,`Downloading ${ue.pretty(r,p,"green")}`),f=await nn.get(p,{configuration:r})}await x5(c,f,{checksum:this.checksum,project:n,report:a})})).exitCode()}};async function x5(e,t,{checksum:r=!0,project:s,report:a}){let{configuration:n}=s,c={},f={exports:c};(0,b0e.runInNewContext)(t.toString(),{module:f,exports:c});let h=`.yarn/plugins/${f.exports.name}.cjs`,E=Y.resolve(s.cwd,h);a.reportInfo(0,`Saving the new plugin in ${ue.pretty(n,h,"magenta")}`),await ae.mkdirPromise(Y.dirname(E),{recursive:!0}),await ae.writeFilePromise(E,t);let C={path:h,spec:e};r&&(C.checksum=Mn.makeHash(t)),await Je.addPlugin(s.cwd,[C])}var jot=({pluginName:e,noMinify:t},r)=>[["yarn",`build:${e}`,...t?["--no-minify"]:[],"|"]],BC=class extends ft{constructor(){super(...arguments);this.installPath=he.String("--path",{description:"The path where the repository should be cloned to"});this.repository=he.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=he.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=he.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=he.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=he.String()}static{this.paths=[["plugin","import","from","sources"]]}static{this.usage=st.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` + This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. + + The plugins can be referenced by their short name if sourced from the official Yarn repository. + `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),s=typeof this.installPath<"u"?Y.resolve(this.context.cwd,Ae.toPortablePath(this.installPath)):Y.resolve(Ae.toPortablePath((0,D0e.tmpdir)()),"yarnpkg-sources",Mn.makeHash(this.repository).slice(0,6));return(await Ft.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:c}=await Tt.find(r,this.context.cwd),f=H.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),p=H.stringifyIdent(f),h=await Qm(r,An);if(!Object.hasOwn(h,p))throw new Lt(51,`Couldn't find a plugin named "${p}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=p;await D5(this,{configuration:r,report:n,target:s}),await P5(E,this,{project:c,report:n,target:s})})).exitCode()}};async function P5(e,{context:t,noMinify:r},{project:s,report:a,target:n}){let c=e.replace(/@yarnpkg\//,""),{configuration:f}=s;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${c}`),a.reportSeparator(),await iS(jot({pluginName:c,noMinify:r},n),{configuration:f,context:t,target:n}),a.reportSeparator();let p=Y.resolve(n,`packages/${c}/bundles/${e}.js`),h=await ae.readFilePromise(p);await x5(e,h,{project:s,report:a})}Ge();bt();jt();var vC=class extends ft{constructor(){super(...arguments);this.name=he.String()}static{this.paths=[["plugin","remove"]]}static{this.usage=st.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` + This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. + + **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. + `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return(await Ft.start({configuration:r,stdout:this.context.stdout},async n=>{let c=this.name,f=H.parseIdent(c);if(!r.plugins.has(c))throw new ot(`${H.prettyIdent(r,f)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${c}.cjs`,h=Y.resolve(s.cwd,p);ae.existsSync(h)&&(n.reportInfo(0,`Removing ${ue.pretty(r,p,ue.Type.PATH)}...`),await ae.removePromise(h)),n.reportInfo(0,"Updating the configuration..."),await Je.updateConfiguration(s.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let C=E.filter(S=>S.path!==p);return C.length===0?Je.deleteProperty:C.length===E.length?E:C}})})).exitCode()}};Ge();jt();var SC=class extends ft{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","runtime"]]}static{this.usage=st.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` + This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. + `,examples:[["List the currently active plugins","$0 plugin runtime"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins);return(await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let c=this.context.plugins.plugins.has(n),f=n;c&&(f+=" [builtin]"),a.reportJson({name:n,builtin:c}),a.reportInfo(null,`${f}`)}})).exitCode()}};Ge();Ge();jt();var bC=class extends ft{constructor(){super(...arguments);this.idents=he.Rest()}static{this.paths=[["rebuild"]]}static{this.usage=st.Usage({description:"rebuild the project's native packages",details:` + This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. + + Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). + + By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. + `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=new Set;for(let f of this.idents)c.add(H.parseIdent(f).identHash);if(await s.restoreInstallState({restoreResolutions:!1}),await s.resolveEverything({cache:n,report:new Qi}),c.size>0)for(let f of s.storedPackages.values())c.has(f.identHash)&&(s.storedBuildState.delete(f.locatorHash),s.skippedBuilds.delete(f.locatorHash));else s.storedBuildState.clear(),s.skippedBuilds.clear();return await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ge();Ge();Ge();jt();var k5=et(Zo());Jo();var DC=class extends ft{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:Qs(La)});this.patterns=he.Rest()}static{this.paths=[["remove"]]}static{this.usage=st.Usage({description:"remove dependencies from the project",details:` + This command will remove the packages matching the specified patterns from the current workspace. + + If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: + + - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. + + - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. + + This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. + `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.all?s.workspaces:[a],f=["dependencies","devDependencies","peerDependencies"],p=[],h=!1,E=[];for(let I of this.patterns){let R=!1,N=H.parseIdent(I);for(let U of c){let K=[...U.manifest.peerDependenciesMeta.keys()];for(let $ of(0,k5.default)(K,I))U.manifest.peerDependenciesMeta.delete($),h=!0,R=!0;for(let $ of f){let ie=U.manifest.getForScope($),fe=[...ie.values()].map(le=>H.stringifyIdent(le));for(let le of(0,k5.default)(fe,H.stringifyIdent(N))){let{identHash:ge}=H.parseIdent(le),pe=ie.get(ge);if(typeof pe>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");U.manifest[$].delete(ge),E.push([U,$,pe]),h=!0,R=!0}}}R||p.push(I)}let C=p.length>1?"Patterns":"Pattern",S=p.length>1?"don't":"doesn't",x=this.all?"any":"this";if(p.length>0)throw new ot(`${C} ${ue.prettyList(r,p,ue.Type.CODE)} ${S} match any packages referenced by ${x} workspace`);return h?(await r.triggerMultipleHooks(I=>I.afterWorkspaceDependencyRemoval,E),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};Ge();Ge();jt();var P0e=Ce("util"),PC=class extends ft{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["run"]]}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return(await Ft.start({configuration:r,stdout:this.context.stdout,json:this.json},async c=>{let f=a.manifest.scripts,p=qe.sortMap(f.keys(),C=>C),h={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},E=p.reduce((C,S)=>Math.max(C,S.length),0);for(let[C,S]of f.entries())c.reportInfo(null,`${C.padEnd(E," ")} ${(0,P0e.inspect)(S,h)}`),c.reportJson({name:C,script:S})})).exitCode()}};Ge();Ge();jt();var xC=class extends ft{constructor(){super(...arguments);this.inspect=he.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=he.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=he.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=he.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.require=he.String("--require",{description:"Forwarded to the underlying Node process when executing a binary"});this.silent=he.Boolean("--silent",{hidden:!0});this.scriptName=he.String();this.args=he.Proxy()}static{this.paths=[["run"]]}static{this.usage=st.Usage({description:"run a script defined in the package.json",details:` + This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: + + - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. + + - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. + + - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. + + Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). + `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a,locator:n}=await Tt.find(r,this.context.cwd);await s.restoreInstallState();let c=this.topLevel?s.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await wn.hasPackageScript(c,this.scriptName,{project:s}))return await wn.executePackageScript(c,this.scriptName,this.args,{project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let f=await wn.getPackageAccessibleBinaries(c,{project:s});if(f.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect=="string"?h.push(`--inspect=${this.inspect}`):h.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push("--inspect-brk")),this.require&&h.push(`--require=${this.require}`),await wn.executePackageAccessibleBinary(c,this.scriptName,this.args,{cwd:this.context.cwd,project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:f})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(":")){let E=(await Promise.all(s.workspaces.map(async C=>C.manifest.scripts.has(this.scriptName)?C:null))).filter(C=>C!==null);if(E.length===1)return await wn.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new ot(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${H.prettyLocator(r,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new ot(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${H.prettyLocator(r,n)}).`);{if(this.scriptName==="global")throw new ot("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let h=[this.scriptName].concat(this.args);for(let[E,C]of WI)for(let S of C)if(h.length>=S.length&&JSON.stringify(h.slice(0,S.length))===JSON.stringify(S))throw new ot(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${E} plugin. You can install it with "yarn plugin import ${E}".`);throw new ot(`Couldn't find a script named "${this.scriptName}".`)}}};Ge();Ge();jt();var kC=class extends ft{constructor(){super(...arguments);this.descriptor=he.String();this.resolution=he.String()}static{this.paths=[["set","resolution"]]}static{this.usage=st.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 npm:1.5.0"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(await s.restoreInstallState({restoreResolutions:!1}),!a)throw new ar(s.cwd,this.context.cwd);let c=H.parseDescriptor(this.descriptor,!0),f=H.makeDescriptor(c,this.resolution);return s.storedDescriptors.set(c.descriptorHash,c),s.storedDescriptors.set(f.descriptorHash,f),s.resolutionAliases.set(c.descriptorHash,f.descriptorHash),await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Ge();bt();jt();var x0e=et(Zo()),QC=class extends ft{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=he.Rest()}static{this.paths=[["unlink"]]}static{this.usage=st.Usage({description:"disconnect the local project from another one",details:` + This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. + `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=s.topLevelWorkspace,f=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of c.manifest.resolutions)h.startsWith("portal:")&&f.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=Y.resolve(this.context.cwd,Ae.toPortablePath(p));if(qe.isPathLike(p)){let E=await Je.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Tt.find(E,h);if(!S)throw new ar(C.cwd,h);if(this.all){for(let x of C.workspaces)x.manifest.name&&f.add(H.stringifyIdent(x.anchoredLocator));if(f.size===0)throw new ot("No workspace found to be unlinked in the target project")}else{if(!S.manifest.name)throw new ot("The target workspace doesn't have a name and thus cannot be unlinked");f.add(H.stringifyIdent(S.anchoredLocator))}}else{let E=[...c.manifest.resolutions.map(({pattern:C})=>C.descriptor.fullName)];for(let C of(0,x0e.default)(E,p))f.add(C)}}return c.manifest.resolutions=c.manifest.resolutions.filter(({pattern:p})=>!f.has(p.descriptor.fullName)),await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ge();Ge();Ge();jt();var k0e=et(Xv()),Q5=et(Zo());Jo();var TC=class extends ft{constructor(){super(...arguments);this.interactive=he.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.fixed=he.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=he.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=he.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=he.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.noTimeGate=he.Boolean("--no-time-gate",!1,{description:"Disable the minimum release age check for this command"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:Qs(La)});this.patterns=he.Rest()}static{this.paths=[["up"]]}static{this.usage=st.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]})}static{this.schema=[X2("recursive",Vf.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})]}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await Je.find(this.context.cwd,this.context.plugins);this.noTimeGate&&XI(r);let{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=[...s.storedDescriptors.values()],f=c.map(E=>H.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(H.parseDescriptor(E).range!=="unknown")throw new ot("Ranges aren't allowed when using --recursive");for(let C of(0,Q5.default)(f,E)){let S=H.parseIdent(C);p.add(S.identHash)}}let h=c.filter(E=>p.has(E.identHash));for(let E of h)s.storedDescriptors.delete(E.descriptorHash),s.storedResolutions.delete(E.descriptorHash);return await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await Je.find(this.context.cwd,this.context.plugins);this.noTimeGate&&XI(r);let{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=eS(this,s),h=f?["keep","reuse","project","latest"]:["project","latest"],E=[],C=[];for(let N of this.patterns){let U=!1,K=H.parseDescriptor(N),$=H.stringifyIdent(K);for(let ie of s.workspaces)for(let fe of["dependencies","devDependencies"]){let ge=[...ie.manifest.getForScope(fe).values()].map(De=>H.stringifyIdent(De)),pe=$==="*"?ge:(0,Q5.default)(ge,$);for(let De of pe){let ye=H.parseIdent(De),d=ie.manifest[fe].get(ye.identHash);if(typeof d>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let ve=H.makeDescriptor(ye,K.range);E.push(Promise.resolve().then(async()=>[ie,fe,d,await tS(ve,{project:s,workspace:ie,cache:n,target:fe,fixed:c,modifier:p,strategies:h})])),U=!0}}U||C.push(N)}if(C.length>1)throw new ot(`Patterns ${ue.prettyList(r,C,ue.Type.CODE)} don't match any packages referenced by any workspace`);if(C.length>0)throw new ot(`Pattern ${ue.prettyList(r,C,ue.Type.CODE)} doesn't match any packages referenced by any workspace`);let S=await Promise.all(E),x=await fA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async N=>{for(let[,,U,{suggestions:K,rejections:$}]of S){let ie=K.filter(fe=>fe.descriptor!==null);if(ie.length===0){let[fe]=$;if(typeof fe>"u")throw new Error("Assertion failed: Expected an error to have been set");let le=this.cli.error(fe);s.configuration.get("enableNetwork")?N.reportError(27,`${H.prettyDescriptor(r,U)} can't be resolved to a satisfying range + +${le}`):N.reportError(27,`${H.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled) + +${le}`)}else ie.length>1&&!f&&N.reportError(27,`${H.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(x.hasErrors())return x.exitCode();let I=!1,R=[];for(let[N,U,,{suggestions:K}]of S){let $,ie=K.filter(pe=>pe.descriptor!==null),fe=ie[0].descriptor,le=ie.every(pe=>H.areDescriptorsEqual(pe.descriptor,fe));ie.length===1||le?$=fe:(I=!0,{answer:$}=await(0,k0e.prompt)({type:"select",name:"answer",message:`Which range do you want to use in ${H.prettyWorkspace(r,N)} \u276F ${U}?`,choices:K.map(({descriptor:pe,name:De,reason:ye})=>pe?{name:De,hint:ye,descriptor:pe}:{name:De,hint:ye,disabled:!0}),onCancel:()=>process.exit(130),result(pe){return this.find(pe,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let ge=N.manifest[U].get($.identHash);if(typeof ge>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(ge.descriptorHash!==$.descriptorHash)N.manifest[U].set($.identHash,$),R.push([N,U,ge,$]);else{let pe=r.makeResolver(),De={project:s,resolver:pe},ye=r.normalizeDependency(ge),d=pe.bindDescriptor(ye,N.anchoredLocator,De);s.forgetResolution(d)}}return await r.triggerMultipleHooks(N=>N.afterWorkspaceDependencyReplacement,R),I&&this.context.stdout.write(` +`),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};Ge();Ge();jt();var RC=class extends ft{constructor(){super(...arguments);this.recursive=he.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=he.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=he.String()}static{this.paths=[["why"]]}static{this.usage=st.Usage({description:"display the reason why a package is needed",details:` + This command prints the exact reasons why a package appears in the dependency tree. Specify a version or range to determine why the dependency tree contains a specific version of a package. This is particularly useful when trying to find out why your project depends on lower versions. + + If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. + `,examples:[["Explain why lodash is used in your project","$0 why lodash"],["Explain why version 3.3.1 of lodash is in your project","$0 why lodash@3.3.1"],["Explain why version 3.X of lodash is in your project","$0 why lodash@^3"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=H.parseDescriptor(this.package,!1);if(n.range!=="unknown"&&kr.validRange(n.range)===null)throw new ot(`Expected a valid semver range, got ${n.range}`);let c=this.recursive?qot(s,n,{configuration:r,peers:this.peers}):Got(s,n,{configuration:r,peers:this.peers});ts.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};function Got(e,t,{configuration:r,peers:s}){let a=qe.sortMap(e.storedPackages.values(),f=>H.stringifyLocator(f)),n={},c={children:n};for(let f of a){let p={};for(let E of f.dependencies.values()){if(!s&&T5(f,E))continue;let C=e.storedResolutions.get(E.descriptorHash);if(!C)throw new Error("Assertion failed: The resolution should have been registered");let S=e.storedPackages.get(C);if(!S)throw new Error("Assertion failed: The package should have been registered");if(!H.areIdentsEqual(S,t)||!H.isPackageInRange(S,t.range))continue;{let I=H.stringifyLocator(f);n[I]={value:[f,ue.Type.LOCATOR],children:p}}let x=H.stringifyLocator(S);p[x]={value:[{descriptor:E,locator:S},ue.Type.DEPENDENT]}}}return c}function qot(e,t,{configuration:r,peers:s}){let a=qe.sortMap(e.workspaces,S=>H.stringifyLocator(S.anchoredLocator)),n=new Set,c=new Set,f=S=>{if(n.has(S.locatorHash))return c.has(S.locatorHash);if(n.add(S.locatorHash),H.areIdentsEqual(S,t)&&H.isPackageInRange(S,t.range))return c.add(S.locatorHash),!0;let x=!1;for(let I of S.dependencies.values()){if(!s&&T5(S,I))continue;let R=e.storedResolutions.get(I.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let N=e.storedPackages.get(R);if(!N)throw new Error("Assertion failed: The package should have been registered");f(N)&&(x=!0)}return x&&c.add(S.locatorHash),x};for(let S of a)f(S.anchoredPackage);let p=new Set,h={},E={children:h},C=(S,x,I)=>{if(!c.has(S.locatorHash))return;let R=I!==null?ue.tuple(ue.Type.DEPENDENT,{locator:S,descriptor:I}):ue.tuple(ue.Type.LOCATOR,S),N={},U={value:R,children:N},K=H.stringifyLocator(S);if(x[K]=U,!(I!==null&&e.tryWorkspaceByLocator(S))&&!p.has(S.locatorHash)){p.add(S.locatorHash);for(let $ of S.dependencies.values()){if(!s&&T5(S,$))continue;let ie=e.storedResolutions.get($.descriptorHash);if(!ie)throw new Error("Assertion failed: The resolution should have been registered");let fe=e.storedPackages.get(ie);if(!fe)throw new Error("Assertion failed: The package should have been registered");C(fe,N,$)}}};for(let S of a)C(S.anchoredPackage,h,null);return E}function T5(e,t){return H.isVirtualLocator(e)&&e.peerDependencies.has(t.identHash)}Ge();var j5={};Vt(j5,{GitFetcher:()=>oS,GitResolver:()=>aS,default:()=>fat,gitUtils:()=>Ma});Ge();bt();var Ma={};Vt(Ma,{TreeishProtocols:()=>sS,clone:()=>H5,fetchBase:()=>Z0e,fetchChangedFiles:()=>X0e,fetchChangedWorkspaces:()=>cat,fetchRoot:()=>z0e,isGitUrl:()=>OC,lsRemote:()=>J0e,normalizeLocator:()=>lat,normalizeRepoUrl:()=>FC,resolveUrl:()=>_5,splitRepoUrl:()=>Xp,validateRepoUrl:()=>U5});Ge();bt();jt();Zl();var V0e=et(q0e()),NC=et(Ce("querystring")),L5=et(hi());function O5(e,t,r){let s=e.indexOf(r);return e.lastIndexOf(t,s>-1?s:1/0)}function Y0e(e){try{return new URL(e)}catch{return}}function oat(e){let t=O5(e,"@","#"),r=O5(e,":","#");return r>t&&(e=`${e.slice(0,r)}/${e.slice(r+1)}`),O5(e,":","#")===-1&&e.indexOf("//")===-1&&(e=`ssh://${e}`),e}function W0e(e){return Y0e(e)||Y0e(oat(e))}function FC(e,{git:t=!1}={}){if(e=e.replace(/^git\+https:/,"https:"),e=e.replace(/^(?:github:|https:\/\/github\.com\/|git:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),e=e.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),t){let r=W0e(e);r&&(e=r.href),e=e.replace(/^git\+([^:]+):/,"$1:")}return e}function K0e(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var aat=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],sS=(a=>(a.Commit="commit",a.Head="head",a.Tag="tag",a.Semver="semver",a))(sS||{});function OC(e){return e?aat.some(t=>!!e.match(t)):!1}function Xp(e){e=FC(e);let t=e.indexOf("#");if(t===-1)return{repo:e,treeish:{protocol:"head",request:"HEAD"},extra:{}};let r=e.slice(0,t),s=e.slice(t+1);if(s.match(/^[a-z]+=/)){let a=NC.default.parse(s);for(let[p,h]of Object.entries(a))if(typeof h!="string")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(sS).find(p=>Object.hasOwn(a,p)),[c,f]=typeof n<"u"?[n,a[n]]:["head","HEAD"];for(let p of Object.values(sS))delete a[p];return{repo:r,treeish:{protocol:c,request:f},extra:a}}else{let a=s.indexOf(":"),[n,c]=a===-1?[null,s]:[s.slice(0,a),s.slice(a+1)];return{repo:r,treeish:{protocol:n,request:c},extra:{}}}}function lat(e){return H.makeLocator(e,FC(e.reference))}function U5(e,{configuration:t}){let{repo:r}=Xp(e),s=FC(r,{git:!0});if(!nn.getNetworkSettings(`https://${(0,V0e.default)(s).resource}`,{configuration:t}).enableNetwork)throw new Lt(80,`Request to '${s}' has been blocked because of your configuration settings`);let n=qe.buildIgnorePattern(t.get("approvedGitRepositories"));if(n===null||!s.match(n))throw new Lt(80,`Request to '${s}' has been blocked because it doesn't match any of the patterns in 'approvedGitRepositories'`);return s}async function J0e(e,t){let r=U5(e,{configuration:t}),s=await M5("listing refs",["ls-remote",r],{cwd:t.startingCwd,env:K0e()},{configuration:t,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\t([^\n]+)/gm,c;for(;(c=n.exec(s.stdout))!==null;)a.set(c[2],c[1]);return a}async function _5(e,t){let{repo:r,treeish:{protocol:s,request:a},extra:n}=Xp(e),c=await J0e(r,t),f=(h,E)=>{switch(h){case"commit":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return NC.default.stringify({...n,commit:E})}case"head":{let C=c.get(E==="HEAD"?E:`refs/heads/${E}`);if(typeof C>"u")throw new Error(`Unknown head ("${E}")`);return NC.default.stringify({...n,commit:C})}case"tag":{let C=c.get(`refs/tags/${E}`);if(typeof C>"u")throw new Error(`Unknown tag ("${E}")`);return NC.default.stringify({...n,commit:C})}case"semver":{let C=kr.validRange(E);if(!C)throw new Error(`Invalid range ("${E}")`);let S=new Map([...c.entries()].filter(([I])=>I.startsWith("refs/tags/")).map(([I,R])=>[L5.default.parse(I.slice(10)),R]).filter(I=>I[0]!==null)),x=L5.default.maxSatisfying([...S.keys()],C);if(x===null)throw new Error(`No matching range ("${E}")`);return NC.default.stringify({...n,commit:S.get(x)})}case null:{let C;if((C=p("commit",E))!==null||(C=p("tag",E))!==null||(C=p("head",E))!==null)return C;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${h}")`)}},p=(h,E)=>{try{return f(h,E)}catch{return null}};return FC(`${r}#${f(s,a)}`)}async function H5(e,t){return await t.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:s,request:a}}=Xp(e);if(s!=="commit")throw new Error("Invalid treeish protocol when cloning");let n=U5(r,{configuration:t}),c=await ae.mktempPromise(),f={cwd:c,env:K0e()};return await M5("cloning the repository",["clone","-c","core.autocrlf=false",n,Ae.fromPortablePath(c)],f,{configuration:t,normalizedRepoUrl:n}),await M5("switching branch",["checkout",`${a}`],f,{configuration:t,normalizedRepoUrl:n}),c})}async function z0e(e){let t,r=e;do{if(t=r,await ae.existsPromise(Y.join(t,".git")))return t;r=Y.dirname(t)}while(r!==t);return null}async function Z0e(e,{baseRefs:t}){if(t.length===0)throw new ot("Can't run this command with zero base refs specified.");let r=[];for(let f of t){let{code:p}=await Yr.execvp("git",["merge-base",f,"HEAD"],{cwd:e});p===0&&r.push(f)}if(r.length===0)throw new ot(`No ancestor could be found between any of HEAD and ${t.join(", ")}`);let{stdout:s}=await Yr.execvp("git",["merge-base","HEAD",...r],{cwd:e,strict:!0}),a=s.trim(),{stdout:n}=await Yr.execvp("git",["show","--quiet","--pretty=format:%s",a],{cwd:e,strict:!0}),c=n.trim();return{hash:a,title:c}}async function X0e(e,{base:t,project:r}){let s=qe.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:a}=await Yr.execvp("git",["diff","--name-only",`${t}`],{cwd:e,strict:!0}),n=a.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>Y.resolve(e,Ae.toPortablePath(h))),{stdout:c}=await Yr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:e,strict:!0}),f=c.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>Y.resolve(e,Ae.toPortablePath(h))),p=[...new Set([...n,...f].sort())];return s?p.filter(h=>!Y.relative(r.cwd,h).match(s)):p}async function cat({ref:e,project:t}){if(t.configuration.projectCwd===null)throw new ot("This command can only be run from within a Yarn project");let r=[Y.resolve(t.cwd,yr.lockfile),Y.resolve(t.cwd,t.configuration.get("cacheFolder")),Y.resolve(t.cwd,t.configuration.get("installStatePath")),Y.resolve(t.cwd,t.configuration.get("virtualFolder"))];await t.configuration.triggerHook(c=>c.populateYarnPaths,t,c=>{c!=null&&r.push(c)});let s=await z0e(t.configuration.projectCwd);if(s==null)throw new ot("This command can only be run on Git repositories");let a=await Z0e(s,{baseRefs:typeof e=="string"?[e]:t.configuration.get("changesetBaseRefs")}),n=await X0e(s,{base:a.hash,project:t});return new Set(qe.mapAndFilter(n,c=>{let f=t.tryWorkspaceByFilePath(c);return f===null?qe.mapAndFilter.skip:r.some(p=>c.startsWith(p))?qe.mapAndFilter.skip:f}))}async function M5(e,t,r,{configuration:s,normalizedRepoUrl:a}){try{return await Yr.execvp("git",t,{...r,strict:!0})}catch(n){if(!(n instanceof Yr.ExecError))throw n;let c=n.reportExtra,f=n.stderr.toString();throw new Lt(1,`Failed ${e}`,p=>{p.reportError(1,` ${ue.prettyField(s,{label:"Repository URL",value:ue.tuple(ue.Type.URL,a)})}`);for(let h of f.matchAll(/^(.+?): (.*)$/gm)){let[,E,C]=h;E=E.toLowerCase();let S=E==="error"?"Error":`${vB(E)} Error`;p.reportError(1,` ${ue.prettyField(s,{label:S,value:ue.tuple(ue.Type.NO_HINT,C)})}`)}c?.(p)})}}var oS=class{supports(t,r){return OC(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,a=new Map(r.checksums);a.set(t.locatorHash,s);let n={...r,checksums:a},c=await this.downloadHosted(t,n);if(c!==null)return c;let[f,p,h]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${H.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(t,n),...r.cacheOptions});return{packageFs:f,releaseFs:p,prefixPath:H.getIdentVendorPath(t),checksum:h}}async downloadHosted(t,r){return r.project.configuration.reduceHook(s=>s.fetchHostedRepository,null,t,r)}async cloneFromRemote(t,r){let s=Xp(t.reference),a=await H5(t.reference,r.project.configuration),n=Y.resolve(a,s.extra.cwd??wt.dot),c=Y.join(n,"package.tgz");await wn.prepareExternalProject(n,c,{configuration:r.project.configuration,report:r.report,workspace:s.extra.workspace,locator:t});let f=await ae.readFilePromise(c);return await qe.releaseAfterUseAsync(async()=>await ms.convertToZip(f,{configuration:r.project.configuration,prefixPath:H.getIdentVendorPath(t),stripComponents:1}))}};Ge();Ge();var aS=class{supportsDescriptor(t,r){return OC(t.range)}supportsLocator(t,r){return OC(t.reference)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=await _5(t.range,s.project.configuration);return[H.makeLocator(t,a)]}async getSatisfying(t,r,s,a){let n=Xp(t.range);return{locators:s.filter(f=>{if(f.identHash!==t.identHash)return!1;let p=Xp(f.reference);return!(n.repo!==p.repo||n.treeish.protocol==="commit"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await qe.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var uat={configuration:{approvedGitRepositories:{description:"Array of git repository URL glob patterns that are allowed to be fetched",type:"STRING",default:[],isArray:!0},changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:"STRING",isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:"STRING",default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:"NUMBER",default:2}},fetchers:[oS],resolvers:[aS]};var fat=uat;jt();var LC=class extends ft{constructor(){super(...arguments);this.since=he.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.noPrivate=he.Boolean("--no-private",{description:"Exclude workspaces that have the private field set to true"});this.verbose=he.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["workspaces","list"]]}static{this.usage=st.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return(await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let c=this.since?await Ma.fetchChangedWorkspaces({ref:this.since,project:s}):s.workspaces,f=new Set(c);if(this.recursive)for(let p of[...c].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)f.add(h);for(let p of f){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let C=new Set,S=new Set;for(let x of _t.hardDependencies)for(let[I,R]of h.getForScope(x)){let N=s.tryWorkspaceByDescriptor(R);N===null?s.workspacesByIdent.has(I)&&S.add(R):C.add(N)}E={workspaceDependencies:Array.from(C).map(x=>x.relativeCwd),mismatchedWorkspaceDependencies:Array.from(S).map(x=>H.stringifyDescriptor(x))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?H.stringifyIdent(h.name):null,...E})}})).exitCode()}};Ge();Ge();jt();var MC=class extends ft{constructor(){super(...arguments);this.workspaceName=he.String();this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[["workspace"]]}static{this.usage=st.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` + This command will run a given sub-command on a single workspace. + `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=s.workspaces,c=new Map(n.map(p=>[H.stringifyIdent(p.anchoredLocator),p])),f=c.get(this.workspaceName);if(f===void 0){let p=Array.from(c.keys()).sort();throw new ot(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: + - ${p.join(` + - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:f.cwd})}};var Aat={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:$0e.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"},preferReuse:{description:"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.",type:"BOOLEAN",default:!1}},commands:[tC,rC,nC,iC,kC,CC,pC,LC,aC,lC,cC,uC,$I,eC,sC,oC,fC,AC,hC,dC,gC,mC,QC,yC,EC,BC,wC,vC,IC,SC,bC,DC,PC,xC,TC,RC,MC]},pat=Aat;var V5={};Vt(V5,{default:()=>mat});Ge();Ge();var q5="catalog:";var Y5=e=>e.startsWith(q5),hat=e=>e.range.slice(q5.length)||null,eme=e=>e===null?"default catalog":`catalog "${e}"`,dat=e=>e.scope?`@${e.scope}/${e.name}`:e.name,W5=(e,t,r,s)=>{let a=hat(t),n;if(a===null)n=e.configuration.get("catalog");else try{let E=e.configuration.get("catalogs");E&&(n=E.get(a))}catch{n=void 0}if(!n||n.size===0)throw new Lt(82,`${H.prettyDescriptor(e.configuration,t)}: ${eme(a)} not found or empty`);let c=dat(t),f=n.get(c);if(!f)throw new Lt(82,`${H.prettyDescriptor(e.configuration,t)}: entry not found in ${eme(a)}`);let p=e.configuration.normalizeDependency(H.makeDescriptor(t,f));return r.supportsDescriptor(p,s)?r.bindDescriptor(p,e.topLevelWorkspace.anchoredLocator,s):p};var gat={configuration:{catalog:{description:"The default catalog of packages",type:"MAP",valueDefinition:{description:"The catalog of packages",type:"STRING"}},catalogs:{description:"Named catalogs of packages",type:"MAP",valueDefinition:{description:"A named catalog",type:"MAP",valueDefinition:{description:"Package version in the catalog",type:"STRING"}}}},hooks:{beforeWorkspacePacking:(e,t)=>{let r=e.project,s=r.configuration.makeResolver(),a={project:r,resolver:s,report:new Qi};for(let n of _t.allDependencies){let c=t[n];if(c)for(let[f,p]of Object.entries(c)){if(typeof p!="string"||!Y5(p))continue;let h=H.parseIdent(f),E=H.makeDescriptor(h,p),C=W5(r,E,s,a),{protocol:S,source:x,params:I,selector:R}=H.parseRange(H.convertToManifestRange(C.range));S===e.project.configuration.get("defaultProtocol")&&(S=null),c[f]=H.makeRange({protocol:S,source:x,params:I,selector:R})}}},reduceDependency:async(e,t,r,s,{resolver:a,resolveOptions:n})=>Y5(e.range)?W5(t,e,a,n):e}},mat=gat;var X5={};Vt(X5,{default:()=>Eat});Ge();var Qt={optional:!0},K5=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{"supports-color":Qt}}],["got@<11",{dependencies:{"@types/responselike":"^1.0.0","@types/keyv":"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{"@types/keyv":"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{"vscode-jsonrpc":"^5.0.1","vscode-languageserver-protocol":"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{"postcss-html":Qt,"postcss-jsx":Qt,"postcss-less":Qt,"postcss-markdown":Qt,"postcss-scss":Qt}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{"tiny-warning":"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Qt}}],["snowpack@>=3.3.0",{dependencies:{"node-gyp":"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Qt}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Qt,"vue-template-compiler":Qt}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Qt,"utf-8-validate":Qt}}],["react-portal@<4.2.2",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{"babel-polyfill":"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{"cross-spawn":"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{"prop-types":"^15.7.2"}}],["@rebass/forms@*",{dependencies:{"@styled-system/should-forward-prop":"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt,"vuetify-loader":Qt}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Qt}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Qt}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:Qt}}],["consolidate@<=0.16.0",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Qt,tinyliquid:Qt,"liquid-node":Qt,jade:Qt,"then-jade":Qt,dust:Qt,"dustjs-helpers":Qt,"dustjs-linkedin":Qt,swig:Qt,"swig-templates":Qt,"razor-tmpl":Qt,atpl:Qt,liquor:Qt,twig:Qt,ejs:Qt,eco:Qt,jazz:Qt,jqtpl:Qt,hamljs:Qt,hamlet:Qt,whiskers:Qt,"haml-coffee":Qt,"hogan.js":Qt,templayed:Qt,handlebars:Qt,underscore:Qt,lodash:Qt,pug:Qt,"then-pug":Qt,qejs:Qt,walrus:Qt,mustache:Qt,just:Qt,ect:Qt,mote:Qt,toffee:Qt,dot:Qt,"bracket-template":Qt,ractive:Qt,nunjucks:Qt,htmling:Qt,"babel-core":Qt,plates:Qt,"react-dom":Qt,react:Qt,"arc-templates":Qt,vash:Qt,slm:Qt,marko:Qt,teacup:Qt,"coffee-script":Qt,squirrelly:Qt,twing:Qt}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt,vue:Qt}}],["scss-parser@<=1.0.5",{dependencies:{lodash:"^4.17.21"}}],["query-ast@<1.0.5",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Qt}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Qt}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(e=>[e,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Qt,"webpack-command":Qt}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Qt}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Qt}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Qt,jimp:Qt}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Qt,"eslint-import-resolver-typescript":Qt,"eslint-import-resolver-webpack":Qt,"@typescript-eslint/parser":Qt}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Qt}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Qt}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x <10.0.2",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.7"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Qt}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:Qt}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}],["@cypress/snapshot@*",{dependencies:{debug:"^3.2.7"}}],["auto-relay@<=0.14.0",{peerDependencies:{"reflect-metadata":"^0.1.13"}}],["vue-template-babel-compiler@<1.2.0",{peerDependencies:{"vue-template-compiler":"^2.6.0"}}],["@parcel/transformer-image@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["@parcel/transformer-js@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["parcel@*",{peerDependenciesMeta:{"@parcel/core":Qt}}],["react-scripts@*",{peerDependencies:{eslint:"*"}}],["focus-trap-react@^8.0.0",{dependencies:{tabbable:"^5.3.2"}}],["react-rnd@<10.3.7",{peerDependencies:{react:">=16.3.0","react-dom":">=16.3.0"}}],["connect-mongo@<5.0.0",{peerDependencies:{"express-session":"^1.17.1"}}],["vue-i18n@<9",{peerDependencies:{vue:"^2"}}],["vue-router@<4",{peerDependencies:{vue:"^2"}}],["unified@<10",{dependencies:{"@types/unist":"^2.0.0"}}],["react-github-btn@<=1.3.0",{peerDependencies:{react:">=16.3.0"}}],["react-dev-utils@*",{peerDependencies:{typescript:">=2.7",webpack:">=4"},peerDependenciesMeta:{typescript:Qt}}],["@asyncapi/react-component@<=1.0.0-next.39",{peerDependencies:{react:">=16.8.0","react-dom":">=16.8.0"}}],["xo@*",{peerDependencies:{webpack:">=1.11.0"},peerDependenciesMeta:{webpack:Qt}}],["babel-plugin-remove-graphql-queries@<=4.20.0-next.0",{dependencies:{"@babel/types":"^7.15.4"}}],["gatsby-plugin-page-creator@<=4.20.0-next.1",{dependencies:{"fs-extra":"^10.1.0"}}],["gatsby-plugin-utils@<=3.14.0-next.1",{dependencies:{fastq:"^1.13.0"},peerDependencies:{graphql:"^15.0.0"}}],["gatsby-plugin-mdx@<3.1.0-next.1",{dependencies:{mkdirp:"^1.0.4"}}],["gatsby-plugin-mdx@^2",{peerDependencies:{gatsby:"^3.0.0-next"}}],["fdir@<=5.2.0",{peerDependencies:{picomatch:"2.x"},peerDependenciesMeta:{picomatch:Qt}}],["babel-plugin-transform-typescript-metadata@<=0.3.2",{peerDependencies:{"@babel/core":"^7","@babel/traverse":"^7"},peerDependenciesMeta:{"@babel/traverse":Qt}}],["graphql-compose@>=9.0.10",{peerDependencies:{graphql:"^14.2.0 || ^15.0.0 || ^16.0.0"}}],["vite-plugin-vuetify@<=1.0.2",{peerDependencies:{vue:"^3.0.0"}}],["webpack-plugin-vuetify@<=2.0.1",{peerDependencies:{vue:"^3.2.6"}}],["eslint-import-resolver-vite@<2.0.1",{dependencies:{debug:"^4.3.4",resolve:"^1.22.8"}}],["notistack@^3.0.0",{dependencies:{csstype:"^3.0.10"}}],["@fastify/type-provider-typebox@^5.0.0",{peerDependencies:{fastify:"^5.0.0"}}],["@fastify/type-provider-typebox@^4.0.0",{peerDependencies:{fastify:"^4.0.0"}}]];var J5;function tme(){return typeof J5>"u"&&(J5=Ce("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),J5}var z5;function rme(){return typeof z5>"u"&&(z5=Ce("zlib").brotliDecompressSync(Buffer.from("G70SIIzURnVBnObTmvZ3L6cX9xewwLKl81s5batuNEoStoADpDrmSguQ3//aq41xiRI5PtbmzrtvssshKgApmnm7H1WJVB2wq7Agv1Q91arLcLrdpRTiDfjlz40ej5HnEx1Q8Tc94iFP67XKY/k09uIx2lpEBumXO6PdvcPNHcZ2d3aUqEcCsbJ38UDk1ftcOfRI+Hd1WOGLFOwwyvM8zTby1jvdmf6GXGRiE0QmxCH+FoVoxUTN926bDWSZwbbBU3RRAMCT5PN9JJAqLN6erJZpJsE/suBOhv/hs8d8scKxIuenRulEH74cCI/jCch8IcDNDOGt53inNi+qDtBv0cX4DJe3Ku3GYQkySc++bmcaU01+2ZMXKMOpGWMqYV/nz8wZrD8GlLhyXznDtq7wz8MttQZOUFDUCxHOoSxHjxDIlm4J4IySxJqjmNoaWXwLUVmMolY+oJxn+DGbNE8oK2Bp/eDpqlmTi6BC3mxI+jM51Vqvg3UrFonU1viAdCX/Z5fz8lt7JT0O01d+lgwvAmz75EmDTbBHuJNlOaAFpWl/h7DVQP3iQih+jLWmpRFyM8LlJ1vmh0MCEikW46xBLptFP7W6CiyVCVa7GaMf+CrOOf3yzCvGiM/gZiy47e/sraVspig+n9Ths18daYGmRSIe0tH97oVCY83nwHbjzkotwrDwPyi3Zh2luOl0mHq6Qwl8T8KoxYTmP0bKq6lCvP/NMSrTIL6pY43Q3FjsdgdNcD+c1scuVUDMuOIo2/mQHmeyw8SwB9bhd97dyV79BQ5RzDYAScw7y/y9M9N+b3UvkeHFhxeDsfxkxelQgszsKsfnRdpRyC/oDjnHGIEp34FEk/wo/zxch0TIrdLhfWtL+rUgKQU1qpGoSIyBPs5v+TMhX4++PT7zIn3i9OvnLSW3LUtuc47UBqAmxSAOxtrF3ovfvVcO1/A3AoojdOSB81w+YYWl/aBmLEpAXD2Tww9NX+4hExsQf+gQOexjSnlSEYXrmCGcpM6x8KZvVfBvlZ+ixlB3snpaue/hO9F32s8hOnhelSh5iX6MuJCExio/4q55FpZAKfW/UbUaEvITwzsKS7A9KeHGMS01MerZWGTV7TMDwoXeEhh3bDzoXc6Gow0HAfWIJN/DQCGJd7+pgFaJaL9MWMU3DBeTuFmDxLNibD59Za/NRF83a9WQ8kMnPe89iqLnoBwtMxCu7lxaaSw9p+k6Vj2ZWH81rSMPSBZDCYFIUgeg0nZoAgxzZXJi4lvS6I7HSOUxG/Jq4J1yBH5CKPPLmm13Ad4wJ6CSXozdVCc73ChoUN72Gu00wqPok7zjewhVPV3frpcGsqlpUlYn3t2PzXhIAFjyEHDf2Cr0QoWzLok7/lUtLAZNtq+yYeIIQyKhnJ3odk8ChKP32wO9xV0/NfWBzvCKnbFP8tMaQ9xNNkPCadYf+ci4g6ZmzXo66VSCh4+6EGKK5qTzL0TtNVU1OvqgNLGvGuNkL/leKbpoFLNLeDjpIfG0z7T/dJwcwV/CV3zjfRzhsYgqddF5ZMsz6TY/PjaidKQ3jt2ev7I1vIcSj/v/vGC1NXUVCMyg4zCYQObrnUuKMSWZ0cf0ekQeS6iYjj1GMo09LS08xv0oBhsSRnxFFP9rsqWxeRpCAfR2kldSAiZZcW8SoaeNiXqqN4iWGdZ29DHFUkTgkwF6wUU02CZdpegmbXGKdW+Y7NYO0bHPXlYAaXW7/EEURkphJOs3/tJCfXYK2qDUxHtKWAdjw8gXIUIsFvpx0AXuKHqweYeTgh2m3rj77rrYBU2sZOmHRo6JxhaPJidVDK5/ZDj0r7o9A1GtWmcWwmbchmNP1EimQWP5NO682+IlNQXEMBI21pftOUzs/YiUttmB7XJlra0lxBDNxFgnt0koRq2gvBAohwaZl22fV8YG","base64")).toString()),z5}var Z5;function nme(){return typeof Z5>"u"&&(Z5=Ce("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),Z5}var ime=new Map([[H.makeIdent(null,"fsevents").identHash,tme],[H.makeIdent(null,"resolve").identHash,rme],[H.makeIdent(null,"typescript").identHash,nme]]),yat={hooks:{registerPackageExtensions:async(e,t)=>{for(let[r,s]of K5)t(H.parseDescriptor(r,!0),s)},getBuiltinPatch:async(e,t)=>{let r="compat/";if(!t.startsWith(r))return;let s=H.parseIdent(t.slice(r.length)),a=ime.get(s.identHash)?.();return typeof a<"u"?a:null},reduceDependency:async(e,t,r,s)=>typeof ime.get(e.identHash)>"u"?e:H.makeDescriptor(e,H.makeRange({protocol:"patch:",source:H.stringifyDescriptor(e),selector:`optional!builtin`,params:null}))}},Eat=yat;var d9={};Vt(d9,{ConstraintsCheckCommand:()=>WC,ConstraintsQueryCommand:()=>qC,ConstraintsSourceCommand:()=>YC,default:()=>Mat});Ge();Ge();cS();var _C=class{constructor(t){this.project=t}createEnvironment(){let t=new UC(["cwd","ident"]),r=new UC(["workspace","type","ident"]),s=new UC(["ident"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,c=new Map;for(let f of this.project.storedPackages.values()){let p=Array.from(f.peerDependencies.values(),h=>[H.stringifyIdent(h),h.range]);n.set(f.locatorHash,{workspace:null,ident:H.stringifyIdent(f),version:f.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional===!0))})}for(let f of this.project.storedPackages.values()){let p=n.get(f.locatorHash);p.dependencies=new Map(Array.from(f.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>"u")throw new Error("Assertion failed: The resolution should have been registered");let C=n.get(E);if(typeof C>"u")throw new Error("Assertion failed: The package should have been registered");return[H.stringifyIdent(h),C]})),p.dependencies.delete(p.ident)}for(let f of this.project.workspaces){let p=H.stringifyIdent(f.anchoredLocator),h=f.manifest.exportTo({}),E=n.get(f.anchoredLocator.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");let C=(R,N,{caller:U=Ui.getCaller()}={})=>{let K=lS(R),$=qe.getMapWithDefault(a.manifestUpdates,f.cwd),ie=qe.getMapWithDefault($,K),fe=qe.getSetWithDefault(ie,N);U!==null&&fe.add(U)},S=R=>C(R,void 0,{caller:Ui.getCaller()}),x=R=>{qe.getArrayWithDefault(a.reportedErrors,f.cwd).push(R)},I=t.insert({cwd:f.relativeCwd,ident:p,manifest:h,pkg:E,set:C,unset:S,error:x});c.set(f,I);for(let R of _t.allDependencies)for(let N of f.manifest[R].values()){let U=H.stringifyIdent(N),K=()=>{C([R,U],void 0,{caller:Ui.getCaller()})},$=fe=>{C([R,U],fe,{caller:Ui.getCaller()})},ie=null;if(R!=="peerDependencies"&&(R!=="dependencies"||!f.manifest.devDependencies.has(N.identHash))){let fe=f.anchoredPackage.dependencies.get(N.identHash);if(fe){if(typeof fe>"u")throw new Error("Assertion failed: The dependency should have been registered");let le=this.project.storedResolutions.get(fe.descriptorHash);if(typeof le>"u")throw new Error("Assertion failed: The resolution should have been registered");let ge=n.get(le);if(typeof ge>"u")throw new Error("Assertion failed: The package should have been registered");ie=ge}}r.insert({workspace:I,ident:U,range:N.range,type:R,resolution:ie,update:$,delete:K,error:x})}}for(let f of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(f);if(!p)continue;let h=c.get(p);if(typeof h>"u")throw new Error("Assertion failed: The workspace should have been registered");let E=n.get(f.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");E.workspace=h}return{workspaces:t,dependencies:r,packages:s,result:a}}async process(){let t=this.createEnvironment(),r={Yarn:{workspace:a=>t.workspaces.find(a)[0]??null,workspaces:a=>t.workspaces.find(a),dependency:a=>t.dependencies.find(a)[0]??null,dependencies:a=>t.dependencies.find(a),package:a=>t.packages.find(a)[0]??null,packages:a=>t.packages.find(a)}},s=await this.project.loadUserConfig();return s?.constraints?(await s.constraints(r),t.result):null}};Ge();Ge();jt();var qC=class extends ft{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.query=he.String()}static{this.paths=[["constraints","query"]]}static{this.usage=st.Usage({category:"Constraints-related commands",description:"query the constraints fact database",details:` + This command will output all matches to the given prolog query. + `,examples:[["List all dependencies throughout the workspace","yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(pS(),AS)),s=await Je.find(this.context.cwd,this.context.plugins),{project:a}=await Tt.find(s,this.context.cwd),n=await r.find(a),c=this.query;return c.endsWith(".")||(c=`${c}.`),(await Ft.start({configuration:s,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(c)){let E=Array.from(Object.entries(h)),C=E.length,S=E.reduce((x,[I])=>Math.max(x,I.length),0);for(let x=0;x(pS(),AS)),s=await Je.find(this.context.cwd,this.context.plugins),{project:a}=await Tt.find(s,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};Ge();Ge();jt();cS();var WC=class extends ft{constructor(){super(...arguments);this.fix=he.Boolean("--fix",!1,{description:"Attempt to automatically fix unambiguous issues, following a multi-pass process"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["constraints"]]}static{this.usage=st.Usage({category:"Constraints-related commands",description:"check that the project constraints are met",details:` + This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code. + + If the \`--fix\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution. + + For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints. + `,examples:[["Check that all constraints are satisfied","yarn constraints"],["Autofix all unmet constraints","yarn constraints --fix"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);await s.restoreInstallState();let a=await s.loadUserConfig(),n;if(a?.constraints)n=new _C(s);else{let{Constraints:h}=await Promise.resolve().then(()=>(pS(),AS));n=await h.find(s)}let c,f=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:C,remainingErrors:S}=VR(s,E,{fix:this.fix}),x=[];for(let[I,R]of C){let N=I.manifest.indent;I.manifest=new _t,I.manifest.indent=N,I.manifest.load(R),x.push(I.persistManifest())}if(await Promise.all(x),!(C.size>0&&h>1)){c=sme(S,{configuration:r}),f=!1,p=!0;for(let[,I]of S)for(let R of I)R.fixable?f=!0:p=!1}}if(c.children.length===0)return 0;if(f){let h=p?`Those errors can all be fixed by running ${ue.pretty(r,"yarn constraints --fix",ue.Type.CODE)}`:`Errors prefixed by '\u2699' can be fixed by running ${ue.pretty(r,"yarn constraints --fix",ue.Type.CODE)}`;await Ft.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return c.children=qe.sortMap(c.children,h=>h.value[1]),ts.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};cS();var Lat={configuration:{enableConstraintsChecks:{description:"If true, constraints will run during installs",type:"BOOLEAN",default:!1},constraintsPath:{description:"The path of the constraints file.",type:"ABSOLUTE_PATH",default:"./constraints.pro"}},commands:[qC,YC,WC],hooks:{async validateProjectAfterInstall(e,{reportError:t}){if(!e.configuration.get("enableConstraintsChecks"))return;let r=await e.loadUserConfig(),s;if(r?.constraints)s=new _C(e);else{let{Constraints:c}=await Promise.resolve().then(()=>(pS(),AS));s=await c.find(e)}let a=await s.process();if(!a)return;let{remainingErrors:n}=VR(e,a);if(n.size!==0)if(e.configuration.isCI)for(let[c,f]of n)for(let p of f)t(84,`${ue.pretty(e.configuration,c.anchoredLocator,ue.Type.IDENT)}: ${p.text}`);else t(84,`Constraint check failed; run ${ue.pretty(e.configuration,"yarn constraints",ue.Type.CODE)} for more details`)}}},Mat=Lat;var g9={};Vt(g9,{CreateCommand:()=>VC,DlxCommand:()=>KC,default:()=>_at});Ge();jt();var VC=class extends ft{constructor(){super(...arguments);this.pkg=he.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=he.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=he.String();this.args=he.Proxy()}static{this.paths=[["create"]]}async execute(){let r=[];this.pkg&&r.push("--package",this.pkg),this.quiet&&r.push("--quiet");let s=this.command.replace(/^(@[^@/]+)(@|$)/,"$1/create$2"),a=H.parseDescriptor(s),n=a.name.match(/^create(-|$)/)?a:a.scope?H.makeIdent(a.scope,`create-${a.name}`):H.makeIdent(null,`create-${a.name}`),c=H.stringifyIdent(n);return a.range!=="unknown"&&(c+=`@${a.range}`),this.cli.run(["dlx",...r,c,...this.args])}};Ge();Ge();bt();jt();var KC=class extends ft{constructor(){super(...arguments);this.packages=he.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=he.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=he.String();this.args=he.Proxy()}static{this.paths=[["dlx"]]}static{this.usage=st.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-vite to scaffold a new Vite project","yarn dlx create-vite"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]})}async execute(){return Je.telemetry=null,await ae.mktempPromise(async r=>{let s=Y.join(r,`dlx-${process.pid}`);await ae.mkdirPromise(s),await ae.writeFilePromise(Y.join(s,"package.json"),`{} +`),await ae.writeFilePromise(Y.join(s,"yarn.lock"),"");let a=Y.join(s,".yarnrc.yml"),n=await Je.findProjectCwd(this.context.cwd),f={enableGlobalCache:!(await Je.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),enableTelemetry:!1,logFilters:[{code:zf(68),level:ue.LogLevel.Discard}]},p=n!==null?Y.join(n,".yarnrc.yml"):null;p!==null&&ae.existsSync(p)?(await ae.copyFilePromise(p,a),await Je.updateConfiguration(s,N=>{let U=qe.toMerged(N,f);return Array.isArray(N.plugins)&&(U.plugins=N.plugins.map(K=>{let $=typeof K=="string"?K:K.path,ie=Ae.isAbsolute($)?$:Ae.resolve(Ae.fromPortablePath(n),$);return typeof K=="string"?ie:{path:ie,spec:K.spec}})),U})):await ae.writeJsonPromise(a,f);let h=this.packages??[this.command],E=H.parseDescriptor(this.command).name,C=await this.cli.run(["add","--fixed","--",...h],{cwd:s,quiet:this.quiet});if(C!==0)return C;this.quiet||this.context.stdout.write(` +`);let S=await Je.find(s,this.context.plugins),{project:x,workspace:I}=await Tt.find(S,s);if(I===null)throw new ar(x.cwd,s);await x.restoreInstallState();let R=await wn.getWorkspaceAccessibleBinaries(I);return R.has(E)===!1&&R.size===1&&typeof this.packages>"u"&&(E=Array.from(R)[0][0]),await wn.executeWorkspaceAccessibleBinary(I,E,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};var Uat={commands:[VC,KC]},_at=Uat;var E9={};Vt(E9,{ExecFetcher:()=>dS,ExecResolver:()=>gS,default:()=>Gat,execUtils:()=>ZR});Ge();Ge();Ge();bt();var AA="exec:";var ZR={};Vt(ZR,{loadGeneratorFile:()=>hS,makeLocator:()=>y9,makeSpec:()=>Qme,parseSpec:()=>m9});Ge();bt();function m9(e){let{params:t,selector:r}=H.parseRange(e),s=Ae.toPortablePath(r);return{parentLocator:t&&typeof t.locator=="string"?H.parseLocator(t.locator):null,path:s}}function Qme({parentLocator:e,path:t,generatorHash:r,protocol:s}){let a=e!==null?{locator:H.stringifyLocator(e)}:{},n=typeof r<"u"?{hash:r}:{};return H.makeRange({protocol:s,source:t,selector:t,params:{...n,...a}})}function y9(e,{parentLocator:t,path:r,generatorHash:s,protocol:a}){return H.makeLocator(e,Qme({parentLocator:t,path:r,generatorHash:s,protocol:a}))}async function hS(e,t,r){let{parentLocator:s,path:a}=H.parseFileStyleRange(e,{protocol:t}),n=Y.isAbsolute(a)?{packageFs:new Pn(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Pn(wt.root),prefixPath:Y.relative(wt.root,n.localPath)}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=Y.join(c.prefixPath,a);return await f.readFilePromise(p,"utf8")}var dS=class{supports(t,r){return!!t.reference.startsWith(AA)}getLocalPath(t,r){let{parentLocator:s,path:a}=H.parseFileStyleRange(t.reference,{protocol:AA});if(Y.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:Y.resolve(n,a)}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:H.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async fetchFromDisk(t,r){let s=r.project.getDependencyMeta(t,null);if(!r.project.configuration.get("enableScripts")&&!s.built)throw new Lt(4,`${H.prettyLocator(r.project.configuration,t)} can't be built with the exec: protocol because all scripts have been disabled.`);let a=await hS(t.reference,AA,r);return ae.mktempPromise(async n=>{let c=Y.join(n,"generator.js");return await ae.writeFilePromise(c,a),ae.mktempPromise(async f=>{if(await this.generatePackage(f,t,c,r),!ae.existsSync(Y.join(f,"build")))throw new Error("The script should have generated a build directory");return await ms.makeArchiveFromDirectory(Y.join(f,"build"),{prefixPath:H.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel")})})})}async generatePackage(t,r,s,a){return await ae.mktempPromise(async n=>{let c=await wn.makeScriptEnv({project:a.project,binFolder:n}),f=Y.join(t,"runtime.js");return await ae.mktempPromise(async p=>{let h=Y.join(p,"buildfile.log"),E=Y.join(t,"generator"),C=Y.join(t,"build");await ae.mkdirPromise(E),await ae.mkdirPromise(C);let S={tempDir:Ae.fromPortablePath(E),buildDir:Ae.fromPortablePath(C),locator:H.stringifyLocator(r)};await ae.writeFilePromise(f,` + // Expose 'Module' as a global variable + Object.defineProperty(global, 'Module', { + get: () => require('module'), + configurable: true, + enumerable: false, + }); + + // Expose non-hidden built-in modules as global variables + for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) { + Object.defineProperty(global, name, { + get: () => require(name), + configurable: true, + enumerable: false, + }); + } + + // Expose the 'execEnv' global variable + Object.defineProperty(global, 'execEnv', { + value: { + ...${JSON.stringify(S)}, + }, + enumerable: true, + }); + `);let x=c.NODE_OPTIONS||"",I=/\s*--require\s+\S*\.pnp\.c?js\s*/g;x=x.replace(I," ").trim(),c.NODE_OPTIONS=x;let{stdout:R,stderr:N}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${H.stringifyLocator(r)}) +`,prefix:H.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await Yr.pipevp(process.execPath,["--require",Ae.fromPortablePath(f),Ae.fromPortablePath(s),H.stringifyIdent(r)],{cwd:t,env:c,stdin:null,stdout:R,stderr:N});if(U!==0)throw ae.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${ue.pretty(a.project.configuration,h,ue.Type.PATH)})`)})})}};Ge();Ge();Ge();var Hat=2,gS=class{supportsDescriptor(t,r){return!!t.range.startsWith(AA)}supportsLocator(t,r){return!!t.reference.startsWith(AA)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){if(s.project.tryWorkspaceByLocator(r)===null)throw new Lt(57,`${H.prettyLocator(s.project.configuration,r)} lists ${H.prettyDescriptor(s.project.configuration,t)} as dependency, but only workspaces can depend on exec: packages.`);return H.bindDescriptor(t,{locator:H.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=m9(t.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await hS(H.makeRange({protocol:AA,source:a,selector:a,params:{locator:H.stringifyLocator(n)}}),AA,s.fetchOptions),f=Mn.makeHash(`${Hat}`,c).slice(0,6);return[y9(t,{parentLocator:n,path:a,generatorHash:f,protocol:AA})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await qe.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var jat={fetchers:[dS],resolvers:[gS]},Gat=jat;var C9={};Vt(C9,{FileFetcher:()=>IS,FileResolver:()=>CS,TarballFileFetcher:()=>wS,TarballFileResolver:()=>BS,default:()=>Wat,fileUtils:()=>Nm});Ge();bt();var JC=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,mS=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,rs="file:";var Nm={};Vt(Nm,{fetchArchiveFromLocator:()=>ES,makeArchiveFromLocator:()=>XR,makeBufferFromLocator:()=>I9,makeLocator:()=>zC,makeSpec:()=>Tme,parseSpec:()=>yS});Ge();bt();function yS(e){let{params:t,selector:r}=H.parseRange(e),s=Ae.toPortablePath(r);return{parentLocator:t&&typeof t.locator=="string"?H.parseLocator(t.locator):null,path:s}}function Tme({parentLocator:e,path:t,hash:r,protocol:s}){let a=e!==null?{locator:H.stringifyLocator(e)}:{},n=typeof r<"u"?{hash:r}:{};return H.makeRange({protocol:s,source:t,selector:t,params:{...n,...a}})}function zC(e,{parentLocator:t,path:r,hash:s,protocol:a}){return H.makeLocator(e,Tme({parentLocator:t,path:r,hash:s,protocol:a}))}async function ES(e,t){let{parentLocator:r,path:s}=H.parseFileStyleRange(e.reference,{protocol:rs}),a=Y.isAbsolute(s)?{packageFs:new Pn(wt.root),prefixPath:wt.dot,localPath:wt.root}:await t.fetcher.fetch(r,t),n=a.localPath?{packageFs:new Pn(wt.root),prefixPath:Y.relative(wt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let c=n.packageFs,f=Y.join(n.prefixPath,s);return await qe.releaseAfterUseAsync(async()=>await c.readFilePromise(f),n.releaseFs)}async function XR(e,{protocol:t,fetchOptions:r,inMemory:s=!1}){let{parentLocator:a,path:n}=H.parseFileStyleRange(e.reference,{protocol:t}),c=Y.isAbsolute(n)?{packageFs:new Pn(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(a,r),f=c.localPath?{packageFs:new Pn(wt.root),prefixPath:Y.relative(wt.root,c.localPath)}:c;c!==f&&c.releaseFs&&c.releaseFs();let p=f.packageFs,h=Y.join(f.prefixPath,n);return await qe.releaseAfterUseAsync(async()=>await ms.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:H.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:s}),f.releaseFs)}async function I9(e,{protocol:t,fetchOptions:r}){return(await XR(e,{protocol:t,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var IS=class{supports(t,r){return!!t.reference.startsWith(rs)}getLocalPath(t,r){let{parentLocator:s,path:a}=H.parseFileStyleRange(t.reference,{protocol:rs});if(Y.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:Y.resolve(n,a)}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${H.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:H.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async fetchFromDisk(t,r){return XR(t,{protocol:rs,fetchOptions:r})}};Ge();Ge();var qat=2,CS=class{supportsDescriptor(t,r){return t.range.match(JC)?!0:!!t.range.startsWith(rs)}supportsLocator(t,r){return!!t.reference.startsWith(rs)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return JC.test(t.range)&&(t=H.makeDescriptor(t,`${rs}${t.range}`)),H.bindDescriptor(t,{locator:H.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=yS(t.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await I9(H.makeLocator(t,H.makeRange({protocol:rs,source:a,selector:a,params:{locator:H.stringifyLocator(n)}})),{protocol:rs,fetchOptions:s.fetchOptions}),f=Mn.makeHash(`${qat}`,c).slice(0,6);return[zC(t,{parentLocator:n,path:a,hash:f,protocol:rs})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await qe.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};Ge();var wS=class{supports(t,r){return mS.test(t.reference)?!!t.reference.startsWith(rs):!1}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${H.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:H.getIdentVendorPath(t),checksum:c}}async fetchFromDisk(t,r){let s=await ES(t,r);return await ms.convertToZip(s,{configuration:r.project.configuration,prefixPath:H.getIdentVendorPath(t),stripComponents:1})}};Ge();Ge();Ge();var BS=class{supportsDescriptor(t,r){return mS.test(t.range)?!!(t.range.startsWith(rs)||JC.test(t.range)):!1}supportsLocator(t,r){return mS.test(t.reference)?!!t.reference.startsWith(rs):!1}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return JC.test(t.range)&&(t=H.makeDescriptor(t,`${rs}${t.range}`)),H.bindDescriptor(t,{locator:H.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=yS(t.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=zC(t,{parentLocator:n,path:a,hash:"",protocol:rs}),f=await ES(c,s.fetchOptions),p=Mn.makeHash(f).slice(0,6);return[zC(t,{parentLocator:n,path:a,hash:p,protocol:rs})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await qe.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Yat={fetchers:[wS,IS],resolvers:[BS,CS]},Wat=Yat;var v9={};Vt(v9,{GithubFetcher:()=>vS,default:()=>Kat,githubUtils:()=>$R});Ge();bt();var $R={};Vt($R,{invalidGithubUrlMessage:()=>Nme,isGithubUrl:()=>w9,parseGithubUrl:()=>B9});var Rme=et(Ce("querystring")),Fme=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function w9(e){return e?Fme.some(t=>!!e.match(t)):!1}function B9(e){let t;for(let f of Fme)if(t=e.match(f),t)break;if(!t)throw new Error(Nme(e));let[,r,s,a,n="master"]=t,{commit:c}=Rme.default.parse(n);return n=c||n.replace(/[^:]*:/,""),{auth:r,username:s,reponame:a,treeish:n}}function Nme(e){return`Input cannot be parsed as a valid GitHub URL ('${e}').`}var vS=class{supports(t,r){return!!w9(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${H.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:H.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s=await nn.get(this.getLocatorUrl(t,r),{configuration:r.project.configuration});return await ae.mktempPromise(async a=>{let n=new Pn(a);await ms.extractArchiveTo(s,n,{stripComponents:1});let c=Ma.splitRepoUrl(t.reference),f=Y.join(a,"package.tgz");await wn.prepareExternalProject(a,f,{configuration:r.project.configuration,report:r.report,workspace:c.extra.workspace,locator:t});let p=await ae.readFilePromise(f);return await ms.convertToZip(p,{configuration:r.project.configuration,prefixPath:H.getIdentVendorPath(t),stripComponents:1})})}getLocatorUrl(t,r){let{auth:s,username:a,reponame:n,treeish:c}=B9(t.reference);return`https://${s?`${s}@`:""}github.com/${a}/${n}/archive/${c}.tar.gz`}};var Vat={hooks:{async fetchHostedRepository(e,t,r){if(e!==null)return e;let s=new vS;if(!s.supports(t,r))return null;try{return await s.fetch(t,r)}catch{return null}}}},Kat=Vat;var S9={};Vt(S9,{TarballHttpFetcher:()=>bS,TarballHttpResolver:()=>DS,default:()=>zat});Ge();function SS(e){let t;try{t=new URL(e)}catch{return!1}return!(t.protocol!=="http:"&&t.protocol!=="https:"||!t.pathname.match(/(\.tar\.gz|\.tgz|\/[^.]+)$/))}var bS=class{supports(t,r){return SS(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${H.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:H.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s=await nn.get(t.reference,{configuration:r.project.configuration});return await ms.convertToZip(s,{configuration:r.project.configuration,prefixPath:H.getIdentVendorPath(t),stripComponents:1})}};Ge();Ge();var DS=class{supportsDescriptor(t,r){return SS(t.range)}supportsLocator(t,r){return SS(t.reference)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){return[H.convertDescriptorToLocator(t)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await qe.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Jat={fetchers:[bS],resolvers:[DS]},zat=Jat;var b9={};Vt(b9,{InitCommand:()=>Zd,InitInitializerCommand:()=>ZC,default:()=>Xat});jt();Ge();Ge();bt();jt();var Zd=class extends ft{constructor(){super(...arguments);this.private=he.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=he.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=he.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.name=he.String("-n,--name",{description:"Initialize a package with the given name"});this.usev2=he.Boolean("-2",!1,{hidden:!0});this.yes=he.Boolean("-y,--yes",{hidden:!0})}static{this.paths=[["init"]]}static{this.usage=st.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),s=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return s!==null?await this.executeProxy(r,s):await this.executeRegular(r)}async executeProxy(r,s){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new ot("Cannot use the --install flag from within a project subdirectory");ae.existsSync(this.context.cwd)||await ae.mkdirPromise(this.context.cwd,{recursive:!0});let a=Y.join(this.context.cwd,yr.lockfile);ae.existsSync(a)||await ae.writeFilePromise(a,"");let n=await this.cli.run(["set","version",s],{quiet:!0});if(n!==0)return n;let c=[];return this.private&&c.push("-p"),this.workspace&&c.push("-w"),this.name&&c.push(`-n=${this.name}`),this.yes&&c.push("-y"),await ae.mktempPromise(async f=>{let{code:p}=await Yr.pipevp("yarn",["init",...c],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await wn.makeScriptEnv({binFolder:f})});return p})}async initialize(){}async executeRegular(r){let s=null;try{s=(await Tt.find(r,this.context.cwd)).project}catch{s=null}ae.existsSync(this.context.cwd)||await ae.mkdirPromise(this.context.cwd,{recursive:!0});let a=await _t.tryFind(this.context.cwd),n=a??new _t,c=Object.fromEntries(r.get("initFields").entries());n.load(c),n.name=n.name??H.makeIdent(r.get("initScope"),this.name??Y.basename(this.context.cwd)),n.packageManager=An&&qe.isTaggedYarnVersion(An)?`yarn@${An}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await ae.mkdirPromise(Y.join(this.context.cwd,"packages"),{recursive:!0}),n.workspaceDefinitions=[{pattern:"packages/*"}]);let f={};n.exportTo(f);let p=Y.join(this.context.cwd,_t.fileName);await ae.changeFilePromise(p,`${JSON.stringify(f,null,2)} +`,{automaticNewlines:!0});let h=[p],E=Y.join(this.context.cwd,"README.md");if(ae.existsSync(E)||(await ae.writeFilePromise(E,`# ${H.stringifyIdent(n.name)} +`),h.push(E)),!s||s.cwd===this.context.cwd){let C=Y.join(this.context.cwd,yr.lockfile);ae.existsSync(C)||(await ae.writeFilePromise(C,""),h.push(C));let x=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Whether you use PnP or not, the node_modules folder is often used to store","# build artifacts that should be gitignored","node_modules","","# Swap the comments on the following lines if you wish to use zero-installs","# In that case, don't forget to run `yarn config set enableGlobalCache false`!","# Documentation here: https://yarnpkg.com/features/caching#zero-installs","","#!.yarn/cache",".pnp.*"].map(fe=>`${fe} +`).join(""),I=Y.join(this.context.cwd,".gitignore");ae.existsSync(I)||(await ae.writeFilePromise(I,x),h.push(I));let N=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(fe=>`${fe} +`).join(""),U=Y.join(this.context.cwd,".gitattributes");ae.existsSync(U)||(await ae.writeFilePromise(U,N),h.push(U));let K={"*":{charset:"utf-8",endOfLine:"lf",indentSize:2,indentStyle:"space",insertFinalNewline:!0}};qe.mergeIntoTarget(K,r.get("initEditorConfig"));let $=`root = true +`;for(let[fe,le]of Object.entries(K)){$+=` +[${fe}] +`;for(let[ge,pe]of Object.entries(le)){let De=ge.replace(/[A-Z]/g,ye=>`_${ye.toLowerCase()}`);$+=`${De} = ${pe} +`}}let ie=Y.join(this.context.cwd,".editorconfig");ae.existsSync(ie)||(await ae.writeFilePromise(ie,$),h.push(ie)),await this.cli.run(["install"],{quiet:!0}),await this.initialize(),ae.existsSync(Y.join(this.context.cwd,".git"))||(await Yr.execvp("git",["init"],{cwd:this.context.cwd}),await Yr.execvp("git",["add","--",...h],{cwd:this.context.cwd}),await Yr.execvp("git",["commit","--allow-empty","-m","First commit"],{cwd:this.context.cwd}))}}};var ZC=class extends Zd{constructor(){super(...arguments);this.initializer=he.String();this.argv=he.Proxy()}static{this.paths=[["init"]]}async initialize(){this.context.stdout.write(` +`),await this.cli.run(["dlx",this.initializer,...this.argv],{quiet:!0})}};var Zat={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[Zd,ZC]},Xat=Zat;var BY={};Vt(BY,{SearchCommand:()=>dw,UpgradeInteractiveCommand:()=>gw,default:()=>lht});Ge();var Lme=et(Ce("os"));function XC({stdout:e}){if(Lme.default.endianness()==="BE")throw new Error("Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures");if(!e.isTTY)throw new Error("Interactive commands can only be used inside a TTY environment")}jt();var Jye=et(q9()),Y9={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},Jct=(0,Jye.default)(Y9.appId,Y9.apiKey).initIndex(Y9.indexName),W9=async(e,t=0)=>await Jct.search(e,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:t,hitsPerPage:10});var Db=["regular","dev","peer"],dw=class extends ft{static{this.paths=[["search"]]}static{this.usage=st.Usage({category:"Interactive commands",description:"open the search interface",details:` + This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry. + `,examples:[["Open the search window","yarn search"]]})}async execute(){XC(this.context);let{Gem:t}=await Promise.resolve().then(()=>(FF(),AY)),{ScrollableItems:r}=await Promise.resolve().then(()=>(MF(),LF)),{useKeypress:s}=await Promise.resolve().then(()=>(hw(),pY)),{useMinistore:a}=await Promise.resolve().then(()=>(yY(),mY)),{renderForm:n}=await Promise.resolve().then(()=>(jF(),HF)),{default:c}=await Promise.resolve().then(()=>et(Fwe())),{Box:f,Text:p}=await Promise.resolve().then(()=>et(Yc())),{default:h,useEffect:E,useState:C}=await Promise.resolve().then(()=>et(dn())),S=await Je.find(this.context.cwd,this.context.plugins),x=()=>h.createElement(f,{flexDirection:"row"},h.createElement(f,{flexDirection:"column",width:48},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move between packages.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select a package.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," again to change the target."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to install the selected packages.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),I=()=>h.createElement(h.Fragment,null,h.createElement(f,{width:15},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Owner")),h.createElement(f,{width:11},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Version")),h.createElement(f,{width:10},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Downloads"))),R=()=>h.createElement(f,{width:17},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Target")),N=({hit:pe,active:De})=>{let[ye,d]=a(pe.name,null);s({active:De},(me,ce)=>{if(ce.name!=="space")return;if(!ye){d(Db[0]);return}let X=Db.indexOf(ye)+1;X===Db.length?d(null):d(Db[X])},[ye,d]);let ve=H.parseIdent(pe.name),Ie=H.prettyIdent(S,ve);return h.createElement(f,null,h.createElement(f,{width:45},h.createElement(p,{bold:!0,wrap:"wrap"},Ie)),h.createElement(f,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:"truncate"},pe.owner.name)),h.createElement(f,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:"truncate"},pe.version)),h.createElement(f,{width:16,marginLeft:1},h.createElement(p,null,pe.humanDownloadsLast30Days)))},U=({name:pe,active:De})=>{let[ye]=a(pe,null),d=H.parseIdent(pe);return h.createElement(f,null,h.createElement(f,{width:47},h.createElement(p,{bold:!0}," - ",H.prettyIdent(S,d))),Db.map(ve=>h.createElement(f,{key:ve,width:14,marginLeft:1},h.createElement(p,null," ",h.createElement(t,{active:ye===ve})," ",h.createElement(p,{bold:!0},ve)))))},K=()=>h.createElement(f,{marginTop:1},h.createElement(p,null,"Powered by Algolia.")),ie=await n(({useSubmit:pe})=>{let De=a();pe(De);let ye=Array.from(De.keys()).filter(_=>De.get(_)!==null),[d,ve]=C(""),[Ie,me]=C(0),[ce,X]=C([]),be=_=>{_.match(/\t| /)||ve(_)},ke=async()=>{me(0);let _=await W9(d);_.query===d&&X(_.hits)},it=async()=>{let _=await W9(d,Ie+1);_.query===d&&_.page-1===Ie&&(me(_.page),X([...ce,..._.hits]))};return E(()=>{d?ke():X([])},[d]),h.createElement(f,{flexDirection:"column"},h.createElement(x,null),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(p,{bold:!0},"Search: "),h.createElement(f,{width:41},h.createElement(c,{value:d,onChange:be,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),h.createElement(I,null)),ce.length?h.createElement(r,{radius:2,loop:!1,children:ce.map(_=>h.createElement(N,{key:_.name,hit:_,active:!1})),willReachEnd:it}):h.createElement(p,{color:"gray"},"Start typing..."),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(f,{width:49},h.createElement(p,{bold:!0},"Selected:")),h.createElement(R,null)),ye.length?ye.map(_=>h.createElement(U,{key:_,name:_,active:!1})):h.createElement(p,{color:"gray"},"No selected packages..."),h.createElement(K,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ie>"u")return 1;let fe=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="regular"),le=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="dev"),ge=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="peer");return fe.length&&await this.cli.run(["add",...fe]),le.length&&await this.cli.run(["add","--dev",...le]),ge&&await this.cli.run(["add","--peer",...ge]),0}};Ge();jt();IG();var Hwe=et(hi());Jo();var _we=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/;function jwe(e,t){return e.length>0?[e.slice(0,t)].concat(jwe(e.slice(t),t)):[]}var gw=class extends ft{constructor(){super(...arguments);this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:Qs(La)})}static{this.paths=[["upgrade-interactive"]]}static{this.usage=st.Usage({category:"Interactive commands",description:"open the upgrade interface",details:"\n This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Open the upgrade window","yarn upgrade-interactive"]]})}async execute(){XC(this.context);let{ItemOptions:r}=await Promise.resolve().then(()=>(Uwe(),Mwe)),{Pad:s}=await Promise.resolve().then(()=>(wY(),Lwe)),{ScrollableItems:a}=await Promise.resolve().then(()=>(MF(),LF)),{useMinistore:n,useMinistoreSetAll:c}=await Promise.resolve().then(()=>(yY(),mY)),{useKeypress:f}=await Promise.resolve().then(()=>(hw(),pY)),{renderForm:p}=await Promise.resolve().then(()=>(jF(),HF)),{Box:h,Text:E}=await Promise.resolve().then(()=>et(Yc())),{default:C,useCallback:S,useEffect:x,useRef:I,useState:R}=await Promise.resolve().then(()=>et(dn())),N=await Je.find(this.context.cwd,this.context.plugins),{project:U,workspace:K}=await Tt.find(N,this.context.cwd),$=await zr.find(N);if(!K)throw new ar(U.cwd,this.context.cwd);await U.restoreInstallState({restoreResolutions:!1});let ie=this.context.stdout.rows-8,fe=(X,be)=>{let ke=Ide(X,be),it="";for(let _ of ke)_.added?it+=ue.pretty(N,_.value,"green"):_.removed||(it+=_.value);return it},le=(X,be)=>{if(X===be)return be;let ke=H.parseRange(X),it=H.parseRange(be),_=ke.selector.match(_we),tt=it.selector.match(_we);if(!_||!tt)return fe(X,be);let Fe=["gray","red","yellow","green","magenta"],Qe=null,Se="";for(let je=1;je{let it=await ef.fetchDescriptorFrom(X,ke,{project:U,cache:$,preserveModifier:be,workspace:K});return it!==null?it.range:X.range},pe=async X=>{let be=Hwe.default.valid(X.range)?`^${X.range}`:X.range,[ke,it]=await Promise.all([ge(X,X.range,be).catch(()=>null),ge(X,X.range,"latest").catch(()=>null)]),_=[{value:null,label:X.range}];return ke&&ke!==X.range?_.push({value:ke,label:le(X.range,ke)}):_.push({value:null,label:""}),it&&it!==ke&&it!==X.range?_.push({value:it,label:le(X.range,it)}):_.push({value:null,label:""}),_},De=()=>C.createElement(h,{flexDirection:"row"},C.createElement(h,{flexDirection:"column",width:49},C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},""),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to select packages.")),C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},""),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to select versions.")),C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},"c"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"r"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"l")," to select all ",C.createElement(E,{bold:!0,color:"cyanBright"},"current"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"range"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"latest"),"."))),C.createElement(h,{flexDirection:"column"},C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to install.")),C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to abort.")))),ye=()=>C.createElement(h,{flexDirection:"row",paddingTop:1,paddingBottom:1},C.createElement(h,{width:50},C.createElement(E,{bold:!0},C.createElement(E,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:"gray"},"Current")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:"gray"},"Range")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:"gray"},"Latest"))),d=({active:X,descriptor:be,suggestions:ke})=>{let[it,_]=n(be.descriptorHash,null),tt=H.stringifyIdent(be),Fe=Math.max(0,45-tt.length);return C.createElement(C.Fragment,null,C.createElement(h,null,C.createElement(h,{width:45},C.createElement(E,{bold:!0},H.prettyIdent(N,be)),C.createElement(s,{active:X,length:Fe})),C.createElement(r,{active:X,options:ke,value:it,skewer:!0,onChange:_,sizes:[17,17,17]})))},ve=({dependencies:X})=>{let be=c(),[ke,it]=R(X.map(()=>null)),_=I(!0),tt=async Qe=>{let Se=await pe(Qe);return Se.filter(je=>je.label!=="").length<=1?null:{descriptor:Qe,suggestions:Se}};x(()=>()=>{_.current=!1},[]),x(()=>{let Qe=Math.trunc(ie*1.75),Se=X.slice(0,Qe),je=X.slice(Qe),Te=jwe(je,ie),ct=Se.map(tt).reduce(async(Me,P)=>{await Me;let w=await P;w!==null&&_.current&&it(D=>{let y=D.findIndex(z=>z===null),F=[...D];return F[y]=w,F})},Promise.resolve());Te.reduce((Me,P)=>Promise.all(P.map(w=>Promise.resolve().then(()=>tt(w)))).then(async w=>{w=w.filter(D=>D!==null),await Me,_.current&&it(D=>{let y=D.findIndex(F=>F===null);return D.slice(0,y).concat(w).concat(D.slice(y+w.length))})}),ct).then(()=>{_.current&&it(Me=>Me.filter(P=>P!==null))})},[]);let Fe=S(Qe=>{if(Qe!=="c"&&Qe!=="r"&&Qe!=="l")return;let Se=[];for(let je of ke){if(je===null)continue;let Te;Qe==="c"?Te=null:Qe==="r"?Te=je.suggestions[1].value:Te=je.suggestions[2].value??je.suggestions[1].value,Se.push([je.descriptor.descriptorHash,Te])}be(Se)},[ke,be]);return f({active:!0},Fe,[Fe]),ke.length?C.createElement(a,{radius:ie>>1,children:ke.map((Qe,Se)=>Qe!==null?C.createElement(d,{key:Se,active:!1,descriptor:Qe.descriptor,suggestions:Qe.suggestions}):C.createElement(E,{key:Se},"Loading..."))}):C.createElement(E,null,"No upgrades found")},me=await p(({useSubmit:X})=>{X(n());let be=new Map;for(let it of U.workspaces)for(let _ of["dependencies","devDependencies"])for(let tt of it.manifest[_].values())U.tryWorkspaceByDescriptor(tt)===null&&(tt.range.startsWith("link:")||be.set(tt.descriptorHash,tt));let ke=qe.sortMap(be.values(),it=>H.stringifyDescriptor(it));return C.createElement(h,{flexDirection:"column"},C.createElement(De,null),C.createElement(ye,null),C.createElement(ve,{dependencies:ke}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof me>"u")return 1;let ce=!1;for(let X of U.workspaces)for(let be of["dependencies","devDependencies"]){let ke=X.manifest[be];for(let it of ke.values()){let _=me.get(it.descriptorHash);typeof _<"u"&&_!==null&&(ke.set(it.identHash,H.makeDescriptor(it,_)),ce=!0)}}return ce?await U.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:$,mode:this.mode}):0}};var aht={commands:[dw,gw]},lht=aht;var SY={};Vt(SY,{default:()=>Aht});Ge();var xb="jsr:";Ge();Ge();function mw(e){let t=e.range.slice(4);if(kr.validRange(t))return H.makeDescriptor(e,`npm:${H.stringifyIdent(H.wrapIdentIntoScope(e,"jsr"))}@${t}`);let r=H.tryParseDescriptor(t,!0);if(r!==null)return H.makeDescriptor(e,`npm:${H.stringifyIdent(H.wrapIdentIntoScope(r,"jsr"))}@${r.range}`);throw new Error(`Invalid range: ${e.range}`)}function yw(e){return H.makeLocator(H.wrapIdentIntoScope(e,"jsr"),`npm:${e.reference.slice(4)}`)}function vY(e){return H.makeLocator(H.unwrapIdentFromScope(e,"jsr"),`jsr:${e.reference.slice(4)}`)}var GF=class{supports(t,r){return t.reference.startsWith(xb)}getLocalPath(t,r){let s=yw(t);return r.fetcher.getLocalPath(s,r)}fetch(t,r){let s=yw(t);return r.fetcher.fetch(s,r)}};var qF=class{supportsDescriptor(t,r){return!!t.range.startsWith(xb)}supportsLocator(t,r){return!!t.reference.startsWith(xb)}shouldPersistResolution(t,r){let s=yw(t);return r.resolver.shouldPersistResolution(s,r)}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{inner:mw(t)}}async getCandidates(t,r,s){let a=s.project.configuration.normalizeDependency(mw(t));return(await s.resolver.getCandidates(a,r,s)).map(c=>vY(c))}async getSatisfying(t,r,s,a){let n=a.project.configuration.normalizeDependency(mw(t));return a.resolver.getSatisfying(n,r,s,a)}async resolve(t,r){let s=yw(t),a=await r.resolver.resolve(s,r);return{...a,...vY(a)}}};var cht=["dependencies","devDependencies","peerDependencies"];function uht(e,t){for(let r of cht)for(let s of e.manifest.getForScope(r).values()){if(!s.range.startsWith("jsr:"))continue;let a=mw(s),n=r==="dependencies"?H.makeDescriptor(s,"unknown"):null,c=n!==null&&e.manifest.ensureDependencyMeta(n).optional?"optionalDependencies":r;t[c][H.stringifyIdent(s)]=a.range}}var fht={hooks:{beforeWorkspacePacking:uht},resolvers:[qF],fetchers:[GF]},Aht=fht;var bY={};Vt(bY,{LinkFetcher:()=>kb,LinkResolver:()=>Qb,PortalFetcher:()=>Tb,PortalResolver:()=>Rb,default:()=>hht});Ge();bt();var ih="portal:",sh="link:";var kb=class{supports(t,r){return!!t.reference.startsWith(sh)}getLocalPath(t,r){let{parentLocator:s,path:a}=H.parseFileStyleRange(t.reference,{protocol:sh});if(Y.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:Y.resolve(n,a)}async fetch(t,r){let{parentLocator:s,path:a}=H.parseFileStyleRange(t.reference,{protocol:sh}),n=Y.isAbsolute(a)?{packageFs:new Pn(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Pn(wt.root),prefixPath:Y.relative(wt.root,n.localPath),localPath:wt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=Y.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Pn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:wt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new qf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:wt.dot,discardFromLookup:!0}}};Ge();bt();var Qb=class{supportsDescriptor(t,r){return!!t.range.startsWith(sh)}supportsLocator(t,r){return!!t.reference.startsWith(sh)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return H.bindDescriptor(t,{locator:H.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(sh.length);return[H.makeLocator(t,`${sh}${Ae.toPortablePath(a)}`)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){return{...t,version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};Ge();bt();var Tb=class{supports(t,r){return!!t.reference.startsWith(ih)}getLocalPath(t,r){let{parentLocator:s,path:a}=H.parseFileStyleRange(t.reference,{protocol:ih});if(Y.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:Y.resolve(n,a)}async fetch(t,r){let{parentLocator:s,path:a}=H.parseFileStyleRange(t.reference,{protocol:ih}),n=Y.isAbsolute(a)?{packageFs:new Pn(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Pn(wt.root),prefixPath:Y.relative(wt.root,n.localPath),localPath:wt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=Y.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Pn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:wt.dot,localPath:p}:{packageFs:new qf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:wt.dot}}};Ge();Ge();bt();var Rb=class{supportsDescriptor(t,r){return!!t.range.startsWith(ih)}supportsLocator(t,r){return!!t.reference.startsWith(ih)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return H.bindDescriptor(t,{locator:H.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(ih.length);return[H.makeLocator(t,`${ih}${Ae.toPortablePath(a)}`)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await qe.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var pht={fetchers:[kb,Tb],resolvers:[Qb,Rb]},hht=pht;var dW={};Vt(dW,{NodeModulesLinker:()=>Kb,NodeModulesMode:()=>fW,PnpLooseLinker:()=>Jb,default:()=>Gdt});bt();Ge();bt();bt();var PY=(e,t)=>`${e}@${t}`,Gwe=(e,t)=>{let r=t.indexOf("#"),s=r>=0?t.substring(r+1):t;return PY(e,s)};var Ywe=(e,t={})=>{let r=t.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),s=t.check||r>=9,a=t.hoistingLimits||new Map,n={check:s,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},c;n.debugLevel>=0&&(c=Date.now());let f=Cht(e,n),p=!1,h=0;do{let E=xY(f,[f],new Set([f.locator]),new Map,n);p=E.anotherRoundNeeded||E.isGraphChanged,n.fastLookupPossible=!1,h++}while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-c}ms, rounds: ${h}`),n.debugLevel>=1){let E=Fb(f);if(xY(f,[f],new Set([f.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: +${E}, next tree: +${Fb(f)}`);let S=Wwe(f);if(S)throw new Error(`${S}, after hoisting finished: +${Fb(f)}`)}return n.debugLevel>=2&&console.log(Fb(f)),wht(f)},dht=e=>{let t=e[e.length-1],r=new Map,s=new Set,a=n=>{if(!s.has(n)){s.add(n);for(let c of n.hoistedDependencies.values())r.set(c.name,c);for(let c of n.dependencies.values())n.peerNames.has(c.name)||a(c)}};return a(t),r},ght=e=>{let t=e[e.length-1],r=new Map,s=new Set,a=new Set,n=(c,f)=>{if(s.has(c))return;s.add(c);for(let h of c.hoistedDependencies.values())if(!f.has(h.name)){let E;for(let C of e)E=C.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of c.dependencies.values())p.add(h.name);for(let h of c.dependencies.values())c.peerNames.has(h.name)||n(h,p)};return n(t,a),r},qwe=(e,t)=>{if(t.decoupled)return t;let{name:r,references:s,ident:a,locator:n,dependencies:c,originalDependencies:f,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:C,hoistPriority:S,dependencyKind:x,hoistedFrom:I,hoistedTo:R}=t,N={name:r,references:new Set(s),ident:a,locator:n,dependencies:new Map(c),originalDependencies:new Map(f),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:C,hoistPriority:S,dependencyKind:x,hoistedFrom:new Map(I),hoistedTo:new Map(R)},U=N.dependencies.get(r);return U&&U.ident==N.ident&&N.dependencies.set(r,N),e.dependencies.set(N.name,N),N},mht=(e,t)=>{let r=new Map([[e.name,[e.ident]]]);for(let a of e.dependencies.values())e.peerNames.has(a.name)||r.set(a.name,[a.ident]);let s=Array.from(t.keys());s.sort((a,n)=>{let c=t.get(a),f=t.get(n);if(f.hoistPriority!==c.hoistPriority)return f.hoistPriority-c.hoistPriority;{let p=c.dependents.size+c.peerDependents.size;return f.dependents.size+f.peerDependents.size-p}});for(let a of s){let n=a.substring(0,a.indexOf("@",1)),c=a.substring(n.length+1);if(!e.peerNames.has(n)){let f=r.get(n);f||(f=[],r.set(n,f)),f.indexOf(c)<0&&f.push(c)}}return r},DY=e=>{let t=new Set,r=(s,a=new Set)=>{if(!a.has(s)){a.add(s);for(let n of s.peerNames)if(!e.peerNames.has(n)){let c=e.dependencies.get(n);c&&!t.has(c)&&r(c,a)}t.add(s)}};for(let s of e.dependencies.values())e.peerNames.has(s.name)||r(s);return t},xY=(e,t,r,s,a,n=new Set)=>{let c=t[t.length-1];if(n.has(c))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(c);let f=Bht(c),p=mht(c,f),h=e==c?new Map:a.fastLookupPossible?dht(t):ght(t),E,C=!1,S=!1,x=new Map(Array.from(p.entries()).map(([R,N])=>[R,N[0]])),I=new Map;do{let R=Iht(e,t,r,h,x,p,s,I,a);R.isGraphChanged&&(S=!0),R.anotherRoundNeeded&&(C=!0),E=!1;for(let[N,U]of p)U.length>1&&!c.dependencies.has(N)&&(x.delete(N),U.shift(),x.set(N,U[0]),E=!0)}while(E);for(let R of c.dependencies.values())if(!c.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let N=xY(e,[...t,R],r,I,a);N.isGraphChanged&&(S=!0),N.anotherRoundNeeded&&(C=!0),r.delete(R.locator)}return{anotherRoundNeeded:C,isGraphChanged:S}},yht=e=>{for(let[t,r]of e.dependencies)if(!e.peerNames.has(t)&&r.ident!==e.ident)return!0;return!1},Eht=(e,t,r,s,a,n,c,f,{outputReason:p,fastLookupPossible:h})=>{let E,C=null,S=new Set;p&&(E=`${Array.from(t).map(N=>So(N)).join("\u2192")}`);let x=r[r.length-1],R=!(s.ident===x.ident);if(p&&!R&&(C="- self-reference"),R&&(R=s.dependencyKind!==1,p&&!R&&(C="- workspace")),R&&s.dependencyKind===2&&(R=!yht(s),p&&!R&&(C="- external soft link with unhoisted dependencies")),R&&(R=!e.peerNames.has(s.name),p&&!R&&(C=`- cannot shadow peer: ${So(e.originalDependencies.get(s.name).locator)} at ${E}`)),R){let N=!1,U=a.get(s.name);if(N=!U||U.ident===s.ident,p&&!N&&(C=`- filled by: ${So(U.locator)} at ${E}`),N)for(let K=r.length-1;K>=1;K--){let ie=r[K].dependencies.get(s.name);if(ie&&ie.ident!==s.ident){N=!1;let fe=f.get(x);fe||(fe=new Set,f.set(x,fe)),fe.add(s.name),p&&(C=`- filled by ${So(ie.locator)} at ${r.slice(0,K).map(le=>So(le.locator)).join("\u2192")}`);break}}R=N}if(R&&(R=n.get(s.name)===s.ident,p&&!R&&(C=`- filled by: ${So(c.get(s.name)[0])} at ${E}`)),R){let N=!0,U=new Set(s.peerNames);for(let K=r.length-1;K>=1;K--){let $=r[K];for(let ie of U){if($.peerNames.has(ie)&&$.originalDependencies.has(ie))continue;let fe=$.dependencies.get(ie);fe&&e.dependencies.get(ie)!==fe&&(K===r.length-1?S.add(fe):(S=null,N=!1,p&&(C=`- peer dependency ${So(fe.locator)} from parent ${So($.locator)} was not hoisted to ${E}`))),U.delete(ie)}if(!N)break}R=N}if(R&&!h)for(let N of s.hoistedDependencies.values()){let U=a.get(N.name)||e.dependencies.get(N.name);if(!U||N.ident!==U.ident){R=!1,p&&(C=`- previously hoisted dependency mismatch, needed: ${So(N.locator)}, available: ${So(U?.locator)}`);break}}return S!==null&&S.size>0?{isHoistable:2,dependsOn:S,reason:C}:{isHoistable:R?0:1,reason:C}},YF=e=>`${e.name}@${e.locator}`,Iht=(e,t,r,s,a,n,c,f,p)=>{let h=t[t.length-1],E=new Set,C=!1,S=!1,x=(U,K,$,ie,fe)=>{if(E.has(ie))return;let le=[...K,YF(ie)],ge=[...$,YF(ie)],pe=new Map,De=new Map;for(let me of DY(ie)){let ce=Eht(h,r,[h,...U,ie],me,s,a,n,f,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(De.set(me,ce),ce.isHoistable===2)for(let X of ce.dependsOn){let be=pe.get(X.name)||new Set;be.add(me.name),pe.set(X.name,be)}}let ye=new Set,d=(me,ce,X)=>{if(!ye.has(me)){ye.add(me),De.set(me,{isHoistable:1,reason:X});for(let be of pe.get(me.name)||[])d(ie.dependencies.get(be),ce,p.debugLevel>=2?`- peer dependency ${So(me.locator)} from parent ${So(ie.locator)} was not hoisted`:"")}};for(let[me,ce]of De)ce.isHoistable===1&&d(me,ce,ce.reason);let ve=!1;for(let me of De.keys())if(!ye.has(me)){S=!0;let ce=c.get(ie);ce&&ce.has(me.name)&&(C=!0),ve=!0,ie.dependencies.delete(me.name),ie.hoistedDependencies.set(me.name,me),ie.reasons.delete(me.name);let X=h.dependencies.get(me.name);if(p.debugLevel>=2){let be=Array.from(K).concat([ie.locator]).map(it=>So(it)).join("\u2192"),ke=h.hoistedFrom.get(me.name);ke||(ke=[],h.hoistedFrom.set(me.name,ke)),ke.push(be),ie.hoistedTo.set(me.name,Array.from(t).map(it=>So(it.locator)).join("\u2192"))}if(!X)h.ident!==me.ident&&(h.dependencies.set(me.name,me),fe.add(me));else for(let be of me.references)X.references.add(be)}if(ie.dependencyKind===2&&ve&&(C=!0),p.check){let me=Wwe(e);if(me)throw new Error(`${me}, after hoisting dependencies of ${[h,...U,ie].map(ce=>So(ce.locator)).join("\u2192")}: +${Fb(e)}`)}let Ie=DY(ie);for(let me of Ie)if(ye.has(me)){let ce=De.get(me);if((a.get(me.name)===me.ident||!ie.reasons.has(me.name))&&ce.isHoistable!==0&&ie.reasons.set(me.name,ce.reason),!me.isHoistBorder&&ge.indexOf(YF(me))<0){E.add(ie);let be=qwe(ie,me);x([...U,ie],le,ge,be,R),E.delete(ie)}}},I,R=new Set(DY(h)),N=Array.from(t).map(U=>YF(U));do{I=R,R=new Set;for(let U of I){if(U.locator===h.locator||U.isHoistBorder)continue;let K=qwe(h,U);x([],Array.from(r),N,K,R)}}while(R.size>0);return{anotherRoundNeeded:C,isGraphChanged:S}},Wwe=e=>{let t=[],r=new Set,s=new Set,a=(n,c,f)=>{if(r.has(n)||(r.add(n),s.has(n)))return;let p=new Map(c);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),C=()=>`${Array.from(s).concat([n]).map(S=>So(S.locator)).join("\u2192")}`;if(n.peerNames.has(h.name)){let S=c.get(h.name);(S!==E||!S||S.ident!==h.ident)&&t.push(`${C()} - broken peer promise: expected ${h.ident} but found ${S&&S.ident}`)}else{let S=f.hoistedFrom.get(n.name),x=n.hoistedTo.get(h.name),I=`${S?` hoisted from ${S.join(", ")}`:""}`,R=`${x?` hoisted to ${x}`:""}`,N=`${C()}${I}`;E?E.ident!==h.ident&&t.push(`${N} - broken require promise for ${h.name}${R}: expected ${h.ident}, but found: ${E.ident}`):t.push(`${N} - broken require promise: no required dependency ${h.name}${R} found`)}}s.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);s.delete(n)};return a(e,e.dependencies,e),t.join(` +`)},Cht=(e,t)=>{let{identName:r,name:s,reference:a,peerNames:n}=e,c={name:s,references:new Set([a]),locator:PY(r,a),ident:Gwe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},f=new Map([[e,c]]),p=(h,E)=>{let C=f.get(h),S=!!C;if(!C){let{name:x,identName:I,reference:R,peerNames:N,hoistPriority:U,dependencyKind:K}=h,$=t.hoistingLimits.get(E.locator);C={name:x,references:new Set([R]),locator:PY(I,R),ident:Gwe(I,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(N),reasons:new Map,decoupled:!0,isHoistBorder:$?$.has(x):!1,hoistPriority:U||0,dependencyKind:K||0,hoistedFrom:new Map,hoistedTo:new Map},f.set(h,C)}if(E.dependencies.set(h.name,C),E.originalDependencies.set(h.name,C),S){let x=new Set,I=R=>{if(!x.has(R)){x.add(R),R.decoupled=!1;for(let N of R.dependencies.values())R.peerNames.has(N.name)||I(N)}};I(C)}else for(let x of h.dependencies)p(x,C)};for(let h of e.dependencies)p(h,c);return c},kY=e=>e.substring(0,e.indexOf("@",1)),wht=e=>{let t={name:e.name,identName:kY(e.locator),references:new Set(e.references),dependencies:new Set},r=new Set([e]),s=(a,n,c)=>{let f=r.has(a),p;if(n===a)p=c;else{let{name:h,references:E,locator:C}=a;p={name:h,identName:kY(C),references:E,dependencies:new Set}}if(c.dependencies.add(p),!f){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||s(h,a,p);r.delete(a)}};for(let a of e.dependencies.values())s(a,e,t);return t},Bht=e=>{let t=new Map,r=new Set([e]),s=c=>`${c.name}@${c.ident}`,a=c=>{let f=s(c),p=t.get(f);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},t.set(f,p)),p},n=(c,f)=>{let p=!!r.has(f);if(a(f).dependents.add(c.ident),!p){r.add(f);for(let E of f.dependencies.values()){let C=a(E);C.hoistPriority=Math.max(C.hoistPriority,E.hoistPriority),f.peerNames.has(E.name)?C.peerDependents.add(f.ident):n(f,E)}}};for(let c of e.dependencies.values())e.peerNames.has(c.name)||n(e,c);return t},So=e=>{if(!e)return"none";let t=e.indexOf("@",1),r=e.substring(0,t);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let s=e.substring(t+1);if(s==="workspace:.")return".";if(s){let a=(s.indexOf("#")>0?s.split("#")[1]:s).replace("npm:","");return s.startsWith("virtual")&&(r=`v:${r}`),a.startsWith("workspace")&&(r=`w:${r}`,a=""),`${r}${a?`@${a}`:""}`}else return`${r}`};var Fb=e=>{let t=0,r=(a,n,c="")=>{if(t>5e4||n.has(a))return"";t++;let f=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p="";n.add(a);for(let h=0;h":"")+(S!==E.name?`a:${E.name}:`:"")+So(E.locator)+(C?` ${C}`:"")} +`,p+=r(E,n,`${c}${h5e4?` +Tree is too large, part of the tree has been dunped +`:"")};var Nb=(s=>(s.WORKSPACES="workspaces",s.DEPENDENCIES="dependencies",s.NONE="none",s))(Nb||{}),Vwe="node_modules",ng="$wsroot$";var Ob=(e,t)=>{let{packageTree:r,hoistingLimits:s,errors:a,preserveSymlinksRequired:n}=Sht(e,t),c=null;if(a.length===0){let f=Ywe(r,{hoistingLimits:s});c=Dht(e,f,t)}return{tree:c,errors:a,preserveSymlinksRequired:n}},gA=e=>`${e.name}@${e.reference}`,TY=e=>{let t=new Map;for(let[r,s]of e.entries())if(!s.dirList){let a=t.get(s.locator);a||(a={target:s.target,linkType:s.linkType,locations:[],aliases:s.aliases},t.set(s.locator,a)),a.locations.push(r)}for(let r of t.values())r.locations=r.locations.sort((s,a)=>{let n=s.split(Y.delimiter).length,c=a.split(Y.delimiter).length;return a===s?0:n!==c?c-n:a>s?1:-1});return t},Kwe=(e,t)=>{let r=H.isVirtualLocator(e)?H.devirtualizeLocator(e):e,s=H.isVirtualLocator(t)?H.devirtualizeLocator(t):t;return H.areLocatorsEqual(r,s)},QY=(e,t,r,s)=>{if(e.linkType!=="SOFT")return!1;let a=Ae.toPortablePath(r.resolveVirtual&&t.reference&&t.reference.startsWith("virtual:")?r.resolveVirtual(e.packageLocation):e.packageLocation);return Y.contains(s,a)===null},vht=e=>{let t=e.getPackageInformation(e.topLevel);if(t===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(e.findPackageLocator(t.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let s=Ae.toPortablePath(t.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},c=e.getDependencyTreeRoots(),f=new Map,p=new Set,h=(S,x)=>{let I=gA(S);if(p.has(I))return;p.add(I);let R=e.getPackageInformation(S);if(R){let N=x?gA(x):"";if(gA(S)!==N&&R.linkType==="SOFT"&&!S.reference.startsWith("link:")&&!QY(R,S,e,s)){let U=Jwe(R,S,e);(!f.get(U)||S.reference.startsWith("workspace:"))&&f.set(U,S)}for(let[U,K]of R.packageDependencies)K!==null&&(R.packagePeers.has(U)||h(e.getLocator(U,K),S))}};for(let S of c)h(S,null);let E=s.split(Y.sep);for(let S of f.values()){let x=e.getPackageInformation(S),R=Ae.toPortablePath(x.packageLocation.slice(0,-1)).split(Y.sep).slice(E.length),N=n;for(let U of R){let K=N.children.get(U);K||(K={children:new Map},N.children.set(U,K)),N=K}N.workspaceLocator=S}let C=(S,x)=>{if(S.workspaceLocator){let I=gA(x),R=a.get(I);R||(R=new Set,a.set(I,R)),R.add(S.workspaceLocator)}for(let I of S.children.values())C(I,S.workspaceLocator||x)};for(let S of n.children.values())C(S,n.workspaceLocator);return a},Sht=(e,t)=>{let r=[],s=!1,a=new Map,n=vht(e),c=e.getPackageInformation(e.topLevel);if(c===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let f=e.findPackageLocator(c.packageLocation);if(f===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let p=Ae.toPortablePath(c.packageLocation.slice(0,-1)),h={name:f.name,identName:f.name,reference:f.reference,peerNames:c.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,C=(x,I)=>`${gA(I)}:${x}`,S=(x,I,R,N,U,K,$,ie)=>{let fe=C(x,R),le=E.get(fe),ge=!!le;!ge&&R.name===f.name&&R.reference===f.reference&&(le=h,E.set(fe,h));let pe=QY(I,R,e,p);if(!le){let me=0;pe?me=2:I.linkType==="SOFT"&&R.name.endsWith(ng)&&(me=1),le={name:x,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:me===1?new Set:I.packagePeers,dependencyKind:me},E.set(fe,le)}let De;if(pe?De=2:U.linkType==="SOFT"?De=1:De=0,le.hoistPriority=Math.max(le.hoistPriority||0,De),ie&&!pe){let me=gA({name:N.identName,reference:N.reference}),ce=a.get(me)||new Set;a.set(me,ce),ce.add(le.name)}let ye=new Map(I.packageDependencies);if(t.project){let me=t.project.workspacesByCwd.get(Ae.toPortablePath(I.packageLocation.slice(0,-1)));if(me){let ce=new Set([...Array.from(me.manifest.peerDependencies.values(),X=>H.stringifyIdent(X)),...Array.from(me.manifest.peerDependenciesMeta.keys())]);for(let X of ce)ye.has(X)||(ye.set(X,K.get(X)||null),le.peerNames.add(X))}}let d=gA({name:R.name.replace(ng,""),reference:R.reference}),ve=n.get(d);if(ve)for(let me of ve)ye.set(`${me.name}${ng}`,me.reference);(I!==U||I.linkType!=="SOFT"||!pe&&(!t.selfReferencesByCwd||t.selfReferencesByCwd.get($)))&&N.dependencies.add(le);let Ie=R!==f&&I.linkType==="SOFT"&&!R.name.endsWith(ng)&&!pe;if(!ge&&!Ie){let me=new Map;for(let[ce,X]of ye)if(X!==null){let be=e.getLocator(ce,X),ke=e.getLocator(ce.replace(ng,""),X),it=e.getPackageInformation(ke);if(it===null)throw new Error("Assertion failed: Expected the package to have been registered");let _=QY(it,be,e,p);if(t.validateExternalSoftLinks&&t.project&&_){it.packageDependencies.size>0&&(s=!0);for(let[je,Te]of it.packageDependencies)if(Te!==null){let ct=H.parseLocator(Array.isArray(Te)?`${Te[0]}@${Te[1]}`:`${je}@${Te}`);if(gA(ct)!==gA(be)){let Me=ye.get(je);if(Me){let P=H.parseLocator(Array.isArray(Me)?`${Me[0]}@${Me[1]}`:`${je}@${Me}`);Kwe(P,ct)||r.push({messageName:71,text:`Cannot link ${H.prettyIdent(t.project.configuration,H.parseIdent(be.name))} into ${H.prettyLocator(t.project.configuration,H.parseLocator(`${R.name}@${R.reference}`))} dependency ${H.prettyLocator(t.project.configuration,ct)} conflicts with parent dependency ${H.prettyLocator(t.project.configuration,P)}`})}else{let P=me.get(je);if(P){let w=P.target,D=H.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${je}@${w}`);Kwe(D,ct)||r.push({messageName:71,text:`Cannot link ${H.prettyIdent(t.project.configuration,H.parseIdent(be.name))} into ${H.prettyLocator(t.project.configuration,H.parseLocator(`${R.name}@${R.reference}`))} dependency ${H.prettyLocator(t.project.configuration,ct)} conflicts with dependency ${H.prettyLocator(t.project.configuration,D)} from sibling portal ${H.prettyIdent(t.project.configuration,H.parseIdent(P.portal.name))}`})}else me.set(je,{target:ct.reference,portal:be})}}}}let tt=t.hoistingLimitsByCwd?.get($),Fe=_?$:Y.relative(p,Ae.toPortablePath(it.packageLocation))||wt.dot,Qe=t.hoistingLimitsByCwd?.get(Fe);S(ce,it,be,le,I,ye,Fe,tt==="dependencies"||Qe==="dependencies"||Qe==="workspaces")}}};return S(f.name,c,f,h,c,c.packageDependencies,wt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:s}};function Jwe(e,t,r){let s=r.resolveVirtual&&t.reference&&t.reference.startsWith("virtual:")?r.resolveVirtual(e.packageLocation):e.packageLocation;return Ae.toPortablePath(s||e.packageLocation)}function bht(e,t,r){let s=t.getLocator(e.name.replace(ng,""),e.reference),a=t.getPackageInformation(s);if(a===null)throw new Error("Assertion failed: Expected the package to be registered");return r.pnpifyFs?{linkType:"SOFT",target:Ae.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:Jwe(a,e,t)}}var Dht=(e,t,r)=>{let s=new Map,a=(E,C,S)=>{let{linkType:x,target:I}=bht(E,e,r);return{locator:gA(E),nodePath:C,target:I,linkType:x,aliases:S}},n=E=>{let[C,S]=E.split("/");return S?{scope:C,name:S}:{scope:null,name:C}},c=new Set,f=(E,C,S)=>{if(c.has(E))return;c.add(E);let x=Array.from(E.references).sort().join("#");for(let I of E.dependencies){let R=Array.from(I.references).sort().join("#");if(I.identName===E.identName.replace(ng,"")&&R===x)continue;let N=Array.from(I.references).sort(),U={name:I.identName,reference:N[0]},{name:K,scope:$}=n(I.name),ie=$?[$,K]:[K],fe=Y.join(C,Vwe),le=Y.join(fe,...ie),ge=`${S}/${U.name}`,pe=a(U,S,N.slice(1)),De=!1;if(pe.linkType==="SOFT"&&r.project){let ye=r.project.workspacesByCwd.get(pe.target.slice(0,-1));De=!!(ye&&!ye.manifest.name)}if(!I.name.endsWith(ng)&&!De){let ye=s.get(le);if(ye){if(ye.dirList)throw new Error(`Assertion failed: ${le} cannot merge dir node with leaf node`);{let Ie=H.parseLocator(ye.locator),me=H.parseLocator(pe.locator);if(ye.linkType!==pe.linkType)throw new Error(`Assertion failed: ${le} cannot merge nodes with different link types ${ye.nodePath}/${H.stringifyLocator(Ie)} and ${S}/${H.stringifyLocator(me)}`);if(Ie.identHash!==me.identHash)throw new Error(`Assertion failed: ${le} cannot merge nodes with different idents ${ye.nodePath}/${H.stringifyLocator(Ie)} and ${S}/s${H.stringifyLocator(me)}`);pe.aliases=[...pe.aliases,...ye.aliases,H.parseLocator(ye.locator).reference]}}s.set(le,pe);let d=le.split("/"),ve=d.indexOf(Vwe);for(let Ie=d.length-1;ve>=0&&Ie>ve;Ie--){let me=Ae.toPortablePath(d.slice(0,Ie).join(Y.sep)),ce=d[Ie],X=s.get(me);if(!X)s.set(me,{dirList:new Set([ce])});else if(X.dirList){if(X.dirList.has(ce))break;X.dirList.add(ce)}}}f(I,pe.linkType==="SOFT"?pe.target:le,ge)}},p=a({name:t.name,reference:Array.from(t.references)[0]},"",[]),h=p.target;return s.set(h,p),f(t,h,""),s};Ge();bt();var zwe="node_modules",Pht="$wsroot$",xht=e=>!e.dirList,FY=e=>{for(;e!==wt.root&&e.endsWith(Y.sep);)e=e.slice(0,-1);return e},kht=(e,t)=>FY(t.linkType==="SOFT"?t.target:e),Qht=(e,t)=>{let r=Y.relative(e,t)||wt.dot;return r.startsWith(".")||(r=`./${r}`),r},Tht=(e,t)=>{let r=Y.relative(e,t)||wt.dot;return r===".."?wt.dot:r},Rht=e=>{let t=e.split(Y.sep),r=t.lastIndexOf(zwe);if(r===-1)return null;let s=t[r+1];if(typeof s>"u")return null;let a=t.slice(0,r+1).join(Y.sep);if(!s.startsWith("@"))return{nodeModulesPath:a,packageName:s};let n=t[r+2];return typeof n>"u"?null:{nodeModulesPath:a,packageName:`${s}/${n}`}},RY=(e,t)=>et?1:0,Fht=(e,t)=>{let r=H.parseLocator(t.locator.replace(Pht,"")),s=e.getPackageInformation({name:H.stringifyIdent(r),reference:r.reference});if(s===null)throw new Error(`Assertion failed: Expected ${t.locator} to have been registered`);let a=new Set;for(let[n,c]of s.packageDependencies)c!==null&&a.add(n);return a},Nht=(e,{basePath:t},r)=>{let s=new Map,a=new Map;t=FY(t);for(let[f,p]of e){if(!xht(p))continue;let h=FY(f),E={id:Tht(t,h),packagePath:kht(h,p),dependencyNames:r(p)};s.set(h,E);let C=Rht(h);if(C!==null){let S=a.get(C.nodeModulesPath);typeof S>"u"&&(S=new Map,a.set(C.nodeModulesPath,S)),S.set(C.packageName,h)}}let n=(f,p)=>{let h=new Map,E=f;for(;;){let C=Y.join(E,zwe),S=a.get(C);if(typeof S<"u")for(let[I,R]of Array.from(S).sort(([N],[U])=>RY(N,U))){if(p!==null&&!p.has(I)||h.has(I))continue;let N=s.get(R);if(typeof N>"u")throw new Error(`Assertion failed: Expected ${R} to have been registered`);h.set(I,N.id)}let x=Y.dirname(E);if(x===E)break;E=x}return Object.fromEntries(Array.from(h).sort(([C],[S])=>RY(C,S)))},c={};for(let f of Array.from(s.values()).sort((p,h)=>RY(p.id,h.id)))c[f.id]={url:Qht(t,f.packagePath),dependencies:n(f.packagePath,f.dependencyNames)};return{packages:c}},NY=(e,{basePath:t,pnp:r})=>Nht(e,{basePath:t},s=>r?Fht(r,s):null);Ge();Ge();bt();bt();iA();Sc();var rW={};Vt(rW,{NodePackageMapType:()=>zF,PnpInstaller:()=>Jm,PnpLinker:()=>og,UnplugCommand:()=>Iw,default:()=>Adt,getPackageMapPath:()=>R1e,getPnpPath:()=>ag,jsInstallUtils:()=>yA,pnpUtils:()=>Vb,quotePathIfNeeded:()=>tW});bt();var T1e=Ce("url");Ge();Ge();bt();bt();var Zwe={DEFAULT:{collapsed:!1,next:{"*":"DEFAULT"}},TOP_LEVEL:{collapsed:!1,next:{fallbackExclusionList:"FALLBACK_EXCLUSION_LIST",packageRegistryData:"PACKAGE_REGISTRY_DATA","*":"DEFAULT"}},FALLBACK_EXCLUSION_LIST:{collapsed:!1,next:{"*":"FALLBACK_EXCLUSION_ENTRIES"}},FALLBACK_EXCLUSION_ENTRIES:{collapsed:!0,next:{"*":"FALLBACK_EXCLUSION_DATA"}},FALLBACK_EXCLUSION_DATA:{collapsed:!0,next:{"*":"DEFAULT"}},PACKAGE_REGISTRY_DATA:{collapsed:!1,next:{"*":"PACKAGE_REGISTRY_ENTRIES"}},PACKAGE_REGISTRY_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_STORE_DATA"}},PACKAGE_STORE_DATA:{collapsed:!1,next:{"*":"PACKAGE_STORE_ENTRIES"}},PACKAGE_STORE_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_INFORMATION_DATA"}},PACKAGE_INFORMATION_DATA:{collapsed:!1,next:{packageDependencies:"PACKAGE_DEPENDENCIES","*":"DEFAULT"}},PACKAGE_DEPENDENCIES:{collapsed:!1,next:{"*":"PACKAGE_DEPENDENCY"}},PACKAGE_DEPENDENCY:{collapsed:!0,next:{"*":"DEFAULT"}}};function Oht(e,t,r){let s="";s+="[";for(let a=0,n=e.length;a"u"||(f!==0&&(a+=", "),a+=JSON.stringify(p),a+=": ",a+=WF(p,h,t,r).replace(/^ +/g,""),f+=1)}return a+="}",a}function Uht(e,t,r){let s=Object.keys(e),a=`${r} `,n="";n+=r,n+=`{ +`;let c=0;for(let f=0,p=s.length;f"u"||(c!==0&&(n+=",",n+=` +`),n+=a,n+=JSON.stringify(h),n+=": ",n+=WF(h,E,t,a).replace(/^ +/g,""),c+=1)}return c!==0&&(n+=` +`),n+=r,n+="}",n}function WF(e,t,r,s){let{next:a}=Zwe[r],n=a[e]||a["*"];return Xwe(t,n,s)}function Xwe(e,t,r){let{collapsed:s}=Zwe[t];return Array.isArray(e)?s?Oht(e,t,r):Lht(e,t,r):typeof e=="object"&&e!==null?s?Mht(e,t,r):Uht(e,t,r):JSON.stringify(e)}function $we(e){return Xwe(e,"TOP_LEVEL","")}function Lb(e,t){let r=Array.from(e);Array.isArray(t)||(t=[t]);let s=[];for(let n of t)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function _ht(e){let t=new Map,r=Lb(e.fallbackExclusionList||[],[({name:s,reference:a})=>s,({name:s,reference:a})=>a]);for(let{name:s,reference:a}of r){let n=t.get(s);typeof n>"u"&&t.set(s,n=new Set),n.add(a)}return Array.from(t).map(([s,a])=>[s,Array.from(a)])}function Hht(e){return Lb(e.fallbackPool||[],([t])=>t)}function jht(e){let t=[],r=e.dependencyTreeRoots.find(s=>e.packageRegistry.get(s.name)?.get(s.reference)?.packageLocation==="./");for(let[s,a]of Lb(e.packageRegistry,([n])=>n===null?"0":`1${n}`)){if(s===null)continue;let n=[];t.push([s,n]);for(let[c,{packageLocation:f,packageDependencies:p,packagePeers:h,linkType:E,discardFromLookup:C}]of Lb(a,([S])=>S===null?"0":`1${S}`)){if(c===null)continue;let S=[];s!==null&&c!==null&&!p.has(s)&&S.push([s,c]);for(let[U,K]of p)S.push([U,K]);let x=Lb(S,([U])=>U),I=h&&h.size>0?Array.from(h):void 0,N={packageLocation:f,packageDependencies:x,packagePeers:I,linkType:E,discardFromLookup:C||void 0};n.push([c,N]),r&&s===r.name&&c===r.reference&&t.unshift([null,[[null,N]]])}}return t}function Mb(e){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:e.dependencyTreeRoots,enableTopLevelFallback:e.enableTopLevelFallback||!1,ignorePatternData:e.ignorePattern||null,pnpZipBackend:e.pnpZipBackend,fallbackExclusionList:_ht(e),fallbackPool:Hht(e),packageRegistryData:jht(e)}}var r1e=et(t1e());function n1e(e,t){return[e?`${e} +`:"",`/* eslint-disable */ +`,`// @ts-nocheck +`,`"use strict"; +`,` +`,t,` +`,(0,r1e.default)()].join("")}function Ght(e){return JSON.stringify(e,null,2)}function qht(e){return`'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ +`)}'`}function Yht(e){return[`const RAW_RUNTIME_STATE = +`,`${qht($we(e))}; + +`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { +`,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); +`,`} +`].join("")}function Wht(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { +`,` const fs = require('fs'); +`,` const path = require('path'); +`,` const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(yr.pnpData)}); +`,` return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname}); +`,`} +`].join("")}function i1e(e){let t=Mb(e),r=Yht(t);return n1e(e.shebang,r)}function s1e(e){let t=Mb(e),r=Wht(),s=n1e(e.shebang,r);return{dataFile:Ght(t),loaderFile:s}}bt();function LY(e,{basePath:t}){let r=Ae.toPortablePath(t),s=Y.resolve(r),a=e.ignorePatternData!==null?new RegExp(e.ignorePatternData):null,n=new Map,c=new Map(e.packageRegistryData.map(([C,S])=>[C,new Map(S.map(([x,I])=>{if(C===null!=(x===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let R=I.discardFromLookup??!1,N={name:C,reference:x},U=n.get(I.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&R,R||(U.locator=N)):n.set(I.packageLocation,{locator:N,discardFromLookup:R});let K=null;return[x,{packageDependencies:new Map(I.packageDependencies),packagePeers:new Set(I.packagePeers),linkType:I.linkType,discardFromLookup:R,get packageLocation(){return K||(K=Y.join(s,I.packageLocation))}}]}))])),f=new Map(e.fallbackExclusionList.map(([C,S])=>[C,new Set(S)])),p=new Map(e.fallbackPool),h=e.dependencyTreeRoots,E=e.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:f,pnpZipBackend:e.pnpZipBackend,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:c}}bt();bt();var oh=Ce("module"),Km=Ce("url"),KY=Ce("util");var aa=Ce("url");var c1e=et(Ce("assert"));var MY=Array.isArray,Ub=JSON.stringify,_b=Object.getOwnPropertyNames,Vm=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),UY=(e,t)=>RegExp.prototype.exec.call(e,t),_Y=(e,...t)=>RegExp.prototype[Symbol.replace].apply(e,t),ig=(e,...t)=>String.prototype.endsWith.apply(e,t),HY=(e,...t)=>String.prototype.includes.apply(e,t),jY=(e,...t)=>String.prototype.lastIndexOf.apply(e,t),Hb=(e,...t)=>String.prototype.indexOf.apply(e,t),o1e=(e,...t)=>String.prototype.replace.apply(e,t),sg=(e,...t)=>String.prototype.slice.apply(e,t),mA=(e,...t)=>String.prototype.startsWith.apply(e,t),a1e=Map,l1e=JSON.parse;function jb(e,t,r){return class extends r{constructor(...s){super(t(...s)),this.code=e,this.name=`${r.name} [${e}]`}}}var u1e=jb("ERR_PACKAGE_IMPORT_NOT_DEFINED",(e,t,r)=>`Package import specifier "${e}" is not defined${t?` in package ${t}package.json`:""} imported from ${r}`,TypeError),GY=jb("ERR_INVALID_MODULE_SPECIFIER",(e,t,r=void 0)=>`Invalid module "${e}" ${t}${r?` imported from ${r}`:""}`,TypeError),f1e=jb("ERR_INVALID_PACKAGE_TARGET",(e,t,r,s=!1,a=void 0)=>{let n=typeof r=="string"&&!s&&r.length&&!mA(r,"./");return t==="."?((0,c1e.default)(s===!1),`Invalid "exports" main target ${Ub(r)} defined in the package config ${e}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`):`Invalid "${s?"imports":"exports"}" target ${Ub(r)} defined for '${t}' in the package config ${e}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`},Error),Gb=jb("ERR_INVALID_PACKAGE_CONFIG",(e,t,r)=>`Invalid package config ${e}${t?` while importing ${t}`:""}${r?`. ${r}`:""}`,Error),A1e=jb("ERR_PACKAGE_PATH_NOT_EXPORTED",(e,t,r=void 0)=>t==="."?`No "exports" main defined in ${e}package.json${r?` imported from ${r}`:""}`:`Package subpath '${t}' is not defined by "exports" in ${e}package.json${r?` imported from ${r}`:""}`,Error);var KF=Ce("url");function p1e(e,t){let r=Object.create(null);for(let s=0;st):e+t}qb(r,e,s,c,a)}UY(d1e,sg(e,2))!==null&&qb(r,e,s,c,a);let p=new URL(e,s),h=p.pathname,E=new URL(".",s).pathname;if(mA(h,E)||qb(r,e,s,c,a),t==="")return p;if(UY(d1e,t)!==null){let C=n?o1e(r,"*",()=>t):r+t;Jht(C,s,c,a)}return n?new URL(_Y(g1e,p.href,()=>t)):new URL(t,p)}function Zht(e){let t=+e;return`${t}`!==e?!1:t>=0&&t<4294967295}function Ew(e,t,r,s,a,n,c,f){if(typeof t=="string")return zht(t,r,s,e,a,n,c,f);if(MY(t)){if(t.length===0)return null;let p;for(let h=0;hn?-1:n>a||r===-1?1:s===-1||e.length>t.length?-1:t.length>e.length?1:0}function Xht(e,t,r){if(typeof e=="string"||MY(e))return!0;if(typeof e!="object"||e===null)return!1;let s=_b(e),a=!1,n=0;for(let c=0;c=h.length&&ig(t,C)&&y1e(n,h)===1&&jY(h,"*")===E&&(n=h,c=sg(t,E,t.length-C.length))}}if(n){let p=r[n],h=Ew(e,p,c,n,s,!0,!1,a);return h==null&&qY(t,e,s),h}qY(t,e,s)}function I1e({name:e,base:t,conditions:r,readFileSyncFn:s}){if(e==="#"||mA(e,"#/")||ig(e,"/")){let c="is not a valid internal imports specifier name";throw new GY(e,c,(0,aa.fileURLToPath)(t))}let a,n=h1e(t,s);if(n.exists){a=(0,aa.pathToFileURL)(n.pjsonPath);let c=n.imports;if(c)if(Vm(c,e)&&!HY(e,"*")){let f=Ew(a,c[e],"",e,t,!1,!0,r);if(f!=null)return f}else{let f="",p,h=_b(c);for(let E=0;E=C.length&&ig(e,x)&&y1e(f,C)===1&&jY(C,"*")===S&&(f=C,p=sg(e,S,e.length-x.length))}}if(f){let E=c[f],C=Ew(a,E,p,f,t,!0,!0,r);if(C!=null)return C}}}Kht(e,a,t)}bt();var edt=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function Es(e,t,r={},s){s??=edt.has(e)?"MODULE_NOT_FOUND":e;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(t),{code:{...a,value:s},pnpCode:{...a,value:e},data:{...a,value:r}})}function ff(e){return Ae.normalize(Ae.fromPortablePath(e))}var v1e=et(w1e());function S1e(e){return tdt(),WY[e]}var WY;function tdt(){WY||(WY={"--conditions":[],...B1e(rdt()),...B1e(process.execArgv)})}function B1e(e){return(0,v1e.default)({"--conditions":[String],"-C":"--conditions"},{argv:e,permissive:!0})}function rdt(){let e=[],t=ndt(process.env.NODE_OPTIONS||"",e);return e.length,t}function ndt(e,t){let r=[],s=!1,a=!0;for(let n=0;nparseInt(e,10)),b1e=ro>19||ro===19&&Sl>=2||ro===18&&Sl>=13,Qzt=ro===20&&Sl<6||ro===19&&Sl>=3,Tzt=ro>19||ro===19&&Sl>=6,Rzt=ro>=21||ro===20&&Sl>=10||ro===18&&Sl>=19,Fzt=ro>=21||ro===20&&Sl>=10||ro===18&&Sl>=20,Nzt=ro>=22,Ozt=ro===26&&Sl<1||ro===25&&Sl>=7||ro===24&&Sl===15||ro===22&&(Sl>22||Sl===22&&idt>=3);function VY(e){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send){let t=e.map(r=>Ae.fromPortablePath(Eo.resolveVirtual(r)));if(b1e)process.send({"watch:require":t});else for(let r of t)process.send({"watch:require":r})}}function JY(e,t){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,s=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,n=/^(\/|\.{1,2}(\/|$))/,c=/\/$/,f=/^\.{0,2}\//,p={name:null,reference:null},h=[],E=new Set;if(e.enableTopLevelFallback===!0&&h.push(p),t.compatibilityMode!==!1)for(let Fe of["react-scripts","gatsby"]){let Qe=e.packageRegistry.get(Fe);if(Qe)for(let Se of Qe.keys()){if(Se===null)throw new Error("Assertion failed: This reference shouldn't be null");h.push({name:Fe,reference:Se})}}let{ignorePattern:C,packageRegistry:S,packageLocatorsByLocations:x}=e;function I(Fe,Qe){return{fn:Fe,args:Qe,error:null,result:null}}function R(Fe){let Qe=process.stderr?.hasColors?.()??process.stdout.isTTY,Se=(ct,Me)=>`\x1B[${ct}m${Me}\x1B[0m`,je=Fe.error;console.error(je?Se("31;1",`\u2716 ${Fe.error?.message.replace(/\n.*/s,"")}`):Se("33;1","\u203C Resolution")),Fe.args.length>0&&console.error();for(let ct of Fe.args)console.error(` ${Se("37;1","In \u2190")} ${(0,KY.inspect)(ct,{colors:Qe,compact:!0})}`);Fe.result&&(console.error(),console.error(` ${Se("37;1","Out \u2192")} ${(0,KY.inspect)(Fe.result,{colors:Qe,compact:!0})}`));let Te=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(Te.length>0){console.error();for(let ct of Te)console.error(` ${Se("38;5;244",ct)}`)}console.error()}function N(Fe,Qe){if(t.allowDebug===!1)return Qe;if(Number.isFinite(s)){if(s>=2)return(...Se)=>{let je=I(Fe,Se);try{return je.result=Qe(...Se)}catch(Te){throw je.error=Te}finally{R(je)}};if(s>=1)return(...Se)=>{try{return Qe(...Se)}catch(je){let Te=I(Fe,Se);throw Te.error=je,R(Te),je}}}return Qe}function U(Fe){let Qe=d(Fe);if(!Qe)throw Es("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return Qe}function K(Fe){if(Fe.name===null)return!0;for(let Qe of e.dependencyTreeRoots)if(Qe.name===Fe.name&&Qe.reference===Fe.reference)return!0;return!1}let $=new Set(["node","require",...S1e("--conditions")]);function ie(Fe,Qe=$,Se){let je=me(Y.join(Fe,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(je===null)throw Es("INTERNAL",`The locator that owns the "${Fe}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:Te}=U(je),ct=Y.join(Te,yr.manifest);if(!t.fakeFs.existsSync(ct))return null;let Me=JSON.parse(t.fakeFs.readFileSync(ct,"utf8"));if(Me.exports==null)return null;let P=Y.contains(Te,Fe);if(P===null)throw Es("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");P!=="."&&!f.test(P)&&(P=`./${P}`);try{let w=E1e({packageJSONUrl:(0,Km.pathToFileURL)(Ae.fromPortablePath(ct)),packageSubpath:P,exports:Me.exports,base:Se?(0,Km.pathToFileURL)(Ae.fromPortablePath(Se)):null,conditions:Qe});return Ae.toPortablePath((0,Km.fileURLToPath)(w))}catch(w){throw Es("EXPORTS_RESOLUTION_FAILED",w.message,{unqualifiedPath:ff(Fe),locator:je,pkgJson:Me,subpath:ff(P),conditions:Qe},w.code)}}function fe(Fe,Qe,{extensions:Se}){let je;try{Qe.push(Fe),je=t.fakeFs.statSync(Fe)}catch{}if(je&&!je.isDirectory())return t.fakeFs.realpathSync(Fe);if(je&&je.isDirectory()){let Te;try{Te=JSON.parse(t.fakeFs.readFileSync(Y.join(Fe,yr.manifest),"utf8"))}catch{}let ct;if(Te&&Te.main&&(ct=Y.resolve(Fe,Te.main)),ct&&ct!==Fe){let Me=fe(ct,Qe,{extensions:Se});if(Me!==null)return Me}}for(let Te=0,ct=Se.length;Te{let P=JSON.stringify(Me.name);if(je.has(P))return;je.add(P);let w=ve(Me);for(let D of w)if(U(D).packagePeers.has(Fe))Te(D);else{let F=Se.get(D.name);typeof F>"u"&&Se.set(D.name,F=new Set),F.add(D.reference)}};Te(Qe);let ct=[];for(let Me of[...Se.keys()].sort())for(let P of[...Se.get(Me)].sort())ct.push({name:Me,reference:P});return ct}function me(Fe,{resolveIgnored:Qe=!1,includeDiscardFromLookup:Se=!1}={}){if(pe(Fe)&&!Qe)return null;let je=Y.relative(e.basePath,Fe);je.match(n)||(je=`./${je}`),je.endsWith("/")||(je=`${je}/`);do{let Te=x.get(je);if(typeof Te>"u"||Te.discardFromLookup&&!Se){je=je.substring(0,je.lastIndexOf("/",je.length-2)+1);continue}return Te.locator}while(je!=="");return null}function ce(Fe){try{return t.fakeFs.readFileSync(Ae.toPortablePath(Fe),"utf8")}catch(Qe){if(Qe.code==="ENOENT")return;throw Qe}}function X(Fe,Qe,{considerBuiltins:Se=!0}={}){if(Fe.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(Fe==="pnpapi")return Ae.toPortablePath(t.pnpapiResolution);if(Se&&(0,oh.isBuiltin)(Fe))return null;let je=ff(Fe),Te=Qe&&ff(Qe);if(Qe&&pe(Qe)&&(!Y.isAbsolute(Fe)||me(Fe)===null)){let P=ge(Fe,Qe);if(P===!1)throw Es("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) + +Require request: "${je}" +Required by: ${Te} +`,{request:je,issuer:Te});return Ae.toPortablePath(P)}let ct,Me=Fe.match(a);if(Me){if(!Qe)throw Es("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:je,issuer:Te});let[,P,w]=Me,D=me(Qe);if(!D){let Ne=ge(Fe,Qe);if(Ne===!1)throw Es("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). + +Require path: "${je}" +Required by: ${Te} +`,{request:je,issuer:Te});return Ae.toPortablePath(Ne)}let F=U(D).packageDependencies.get(P),z=null;if(F==null&&D.name!==null){let Ne=e.fallbackExclusionList.get(D.name);if(!Ne||!Ne.has(D.reference)){for(let Ct=0,Yt=h.length;CtK(ut))?Z=Es("MISSING_PEER_DEPENDENCY",`${D.name} tried to access ${P} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${D.name}@${D.reference} (via ${Te}) +${Ne.map(ut=>`Ancestor breaking the chain: ${ut.name}@${ut.reference} +`).join("")} +`,{request:je,issuer:Te,issuerLocator:Object.assign({},D),dependencyName:P,brokenAncestors:Ne}):Z=Es("MISSING_PEER_DEPENDENCY",`${D.name} tried to access ${P} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${D.name}@${D.reference} (via ${Te}) + +${Ne.map(ut=>`Ancestor breaking the chain: ${ut.name}@${ut.reference} +`).join("")} +`,{request:je,issuer:Te,issuerLocator:Object.assign({},D),dependencyName:P,brokenAncestors:Ne})}else F===void 0&&(!Se&&(0,oh.isBuiltin)(Fe)?K(D)?Z=Es("UNDECLARED_DEPENDENCY",`Your application tried to access ${P}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${P} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${Te} +`,{request:je,issuer:Te,dependencyName:P}):Z=Es("UNDECLARED_DEPENDENCY",`${D.name} tried to access ${P}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${P} isn't otherwise declared in ${D.name}'s dependencies, this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${Te} +`,{request:je,issuer:Te,issuerLocator:Object.assign({},D),dependencyName:P}):K(D)?Z=Es("UNDECLARED_DEPENDENCY",`Your application tried to access ${P}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${Te} +`,{request:je,issuer:Te,dependencyName:P}):Z=Es("UNDECLARED_DEPENDENCY",`${D.name} tried to access ${P}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${D.name}@${D.reference} (via ${Te}) +`,{request:je,issuer:Te,issuerLocator:Object.assign({},D),dependencyName:P}));if(F==null){if(z===null||Z===null)throw Z||new Error("Assertion failed: Expected an error to have been set");F=z;let Ne=Z.message.replace(/\n.*/g,"");Z.message=Ne,!E.has(Ne)&&s!==0&&(E.add(Ne),process.emitWarning(Z))}let ee=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:P,reference:F},se=U(ee);if(!se.packageLocation)throw Es("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. + +Required package: ${ee.name}@${ee.reference}${ee.name!==je?` (via "${je}")`:""} +Required by: ${D.name}@${D.reference} (via ${Te}) +`,{request:je,issuer:Te,dependencyLocator:Object.assign({},ee)});let xe=se.packageLocation;w?ct=Y.join(xe,w):ct=xe}else if(Y.isAbsolute(Fe))ct=Y.normalize(Fe);else{if(!Qe)throw Es("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:je,issuer:Te});let P=Y.resolve(Qe);Qe.match(c)?ct=Y.normalize(Y.join(P,Fe)):ct=Y.normalize(Y.join(Y.dirname(P),Fe))}return Y.normalize(ct)}function be(Fe,Qe,Se=$,je){if(n.test(Fe))return Qe;let Te=ie(Qe,Se,je);return Te?Y.normalize(Te):Qe}function ke(Fe,{extensions:Qe=Object.keys(oh.Module._extensions)}={}){let Se=[],je=fe(Fe,Se,{extensions:Qe});if(je)return VY([je]),Y.normalize(je);{VY(Se);let Te=ff(Fe),ct=me(Fe);if(ct){let{packageLocation:Me}=U(ct),P=!0;try{t.fakeFs.accessSync(Me)}catch(w){if(w?.code==="ENOENT")P=!1;else{let D=(w?.message??w??"empty exception thrown").replace(/^[A-Z]/,y=>y.toLowerCase());throw Es("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${D}). + +Missing package: ${ct.name}@${ct.reference} +Expected package location: ${ff(Me)} +`,{unqualifiedPath:Te,extensions:Qe})}}if(!P){let w=Me.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw Es("QUALIFIED_PATH_RESOLUTION_FAILED",`${w} + +Missing package: ${ct.name}@${ct.reference} +Expected package location: ${ff(Me)} +`,{unqualifiedPath:Te,extensions:Qe})}}throw Es("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed. + +Source path: ${Te} +${Se.map(Me=>`Not found: ${ff(Me)} +`).join("")}`,{unqualifiedPath:Te,extensions:Qe})}}function it(Fe,Qe,Se){if(!Qe)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let je=I1e({name:Fe,base:(0,Km.pathToFileURL)(Ae.fromPortablePath(Qe)),conditions:Se.conditions??$,readFileSyncFn:ce});if(je instanceof URL)return ke(Ae.toPortablePath((0,Km.fileURLToPath)(je)),{extensions:Se.extensions});if(je.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return _(je,Qe,Se)}function _(Fe,Qe,Se={}){try{if(Fe.startsWith("#"))return it(Fe,Qe,Se);let{considerBuiltins:je,extensions:Te,conditions:ct}=Se,Me=X(Fe,Qe,{considerBuiltins:je});if(Fe==="pnpapi")return Me;if(Me===null)return null;let P=()=>Qe!==null?pe(Qe):!1,w=(!je||!(0,oh.isBuiltin)(Fe))&&!P()?be(Fe,Me,ct,Qe):Me;return ke(w,{extensions:Te})}catch(je){throw Object.hasOwn(je,"pnpCode")&&Object.assign(je.data,{request:ff(Fe),issuer:Qe&&ff(Qe)}),je}}function tt(Fe){let Qe=Y.normalize(Fe),Se=Eo.resolveVirtual(Qe);return Se!==Qe?Se:null}return{VERSIONS:De,topLevel:ye,getLocator:(Fe,Qe)=>Array.isArray(Qe)?{name:Qe[0],reference:Qe[1]}:{name:Fe,reference:Qe},getDependencyTreeRoots:()=>[...e.dependencyTreeRoots],getAllLocators(){let Fe=[];for(let[Qe,Se]of S)for(let je of Se.keys())Qe!==null&&je!==null&&Fe.push({name:Qe,reference:je});return Fe},getPackageInformation:Fe=>{let Qe=d(Fe);if(Qe===null)return null;let Se=Ae.fromPortablePath(Qe.packageLocation);return{...Qe,packageLocation:Se}},findPackageLocator:Fe=>me(Ae.toPortablePath(Fe)),resolveToUnqualified:N("resolveToUnqualified",(Fe,Qe,Se)=>{let je=Qe!==null?Ae.toPortablePath(Qe):null,Te=X(Ae.toPortablePath(Fe),je,Se);return Te===null?null:Ae.fromPortablePath(Te)}),resolveUnqualified:N("resolveUnqualified",(Fe,Qe)=>Ae.fromPortablePath(ke(Ae.toPortablePath(Fe),Qe))),resolveRequest:N("resolveRequest",(Fe,Qe,Se)=>{let je=Qe!==null?Ae.toPortablePath(Qe):null,Te=_(Ae.toPortablePath(Fe),je,Se);return Te===null?null:Ae.fromPortablePath(Te)}),resolveVirtual:N("resolveVirtual",Fe=>{let Qe=tt(Ae.toPortablePath(Fe));return Qe!==null?Ae.fromPortablePath(Qe):null})}}bt();var D1e=(e,t,r)=>{let s=Mb(e),a=LY(s,{basePath:t}),n=Ae.join(t,yr.pnpCjs);return JY(a,{fakeFs:r,pnpapiResolution:n})};var ZY=et(x1e());jt();var yA={};Vt(yA,{checkManifestCompatibility:()=>k1e,extractBuildRequest:()=>JF,getExtractHint:()=>XY,hasBindingGyp:()=>$Y});Ge();bt();function k1e(e){return H.isPackageCompatible(e,Ui.getArchitectureSet())}function JF(e,t,r,{configuration:s}){let a=[];for(let n of["preinstall","install","postinstall"])t.manifest.scripts.has(n)&&a.push({type:0,script:n});return!t.manifest.scripts.has("install")&&t.misc.hasBindingGyp&&a.push({type:1,script:"node-gyp rebuild"}),a.length===0?null:e.linkType!=="HARD"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${H.prettyLocator(s,e)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${H.prettyLocator(s,e)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!s.get("enableScripts")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${H.prettyLocator(s,e)} lists build scripts, but all build scripts have been disabled.`)}:k1e(e)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${H.prettyLocator(s,e)} The ${Ui.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var odt=new Set([".exe",".bin",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function XY(e){return e.packageFs.getExtractHint({relevantExtensions:odt})}function $Y(e){let t=Y.join(e.prefixPath,"binding.gyp");return e.packageFs.existsSync(t)}var Vb={};Vt(Vb,{getUnpluggedPath:()=>Wb});Ge();bt();function Wb(e,{configuration:t}){return Y.resolve(t.get("pnpUnpluggedFolder"),H.slugifyLocator(e))}var adt=new Set([H.makeIdent(null,"open").identHash,H.makeIdent(null,"opn").identHash]),og=class{constructor(){this.mode="strict";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:"PnpLinker",version:2})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let s=ag(r.project).cjs;if(!ae.existsSync(s))throw new ot(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=qe.getFactoryWithDefault(this.pnpCache,s,()=>qe.dynamicRequire(s,{cachingStrategy:qe.CachingStrategy.FsTime})),n={name:H.stringifyIdent(t),reference:t.reference},c=a.getPackageInformation(n);if(!c)throw new ot(`Couldn't find ${H.prettyLocator(r.project.configuration,t)} in the currently installed PnP map - running an install might help`);return Ae.toPortablePath(c.packageLocation)}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=ag(r.project).cjs;if(!ae.existsSync(s))return null;let n=qe.getFactoryWithDefault(this.pnpCache,s,()=>qe.dynamicRequire(s,{cachingStrategy:qe.CachingStrategy.FsTime})).findPackageLocator(Ae.fromPortablePath(t));return n?H.makeLocator(H.parseIdent(n.name),n.reference):null}makeInstaller(t){return new Jm(t)}isEnabled(t){return!(t.project.configuration.get("nodeLinker")!=="pnp"||t.project.configuration.get("pnpMode")!==this.mode)}},Jm=class{constructor(t){this.opts=t;this.mode="strict";this.asyncActions=new qe.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=t}attachCustomData(t){this.customData=t}async installPackage(t,r,s){let a=H.stringifyIdent(t),n=t.reference,c=!!this.opts.project.tryWorkspaceByLocator(t),f=H.isVirtualLocator(t),p=t.peerDependencies.size>0&&!f,h=!p&&!c,E=!p&&t.linkType!=="SOFT",C,S;if(h||E){let $=f?H.devirtualizeLocator(t):t;C=this.customData.store.get($.locatorHash),typeof C>"u"&&(C=await ldt(r),t.linkType==="HARD"&&this.customData.store.set($.locatorHash,C)),C.manifest.type==="module"&&(this.isESMLoaderRequired=!0),S=this.opts.project.getDependencyMeta($,t.version)}let x=h?JF(t,C,S,{configuration:this.opts.project.configuration}):null,I=E?await this.unplugPackageIfNeeded(t,C,r,S,s):r.packageFs;if(Y.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let R=Y.resolve(I.getRealPath(),r.prefixPath),N=eW(this.opts.project.cwd,R),U=new Map,K=new Set;if(f){for(let $ of t.peerDependencies.values())U.set(H.stringifyIdent($),null),K.add(H.stringifyIdent($));if(!c){let $=H.devirtualizeLocator(t);this.virtualTemplates.set($.locatorHash,{location:eW(this.opts.project.cwd,Eo.resolveVirtual(R)),locator:$})}}return qe.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:N,packageDependencies:U,packagePeers:K,linkType:t.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:R,buildRequest:x}}async attachInternalDependencies(t,r){let s=this.getPackageInformation(t);for(let[a,n]of r){let c=H.areIdentsEqual(a,n)?n.reference:[H.stringifyIdent(n),n.reference];s.packageDependencies.set(H.stringifyIdent(a),c)}}async attachExternalDependents(t,r){for(let s of r)this.getDiskInformation(s).packageDependencies.set(H.stringifyIdent(t),t.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let t=ag(this.opts.project);if(this.isEsmEnabled()||await ae.removePromise(t.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await ae.removePromise(t.cjs),await ae.removePromise(t.data),await ae.removePromise(t.esmLoader),await ae.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:C,location:S}of this.virtualTemplates.values())qe.getMapWithDefault(this.packageRegistry,H.stringifyIdent(C)).set(C.reference,{packageLocation:S,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});let r=this.opts.project.configuration.get("pnpFallbackMode"),s=this.opts.project.workspaces.map(({anchoredLocator:C})=>({name:H.stringifyIdent(C),reference:C.reference})),a=r!=="none",n=[],c=new Map,f=qe.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),p=this.packageRegistry,h=this.opts.project.configuration.get("pnpShebang"),E=this.opts.project.configuration.get("pnpZipBackend");if(r==="dependencies-only")for(let C of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(C)&&n.push({name:H.stringifyIdent(C),reference:C.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:s,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:c,ignorePattern:f,pnpZipBackend:E,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(t){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let t of this.opts.project.workspaces)if(t.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(t){let r=ag(this.opts.project),s=await this.locateNodeModules(t.ignorePattern);if(s.length>0){this.opts.report.reportWarning(31,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let n of s)await ae.removePromise(n)}if(await this.transformPnpSettings(t),this.opts.project.configuration.get("pnpEnableInlining")){let n=i1e(t);await ae.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await ae.removePromise(r.data)}else{let{dataFile:n,loaderFile:c}=s1e(t);await ae.changeFilePromise(r.cjs,c,{automaticNewlines:!0,mode:493}),await ae.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(92,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await ae.changeFilePromise(r.esmLoader,(0,ZY.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await ae.removePromise(a);else for(let n of await ae.readdirPromise(a)){let c=Y.resolve(a,n);this.unpluggedPaths.has(c)||await ae.removePromise(c)}}async locateNodeModules(t){let r=[],s=t?new RegExp(t):null;for(let a of this.opts.project.workspaces){let n=Y.join(a.cwd,"node_modules");if(s&&s.test(Y.relative(this.opts.project.cwd,a.cwd))||!ae.existsSync(n))continue;let c=await ae.readdirPromise(n,{withFileTypes:!0}),f=c.filter(p=>!p.isDirectory()||p.name===".bin"||!p.name.startsWith("."));if(f.length===c.length)r.push(n);else for(let p of f)r.push(Y.join(n,p.name))}return r}async unplugPackageIfNeeded(t,r,s,a,n){return this.shouldBeUnplugged(t,r,a)?this.unplugPackage(t,s,n):s.packageFs}shouldBeUnplugged(t,r,s){return typeof s.unplugged<"u"?s.unplugged:adt.has(t.identHash)||t.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(JF(t,r,s,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(t,r,s){let a=Wb(t,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(t.locatorHash)?new Gf(a,{baseFs:r.packageFs,pathUtils:Y}):(this.unpluggedPaths.add(a),s.holdFetchResult(this.asyncActions.set(t.locatorHash,async()=>{let n=Y.join(a,r.prefixPath,".ready");await ae.existsPromise(n)||(this.opts.project.storedBuildState.delete(t.locatorHash),await ae.mkdirPromise(a,{recursive:!0}),await ae.copyPromise(a,wt.dot,{baseFs:r.packageFs,overwrite:!1}),await ae.writeFilePromise(n,""))})),new Pn(a))}getPackageInformation(t){let r=H.stringifyIdent(t),s=t.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${H.prettyIdent(this.opts.project.configuration,t)})`);let n=a.get(s);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${H.prettyLocator(this.opts.project.configuration,t)})`);return n}getDiskInformation(t){let r=qe.getMapWithDefault(this.packageRegistry,"@@disk"),s=eW(this.opts.project.cwd,t);return qe.getFactoryWithDefault(r,s,()=>({packageLocation:s,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function eW(e,t){let r=Y.relative(e,t);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function ldt(e){let t=await _t.tryFind(e.prefixPath,{baseFs:e.packageFs})??new _t,r=new Set(["preinstall","install","postinstall"]);for(let s of t.scripts.keys())r.has(s)||t.scripts.delete(s);return{manifest:{scripts:t.scripts,preferUnplugged:t.preferUnplugged,type:t.type},misc:{extractHint:XY(e),hasBindingGyp:$Y(e)}}}Ge();Ge();jt();var Q1e=et(Zo());var Iw=class extends ft{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=he.Rest()}static{this.paths=[["unplug"]]}static{this.usage=st.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);if(r.get("nodeLinker")!=="pnp")throw new ot("This command can only be used if the `nodeLinker` option is set to `pnp`");await s.restoreInstallState();let c=new Set(this.patterns),f=this.patterns.map(x=>{let I=H.parseDescriptor(x),R=I.range!=="unknown"?I:H.makeDescriptor(I,"*");if(!kr.validRange(R.range))throw new ot(`The range of the descriptor patterns must be a valid semver range (${H.prettyDescriptor(r,R)})`);return N=>{let U=H.stringifyIdent(N);return!Q1e.default.isMatch(U,H.stringifyIdent(R))||N.version&&!kr.satisfiesWithPrereleases(N.version,R.range)?!1:(c.delete(x),!0)}}),p=()=>{let x=[];for(let I of s.storedPackages.values())!s.tryWorkspaceByLocator(I)&&!H.isVirtualLocator(I)&&f.some(R=>R(I))&&x.push(I);return x},h=x=>{let I=new Set,R=[],N=(U,K)=>{if(I.has(U.locatorHash))return;let $=!!s.tryWorkspaceByLocator(U);if(!(K>0&&!this.recursive&&$)&&(I.add(U.locatorHash),!s.tryWorkspaceByLocator(U)&&f.some(ie=>ie(U))&&R.push(U),!(K>0&&!this.recursive)))for(let ie of U.dependencies.values()){let fe=s.storedResolutions.get(ie.descriptorHash);if(!fe)throw new Error("Assertion failed: The resolution should have been registered");let le=s.storedPackages.get(fe);if(!le)throw new Error("Assertion failed: The package should have been registered");N(le,K+1)}};for(let U of x)N(U.anchoredPackage,0);return R},E,C;if(this.all&&this.recursive?(E=p(),C="the project"):this.all?(E=h(s.workspaces),C="any workspace"):(E=h([a]),C="this workspace"),c.size>1)throw new ot(`Patterns ${ue.prettyList(r,c,ue.Type.CODE)} don't match any packages referenced by ${C}`);if(c.size>0)throw new ot(`Pattern ${ue.prettyList(r,c,ue.Type.CODE)} doesn't match any packages referenced by ${C}`);E=qe.sortMap(E,x=>H.stringifyLocator(x));let S=await Ft.start({configuration:r,stdout:this.context.stdout,json:this.json},async x=>{for(let I of E){let R=I.version??"unknown",N=s.topLevelWorkspace.manifest.ensureDependencyMeta(H.makeDescriptor(I,R));N.unplugged=!0,x.reportInfo(0,`Will unpack ${H.prettyLocator(r,I)} to ${ue.pretty(r,Wb(I,{configuration:r}),ue.Type.PATH)}`),x.reportJson({locator:H.stringifyLocator(I),version:R})}await s.topLevelWorkspace.persistManifest(),this.json||x.reportSeparator()});return S.hasErrors()?S.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};var zF=(r=>(r.STANDARD="standard",r.LOOSE="loose",r))(zF||{}),ag=e=>({cjs:Y.join(e.cwd,yr.pnpCjs),data:Y.join(e.cwd,yr.pnpData),esmLoader:Y.join(e.cwd,yr.pnpEsmLoader)}),R1e=e=>Y.join(e.cwd,yr.nodeModules,".package-map.json"),tW=e=>/\s/.test(e)?JSON.stringify(e):e;async function cdt(e,t,r){let s=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/,n=/\s*--experimental-package-map(?:=|\s+)(?:"[^"]*"|'[^']*'|\S+)\s*/g,c=(t.NODE_OPTIONS??"").replace(s," ").replace(a," ").replace(n," ").trim(),f=e.configuration.get("nodeLinker"),p=[],h=R1e(e);e.configuration.get("nodeExperimentalPackageMap")&&f!=="pnp"&&ae.existsSync(h)&&p.push(`--experimental-package-map=${tW(Ae.fromPortablePath(h))}`);let E=()=>{let x=[...p,c].filter(Boolean).join(" ");t.NODE_OPTIONS=x||void 0};if(f!=="pnp"){E();return}let C=ag(e),S=`--require ${tW(Ae.fromPortablePath(C.cjs))}`;ae.existsSync(C.esmLoader)&&(S=`${S} --experimental-loader ${(0,T1e.pathToFileURL)(Ae.fromPortablePath(C.esmLoader)).href}`),ae.existsSync(C.cjs)&&(p.unshift(S),E())}async function udt(e,t){let r=ag(e);t(r.cjs),t(r.data),t(r.esmLoader),t(e.configuration.get("pnpUnpluggedFolder"))}var fdt={hooks:{populateYarnPaths:udt,setupScriptEnvironment:cdt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "pnpm", or "node-modules"',type:"STRING",default:"pnp"},nodeExperimentalPackageMap:{description:"If true, Yarn will inject the experimental package map into Node.js processes when using the node-modules or pnpm linkers.",type:"BOOLEAN",default:!1},nodePackageMapType:{description:"If 'standard', package maps will reflect the dependency graph. If 'loose', they will reflect the hoisted node_modules layout.",type:"STRING",values:["standard","loose"],default:"standard"},minizip:{description:"Whether Yarn should use minizip to extract archives",type:"BOOLEAN",default:!1},winLinkType:{description:"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.",type:"STRING",values:["junctions","symlinks"],default:"junctions"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:"STRING",default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:"STRING",default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:"STRING",default:[],isArray:!0},pnpZipBackend:{description:"Whether to use the experimental js implementation for the ZipFS",type:"STRING",values:["libzip","js"],default:"libzip"},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:"BOOLEAN",default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:"BOOLEAN",default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:"STRING",default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:"ABSOLUTE_PATH",default:"./.yarn/unplugged"}},linkers:[og],commands:[Iw]},Adt=fdt;var H1e=et(M1e());jt();var cW=et(Ce("crypto")),j1e=et(Ce("fs")),G1e=1,wi="node_modules",ZF=".bin",uW=".yarn-state.yml",xdt=".package-map.json",kdt=1e3,XF=new Map;function aW(e,{unrollAliases:t}){return`${e.cwd}\0${t?"unroll":"plain"}`}function Qdt(e){XF.delete(aW(e,{unrollAliases:!0})),XF.delete(aW(e,{unrollAliases:!1}))}var fW=(s=>(s.CLASSIC="classic",s.HARDLINKS_LOCAL="hardlinks-local",s.HARDLINKS_GLOBAL="hardlinks-global",s))(fW||{}),Kb=class{getCustomDataKey(){return JSON.stringify({name:"NodeModulesLinker",version:3})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let s=r.project.tryWorkspaceByLocator(t);if(s)return s.cwd;let a=await this.findInstallState(r.project,{unrollAliases:!0});if(a===null)throw new ot("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let n=a.locatorMap.get(H.stringifyLocator(t));if(!n){let p=new ot(`Couldn't find ${H.prettyLocator(r.project.configuration,t)} in the currently installed node_modules map - running an install might help`);throw p.code="LOCATOR_NOT_INSTALLED",p}let c=n.locations.sort((p,h)=>p.split(Y.sep).length-h.split(Y.sep).length),f=Y.join(r.project.configuration.startingCwd,wi);return c.find(p=>Y.contains(f,p))||n.locations[0]}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=await this.findInstallState(r.project,{unrollAliases:!0});if(s===null)return null;let{locationRoot:a,segments:n}=$F(Y.resolve(t),{skipPrefix:r.project.cwd}),c=s.locationTree.get(a);if(!c)return null;let f=c.locator;for(let p of n){if(c=c.children.get(p),!c)break;f=c.locator||f}return H.parseLocator(f)}makeInstaller(t){return new lW(t)}async findInstallState(t,{unrollAliases:r}){let s=aW(t,{unrollAliases:r}),a=await Fdt(t),n=XF.get(s);if(n?.statKey===a)return await n.promise;let c=q1e(t,{unrollAliases:r});return XF.set(s,{statKey:a,promise:c}),await c}isEnabled(t){return t.project.configuration.get("nodeLinker")==="node-modules"}},lW=class{constructor(t){this.opts=t;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(t){this.customData=t}async installPackage(t,r){let s=Y.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(t.locatorHash);if(typeof a>"u"&&(a=await Tdt(t,r),t.linkType==="HARD"&&this.customData.store.set(t.locatorHash,a)),!H.isPackageCompatible(t,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,c=new Set;n.has(H.stringifyIdent(t))||n.set(H.stringifyIdent(t),t.reference);let f=t;if(H.isVirtualLocator(t)){f=H.devirtualizeLocator(t);for(let E of t.peerDependencies.values())n.set(H.stringifyIdent(E),null),c.add(H.stringifyIdent(E))}let p={packageLocation:`${Ae.fromPortablePath(s)}/`,packageDependencies:n,packagePeers:c,linkType:t.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(t.locatorHash,{pkg:t,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(t,t.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(f.locatorHash,h),{packageLocation:s,buildRequest:null}}async attachInternalDependencies(t,r){let s=this.localStore.get(t.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[a,n]of r){let c=H.areIdentsEqual(a,n)?n.reference:[H.stringifyIdent(n),n.reference];s.pnpNode.packageDependencies.set(H.stringifyIdent(a),c)}}async attachExternalDependents(t,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let t=new Eo({baseFs:new nA({maxOpenFiles:80,readOnlyArchives:!0})}),r=await q1e(this.opts.project),s=this.opts.project.configuration.get("nmMode");(r===null||s!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:s,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(x=>{let I=this.opts.project.configuration.get("nmHoistingLimits");try{I=qe.validateEnum(Nb,x.manifest.installConfig?.hoistingLimits??I)}catch{let R=H.prettyWorkspace(this.opts.project.configuration,x);this.opts.report.reportWarning(57,`${R}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(Nb).join(", ")}, using default: "${I}"`)}return[x.relativeCwd,I]})),n=new Map(this.opts.project.workspaces.map(x=>{let I=this.opts.project.configuration.get("nmSelfReferences");return I=x.manifest.installConfig?.selfReferences??I,[x.relativeCwd,I]})),c={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(x,I)=>Array.isArray(I)?{name:I[0],reference:I[1]}:{name:x,reference:I},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(x=>{let I=x.anchoredLocator;return{name:H.stringifyIdent(I),reference:I.reference}}),getPackageInformation:x=>{let I=x.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:H.makeLocator(H.parseIdent(x.name),x.reference),R=this.localStore.get(I.locatorHash);if(typeof R>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return R.pnpNode},findPackageLocator:x=>{let I=this.opts.project.tryWorkspaceByCwd(Ae.toPortablePath(x));if(I!==null){let R=I.anchoredLocator;return{name:H.stringifyIdent(R),reference:R.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:x=>Ae.fromPortablePath(Eo.resolveVirtual(Ae.toPortablePath(x)))},{tree:f,errors:p,preserveSymlinksRequired:h}=Ob(c,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!f){for(let{messageName:x,text:I}of p)this.opts.report.reportError(x,I);return}let E=TY(f),C=NY(f,{basePath:Y.join(this.opts.project.cwd,wi),pnp:this.opts.project.configuration.get("nodePackageMapType")==="standard"?c:null});await _dt(r,E,C,{baseFs:t,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async x=>{let I=H.parseLocator(x),R=this.localStore.get(I.locatorHash);if(typeof R>"u")throw new Error("Assertion failed: Expected the slot to exist");return R.customPackageData.manifest}});let S=[];for(let[x,I]of E.entries()){if(V1e(x))continue;let R=H.parseLocator(x),N=this.localStore.get(R.locatorHash);if(typeof N>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(N.pkg))continue;let U=yA.extractBuildRequest(N.pkg,N.customPackageData,N.dependencyMeta,{configuration:this.opts.project.configuration});U&&S.push({buildLocations:I.locations,locator:R,buildRequest:U})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${ue.pretty(this.opts.project.configuration,"--preserve-symlinks",ue.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:S}}};async function Tdt(e,t){let r=await _t.tryFind(t.prefixPath,{baseFs:t.packageFs})??new _t,s=new Set(["preinstall","install","postinstall"]);for(let a of r.scripts.keys())s.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:yA.hasBindingGyp(t)}}}async function Rdt(e,t,r,s,{installChangedByUser:a}){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will +`,n+=`# cause your node_modules installation to become invalidated. +`,n+=` +`,n+=`__metadata: +`,n+=` version: ${G1e} +`,n+=` nmMode: ${s.value} +`;let c=Array.from(t.keys()).sort(),f=H.stringifyLocator(e.topLevelWorkspace.anchoredLocator);for(let E of c){let C=t.get(E);n+=` +`,n+=`${JSON.stringify(E)}: +`,n+=` locations: +`;for(let S of C.locations){let x=Y.contains(e.cwd,S);if(x===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` - ${JSON.stringify(x)} +`}if(C.aliases.length>0){n+=` aliases: +`;for(let S of C.aliases)n+=` - ${JSON.stringify(S)} +`}if(E===f&&r.size>0){n+=` bin: +`;for(let[S,x]of r){let I=Y.contains(e.cwd,S);if(I===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` ${JSON.stringify(I)}: +`;for(let[R,N]of x){let U=Y.relative(Y.join(S,wi),N);n+=` ${JSON.stringify(R)}: ${JSON.stringify(U)} +`}}}}let p=e.cwd,h=Y.join(p,wi,uW);try{a&&await ae.removePromise(h),await ae.changeFilePromise(h,n,{automaticNewlines:!0})}finally{Qdt(e)}}async function Fdt(e){let t=e.cwd,r=Y.join(t,wi,uW);try{let s=await ae.statPromise(r);return`${s.mtimeMs}:${s.size}`}catch{return null}}async function q1e(e,{unrollAliases:t=!1}={}){let r=e.cwd,s=Y.join(r,wi,uW),a;try{a=await ae.statPromise(s)}catch{}if(!a)return null;let n=us(await ae.readFilePromise(s,"utf8"));if(n.__metadata.version>G1e)return null;let c=n.__metadata.nmMode||"classic",f=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let C=E.locations.map(x=>Y.join(r,x)),S=E.bin;if(S)for(let[x,I]of Object.entries(S)){let R=Y.join(r,Ae.toPortablePath(x)),N=qe.getMapWithDefault(p,R);for(let[U,K]of Object.entries(I))N.set(U,Ae.toPortablePath([R,wi,K].join(Y.sep)))}if(f.set(h,{target:wt.dot,linkType:"HARD",locations:C,aliases:E.aliases||[]}),t&&E.aliases)for(let x of E.aliases){let{scope:I,name:R}=H.parseLocator(h),N=H.makeLocator(H.makeIdent(I,R),x),U=H.stringifyLocator(N);f.set(U,{target:wt.dot,linkType:"HARD",locations:C,aliases:[]})}}return{locatorMap:f,binSymlinks:p,locationTree:Y1e(f,{skipPrefix:e.cwd}),nmMode:c,mtimeMs:a.mtimeMs}}var ww=async(e,t)=>{if(e.split(Y.sep).indexOf(wi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${e}`);try{let r;if(!t.innerLoop&&(r=await ae.lstatPromise(e),!r.isDirectory()&&!r.isSymbolicLink()||r.isSymbolicLink()&&!t.isWorkspaceDir)){await ae.unlinkPromise(e);return}let s=await ae.readdirPromise(e,{withFileTypes:!0});for(let n of s){let c=Y.join(e,n.name);n.isDirectory()?(n.name!==wi||t&&t.innerLoop)&&await ww(c,{innerLoop:!0,contentsOnly:!1}):await ae.unlinkPromise(c)}let a=!t.innerLoop&&t.isWorkspaceDir&&r?.isSymbolicLink();!t.contentsOnly&&!a&&await ae.rmdirPromise(e)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},U1e=4,$F=(e,{skipPrefix:t})=>{let r=Y.contains(t,e);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${e} which is outside project root: ${t}`);let s=r.split(Y.sep).filter(p=>p!==""),a=s.indexOf(wi),n=s.slice(0,a).join(Y.sep),c=Y.join(t,n),f=s.slice(a);return{locationRoot:c,segments:f}},Y1e=(e,{skipPrefix:t})=>{let r=new Map;if(e===null)return r;let s=()=>({children:new Map,linkType:"HARD"});for(let[a,n]of e.entries()){if(n.linkType==="SOFT"&&Y.contains(t,n.target)!==null){let f=qe.getFactoryWithDefault(r,n.target,s);f.locator=a,f.linkType=n.linkType}for(let c of n.locations){let{locationRoot:f,segments:p}=$F(c,{skipPrefix:t}),h=qe.getFactoryWithDefault(r,f,s);for(let E=0;E{if(process.platform==="win32"&&r==="junctions"){let s;try{s=await ae.lstatPromise(e)}catch{}if(!s||s.isDirectory()){await ae.symlinkPromise(e,t,"junction");return}}await ae.symlinkPromise(Y.relative(Y.dirname(t),e),t)};async function W1e(e,t,r){let s=Y.join(e,`${cW.default.randomBytes(16).toString("hex")}.tmp`);try{await ae.writeFilePromise(s,r);try{await ae.linkPromise(s,t)}catch{}}finally{await ae.unlinkPromise(s)}}async function Ndt({srcPath:e,dstPath:t,entry:r,globalHardlinksStore:s,baseFs:a,nmMode:n}){if(r.kind==="file"){if(n.value==="hardlinks-global"&&s&&r.digest){let f=Y.join(s,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await ae.statPromise(f);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs{await ae.mkdirPromise(e,{recursive:!0});let f=async(E=wt.dot)=>{let C=Y.join(t,E),S=await r.readdirPromise(C,{withFileTypes:!0}),x=new Map;for(let I of S){let R=Y.join(E,I.name),N,U=Y.join(C,I.name);if(I.isFile()){if(N={kind:"file",mode:(await r.lstatPromise(U)).mode},a.value==="hardlinks-global"){let K=await Mn.checksumFile(U,{baseFs:r,algorithm:"sha1"});N.digest=K}}else if(I.isDirectory())N={kind:"directory"};else if(I.isSymbolicLink())N={kind:"symlink",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,"0")})`);if(x.set(R,N),I.isDirectory()&&R!==wi){let K=await f(R);for(let[$,ie]of K)x.set($,ie)}}return x},p;if(a.value==="hardlinks-global"&&s&&c){let E=Y.join(s,c.substring(0,2),`${c.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await ae.readFilePromise(E,"utf8"))))}catch{p=await f()}}else p=await f();let h=!1;for(let[E,C]of p){let S=Y.join(t,E),x=Y.join(e,E);if(C.kind==="directory")await ae.mkdirPromise(x,{recursive:!0});else if(C.kind==="file"){let I=C.mtimeMs;await Ndt({srcPath:S,dstPath:x,entry:C,nmMode:a,baseFs:r,globalHardlinksStore:s}),C.mtimeMs!==I&&(h=!0)}else C.kind==="symlink"&&await AW(Y.resolve(Y.dirname(x),C.symlinkTo),x,n)}if(a.value==="hardlinks-global"&&s&&h&&c){let E=Y.join(s,c.substring(0,2),`${c.substring(2)}.json`);await ae.removePromise(E),await W1e(s,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function Ldt(e,t,r,s){let a=new Map,n=new Map,c=new Map,f=!1,p=(h,E,C,S,x)=>{let I=!0,R=Y.join(h,E),N=new Set;if(E===wi||E.startsWith("@")){let K;try{K=ae.statSync(R)}catch{}I=!!K,K?K.mtimeMs>r?(f=!0,N=new Set(ae.readdirSync(R))):N=new Set(C.children.get(E).children.keys()):f=!0;let $=t.get(h);if($){let ie=Y.join(h,wi,ZF),fe;try{fe=ae.statSync(ie)}catch{}if(!fe)f=!0;else if(fe.mtimeMs>r){f=!0;let le=new Set(ae.readdirSync(ie)),ge=new Map;n.set(h,ge);for(let[pe,De]of $)le.has(pe)&&ge.set(pe,De)}else n.set(h,$)}}else I=x.has(E);let U=C.children.get(E);if(I){let{linkType:K,locator:$}=U,ie={children:new Map,linkType:K,locator:$};if(S.children.set(E,ie),$){let fe=qe.getSetWithDefault(c,$);fe.add(R),c.set($,fe)}for(let fe of U.children.keys())p(R,fe,U,ie,N)}else U.locator&&s.storedBuildState.delete(H.parseLocator(U.locator).locatorHash)};for(let[h,E]of e){let{linkType:C,locator:S}=E,x={children:new Map,linkType:C,locator:S};if(a.set(h,x),S){let I=qe.getSetWithDefault(c,E.locator);I.add(h),c.set(E.locator,I)}E.children.has(wi)&&p(h,wi,E,x,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:c,installChangedByUser:f}}function V1e(e){let t=H.parseDescriptor(e);return H.isVirtualDescriptor(t)&&(t=H.devirtualizeDescriptor(t)),t.range.startsWith("link:")}async function Mdt(e,t,r,{loadManifest:s}){let a=new Map;for(let[f,{locations:p}]of e){let h=V1e(f)?null:await s(f,p[0]),E=new Map;if(h)for(let[C,S]of h.bin){let x=Y.join(p[0],S);S!==""&&ae.existsSync(x)&&E.set(C,S)}a.set(f,E)}let n=new Map,c=(f,p,h)=>{let E=new Map,C=Y.contains(r,f);if(h.locator&&C!==null){let S=a.get(h.locator);for(let[x,I]of S){let R=Y.join(f,Ae.toPortablePath(I));E.set(x,R)}for(let[x,I]of h.children){let R=Y.join(f,x),N=c(R,R,I);N.size>0&&n.set(f,new Map([...n.get(f)||new Map,...N]))}}else for(let[S,x]of h.children){let I=c(Y.join(f,S),p,x);for(let[R,N]of I)E.set(R,N)}return E};for(let[f,p]of t){let h=c(f,f,p);h.size>0&&n.set(f,new Map([...n.get(f)||new Map,...h]))}return n}var _1e=(e,t)=>{if(!e||!t)return e===t;let r=H.parseLocator(e);H.isVirtualLocator(r)&&(r=H.devirtualizeLocator(r));let s=H.parseLocator(t);return H.isVirtualLocator(s)&&(s=H.devirtualizeLocator(s)),H.areLocatorsEqual(r,s)};function pW(e){return Y.join(e.get("globalFolder"),"store")}function Udt(e,t){let r=s=>{let a=s.split(Y.sep),n=a.lastIndexOf(wi);if(n<0||n==a.length-1)throw new Error(`Assertion failed. Path is outside of any node_modules package ${s}`);return a.slice(0,n+(a[n+1].startsWith("@")?3:2)).join(Y.sep)};for(let s of e.values())for(let[a,n]of s)t.has(r(n))&&s.delete(a)}async function _dt(e,t,r,{baseFs:s,project:a,report:n,loadManifest:c,realLocatorChecksums:f}){let p=Y.join(a.cwd,wi),{locationTree:h,binSymlinks:E,locatorLocations:C,installChangedByUser:S}=Ldt(e.locationTree,e.binSymlinks,e.mtimeMs,a),x=Y1e(t,{skipPrefix:a.cwd}),I=[],R=async({srcDir:ye,dstDir:d,linkType:ve,globalHardlinksStore:Ie,nmMode:me,windowsLinkType:ce,packageChecksum:X})=>{let be=(async()=>{try{ve==="SOFT"?(await ae.mkdirPromise(Y.dirname(d),{recursive:!0}),await AW(Y.resolve(ye),d,ce)):await Odt(d,ye,{baseFs:s,globalHardlinksStore:Ie,nmMode:me,windowsLinkType:ce,packageChecksum:X})}catch(ke){throw ke.message=`While persisting ${ye} -> ${d} ${ke.message}`,ke}finally{fe.tick()}})().then(()=>I.splice(I.indexOf(be),1));I.push(be),I.length>U1e&&await Promise.race(I)},N=async(ye,d,ve)=>{let Ie=(async()=>{let me=async(ce,X,be)=>{try{be.innerLoop||await ae.mkdirPromise(X,{recursive:!0});let ke=await ae.readdirPromise(ce,{withFileTypes:!0});for(let it of ke){if(!be.innerLoop&&it.name===ZF)continue;let _=Y.join(ce,it.name),tt=Y.join(X,it.name);it.isDirectory()?(it.name!==wi||be&&be.innerLoop)&&(await ae.mkdirPromise(tt,{recursive:!0}),await me(_,tt,{...be,innerLoop:!0})):pe.value==="hardlinks-local"||pe.value==="hardlinks-global"?await ae.linkPromise(_,tt):await ae.copyFilePromise(_,tt,j1e.default.constants.COPYFILE_FICLONE)}}catch(ke){throw be.innerLoop||(ke.message=`While cloning ${ce} -> ${X} ${ke.message}`),ke}finally{be.innerLoop||fe.tick()}};await me(ye,d,ve)})().then(()=>I.splice(I.indexOf(Ie),1));I.push(Ie),I.length>U1e&&await Promise.race(I)},U=async(ye,d,ve)=>{if(ve)for(let[Ie,me]of d.children){let ce=ve.children.get(Ie);await U(Y.join(ye,Ie),me,ce)}else{d.children.has(wi)&&await ww(Y.join(ye,wi),{contentsOnly:!1});let Ie=Y.basename(ye)===wi&&h.has(Y.join(Y.dirname(ye)));await ww(ye,{contentsOnly:ye===p,isWorkspaceDir:Ie})}};for(let[ye,d]of h){let ve=x.get(ye);for(let[Ie,me]of d.children){if(Ie===".")continue;let ce=ve&&ve.children.get(Ie),X=Y.join(ye,Ie);await U(X,me,ce)}}let K=async(ye,d,ve)=>{if(ve){_1e(d.locator,ve.locator)||await ww(ye,{contentsOnly:d.linkType==="HARD"});for(let[Ie,me]of d.children){let ce=ve.children.get(Ie);await K(Y.join(ye,Ie),me,ce)}}else{d.children.has(wi)&&await ww(Y.join(ye,wi),{contentsOnly:!0});let Ie=Y.basename(ye)===wi&&x.has(Y.join(Y.dirname(ye)));await ww(ye,{contentsOnly:d.linkType==="HARD",isWorkspaceDir:Ie})}};for(let[ye,d]of x){let ve=h.get(ye);for(let[Ie,me]of d.children){if(Ie===".")continue;let ce=ve&&ve.children.get(Ie);await K(Y.join(ye,Ie),me,ce)}}let $=new Map,ie=[];for(let[ye,d]of C)for(let ve of d){let{locationRoot:Ie,segments:me}=$F(ve,{skipPrefix:a.cwd}),ce=x.get(Ie),X=Ie;if(ce){for(let be of me)if(X=Y.join(X,be),ce=ce.children.get(be),!ce)break;if(ce){let be=_1e(ce.locator,ye),ke=t.get(ce.locator),it=ke.target,_=X,tt=ke.linkType;if(be)$.has(it)||$.set(it,_);else if(it!==_){let Fe=H.parseLocator(ce.locator);H.isVirtualLocator(Fe)&&(Fe=H.devirtualizeLocator(Fe)),ie.push({srcDir:it,dstDir:_,linkType:tt,realLocatorHash:Fe.locatorHash})}}}}for(let[ye,{locations:d}]of t.entries())for(let ve of d){let{locationRoot:Ie,segments:me}=$F(ve,{skipPrefix:a.cwd}),ce=h.get(Ie),X=x.get(Ie),be=Ie,ke=t.get(ye),it=H.parseLocator(ye);H.isVirtualLocator(it)&&(it=H.devirtualizeLocator(it));let _=it.locatorHash,tt=ke.target,Fe=ve;if(tt===Fe)continue;let Qe=ke.linkType;for(let Se of me)X=X.children.get(Se);if(!ce)ie.push({srcDir:tt,dstDir:Fe,linkType:Qe,realLocatorHash:_});else for(let Se of me)if(be=Y.join(be,Se),ce=ce.children.get(Se),!ce){ie.push({srcDir:tt,dstDir:Fe,linkType:Qe,realLocatorHash:_});break}}let fe=Io.progressViaCounter(ie.length),le=n.reportProgress(fe),ge=a.configuration.get("nmMode"),pe={value:ge},De=a.configuration.get("winLinkType");try{let ye=pe.value==="hardlinks-global"?`${pW(a.configuration)}/v1`:null;if(ye&&!await ae.existsPromise(ye)){await ae.mkdirpPromise(ye);for(let ve=0;ve<256;ve++)await ae.mkdirPromise(Y.join(ye,ve.toString(16).padStart(2,"0")))}for(let ve of ie)(ve.linkType==="SOFT"||!$.has(ve.srcDir))&&($.set(ve.srcDir,ve.dstDir),await R({...ve,globalHardlinksStore:ye,nmMode:pe,windowsLinkType:De,packageChecksum:f.get(ve.realLocatorHash)||null}));await Promise.all(I),I.length=0;for(let ve of ie){let Ie=$.get(ve.srcDir);ve.linkType!=="SOFT"&&ve.dstDir!==Ie&&await N(Ie,ve.dstDir,{nmMode:pe})}await Promise.all(I),await ae.mkdirPromise(p,{recursive:!0}),await ae.changeFilePromise(Y.join(p,xdt),JSON.stringify(r,null,2),{automaticNewlines:!0}),Udt(E,new Set(ie.map(ve=>ve.dstDir)));let d=await Mdt(t,x,a.cwd,{loadManifest:c});await Hdt(E,d,a.cwd,De),await Rdt(a,t,d,pe,{installChangedByUser:S}),ge=="hardlinks-global"&&pe.value=="hardlinks-local"&&n.reportWarningOnce(74,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{le.stop()}}async function Hdt(e,t,r,s){for(let a of e.keys()){if(Y.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!t.has(a)){let n=Y.join(a,wi,ZF);await ae.removePromise(n)}}for(let[a,n]of t){if(Y.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let c=Y.join(a,wi,ZF),f=e.get(a)||new Map;await ae.mkdirPromise(c,{recursive:!0});for(let p of f.keys())n.has(p)||(await ae.removePromise(Y.join(c,p)),process.platform==="win32"&&await ae.removePromise(Y.join(c,`${p}.cmd`)));for(let[p,h]of n){let E=f.get(p),C=Y.join(c,p);E!==h&&(process.platform==="win32"?await(0,H1e.default)(Ae.fromPortablePath(h),Ae.fromPortablePath(C),{createPwshFile:!1}):(await ae.removePromise(C),await AW(h,C,s),Y.contains(r,await ae.realpathPromise(h))!==null&&await ae.chmodPromise(h,493)))}}}Ge();bt();iA();var Jb=class extends og{constructor(){super(...arguments);this.mode="loose"}makeInstaller(r){return new hW(r)}},hW=class extends Jm{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(r){let s=new Eo({baseFs:new nA({maxOpenFiles:80,readOnlyArchives:!0})}),a=D1e(r,this.opts.project.cwd,s),{tree:n,errors:c}=Ob(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:C,text:S}of c)this.opts.report.reportError(C,S);return}let f=new Map;r.fallbackPool=f;let p=(C,S)=>{let x=H.parseLocator(S.locator),I=H.stringifyIdent(x);I===C?f.set(C,x.reference):f.set(C,[I,x.reference])},h=Y.join(this.opts.project.cwd,yr.nodeModules),E=n.get(h);if(!(typeof E>"u")){if("target"in E)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let C of E.dirList){let S=Y.join(h,C),x=n.get(S);if(typeof x>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in x)p(C,x);else for(let I of x.dirList){let R=Y.join(S,I),N=n.get(R);if(typeof N>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in N)p(`${C}/${I}`,N);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var jdt={hooks:{cleanGlobalArtifacts:async e=>{let t=pW(e);await ae.removePromise(t)}},configuration:{nmHoistingLimits:{description:"Prevents packages to be hoisted past specific levels",type:"STRING",values:["workspaces","dependencies","none"],default:"none"},nmMode:{description:"Defines in which measure Yarn must use hardlinks and symlinks when generated `node_modules` directories.",type:"STRING",values:["classic","hardlinks-local","hardlinks-global"],default:"classic"},nmSelfReferences:{description:"Defines whether the linker should generate self-referencing symlinks for workspaces.",type:"BOOLEAN",default:!0}},linkers:[Kb,Jb]},Gdt=jdt;var hJ={};Vt(hJ,{NpmHttpFetcher:()=>$b,NpmRemapResolver:()=>eD,NpmSemverFetcher:()=>ah,NpmSemverResolver:()=>tD,NpmTagResolver:()=>rD,default:()=>iSt,npmConfigUtils:()=>gn,npmHttpUtils:()=>Qr,npmPublishUtils:()=>E1});Ge();var r2e=et(hi());var ti="npm:";var Qr={};Vt(Qr,{AuthType:()=>$1e,customPackageError:()=>zm,del:()=>ogt,get:()=>Zm,getIdentUrl:()=>Zb,getPackageMetadata:()=>bw,handleInvalidAuthenticationError:()=>lg,post:()=>igt,put:()=>sgt});Ge();Ge();bt();var mW=et(Xv());Zl();var X1e=et(hi());var gn={};Vt(gn,{RegistryType:()=>J1e,getAuditRegistry:()=>qdt,getAuthConfiguration:()=>gW,getDefaultRegistry:()=>zb,getMinimalAgeGate:()=>Z1e,getPublishRegistry:()=>Ydt,getRegistryConfiguration:()=>z1e,getScopeConfiguration:()=>eN,getScopeRegistry:()=>Bw,isPackageApproved:()=>vw,normalizeRegistry:()=>Kc});Ge();var K1e=et(Zo()),J1e=(s=>(s.AUDIT_REGISTRY="npmAuditRegistry",s.FETCH_REGISTRY="npmRegistryServer",s.PUBLISH_REGISTRY="npmPublishRegistry",s))(J1e||{});function Kc(e){return e.replace(/\/$/,"")}function qdt({configuration:e}){return zb({configuration:e,type:"npmAuditRegistry"})}function Ydt(e,{configuration:t}){return e.publishConfig?.registry?Kc(e.publishConfig.registry):e.name?Bw(e.name.scope,{configuration:t,type:"npmPublishRegistry"}):zb({configuration:t,type:"npmPublishRegistry"})}function Bw(e,{configuration:t,type:r="npmRegistryServer"}){let s=eN(e,{configuration:t});if(s===null)return zb({configuration:t,type:r});let a=s.get(r);return a===null?zb({configuration:t,type:r}):Kc(a)}function zb({configuration:e,type:t="npmRegistryServer"}){let r=e.get(t);return Kc(r!==null?r:e.get("npmRegistryServer"))}function z1e(e,{configuration:t}){let r=t.get("npmRegistries"),s=Kc(e),a=r.get(s);if(typeof a<"u")return a;let n=r.get(s.replace(/^[a-z]+:/,""));return typeof n<"u"?n:null}var Wdt=new Map([["npmRegistryServer","https://npm.jsr.io/"]]);function eN(e,{configuration:t}){if(e===null)return null;let s=t.get("npmScopes").get(e);return s||(e==="jsr"?Wdt:null)}function gW(e,{configuration:t,ident:r}){let s=r&&eN(r.scope,{configuration:t});return s?.get("npmAuthIdent")||s?.get("npmAuthToken")?s:z1e(e,{configuration:t})||t}function Z1e(e,{configuration:t}){if(e?.scope){let s=eN(e.scope,{configuration:t})?.get("npmMinimalAgeGate");if(typeof s=="number")return s}return t.get("npmMinimalAgeGate")}function Vdt({configuration:e,ident:t,version:r,publishTimes:s}){let a=Z1e(t,{configuration:e});if(a){let n=s?.[r];if(typeof n>"u"||(new Date().getTime()-new Date(n).getTime())/60/1e3Kdt(t,r,s))}function vw(e){return!Vdt(e)||Jdt(e)}var $1e=(a=>(a[a.NO_AUTH=0]="NO_AUTH",a[a.BEST_EFFORT=1]="BEST_EFFORT",a[a.CONFIGURATION=2]="CONFIGURATION",a[a.ALWAYS_AUTH=3]="ALWAYS_AUTH",a))($1e||{});async function lg(e,{attemptedAs:t,registry:r,headers:s,configuration:a}){if(rN(e))throw new Lt(41,"Invalid OTP token");if(e.originalError?.name==="HTTPError"&&e.originalError?.response.statusCode===401)throw new Lt(41,`Invalid authentication (${typeof t!="string"?`as ${await lgt(r,s,{configuration:a})}`:`attempted as ${t}`})`)}function zm(e,t){let r=e.response?.statusCode;return r?r===404?"Package not found":r>=500&&r<600?`The registry appears to be down (using a ${ue.applyHyperlink(t,"local cache","https://yarnpkg.com/advanced/lexicon#local-cache")} might have protected you against such outages)`:null:null}function Zb(e){return e.scope?`/@${encodeURIComponent(e.scope)}%2f${encodeURIComponent(e.name)}`:`/${encodeURIComponent(e.name)}`}var e2e=new Map,zdt=new Map;async function Zdt(e){return await qe.getFactoryWithDefault(e2e,e,async()=>{let t=null;try{t=await ae.readJsonPromise(e)}catch{}return t})}async function Xdt(e,t,{configuration:r,cached:s,registry:a,headers:n,version:c,...f}){return await qe.getFactoryWithDefault(zdt,e,async()=>await Zm(Zb(t),{...f,customErrorMessage:zm,configuration:r,registry:a,ident:t,headers:{...n,"If-None-Match":s?.etag,"If-Modified-Since":s?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(s===null)throw new Error("Assertion failed: cachedMetadata should not be null");return{...h,body:s.metadata}}let E=egt(JSON.parse(h.body.toString())),C={metadata:E,etag:h.headers.etag,lastModified:h.headers["last-modified"]};return e2e.set(e,Promise.resolve(C)),Promise.resolve().then(async()=>{let S=`${e}-${process.pid}.tmp`;await ae.mkdirPromise(Y.dirname(S),{recursive:!0}),await ae.writeJsonPromise(S,C,{compact:!0}),await ae.renamePromise(S,e)}).catch(()=>{}),{...h,body:E}}}))}function $dt(e){return e.scope!==null?`@${e.scope}-${e.name}-${e.scope.length}`:e.name}async function bw(e,{cache:t,project:r,registry:s,headers:a,version:n,...c}){let{configuration:f}=r;s=Xb(f,{ident:e,registry:s});let p=rgt(f,s),h=Y.join(p,`${$dt(e)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await Zdt(h),E)){if(typeof n<"u"&&typeof E.metadata.versions[n]<"u")return E.metadata;if(f.get("enableOfflineMode")){let C=structuredClone(E.metadata),S=new Set;if(t){for(let I of Object.keys(C.versions)){let R=H.makeLocator(e,`npm:${I}`),N=t.getLocatorMirrorPath(R);(!N||!ae.existsSync(N))&&(delete C.versions[I],S.add(I))}let x=C["dist-tags"].latest;if(S.has(x)){let I=Object.keys(E.metadata.versions).sort(X1e.default.compare),R=I.indexOf(x);for(;S.has(I[R])&&R>=0;)R-=1;R>=0?C["dist-tags"].latest=I[R]:delete C["dist-tags"].latest}}return C}}return await Xdt(h,e,{...c,configuration:f,cached:E,registry:s,headers:a,version:n})}var t2e=["name","dist.tarball","bin","scripts","os","cpu","libc","dependencies","dependenciesMeta","optionalDependencies","peerDependencies","peerDependenciesMeta","deprecated"];function egt(e){return{"dist-tags":e["dist-tags"],versions:Object.fromEntries(Object.entries(e.versions).map(([t,r])=>[t,z0(r,t2e)])),time:e.time}}var tgt=Mn.makeHash("time",...t2e).slice(0,6);function rgt(e,t){let r=ngt(e),s=new URL(t);return Y.join(r,tgt,s.hostname)}function ngt(e){return Y.join(e.get("globalFolder"),"metadata/npm")}async function Zm(e,{configuration:t,headers:r,ident:s,authType:a,allowOidc:n,registry:c,...f}){c=Xb(t,{ident:s,registry:c}),s&&s.scope&&typeof a>"u"&&(a=1);let p=await tN(c,{authType:a,allowOidc:n,configuration:t,ident:s});p&&(r={...r,authorization:p});try{return await nn.get(e.charAt(0)==="/"?`${c}${e}`:e,{configuration:t,headers:r,...f})}catch(h){throw await lg(h,{registry:c,configuration:t,headers:r}),h}}async function igt(e,t,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=Xb(s,{ident:n,registry:p});let C=await tN(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...Sw(h)});try{return await nn.post(p+e,t,{configuration:s,headers:a,...E})}catch(S){if(!rN(S)||h)throw await lg(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await yW(S,{configuration:s});let x={...a,...Sw(h)};try{return await nn.post(`${p}${e}`,t,{configuration:s,headers:x,...E})}catch(I){throw await lg(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function sgt(e,t,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=Xb(s,{ident:n,registry:p});let C=await tN(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...Sw(h)});try{return await nn.put(p+e,t,{configuration:s,headers:a,...E})}catch(S){if(!rN(S))throw await lg(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await yW(S,{configuration:s});let x={...a,...Sw(h)};try{return await nn.put(`${p}${e}`,t,{configuration:s,headers:x,...E})}catch(I){throw await lg(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function ogt(e,{attemptedAs:t,configuration:r,headers:s,ident:a,authType:n=3,allowOidc:c,registry:f,otp:p,...h}){f=Xb(r,{ident:a,registry:f});let E=await tN(f,{authType:n,allowOidc:c,configuration:r,ident:a});E&&(s={...s,authorization:E}),p&&(s={...s,...Sw(p)});try{return await nn.del(f+e,{configuration:r,headers:s,...h})}catch(C){if(!rN(C)||p)throw await lg(C,{attemptedAs:t,registry:f,configuration:r,headers:s}),C;p=await yW(C,{configuration:r});let S={...s,...Sw(p)};try{return await nn.del(`${f}${e}`,{configuration:r,headers:S,...h})}catch(x){throw await lg(x,{attemptedAs:t,registry:f,configuration:r,headers:s}),x}}}function Xb(e,{ident:t,registry:r}){if(typeof r>"u"&&t)return Bw(t.scope,{configuration:e});if(typeof r!="string")throw new Error("Assertion failed: The registry should be a string");return Kc(r)}async function tN(e,{authType:t=2,allowOidc:r=!1,configuration:s,ident:a}){let n=gW(e,{configuration:s,ident:a}),c=agt(n,t);if(!c)return null;let f=await s.reduceHook(p=>p.getNpmAuthenticationHeader,void 0,e,{configuration:s,ident:a});if(f)return f;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let p=n.get("npmAuthIdent");return p.includes(":")?`Basic ${Buffer.from(p).toString("base64")}`:`Basic ${p}`}if(r&&a){let p=await cgt(e,{configuration:s,ident:a});if(p)return`Bearer ${p}`}if(c&&t!==1)throw new Lt(33,"No authentication configured for request");return null}function agt(e,t){switch(t){case 2:return e.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function lgt(e,t,{configuration:r}){if(typeof t>"u"||typeof t.authorization>"u")return"an anonymous user";try{return(await nn.get(new URL(`${e}/-/whoami`).href,{configuration:r,headers:t,jsonResponse:!0})).username??"an unknown user"}catch{return"an unknown user"}}async function yW(e,{configuration:t}){let r=e.originalError?.response.headers["npm-notice"];if(r&&(await Ft.start({configuration:t,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\/\/\S+)/g,ue.pretty(t,"$1",ue.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\/\/\S+)/i);if(n&&Ui.openUrl){let{openNow:c}=await(0,mW.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open this url now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});c&&(await Ui.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.")))}}}),process.stdout.write(` +`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";let{otp:s}=await(0,mW.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(` +`),s}function rN(e){if(e.originalError?.name!=="HTTPError")return!1;try{return(e.originalError?.response.headers["www-authenticate"].split(/,\s*/).map(r=>r.toLowerCase())).includes("otp")}catch{return!1}}function Sw(e){return{"npm-otp":e}}async function cgt(e,{configuration:t,ident:r}){let s=null;if(process.env.GITLAB_CI)s=process.env.NPM_ID_TOKEN||null;else if(process.env.CIRCLECI)s=process.env.NPM_ID_TOKEN||null;else if(process.env.GITHUB_ACTIONS){if(!(process.env.ACTIONS_ID_TOKEN_REQUEST_URL&&process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN))return null;let a=`npm:${new URL(e).host.replace("registry.yarnpkg.com","registry.npmjs.org").replace("yarn.npmjs.org","registry.npmjs.org")}`,n=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);n.searchParams.append("audience",a),s=(await nn.get(n.href,{configuration:t,jsonResponse:!0,headers:{Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).value}if(!s)return null;try{return(await nn.post(`${e}/-/npm/v1/oidc/token/exchange/package${Zb(r)}`,null,{configuration:t,jsonResponse:!0,headers:{Authorization:`Bearer ${s}`}})).token||null}catch{}return null}var $b=class{supports(t,r){if(!t.reference.startsWith(ti))return!1;let{selector:s,params:a}=H.parseRange(t.reference);return!(!r2e.default.valid(s)||a===null||typeof a.__archiveUrl!="string")}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${H.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:H.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let{params:s}=H.parseRange(t.reference);if(s===null||typeof s.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let a=await Zm(s.__archiveUrl,{customErrorMessage:zm,configuration:r.project.configuration,ident:t});return await ms.convertToZip(a,{configuration:r.project.configuration,prefixPath:H.getIdentVendorPath(t),stripComponents:1})}};Ge();var eD=class{supportsDescriptor(t,r){return!(!t.range.startsWith(ti)||!H.tryParseDescriptor(t.range.slice(ti.length),!0))}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error("Unreachable")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){let s=r.project.configuration.normalizeDependency(H.parseDescriptor(t.range.slice(ti.length),!0));return r.resolver.getResolutionDependencies(s,r)}async getCandidates(t,r,s){let a=s.project.configuration.normalizeDependency(H.parseDescriptor(t.range.slice(ti.length),!0));return await s.resolver.getCandidates(a,r,s)}async getSatisfying(t,r,s,a){let n=a.project.configuration.normalizeDependency(H.parseDescriptor(t.range.slice(ti.length),!0));return a.resolver.getSatisfying(n,r,s,a)}resolve(t,r){throw new Error("Unreachable")}};Ge();Ge();var n2e=et(hi());var ah=class e{supports(t,r){if(!t.reference.startsWith(ti))return!1;let s=new URL(t.reference);return!(!n2e.default.valid(s.pathname)||s.searchParams.has("__archiveUrl"))}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${H.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:H.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s;try{s=await Zm(e.getLocatorUrl(t),{customErrorMessage:zm,configuration:r.project.configuration,ident:t})}catch{s=await Zm(e.getLocatorUrl(t).replace(/%2f/g,"/"),{customErrorMessage:zm,configuration:r.project.configuration,ident:t})}return await ms.convertToZip(s,{configuration:r.project.configuration,prefixPath:H.getIdentVendorPath(t),stripComponents:1})}static isConventionalTarballUrl(t,r,{configuration:s}){let a=Bw(t.scope,{configuration:s}),n=e.getLocatorUrl(t);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),a=a.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===a+n||r===a+n.replace(/%2f/g,"/")}static getLocatorUrl(t){let r=kr.clean(t.reference.slice(ti.length));if(r===null)throw new Lt(10,"The npm semver resolver got selected, but the version isn't semver");let s=encodeURIComponent(t.name),a=encodeURIComponent(r);return`${Zb(t)}/-/${s}-${a}.tgz`}};Ge();Ge();Ge();var EW=et(hi());var nN=H.makeIdent(null,"node-gyp"),ugt=/\b(node-gyp|prebuild-install)\b/,tD=class{supportsDescriptor(t,r){return t.range.startsWith(ti)?!!kr.validRange(t.range.slice(ti.length)):!1}supportsLocator(t,r){if(!t.reference.startsWith(ti))return!1;let{selector:s}=H.parseRange(t.reference);return!!EW.default.valid(s)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=kr.validRange(t.range.slice(ti.length));if(a===null)throw new Error(`Expected a valid range, got ${t.range.slice(ti.length)}`);let n=await bw(t,{cache:s.fetchOptions?.cache,project:s.project,version:EW.default.valid(a.raw)?a.raw:void 0}),c=qe.mapAndFilter(Object.keys(n.versions),E=>{try{let C=new kr.SemVer(E);if(a.test(C))return C}catch{}return qe.mapAndFilter.skip}),f=c.filter(E=>vw({configuration:s.project.configuration,ident:t,version:E.raw,publishTimes:n.time}));if(c.length>0&&f.length===0)throw new Lt(16,`All versions satisfying "${t.range.slice(ti.length)}" are quarantined`);let p=f.filter(E=>!n.versions[E.raw].deprecated),h=p.length>0?p:f;return h.sort((E,C)=>-E.compare(C)),h.map(E=>{let C=H.makeLocator(t,`${ti}${E.raw}`),S=n.versions[E.raw].dist.tarball;return ah.isConventionalTarballUrl(C,S,{configuration:s.project.configuration})?C:H.bindLocator(C,{__archiveUrl:S})})}async getSatisfying(t,r,s,a){let n=kr.validRange(t.range.slice(ti.length));if(n===null)throw new Error(`Expected a valid range, got ${t.range.slice(ti.length)}`);return{locators:qe.mapAndFilter(s,p=>{if(p.identHash!==t.identHash)return qe.mapAndFilter.skip;let h=H.tryParseRange(p.reference,{requireProtocol:ti});if(!h)return qe.mapAndFilter.skip;let E=new kr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:qe.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(t,r){let{selector:s}=H.parseRange(t.reference),a=kr.clean(s);if(a===null)throw new Lt(10,"The npm semver resolver got selected, but the version isn't semver");let n=await bw(t,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,"versions"))throw new Lt(15,'Registry returned invalid data for - missing "versions" field');if(!Object.hasOwn(n.versions,a))throw new Lt(16,`Registry failed to return reference "${a}"`);let c=new _t;if(c.load(n.versions[a]),!c.dependencies.has(nN.identHash)&&!c.peerDependencies.has(nN.identHash)){for(let f of c.scripts.values())if(f.match(ugt)){c.dependencies.set(nN.identHash,H.makeDescriptor(nN,"latest"));break}}return{...t,version:a,languageName:"node",linkType:"HARD",conditions:c.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(c.dependencies),peerDependencies:c.peerDependencies,dependenciesMeta:c.dependenciesMeta,peerDependenciesMeta:c.peerDependenciesMeta,bin:c.bin}}};Ge();Ge();var iN=et(hi());var rD=class{supportsDescriptor(t,r){return!(!t.range.startsWith(ti)||!jp.test(t.range.slice(ti.length)))}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error("Unreachable")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(ti.length),n=await bw(t,{cache:s.fetchOptions?.cache,project:s.project});if(!Object.hasOwn(n,"dist-tags"))throw new Lt(15,'Registry returned invalid data - missing "dist-tags" field');let c=n["dist-tags"];if(!Object.hasOwn(c,a))throw new Lt(16,`Registry failed to return tag "${a}"`);let f=Object.keys(n.versions),p=n.time,h=c[a];if(a==="latest"&&!vw({configuration:s.project.configuration,ident:t,version:h,publishTimes:p})){let S=h.includes("-"),x=iN.default.rsort(f).find(I=>iN.default.lt(I,h)&&(S||!I.includes("-"))&&vw({configuration:s.project.configuration,ident:t,version:I,publishTimes:p}));if(!x)throw new Lt(16,`The version for tag "${a}" is quarantined, and no lower version is available`);h=x}let E=H.makeLocator(t,`${ti}${h}`),C=n.versions[h].dist.tarball;return ah.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?[E]:[H.bindLocator(E,{__archiveUrl:C})]}async getSatisfying(t,r,s,a){let n=[];for(let c of s){if(c.identHash!==t.identHash)continue;let f=H.tryParseRange(c.reference,{requireProtocol:ti});if(!(!f||!iN.default.valid(f.selector))){if(f.params?.__archiveUrl){let p=H.makeRange({protocol:ti,selector:f.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(H.makeDescriptor(t,p),r,a);if(c.reference!==h.reference)continue}n.push(c)}}return{locators:n,sorted:!1}}async resolve(t,r){throw new Error("Unreachable")}};var E1={};Vt(E1,{getGitHead:()=>tSt,getPublishAccess:()=>VDe,getReadmeContent:()=>KDe,makePublishBody:()=>eSt});Ge();Ge();bt();var aV={};Vt(aV,{PackCommand:()=>Lw,default:()=>Gmt,packUtils:()=>CA});Ge();Ge();Ge();bt();jt();var CA={};Vt(CA,{genPackList:()=>DN,genPackStream:()=>oV,genPackageManifest:()=>FBe,hasPackScripts:()=>iV,prepareForPack:()=>sV});Ge();bt();var nV=et(Zo()),TBe=et(PBe()),RBe=Ce("zlib"),Tmt=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],Rmt=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function iV(e){return!!(wn.hasWorkspaceScript(e,"prepack")||wn.hasWorkspaceScript(e,"postpack"))}async function sV(e,{report:t},r){await wn.maybeExecuteWorkspaceLifecycleScript(e,"prepack",{report:t});try{let s=Y.join(e.cwd,_t.fileName);await ae.existsPromise(s)&&await e.manifest.loadFile(s,{baseFs:ae}),await r()}finally{await wn.maybeExecuteWorkspaceLifecycleScript(e,"postpack",{report:t})}}async function oV(e,t){typeof t>"u"&&(t=await DN(e));let r=new Set;for(let n of e.manifest.publishConfig?.executableFiles??new Set)r.add(Y.normalize(n));for(let n of e.manifest.bin.values())r.add(Y.normalize(n));let s=TBe.default.pack();process.nextTick(async()=>{for(let n of t){let c=Y.normalize(n),f=Y.resolve(e.cwd,c),p=Y.join("package",c),h=await ae.lstatPromise(f),E={name:p,mtime:new Date(pi.SAFE_TIME*1e3)},C=r.has(c)?493:420,S,x,I=new Promise((N,U)=>{S=N,x=U}),R=N=>{N?x(N):S()};if(h.isFile()){let N;c==="package.json"?N=Buffer.from(JSON.stringify(await FBe(e),null,2)):N=await ae.readFilePromise(f),s.entry({...E,mode:C,type:"file"},N,R)}else h.isSymbolicLink()?s.entry({...E,mode:C,type:"symlink",linkname:await ae.readlinkPromise(f)},R):R(new Error(`Unsupported file type ${h.mode} for ${Ae.fromPortablePath(c)}`));await I}s.finalize()});let a=(0,RBe.createGzip)();return s.pipe(a),a}async function FBe(e){let t=JSON.parse(JSON.stringify(e.manifest.raw));return await e.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,e,t),t}async function DN(e){let t=e.project,r=t.configuration,s={accept:[],reject:[]};for(let C of Rmt)s.reject.push(C);for(let C of Tmt)s.accept.push(C);s.reject.push(r.get("rcFilename"));let a=C=>{if(C===null||!C.startsWith(`${e.cwd}/`))return;let S=Y.relative(e.cwd,C),x=Y.resolve(wt.root,S);s.reject.push(x)};a(Y.resolve(t.cwd,yr.lockfile)),a(r.get("cacheFolder")),a(r.get("globalFolder")),a(r.get("installStatePath")),a(r.get("virtualFolder")),a(r.get("yarnPath")),await r.triggerHook(C=>C.populateYarnPaths,t,C=>{a(C)});for(let C of t.workspaces){let S=Y.relative(e.cwd,C.cwd);S!==""&&!S.match(/^(\.\.)?\//)&&s.reject.push(`/${S}`)}let n={accept:[],reject:[]},c=e.manifest.publishConfig?.main??e.manifest.main,f=e.manifest.publishConfig?.module??e.manifest.module,p=e.manifest.publishConfig?.browser??e.manifest.browser,h=e.manifest.publishConfig?.bin??e.manifest.bin;c!=null&&n.accept.push(Y.resolve(wt.root,c)),f!=null&&n.accept.push(Y.resolve(wt.root,f)),typeof p=="string"&&n.accept.push(Y.resolve(wt.root,p));for(let C of h.values())n.accept.push(Y.resolve(wt.root,C));if(p instanceof Map)for(let[C,S]of p.entries())n.accept.push(Y.resolve(wt.root,C)),typeof S=="string"&&n.accept.push(Y.resolve(wt.root,S));let E=e.manifest.files!==null;if(E){n.reject.push("/*");for(let C of e.manifest.files)NBe(n.accept,C,{cwd:wt.root})}return await Fmt(e.cwd,{hasExplicitFileList:E,globalList:s,ignoreList:n})}async function Fmt(e,{hasExplicitFileList:t,globalList:r,ignoreList:s}){let a=[],n=new qf(e),c=[[wt.root,[s]]];for(;c.length>0;){let[f,p]=c.pop(),h=await n.lstatPromise(f);if(!kBe(f,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(f),C=!1,S=!1;if(!t||f!==wt.root)for(let R of E)C=C||R===".gitignore",S=S||R===".npmignore";let x=S?await xBe(n,f,".npmignore"):C?await xBe(n,f,".gitignore"):null,I=x!==null?[x].concat(p):p;kBe(f,{globalList:r,ignoreLists:p})&&(I=[...p,{accept:[],reject:["**/*"]}]);for(let R of E)c.push([Y.resolve(f,R),I])}else(h.isFile()||h.isSymbolicLink())&&a.push(Y.relative(wt.root,f))}return a.sort()}async function xBe(e,t,r){let s={accept:[],reject:[]},a=await e.readFilePromise(Y.join(t,r),"utf8");for(let n of a.split(/\n/g))NBe(s.reject,n,{cwd:t});return s}function Nmt(e,{cwd:t}){let r=e[0]==="!";return r&&(e=e.slice(1)),e.match(/\.{0,1}\//)&&(e=Y.resolve(t,e)),r&&(e=`!${e}`),e}function NBe(e,t,{cwd:r}){let s=t.trim();s===""||s[0]==="#"||e.push(Nmt(s,{cwd:r}))}function kBe(e,{globalList:t,ignoreLists:r}){let s=bN(e,t.accept);if(s!==0)return s===2;let a=bN(e,t.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let c=bN(e,n.accept);if(c!==0)return c===2;let f=bN(e,n.reject);if(f!==0)return f===1}return!1}function bN(e,t){let r=t,s=[];for(let a=0;a{await sV(a,{report:p},async()=>{p.reportJson({base:Ae.fromPortablePath(a.cwd)});let h=await DN(a);for(let E of h)p.reportInfo(null,Ae.fromPortablePath(E)),p.reportJson({location:Ae.fromPortablePath(E)});if(!this.dryRun){let E=await oV(a,h);await ae.mkdirPromise(Y.dirname(c),{recursive:!0});let C=ae.createWriteStream(c);E.pipe(C),await new Promise(S=>{C.on("finish",S)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${ue.pretty(r,c,ue.Type.PATH)}`),p.reportJson({output:Ae.fromPortablePath(c)}))})).exitCode()}};function Omt(e,{workspace:t}){let r=e.replace("%s",Lmt(t)).replace("%v",Mmt(t));return Ae.toPortablePath(r)}function Lmt(e){return e.manifest.name!==null?H.slugifyIdent(e.manifest.name):"package"}function Mmt(e){return e.manifest.version!==null?e.manifest.version:"unknown"}var Umt=["dependencies","devDependencies","peerDependencies"],_mt="workspace:",Hmt=(e,t)=>{t.publishConfig&&(t.publishConfig.type&&(t.type=t.publishConfig.type),t.publishConfig.main&&(t.main=t.publishConfig.main),t.publishConfig.browser&&(t.browser=t.publishConfig.browser),t.publishConfig.module&&(t.module=t.publishConfig.module),t.publishConfig.exports&&(t.exports=t.publishConfig.exports),t.publishConfig.imports&&(t.imports=t.publishConfig.imports),t.publishConfig.bin&&(t.bin=t.publishConfig.bin));let r=e.project;for(let s of Umt)for(let a of e.manifest.getForScope(s).values()){let n=r.tryWorkspaceByDescriptor(a),c=H.parseRange(a.range);if(c.protocol===_mt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new Lt(21,`${H.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let f;H.areDescriptorsEqual(a,n.anchoredDescriptor)||c.selector==="*"?f=n.manifest.version??"0.0.0":c.selector==="~"||c.selector==="^"?f=`${c.selector}${n.manifest.version??"0.0.0"}`:f=c.selector;let p=s==="dependencies"?H.makeDescriptor(a,"unknown"):null,h=p!==null&&e.manifest.ensureDependencyMeta(p).optional?"optionalDependencies":s;t[h][H.stringifyIdent(a)]=f}}},jmt={hooks:{beforeWorkspacePacking:Hmt},commands:[Lw]},Gmt=jmt;var WDe=et(qBe());Ge();var qDe=et(GDe()),{env:vt}=process,Yvt="application/vnd.in-toto+json",Wvt="https://in-toto.io/Statement/v0.1",Vvt="https://in-toto.io/Statement/v1",Kvt="https://slsa.dev/provenance/v0.2",Jvt="https://slsa.dev/provenance/v1",zvt="https://github.com/actions/runner",Zvt="https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1",Xvt="https://github.com/npm/cli/gitlab",$vt="v0alpha1",YDe=async(e,t)=>{let r;if(vt.GITHUB_ACTIONS){if(!vt.ACTIONS_ID_TOKEN_REQUEST_URL)throw new Lt(91,'Provenance generation in GitHub Actions requires "write" access to the "id-token" permission');let s=(vt.GITHUB_WORKFLOW_REF||"").replace(`${vt.GITHUB_REPOSITORY}/`,""),a=s.indexOf("@"),n=s.slice(0,a),c=s.slice(a+1);r={_type:Vvt,subject:e,predicateType:Jvt,predicate:{buildDefinition:{buildType:Zvt,externalParameters:{workflow:{ref:c,repository:`${vt.GITHUB_SERVER_URL}/${vt.GITHUB_REPOSITORY}`,path:n}},internalParameters:{github:{event_name:vt.GITHUB_EVENT_NAME,repository_id:vt.GITHUB_REPOSITORY_ID,repository_owner_id:vt.GITHUB_REPOSITORY_OWNER_ID}},resolvedDependencies:[{uri:`git+${vt.GITHUB_SERVER_URL}/${vt.GITHUB_REPOSITORY}@${vt.GITHUB_REF}`,digest:{gitCommit:vt.GITHUB_SHA}}]},runDetails:{builder:{id:`${zvt}/${vt.RUNNER_ENVIRONMENT}`},metadata:{invocationId:`${vt.GITHUB_SERVER_URL}/${vt.GITHUB_REPOSITORY}/actions/runs/${vt.GITHUB_RUN_ID}/attempts/${vt.GITHUB_RUN_ATTEMPT}`}}}}}else if(vt.GITLAB_CI){if(!vt.SIGSTORE_ID_TOKEN)throw new Lt(91,`Provenance generation in GitLab CI requires "SIGSTORE_ID_TOKEN" with "sigstore" audience to be present in "id_tokens". For more info see: +https://docs.gitlab.com/ee/ci/secrets/id_token_authentication.html`);r={_type:Wvt,subject:e,predicateType:Kvt,predicate:{buildType:`${Xvt}/${$vt}`,builder:{id:`${vt.CI_PROJECT_URL}/-/runners/${vt.CI_RUNNER_ID}`},invocation:{configSource:{uri:`git+${vt.CI_PROJECT_URL}`,digest:{sha1:vt.CI_COMMIT_SHA},entryPoint:vt.CI_JOB_NAME},parameters:{CI:vt.CI,CI_API_GRAPHQL_URL:vt.CI_API_GRAPHQL_URL,CI_API_V4_URL:vt.CI_API_V4_URL,CI_BUILD_BEFORE_SHA:vt.CI_BUILD_BEFORE_SHA,CI_BUILD_ID:vt.CI_BUILD_ID,CI_BUILD_NAME:vt.CI_BUILD_NAME,CI_BUILD_REF:vt.CI_BUILD_REF,CI_BUILD_REF_NAME:vt.CI_BUILD_REF_NAME,CI_BUILD_REF_SLUG:vt.CI_BUILD_REF_SLUG,CI_BUILD_STAGE:vt.CI_BUILD_STAGE,CI_COMMIT_BEFORE_SHA:vt.CI_COMMIT_BEFORE_SHA,CI_COMMIT_BRANCH:vt.CI_COMMIT_BRANCH,CI_COMMIT_REF_NAME:vt.CI_COMMIT_REF_NAME,CI_COMMIT_REF_PROTECTED:vt.CI_COMMIT_REF_PROTECTED,CI_COMMIT_REF_SLUG:vt.CI_COMMIT_REF_SLUG,CI_COMMIT_SHA:vt.CI_COMMIT_SHA,CI_COMMIT_SHORT_SHA:vt.CI_COMMIT_SHORT_SHA,CI_COMMIT_TIMESTAMP:vt.CI_COMMIT_TIMESTAMP,CI_COMMIT_TITLE:vt.CI_COMMIT_TITLE,CI_CONFIG_PATH:vt.CI_CONFIG_PATH,CI_DEFAULT_BRANCH:vt.CI_DEFAULT_BRANCH,CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX:vt.CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX:vt.CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_SERVER:vt.CI_DEPENDENCY_PROXY_SERVER,CI_DEPENDENCY_PROXY_USER:vt.CI_DEPENDENCY_PROXY_USER,CI_JOB_ID:vt.CI_JOB_ID,CI_JOB_NAME:vt.CI_JOB_NAME,CI_JOB_NAME_SLUG:vt.CI_JOB_NAME_SLUG,CI_JOB_STAGE:vt.CI_JOB_STAGE,CI_JOB_STARTED_AT:vt.CI_JOB_STARTED_AT,CI_JOB_URL:vt.CI_JOB_URL,CI_NODE_TOTAL:vt.CI_NODE_TOTAL,CI_PAGES_DOMAIN:vt.CI_PAGES_DOMAIN,CI_PAGES_URL:vt.CI_PAGES_URL,CI_PIPELINE_CREATED_AT:vt.CI_PIPELINE_CREATED_AT,CI_PIPELINE_ID:vt.CI_PIPELINE_ID,CI_PIPELINE_IID:vt.CI_PIPELINE_IID,CI_PIPELINE_SOURCE:vt.CI_PIPELINE_SOURCE,CI_PIPELINE_URL:vt.CI_PIPELINE_URL,CI_PROJECT_CLASSIFICATION_LABEL:vt.CI_PROJECT_CLASSIFICATION_LABEL,CI_PROJECT_DESCRIPTION:vt.CI_PROJECT_DESCRIPTION,CI_PROJECT_ID:vt.CI_PROJECT_ID,CI_PROJECT_NAME:vt.CI_PROJECT_NAME,CI_PROJECT_NAMESPACE:vt.CI_PROJECT_NAMESPACE,CI_PROJECT_NAMESPACE_ID:vt.CI_PROJECT_NAMESPACE_ID,CI_PROJECT_PATH:vt.CI_PROJECT_PATH,CI_PROJECT_PATH_SLUG:vt.CI_PROJECT_PATH_SLUG,CI_PROJECT_REPOSITORY_LANGUAGES:vt.CI_PROJECT_REPOSITORY_LANGUAGES,CI_PROJECT_ROOT_NAMESPACE:vt.CI_PROJECT_ROOT_NAMESPACE,CI_PROJECT_TITLE:vt.CI_PROJECT_TITLE,CI_PROJECT_URL:vt.CI_PROJECT_URL,CI_PROJECT_VISIBILITY:vt.CI_PROJECT_VISIBILITY,CI_REGISTRY:vt.CI_REGISTRY,CI_REGISTRY_IMAGE:vt.CI_REGISTRY_IMAGE,CI_REGISTRY_USER:vt.CI_REGISTRY_USER,CI_RUNNER_DESCRIPTION:vt.CI_RUNNER_DESCRIPTION,CI_RUNNER_ID:vt.CI_RUNNER_ID,CI_RUNNER_TAGS:vt.CI_RUNNER_TAGS,CI_SERVER_HOST:vt.CI_SERVER_HOST,CI_SERVER_NAME:vt.CI_SERVER_NAME,CI_SERVER_PORT:vt.CI_SERVER_PORT,CI_SERVER_PROTOCOL:vt.CI_SERVER_PROTOCOL,CI_SERVER_REVISION:vt.CI_SERVER_REVISION,CI_SERVER_SHELL_SSH_HOST:vt.CI_SERVER_SHELL_SSH_HOST,CI_SERVER_SHELL_SSH_PORT:vt.CI_SERVER_SHELL_SSH_PORT,CI_SERVER_URL:vt.CI_SERVER_URL,CI_SERVER_VERSION:vt.CI_SERVER_VERSION,CI_SERVER_VERSION_MAJOR:vt.CI_SERVER_VERSION_MAJOR,CI_SERVER_VERSION_MINOR:vt.CI_SERVER_VERSION_MINOR,CI_SERVER_VERSION_PATCH:vt.CI_SERVER_VERSION_PATCH,CI_TEMPLATE_REGISTRY_HOST:vt.CI_TEMPLATE_REGISTRY_HOST,GITLAB_CI:vt.GITLAB_CI,GITLAB_FEATURES:vt.GITLAB_FEATURES,GITLAB_USER_ID:vt.GITLAB_USER_ID,GITLAB_USER_LOGIN:vt.GITLAB_USER_LOGIN,RUNNER_GENERATE_ARTIFACTS_METADATA:vt.RUNNER_GENERATE_ARTIFACTS_METADATA},environment:{name:vt.CI_RUNNER_DESCRIPTION,architecture:vt.CI_RUNNER_EXECUTABLE_ARCH,server:vt.CI_SERVER_URL,project:vt.CI_PROJECT_PATH,job:{id:vt.CI_JOB_ID},pipeline:{id:vt.CI_PIPELINE_ID,ref:vt.CI_CONFIG_PATH}}},metadata:{buildInvocationId:`${vt.CI_JOB_URL}`,completeness:{parameters:!0,environment:!0,materials:!1},reproducible:!1},materials:[{uri:`git+${vt.CI_PROJECT_URL}`,digest:{sha1:vt.CI_COMMIT_SHA}}]}}}else throw new Lt(91,"Provenance generation is only supported in GitHub Actions and GitLab CI");return qDe.attest(Buffer.from(JSON.stringify(r)),Yvt,t)};async function eSt(e,t,{access:r,tag:s,registry:a,gitHead:n,provenance:c}){let f=e.manifest.name,p=e.manifest.version,h=H.stringifyIdent(f),E=WDe.default.fromData(t,{algorithms:["sha1","sha512"]}),C=r??VDe(e,f),S=await KDe(e),x=await CA.genPackageManifest(e),I=`${h}-${p}.tgz`,R=new URL(`${Kc(a)}/${h}/-/${I}`),N={[I]:{content_type:"application/octet-stream",data:t.toString("base64"),length:t.length}};if(c){let U={name:`pkg:npm/${h.replace(/^@/,"%40")}@${p}`,digest:{sha512:E.sha512[0].hexDigest()}},K=await YDe([U]),$=JSON.stringify(K);N[`${h}-${p}.sigstore`]={content_type:K.mediaType,data:$,length:$.length}}return{_id:h,_attachments:N,name:h,access:C,"dist-tags":{[s]:p},versions:{[p]:{...x,_id:`${h}@${p}`,name:h,version:p,gitHead:n,dist:{shasum:E.sha1[0].hexDigest(),integrity:E.sha512[0].toString(),tarball:R.toString()}}},readme:S}}async function tSt(e){try{let{stdout:t}=await Yr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:e});return t.trim()===""?void 0:t.trim()}catch{return}}function VDe(e,t){let r=e.project.configuration;return e.manifest.publishConfig&&typeof e.manifest.publishConfig.access=="string"?e.manifest.publishConfig.access:r.get("npmPublishAccess")!==null?r.get("npmPublishAccess"):t.scope?"restricted":"public"}async function KDe(e){let t=Ae.toPortablePath(`${e.cwd}/README.md`),r=e.manifest.name,a=`# ${H.stringifyIdent(r)} +`;try{a=await ae.readFilePromise(t,"utf8")}catch(n){if(n.code==="ENOENT")return a;throw n}return a}var pJ={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},JDe={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},zDe={npmMinimalAgeGate:{description:"Minimum age of a package version according to the publish date on the npm registry to be considered for installation",type:"DURATION",unit:"m",default:"1d"}},rSt={npmPreapprovedPackages:{description:"Array of package descriptors or package name glob patterns to exclude from the minimum release age check",type:"STRING",isArray:!0,default:[]}},nSt={configuration:{...pJ,...JDe,...zDe,...rSt,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...pJ,...JDe,...zDe}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:Kc,valueDefinition:{description:"",type:"SHAPE",properties:{...pJ}}}},fetchers:[$b,ah],resolvers:[eD,tD,rD]},iSt=nSt;var vJ={};Vt(vJ,{NpmAuditCommand:()=>C1,NpmInfoCommand:()=>w1,NpmLoginCommand:()=>B1,NpmLogoutCommand:()=>S1,NpmPublishCommand:()=>b1,NpmStageApproveCommand:()=>D1,NpmStageListCommand:()=>P1,NpmStageRejectCommand:()=>x1,NpmTagAddCommand:()=>Q1,NpmTagListCommand:()=>k1,NpmTagRemoveCommand:()=>T1,NpmWhoamiCommand:()=>R1,default:()=>mSt,npmAuditTypes:()=>tP,npmAuditUtils:()=>wL});Ge();Ge();jt();var EJ=et(Zo());Jo();var tP={};Vt(tP,{Environment:()=>$D,Severity:()=>eP});var $D=(s=>(s.All="all",s.Production="production",s.Development="development",s))($D||{}),eP=(n=>(n.Info="info",n.Low="low",n.Moderate="moderate",n.High="high",n.Critical="critical",n))(eP||{});var wL={};Vt(wL,{allSeverities:()=>I1,getPackages:()=>yJ,getReportTree:()=>gJ,getSeverityInclusions:()=>dJ,getTopLevelDependencies:()=>mJ});Ge();var ZDe=et(hi());var I1=["info","low","moderate","high","critical"];function dJ(e){if(typeof e>"u")return new Set(I1);let t=I1.indexOf(e),r=I1.slice(t);return new Set(r)}function gJ(e){let t={},r={children:t};for(let[s,a]of qe.sortMap(Object.entries(e),n=>n[0]))for(let n of qe.sortMap(a,c=>`${c.id}`))t[`${s}/${n.id}`]={value:ue.tuple(ue.Type.IDENT,H.parseIdent(s)),children:{ID:typeof n.id<"u"&&{label:"ID",value:ue.tuple(ue.Type.ID,n.id)},Issue:{label:"Issue",value:ue.tuple(ue.Type.NO_HINT,n.title)},URL:typeof n.url<"u"&&{label:"URL",value:ue.tuple(ue.Type.URL,n.url)},Severity:{label:"Severity",value:ue.tuple(ue.Type.NO_HINT,n.severity)},"Vulnerable Versions":{label:"Vulnerable Versions",value:ue.tuple(ue.Type.RANGE,n.vulnerable_versions)},"Tree Versions":{label:"Tree Versions",children:[...n.versions].sort(ZDe.default.compare).map(c=>({value:ue.tuple(ue.Type.REFERENCE,c)}))},Dependents:{label:"Dependents",children:qe.sortMap(n.dependents,c=>H.stringifyLocator(c)).map(c=>({value:ue.tuple(ue.Type.LOCATOR,c)}))}}};return r}function mJ(e,t,{all:r,environment:s}){let a=[],n=r?e.workspaces:[t],c=["all","production"].includes(s),f=["all","development"].includes(s);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!f:!c)||a.push({workspace:p,dependency:h});return a}function yJ(e,t,{recursive:r}){let s=new Map,a=new Set,n=[],c=e.configuration.makeResolver(),f={project:e,resolver:c},p=(h,E)=>{let C=e.storedResolutions.get(E.descriptorHash);if(typeof C>"u")throw new Error("Assertion failed: The resolution should have been registered");if(!a.has(C))a.add(C);else return;let S=e.storedPackages.get(C);if(typeof S>"u")throw new Error("Assertion failed: The package should have been registered");let x=H.ensureDevirtualizedDescriptor(E);if(c.supportsDescriptor(x,f)){let R=c.getResolutionDependencies(x,f);if(Object.keys(R).length>0)for(let N of Object.values(R))p(h,N)}if(H.ensureDevirtualizedLocator(S).reference.startsWith("npm:")&&S.version!==null){let R=H.stringifyIdent(S),N=qe.getMapWithDefault(s,R);qe.getArrayWithDefault(N,S.version).push(h)}if(r)for(let R of S.dependencies.values())n.push([S,R])};for(let{workspace:h,dependency:E}of t)n.push([h.anchoredLocator,E]);for(;n.length>0;){let[h,E]=n.shift();p(h,E)}return s}var C1=class extends ft{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=he.String("--environment","all",{description:"Which environments to cover",validator:Qs($D)});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.noDeprecations=he.Boolean("--no-deprecations",!1,{description:"Don't warn about deprecated packages"});this.severity=he.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validator:Qs(eP)});this.excludes=he.Array("--exclude",[],{description:"Array of glob patterns of packages to exclude from audit"});this.ignores=he.Array("--ignore",[],{description:"Array of glob patterns of advisory ID's to ignore in the audit report"})}static{this.paths=[["npm","audit"]]}static{this.usage=st.Usage({description:"perform a vulnerability audit against the installed packages",details:` + This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). + + For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. + + Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${I1.map(r=>`\`${r}\``).join(", ")}. + + If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. + + If certain packages produce false positives for a particular environment, the \`--exclude\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \`npmAuditExcludePackages\` option. + + If particular advisories are needed to be ignored, the \`--ignore\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \`npmAuditIgnoreAdvisories\` option. + + To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why package\` to get more information as to who depends on them. + `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=mJ(s,a,{all:this.all,environment:this.environment}),c=yJ(s,n,{recursive:this.recursive}),f=Array.from(new Set([...r.get("npmAuditExcludePackages"),...this.excludes])),p=Object.create(null);for(let[N,U]of c)f.some(K=>EJ.default.isMatch(N,K))||(p[N]=[...U.keys()]);let h=gn.getAuditRegistry({configuration:r}),E,C=await fA.start({configuration:r,stdout:this.context.stdout},async()=>{let N=Qr.post("/-/npm/v1/security/advisories/bulk",p,{authType:Qr.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([$,ie])=>{let fe=await Qr.getPackageMetadata(H.parseIdent($),{project:s});return qe.mapAndFilter(ie,le=>{let{deprecated:ge}=fe.versions[le];return ge?[$,le,ge]:qe.mapAndFilter.skip})})),K=await N;for(let[$,ie,fe]of U.flat(1))Object.hasOwn(K,$)&&K[$].some(le=>kr.satisfiesWithPrereleases(ie,le.vulnerable_versions))||(K[$]??=[],K[$].push({id:`${$} (deprecation)`,title:(typeof fe=="string"?fe:"").trim()||"This package has been deprecated.",severity:"moderate",vulnerable_versions:ie}));E=K});if(C.hasErrors())return C.exitCode();let S=dJ(this.severity),x=Array.from(new Set([...r.get("npmAuditIgnoreAdvisories"),...this.ignores])),I=Object.create(null);for(let[N,U]of Object.entries(E)){let K=U.filter($=>!EJ.default.isMatch(`${$.id}`,x)&&S.has($.severity));K.length>0&&(I[N]=K.map($=>{let ie=c.get(N);if(typeof ie>"u")throw new Error("Assertion failed: Expected the registry to only return packages that were requested");let fe=[...ie.keys()].filter(ge=>kr.satisfiesWithPrereleases(ge,$.vulnerable_versions)),le=new Map;for(let ge of fe)for(let pe of ie.get(ge))le.set(pe.locatorHash,pe);return{...$,versions:fe,dependents:[...le.values()]}}))}let R=Object.keys(I).length>0;return R?(ts.emitTree(gJ(I),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ft.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async N=>{N.reportInfo(1,"No audit suggestions")}),R?1:0)}};Ge();Ge();bt();jt();var IJ=et(hi()),CJ=Ce("util"),w1=class extends ft{constructor(){super(...arguments);this.fields=he.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=he.Rest()}static{this.paths=[["npm","info"]]}static{this.usage=st.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],c=!1,f=await Ft.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h==="."){let ie=s.topLevelWorkspace;if(!ie.manifest.name)throw new ot(`Missing ${ue.pretty(r,"name",ue.Type.CODE)} field in ${Ae.fromPortablePath(Y.join(ie.cwd,yr.manifest))}`);E=H.makeDescriptor(ie.manifest.name,"unknown")}else E=H.parseDescriptor(h);let C=Qr.getIdentUrl(E),S=wJ(await Qr.get(C,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:Qr.customPackageError})),x=Object.keys(S.versions).sort(IJ.default.compareLoose),R=S["dist-tags"].latest||x[x.length-1],N=kr.validRange(E.range);if(N){let ie=IJ.default.maxSatisfying(x,N);ie!==null?R=ie:(p.reportWarning(0,`Unmet range ${H.prettyRange(r,E.range)}; falling back to the latest version`),c=!0)}else Object.hasOwn(S["dist-tags"],E.range)?R=S["dist-tags"][E.range]:E.range!=="unknown"&&(p.reportWarning(0,`Unknown tag ${H.prettyRange(r,E.range)}; falling back to the latest version`),c=!0);let U=S.versions[R],K={...S,...U,version:R,versions:x},$;if(a!==null){$={};for(let ie of a){let fe=K[ie];if(typeof fe<"u")$[ie]=fe;else{p.reportWarning(1,`The ${ue.pretty(r,ie,ue.Type.CODE)} field doesn't exist inside ${H.prettyIdent(r,E)}'s information`),c=!0;continue}}}else this.json||(delete K.dist,delete K.readme,delete K.users),$=K;p.reportJson($),this.json||n.push($)}});CJ.inspect.styles.name="cyan";for(let p of n)(p!==n[0]||c)&&this.context.stdout.write(` +`),this.context.stdout.write(`${(0,CJ.inspect)(p,{depth:1/0,colors:!0,compact:!1})} +`);return f.exitCode()}};function wJ(e){if(Array.isArray(e)){let t=[];for(let r of e)r=wJ(r),r&&t.push(r);return t}else if(typeof e=="object"&&e!==null){let t={};for(let r of Object.keys(e)){if(r.startsWith("_"))continue;let s=wJ(e[r]);s&&(t[r]=s)}return t}else return e||null}Ge();Ge();jt();var BJ=et(Xv()),B1=class extends ft{constructor(){super(...arguments);this.scope=he.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=he.Boolean("--publish",!1,{description:"Login to the publish registry"});this.alwaysAuth=he.Boolean("--always-auth",{description:"Set the npmAlwaysAuth configuration"});this.webLogin=he.Boolean("--web-login",{description:"Enable web login"})}static{this.paths=[["npm","login"]]}static{this.usage=st.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),s=await BL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ft.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let c=await cSt({registry:s,configuration:r,report:n,webLogin:this.webLogin,stdin:this.context.stdin,stdout:this.context.stdout});return await fSt(s,c,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,"Successfully logged in")})).exitCode()}};async function BL({scope:e,publish:t,configuration:r,cwd:s}){return e&&t?gn.getScopeRegistry(e,{configuration:r,type:gn.RegistryType.PUBLISH_REGISTRY}):e?gn.getScopeRegistry(e,{configuration:r}):t?gn.getPublishRegistry((await VI(r,s)).manifest,{configuration:r}):gn.getDefaultRegistry({configuration:r})}async function sSt(e,t){let r;try{r=await Qr.post("/-/v1/login",null,{configuration:t,registry:e,authType:Qr.AuthType.NO_AUTH,jsonResponse:!0,headers:{"npm-auth-type":"web"}})}catch{return null}return r}async function oSt(e,t){let r=await nn.request(e,null,{configuration:t,jsonResponse:!0});if(r.statusCode===202){let s=r.headers["retry-after"]??"1";return{type:"waiting",sleep:parseInt(s,10)}}return r.statusCode===200?{type:"success",token:r.body.token}:null}async function aSt({registry:e,configuration:t,report:r}){let s=await sSt(e,t);if(!s)return null;if(Ui.openUrl){r.reportInfo(0,"Starting the web login process..."),r.reportSeparator();let{openNow:a}=await(0,BJ.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open your browser now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});r.reportSeparator(),(!a||!await Ui.openUrl(s.loginUrl))&&(r.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice:"),r.reportWarning(0,ue.pretty(t,s.loginUrl,ue.Type.URL)),r.reportSeparator())}for(;;){let a=await oSt(s.doneUrl,t);if(a===null)return null;if(a.type==="waiting")await new Promise(n=>setTimeout(n,a.sleep*1e3));else return a.token}}var lSt=["https://registry.yarnpkg.com","https://registry.npmjs.org"];async function cSt(e){if(e.webLogin??lSt.includes(e.registry)){let t=await aSt(e);if(t!==null)return t}return await uSt(e)}async function uSt({registry:e,configuration:t,report:r,stdin:s,stdout:a}){let n=await ASt({configuration:t,registry:e,report:r,stdin:s,stdout:a}),c=`/-/user/org.couchdb.user:${encodeURIComponent(n.name)}`,f={_id:`org.couchdb.user:${n.name}`,name:n.name,password:n.password,type:"user",roles:[],date:new Date().toISOString()},p={attemptedAs:n.name,configuration:t,registry:e,jsonResponse:!0,authType:Qr.AuthType.NO_AUTH};try{return(await Qr.put(c,f,p)).token}catch(x){if(!(x.originalError?.name==="HTTPError"&&x.originalError?.response.statusCode===409))throw x}let h={...p,authType:Qr.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${n.name}:${n.password}`).toString("base64")}`}},E=await Qr.get(c,h);for(let[x,I]of Object.entries(E))(!f[x]||x==="roles")&&(f[x]=I);let C=`${c}/-rev/${f._rev}`;return(await Qr.put(C,f,h)).token}async function fSt(e,t,{alwaysAuth:r,scope:s}){let a=c=>f=>{let p=qe.isIndexableObject(f)?f:{},h=p[c],E=qe.isIndexableObject(h)?h:{};return{...p,[c]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:t}}},n=s?{npmScopes:a(s)}:{npmRegistries:a(e)};return await Je.updateHomeConfiguration(n)}async function ASt({configuration:e,registry:t,report:r,stdin:s,stdout:a}){r.reportInfo(0,`Logging in to ${ue.pretty(e,t,ue.Type.URL)}`);let n=!1;if(t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(r.reportInfo(0,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),r.reportSeparator(),e.env.YARN_IS_TEST_ENV)return{name:e.env.YARN_INJECT_NPM_USER||"",password:e.env.YARN_INJECT_NPM_PASSWORD||""};let c=await(0,BJ.prompt)([{type:"input",name:"name",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a}]);return r.reportSeparator(),c}Ge();Ge();jt();var v1=new Set(["npmAuthIdent","npmAuthToken"]),S1=class extends ft{constructor(){super(...arguments);this.scope=he.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=he.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=he.Boolean("-A,--all",!1,{description:"Logout of all registries"})}static{this.paths=[["npm","logout"]]}static{this.usage=st.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),s=async()=>{let n=await BL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),c=await Je.find(this.context.cwd,this.context.plugins),f=H.makeIdent(this.scope??null,"pkg");return!gn.getAuthConfiguration(n,{configuration:c,ident:f}).get("npmAuthToken")};return(await Ft.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await hSt(),n.reportInfo(0,"Successfully logged out from everything")),this.scope){await XDe("npmScopes",this.scope),await s()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,"Scope authentication settings removed, but some other ones settings still apply to it");return}let c=await BL({configuration:r,cwd:this.context.cwd,publish:this.publish});await XDe("npmRegistries",c),await s()?n.reportInfo(0,`Successfully logged out from ${c}`):n.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};function pSt(e,t){let r=e[t];if(!qe.isIndexableObject(r))return!1;let s=new Set(Object.keys(r));if([...v1].every(n=>!s.has(n)))return!1;for(let n of v1)s.delete(n);if(s.size===0)return e[t]=void 0,!0;let a={...r};for(let n of v1)delete a[n];return e[t]=a,!0}async function hSt(){let e=t=>{let r=!1,s=qe.isIndexableObject(t)?{...t}:{};s.npmAuthToken&&(delete s.npmAuthToken,r=!0);for(let a of Object.keys(s))pSt(s,a)&&(r=!0);if(Object.keys(s).length!==0)return r?s:t};return await Je.updateHomeConfiguration({npmRegistries:e,npmScopes:e})}async function XDe(e,t){return await Je.updateHomeConfiguration({[e]:r=>{let s=qe.isIndexableObject(r)?r:{};if(!Object.hasOwn(s,t))return r;let a=s[t],n=qe.isIndexableObject(a)?a:{},c=new Set(Object.keys(n));if([...v1].every(p=>!c.has(p)))return r;for(let p of v1)c.delete(p);if(c.size===0)return Object.keys(s).length===1?void 0:{...s,[t]:void 0};let f={};for(let p of v1)f[p]=void 0;return{...s,[t]:{...n,...f}}}})}Ge();bt();jt();var b1=class extends ft{constructor(){super(...arguments);this.access=he.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=he.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=he.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=he.String("--otp",{description:"The OTP token to use with the command"});this.provenance=he.Boolean("--provenance",{description:"Generate provenance for the package. Only available in GitHub Actions and GitLab CI. Can be set globally through the `npmPublishProvenance` setting or the `YARN_NPM_CONFIG_PROVENANCE` environment variable, or per-package through the `publishConfig.provenance` field in package.json."});this.dryRun=he.Boolean("-n,--dry-run",!1,{description:"Show what would be published without actually publishing"});this.json=he.Boolean("--json",!1,{description:"Output the result in JSON format"});this.staged=he.Boolean("--staged",!1,{description:"Stage the package for later approval instead of publishing it immediately"})}static{this.paths=[["npm","publish"]]}static{this.usage=st.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overridden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n\n If the `--staged` flag is set, the package will be staged for later approval instead of being published immediately. Staged publishing does not require 2FA, allowing automated workflows to stage packages while deferring proof-of-presence to the approval step. Use `yarn npm stage list`, `yarn npm stage approve`, and `yarn npm stage reject` to manage staged packages.\n ',examples:[["Publish the active workspace","yarn npm publish"],["Stage the active workspace for later approval","yarn npm publish --staged"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);if(a.manifest.private)throw new ot("Private workspaces cannot be published");if(a.manifest.name===null||a.manifest.version===null)throw new ot("Workspaces must have valid names and versions to be published on an external registry");await s.restoreInstallState();let n=a.manifest.name,c=a.manifest.version,f=gn.getPublishRegistry(a.manifest,{configuration:r});return(await Ft.start({configuration:r,stdout:this.context.stdout,json:this.json},async h=>{let E=this.staged?"Staging":"Publishing",C=ue.pretty(r,f,ue.Type.URL);if(h.reportInfo(0,`${E} to ${C} with tag ${this.tag}`),this.tolerateRepublish)try{let S=await Qr.get(Qr.getIdentUrl(n),{configuration:r,registry:f,ident:n,jsonResponse:!0});if(!Object.hasOwn(S,"versions"))throw new Lt(15,'Registry returned invalid data for - missing "versions" field');if(Object.hasOwn(S.versions,c)){let x=`Registry already knows about version ${c}; skipping.`;h.reportWarning(0,x),h.reportJson({name:H.stringifyIdent(n),version:c,registry:f,warning:x,skipped:!0});return}}catch(S){if(S.originalError?.response?.statusCode!==404)throw S}await wn.maybeExecuteWorkspaceLifecycleScript(a,"prepublish",{report:h}),await CA.prepareForPack(a,{report:h},async()=>{let S=await CA.genPackList(a);for(let fe of S)h.reportInfo(null,Ae.fromPortablePath(fe)),h.reportJson({file:Ae.fromPortablePath(fe)});let x=await CA.genPackStream(a,S),I=await qe.bufferStream(x),R=await E1.getGitHead(a.cwd),N=!1,U="";this.provenance?(N=!0,U=`Generating provenance statement because the ${ue.pretty(r,"--provenance",ue.Type.CODE)} flag is set.`):this.provenance===!1?(N=!1,U=`Skipping provenance statement because the ${ue.pretty(r,"--no-provenance",ue.Type.CODE)} flag is set.`):a.manifest.publishConfig&&"provenance"in a.manifest.publishConfig?(N=!!a.manifest.publishConfig.provenance,U=N?`Generating provenance statement because the ${ue.pretty(r,"publishConfig.provenance",ue.Type.CODE)} field is set.`:`Skipping provenance statement because the ${ue.pretty(r,"publishConfig.provenance",ue.Type.CODE)} field is set to false.`):r.get("npmPublishProvenance")&&(N=!0,U=`Generating provenance statement because the ${ue.pretty(r,"npmPublishProvenance",ue.Type.CODE)} setting is set.`),U&&(h.reportInfo(null,U),h.reportJson({type:"provenance",enabled:N,provenanceMessage:U}));let K=await E1.makePublishBody(a,I,{access:this.access,tag:this.tag,registry:f,gitHead:R,provenance:N}),$;if(!this.dryRun)if(this.staged){let fe=`/-/stage/package${Qr.getIdentUrl(n)}`;$=(await Qr.post(fe,K,{configuration:r,registry:f,ident:n,jsonResponse:!0,allowOidc:!!(process.env.CI&&(process.env.GITHUB_ACTIONS||process.env.GITLAB_CI||process.env.CIRCLECI))})).stageId}else await Qr.put(Qr.getIdentUrl(n),K,{configuration:r,registry:f,ident:n,otp:this.otp,jsonResponse:!0,allowOidc:!!(process.env.CI&&(process.env.GITHUB_ACTIONS||process.env.GITLAB_CI||process.env.CIRCLECI))});let ie=this.dryRun?this.staged?"Package archive not staged (dry run)":"Package archive not published (dry run)":this.staged?`Package archive staged for approval${$?` (run ${ue.pretty(r,`yarn npm stage approve ${$}`,ue.Type.CODE)} to approve)`:""}`:"Package archive published";h.reportInfo(0,ie),h.reportJson({name:H.stringifyIdent(n),version:c,registry:f,tag:this.tag||"latest",files:S.map(fe=>Ae.fromPortablePath(fe)),access:this.access||null,dryRun:this.dryRun,staged:this.staged,published:!this.dryRun&&!this.staged,...$&&{stageId:$},message:ie,provenance:!!N})})})).exitCode()}};Ge();jt();Jo();var D1=class extends ft{constructor(){super(...arguments);this.stageId=he.String({validator:ld(Jf(),[Sp(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i)])});this.otp=he.String("--otp",{description:"The OTP token to use with the command"})}static{this.paths=[["npm","stage","approve"]]}static{this.usage=st.Usage({category:"Npm-related commands",description:"approve a staged package version for publishing",details:"\n This command will approve a staged package version, publishing it to the npm registry. This operation requires 2FA and will prompt for an OTP token if one is not provided via the `--otp` flag.\n ",examples:[["Approve a staged package","yarn npm stage approve 1de6f3db-2ed9-4d72-b3dd-8f0e2b474a2f"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),s=gn.getDefaultRegistry({configuration:r,type:gn.RegistryType.PUBLISH_REGISTRY});return(await Ft.start({configuration:r,stdout:this.context.stdout},async n=>{let c=ue.pretty(r,this.stageId,ue.Type.CODE);n.reportInfo(0,`Approving staged package ${ue.pretty(r,c,ue.Type.CODE)}...`),n.reportSeparator(),await Qr.post(`/-/stage/${this.stageId}/approve`,null,{configuration:r,registry:s,otp:this.otp,jsonResponse:!0,authType:Qr.AuthType.ALWAYS_AUTH}),n.reportInfo(0,`Staged package ${ue.pretty(r,c,ue.Type.CODE)} approved and published successfully.`)})).exitCode()}};Ge();jt();var P1=class extends ft{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=he.String({required:!1})}static{this.paths=[["npm","stage","list"]]}static{this.usage=st.Usage({category:"Npm-related commands",description:"list all staged package versions",details:` + This command will list all staged package versions awaiting approval on the npm registry. + + If a package name is provided, only staged versions of that package will be listed. + `,examples:[["List all staged packages","yarn npm stage list"],["List staged versions of a specific package","yarn npm stage list my-pkg"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),s=gn.getDefaultRegistry({configuration:r,type:gn.RegistryType.PUBLISH_REGISTRY}),a=await dSt(r,s,this.package??void 0);if(await Ft.start({configuration:r,stdout:this.context.stdout,json:this.json,includeFooter:!1,includePrefix:!1},async c=>{a.length>0?(c.reportInfo(0,`The following packages are awaiting approval. Use ${ue.pretty(r,"yarn npm stage approve ",ue.Type.CODE)} to approve them.`),c.reportSeparator()):this.package?c.reportInfo(0,`No staged versions found for package ${this.package}`):c.reportInfo(0,"No staged packages found")}),a.length===0)return;let n={children:a.map(c=>{let f=H.parseIdent(c.packageName);return{value:ue.tuple(ue.Type.RESOLUTION,{descriptor:H.makeDescriptor(f,c.tag),locator:H.makeLocator(f,c.version)}),children:{ID:{label:"ID",value:ue.tuple(ue.Type.CODE,c.id)},Staged:{label:"Staged on",value:ue.tuple(ue.Type.NO_HINT,c.createdAt)}}}})};ts.emitTree(n,{configuration:r,json:this.json,stdout:this.context.stdout,separators:1})}};async function dSt(e,t,r){let s=[],a=0,n=100;for(;;){let c={page:String(a),perPage:String(n)};r&&(c.package=r);let f=new URLSearchParams(c).toString(),p=await Qr.get(`/-/stage?${f}`,{configuration:e,registry:t,jsonResponse:!0,authType:Qr.AuthType.ALWAYS_AUTH});if(s.push(...p.items),s.length>=p.total||p.items.length{let c=ue.pretty(r,this.stageId,ue.Type.CODE);n.reportInfo(0,`Rejecting staged package ${ue.pretty(r,c,ue.Type.CODE)}...`),n.reportSeparator(),await Qr.del(`/-/stage/${this.stageId}`,{configuration:r,registry:s,otp:this.otp,authType:Qr.AuthType.ALWAYS_AUTH}),n.reportInfo(0,`Staged package ${ue.pretty(r,c,ue.Type.CODE)} has been rejected.`)})).exitCode()}};Ge();jt();var $De=et(hi());Ge();bt();jt();var k1=class extends ft{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=he.String({required:!1})}static{this.paths=[["npm","tag","list"]]}static{this.usage=st.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` + This command will list all tags of a package from the npm registry. + + If the package is not specified, Yarn will default to the current workspace. + `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n;if(typeof this.package<"u")n=H.parseIdent(this.package);else{if(!a)throw new ar(s.cwd,this.context.cwd);if(!a.manifest.name)throw new ot(`Missing 'name' field in ${Ae.fromPortablePath(Y.join(a.cwd,yr.manifest))}`);n=a.manifest.name}let c=await rP(n,r),p={children:qe.sortMap(Object.entries(c),([h])=>h).map(([h,E])=>({value:ue.tuple(ue.Type.RESOLUTION,{descriptor:H.makeDescriptor(n,h),locator:H.makeLocator(n,E)})}))};return ts.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};async function rP(e,t){let r=`/-/package${Qr.getIdentUrl(e)}/dist-tags`;return Qr.get(r,{configuration:t,ident:e,jsonResponse:!0,customErrorMessage:Qr.customPackageError})}var Q1=class extends ft{constructor(){super(...arguments);this.package=he.String();this.tag=he.String()}static{this.paths=[["npm","tag","add"]]}static{this.usage=st.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` + This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. + `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=H.parseDescriptor(this.package,!0),c=n.range;if(!$De.default.valid(c))throw new ot(`The range ${ue.pretty(r,n.range,ue.Type.RANGE)} must be a valid semver version`);let f=gn.getPublishRegistry(a.manifest,{configuration:r}),p=ue.pretty(r,n,ue.Type.IDENT),h=ue.pretty(r,c,ue.Type.RANGE),E=ue.pretty(r,this.tag,ue.Type.CODE);return(await Ft.start({configuration:r,stdout:this.context.stdout},async S=>{let x=await rP(n,r);Object.hasOwn(x,this.tag)&&x[this.tag]===c&&S.reportWarning(0,`Tag ${E} is already set to version ${h}`);let I=`/-/package${Qr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Qr.put(I,c,{configuration:r,registry:f,ident:n,jsonRequest:!0,jsonResponse:!0}),S.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};Ge();jt();var T1=class extends ft{constructor(){super(...arguments);this.package=he.String();this.tag=he.String()}static{this.paths=[["npm","tag","remove"]]}static{this.usage=st.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` + This command will remove a tag from a package from the npm registry. + `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]})}async execute(){if(this.tag==="latest")throw new ot("The 'latest' tag cannot be removed.");let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=H.parseIdent(this.package),c=gn.getPublishRegistry(a.manifest,{configuration:r}),f=ue.pretty(r,this.tag,ue.Type.CODE),p=ue.pretty(r,n,ue.Type.IDENT),h=await rP(n,r);if(!Object.hasOwn(h,this.tag))throw new ot(`${f} is not a tag of package ${p}`);return(await Ft.start({configuration:r,stdout:this.context.stdout},async C=>{let S=`/-/package${Qr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Qr.del(S,{configuration:r,registry:c,ident:n,jsonResponse:!0}),C.reportInfo(0,`Tag ${f} removed from package ${p}`)})).exitCode()}};Ge();Ge();jt();var R1=class extends ft{constructor(){super(...arguments);this.scope=he.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=he.Boolean("--publish",!1,{description:"Print username for the publish registry"})}static{this.paths=[["npm","whoami"]]}static{this.usage=st.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),s;return this.scope&&this.publish?s=gn.getScopeRegistry(this.scope,{configuration:r,type:gn.RegistryType.PUBLISH_REGISTRY}):this.scope?s=gn.getScopeRegistry(this.scope,{configuration:r}):this.publish?s=gn.getPublishRegistry((await VI(r,this.context.cwd)).manifest,{configuration:r}):s=gn.getDefaultRegistry({configuration:r}),(await Ft.start({configuration:r,stdout:this.context.stdout},async n=>{let c;try{c=await Qr.get("/-/whoami",{configuration:r,registry:s,authType:Qr.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?H.makeIdent(this.scope,""):void 0})}catch(f){if(f.response?.statusCode===401||f.response?.statusCode===403){n.reportError(41,"Authentication failed - your credentials may have expired");return}else throw f}n.reportInfo(0,c.username)})).exitCode()}};var gSt={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmPublishProvenance:{description:"Whether to generate provenance for the published packages",type:"BOOLEAN",default:!1},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[C1,w1,B1,S1,b1,D1,P1,x1,Q1,k1,T1,R1]},mSt=gSt;var QJ={};Vt(QJ,{PatchCommand:()=>U1,PatchCommitCommand:()=>M1,PatchFetcher:()=>aP,PatchResolver:()=>lP,default:()=>OSt,patchUtils:()=>Cy});Ge();Ge();bt();iA();var Cy={};Vt(Cy,{applyPatchFile:()=>SL,diffFolders:()=>xJ,ensureUnpatchedDescriptor:()=>SJ,ensureUnpatchedLocator:()=>DL,extractPackageToDisk:()=>PJ,extractPatchFlags:()=>oPe,isParentRequired:()=>DJ,isPatchDescriptor:()=>bL,isPatchLocator:()=>Fg,loadPatchFiles:()=>oP,makeDescriptor:()=>PL,makeLocator:()=>bJ,makePatchHash:()=>kJ,parseDescriptor:()=>iP,parseLocator:()=>sP,parsePatchFile:()=>nP,unpatchDescriptor:()=>TSt,unpatchLocator:()=>RSt});Ge();bt();Ge();bt();var ySt=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function F1(e){return Y.relative(wt.root,Y.resolve(wt.root,Ae.toPortablePath(e)))}function ESt(e){let t=e.trim().match(ySt);if(!t)throw new Error(`Bad header line: '${e}'`);return{original:{start:Math.max(Number(t[1]),1),length:Number(t[3]||1)},patched:{start:Math.max(Number(t[4]),1),length:Number(t[6]||1)}}}var ISt=420,CSt=493;var ePe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),wSt=e=>({header:ESt(e),parts:[]}),BSt={"@":"header","-":"deletion","+":"insertion"," ":"context","\\":"pragma",undefined:"context"};function vSt(e){let t=[],r=ePe(),s="parsing header",a=null,n=null;function c(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function f(){c(),t.push(r),r=ePe()}for(let p=0;p0?"patch":"mode change",K=null;switch(U){case"rename":{if(!E||!C)throw new Error("Bad parser state: rename from & to not given");t.push({type:"rename",semverExclusivity:s,fromPath:F1(E),toPath:F1(C)}),K=C}break;case"file deletion":{let $=a||I;if(!$)throw new Error("Bad parse state: no path given for file deletion");t.push({type:"file deletion",semverExclusivity:s,hunk:N&&N[0]||null,path:F1($),mode:vL(p),hash:S})}break;case"file creation":{let $=n||R;if(!$)throw new Error("Bad parse state: no path given for file creation");t.push({type:"file creation",semverExclusivity:s,hunk:N&&N[0]||null,path:F1($),mode:vL(h),hash:x})}break;case"patch":case"mode change":K=R||n;break;default:qe.assertNever(U);break}K&&c&&f&&c!==f&&t.push({type:"mode change",semverExclusivity:s,path:F1(K),oldMode:vL(c),newMode:vL(f)}),K&&N&&N.length&&t.push({type:"patch",semverExclusivity:s,path:F1(K),hunks:N,beforeHash:S,afterHash:x})}if(t.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return t}function vL(e){let t=parseInt(e,8)&511;if(t!==ISt&&t!==CSt)throw new Error(`Unexpected file mode string: ${e}`);return t}function nP(e){let t=e.split(/\n/g);return t[t.length-1]===""&&t.pop(),SSt(vSt(t))}function bSt(e){let t=0,r=0;for(let{type:s,lines:a}of e.parts)switch(s){case"context":r+=a.length,t+=a.length;break;case"deletion":t+=a.length;break;case"insertion":r+=a.length;break;default:qe.assertNever(s);break}if(t!==e.header.original.length||r!==e.header.patched.length){let s=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${s(e.header.original.length)} ${s(e.header.patched.length)} @@, got @@ ${s(t)} ${s(r)} @@)`)}}Ge();bt();var N1=class extends Error{constructor(r,s){super(`Cannot apply hunk #${r+1}`);this.hunk=s}};async function O1(e,t,r){let s=await e.lstatPromise(t),a=await r();typeof a<"u"&&(t=a),await e.lutimesPromise(t,s.atime,s.mtime)}async function SL(e,{baseFs:t=new Kn,dryRun:r=!1,version:s=null}={}){for(let a of e)if(!(a.semverExclusivity!==null&&s!==null&&!kr.satisfiesWithPrereleases(s,a.semverExclusivity)))switch(a.type){case"file deletion":if(r){if(!t.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await O1(t,Y.dirname(a.path),async()=>{await t.unlinkPromise(a.path)});break;case"rename":if(r){if(!t.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await O1(t,Y.dirname(a.fromPath),async()=>{await O1(t,Y.dirname(a.toPath),async()=>{await O1(t,a.fromPath,async()=>(await t.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case"file creation":if(r){if(t.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(` +`)+(a.hunk.parts[0].noNewlineAtEndOfFile?"":` +`):"";await t.mkdirpPromise(Y.dirname(a.path),{chmod:493,utimes:[pi.SAFE_TIME,pi.SAFE_TIME]}),await t.writeFilePromise(a.path,n,{mode:a.mode}),await t.utimesPromise(a.path,pi.SAFE_TIME,pi.SAFE_TIME)}break;case"patch":await O1(t,a.path,async()=>{await xSt(a,{baseFs:t,dryRun:r})});break;case"mode change":{let c=(await t.statPromise(a.path)).mode;if(tPe(a.newMode)!==tPe(c))continue;await O1(t,a.path,async()=>{await t.chmodPromise(a.path,a.newMode)})}break;default:qe.assertNever(a);break}}function tPe(e){return(e&64)>0}function rPe(e){return e.replace(/\s+$/,"")}function PSt(e,t){return rPe(e)===rPe(t)}async function xSt({hunks:e,path:t},{baseFs:r,dryRun:s=!1}){let a=await r.statSync(t).mode,c=(await r.readFileSync(t,"utf8")).split(/\n/),f=[],p=0,h=0;for(let C of e){let S=Math.max(h,C.header.patched.start+p),x=Math.max(0,S-h),I=Math.max(0,c.length-S-C.header.original.length),R=Math.max(x,I),N=0,U=0,K=null;for(;N<=R;){if(N<=x&&(U=S-N,K=nPe(C,c,U),K!==null)){N=-N;break}if(N<=I&&(U=S+N,K=nPe(C,c,U),K!==null))break;N+=1}if(K===null)throw new N1(e.indexOf(C),C);f.push(K),p+=N,h=U+C.header.original.length}if(s)return;let E=0;for(let C of f)for(let S of C)switch(S.type){case"splice":{let x=S.index+E;c.splice(x,S.numToDelete,...S.linesToInsert),E+=S.linesToInsert.length-S.numToDelete}break;case"pop":c.pop();break;case"push":c.push(S.line);break;default:qe.assertNever(S);break}await r.writeFilePromise(t,c.join(` +`),{mode:a})}function nPe(e,t,r){let s=[];for(let a of e.parts)switch(a.type){case"context":case"deletion":{for(let n of a.lines){let c=t[r];if(c==null||!PSt(c,n))return null;r+=1}a.type==="deletion"&&(s.push({type:"splice",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&s.push({type:"push",line:""}))}break;case"insertion":s.push({type:"splice",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&s.push({type:"pop"});break;default:qe.assertNever(a.type);break}return s}var QSt=/^builtin<([^>]+)>$/;function L1(e,t){let{protocol:r,source:s,selector:a,params:n}=H.parseRange(e);if(r!=="patch:")throw new Error("Invalid patch range");if(s===null)throw new Error("Patch locators must explicitly define their source");let c=a?a.split(/&/).map(E=>Ae.toPortablePath(E)):[],f=n&&typeof n.locator=="string"?H.parseLocator(n.locator):null,p=n&&typeof n.version=="string"?n.version:null,h=t(s);return{parentLocator:f,sourceItem:h,patchPaths:c,sourceVersion:p}}function bL(e){return e.range.startsWith("patch:")}function Fg(e){return e.reference.startsWith("patch:")}function iP(e){let{sourceItem:t,...r}=L1(e.range,H.parseDescriptor);return{...r,sourceDescriptor:t}}function sP(e){let{sourceItem:t,...r}=L1(e.reference,H.parseLocator);return{...r,sourceLocator:t}}function TSt(e){let{sourceItem:t}=L1(e.range,H.parseDescriptor);return t}function RSt(e){let{sourceItem:t}=L1(e.reference,H.parseLocator);return t}function SJ(e){if(!bL(e))return e;let{sourceItem:t}=L1(e.range,H.parseDescriptor);return t}function DL(e){if(!Fg(e))return e;let{sourceItem:t}=L1(e.reference,H.parseLocator);return t}function iPe({parentLocator:e,sourceItem:t,patchPaths:r,sourceVersion:s,patchHash:a},n){let c=e!==null?{locator:H.stringifyLocator(e)}:{},f=typeof s<"u"?{version:s}:{},p=typeof a<"u"?{hash:a}:{};return H.makeRange({protocol:"patch:",source:n(t),selector:r.join("&"),params:{...f,...p,...c}})}function PL(e,{parentLocator:t,sourceDescriptor:r,patchPaths:s}){return H.makeDescriptor(e,iPe({parentLocator:t,sourceItem:r,patchPaths:s},H.stringifyDescriptor))}function bJ(e,{parentLocator:t,sourcePackage:r,patchPaths:s,patchHash:a}){return H.makeLocator(e,iPe({parentLocator:t,sourceItem:r,sourceVersion:r.version,patchPaths:s,patchHash:a},H.stringifyLocator))}function sPe({onAbsolute:e,onRelative:t,onProject:r,onBuiltin:s},a){let n=a.lastIndexOf("!");n!==-1&&(a=a.slice(n+1));let c=a.match(QSt);return c!==null?s(c[1]):a.startsWith("~/")?r(a.slice(2)):Y.isAbsolute(a)?e(a):t(a)}function oPe(e){let t=e.lastIndexOf("!");return{optional:(t!==-1?new Set(e.slice(0,t).split(/!/)):new Set).has("optional")}}function DJ(e){return sPe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},e)}async function oP(e,t,r){let s=e!==null?await r.fetcher.fetch(e,r):null,a=s&&s.localPath?{packageFs:new Pn(wt.root),prefixPath:Y.relative(wt.root,s.localPath)}:s;s&&s!==a&&s.releaseFs&&s.releaseFs();let n=await qe.releaseAfterUseAsync(async()=>await Promise.all(t.map(async c=>{let f=oPe(c),p=await sPe({onAbsolute:async h=>await ae.readFilePromise(h,"utf8"),onRelative:async h=>{if(a===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await a.packageFs.readFilePromise(Y.join(a.prefixPath,h),"utf8")},onProject:async h=>await ae.readFilePromise(Y.join(r.project.cwd,h),"utf8"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},c);return{...f,source:p}})));for(let c of n)typeof c.source=="string"&&(c.source=c.source.replace(/\r\n?/g,` +`));return n}async function PJ(e,{cache:t,project:r}){let s=r.storedPackages.get(e.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected the package to be registered");let a=DL(e),n=r.storedChecksums,c=new Qi,f=await ae.mktempPromise(),p=Y.join(f,"source"),h=Y.join(f,"user"),E=Y.join(f,".yarn-patch.json"),C=r.configuration.makeFetcher(),S=[];try{let x,I;if(e.locatorHash===a.locatorHash){let R=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c});S.push(()=>R.releaseFs?.()),x=R,I=R}else x=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>x.releaseFs?.()),I=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>I.releaseFs?.());await Promise.all([ae.copyPromise(p,x.prefixPath,{baseFs:x.packageFs}),ae.copyPromise(h,I.prefixPath,{baseFs:I.packageFs}),ae.writeJsonPromise(E,{locator:H.stringifyLocator(e),version:s.version})])}finally{for(let x of S)x()}return ae.detachTemp(f),h}async function xJ(e,t){let r=Ae.fromPortablePath(e).replace(/\\/g,"/"),s=Ae.fromPortablePath(t).replace(/\\/g,"/"),{stdout:a,stderr:n}=await Yr.execvp("git",["-c","core.safecrlf=false","-c","core.quotePath=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",r,s],{cwd:Ae.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. +The following error was reported by 'git': +${n}`);let c=r.startsWith("/")?f=>f.slice(1):f=>f;return a.replace(new RegExp(`(a|b)(${qe.escapeRegExp(`/${c(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${qe.escapeRegExp(`/${c(s)}/`)}`,"g"),"$1/").replace(new RegExp(qe.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(qe.escapeRegExp(`${s}/`),"g"),"")}function kJ(e,t){let r=[];for(let{source:s}of e){if(s===null)continue;let a=nP(s);for(let n of a){let{semverExclusivity:c,...f}=n;c!==null&&t!==null&&!kr.satisfiesWithPrereleases(t,c)||r.push(JSON.stringify(f))}}return Mn.makeHash(`${3}`,...r).slice(0,6)}Ge();function aPe(e,{configuration:t,report:r}){for(let s of e.parts)for(let a of s.lines)switch(s.type){case"context":r.reportInfo(null,` ${ue.pretty(t,a,"grey")}`);break;case"deletion":r.reportError(28,`- ${ue.pretty(t,a,ue.Type.REMOVED)}`);break;case"insertion":r.reportError(28,`+ ${ue.pretty(t,a,ue.Type.ADDED)}`);break;default:qe.assertNever(s.type)}}function FSt(e){return e instanceof Error&&"code"in e&&e.code==="ENOENT"}var aP=class{supports(t,r){return!!Fg(t)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${H.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:H.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async patchPackage(t,r){let{parentLocator:s,sourceLocator:a,sourceVersion:n,patchPaths:c}=sP(t),f=await oP(s,c,r),p=await ae.mktempPromise(),h=Y.join(p,"current.zip"),E=await r.fetcher.fetch(a,r),C=H.getIdentVendorPath(t),S=new hs(h,{create:!0,level:r.project.configuration.get("compressionLevel")});await qe.releaseAfterUseAsync(async()=>{await S.copyPromise(C,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),S.saveAndClose();for(let{source:x,optional:I}of f){if(x===null)continue;let R=new hs(h,{level:r.project.configuration.get("compressionLevel")}),N=new Pn(Y.resolve(wt.root,C),{baseFs:R});try{await SL(nP(x),{baseFs:N,version:n})}catch(U){let K=U instanceof N1?U:null;if(!(K!==null||I&&FSt(U)))throw U;let ie=r.project.configuration.get("enableInlineHunks"),fe=K!==null&&!ie&&!I?" (set enableInlineHunks for details)":"",le=`${H.prettyLocator(r.project.configuration,t)}: ${U.message}${fe}`,ge=pe=>{K===null||!ie||aPe(K.hunk,{configuration:r.project.configuration,report:pe})};if(R.discardAndClose(),I){r.report.reportWarningOnce(66,le,{reportExtra:ge});continue}else throw new Lt(66,le,ge)}R.saveAndClose()}return new hs(h,{level:r.project.configuration.get("compressionLevel")})}};Ge();var lP=class{supportsDescriptor(t,r){return!!bL(t)}supportsLocator(t,r){return!!Fg(t)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){let{patchPaths:a}=iP(t);return a.every(n=>!DJ(n))?t:H.bindDescriptor(t,{locator:H.stringifyLocator(r)})}getResolutionDependencies(t,r){let{sourceDescriptor:s}=iP(t);return{sourceDescriptor:r.project.configuration.normalizeDependency(s)}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:a,patchPaths:n}=iP(t),c=await oP(a,n,s.fetchOptions),f=r.sourceDescriptor;if(typeof f>"u")throw new Error("Assertion failed: The dependency should have been resolved");let p=kJ(c,f.version);return[bJ(t,{parentLocator:a,sourcePackage:f,patchPaths:n,patchHash:p})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let{sourceLocator:s}=sP(t);return{...await r.resolver.resolve(s,r),...t}}};Ge();bt();jt();var M1=class extends ft{constructor(){super(...arguments);this.save=he.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=he.String()}static{this.paths=[["patch-commit"]]}static{this.usage=st.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=Y.resolve(this.context.cwd,Ae.toPortablePath(this.patchFolder)),c=Y.join(n,"../source"),f=Y.join(n,"../.yarn-patch.json");if(!ae.existsSync(c))throw new ot("The argument folder didn't get created by 'yarn patch'");let p=await xJ(c,n),h=await ae.readJsonPromise(f),E=H.parseLocator(h.locator,!0);if(!s.storedPackages.has(E.locatorHash))throw new ot("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(p);return}let C=r.get("patchFolder"),S=Y.join(C,`${H.slugifyLocator(E)}.patch`);await ae.mkdirPromise(C,{recursive:!0}),await ae.writeFilePromise(S,p);let x=[],I=new Map;for(let R of s.storedPackages.values()){if(H.isVirtualLocator(R))continue;let N=R.dependencies.get(E.identHash);if(!N)continue;let U=H.ensureDevirtualizedDescriptor(N),K=SJ(U),$=s.storedResolutions.get(K.descriptorHash);if(!$)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!s.storedPackages.get($))throw new Error("Assertion failed: Expected the package to have been registered");let fe=s.tryWorkspaceByLocator(R);if(fe)x.push(fe);else{let le=s.originalPackages.get(R.locatorHash);if(!le)throw new Error("Assertion failed: Expected the original package to have been registered");let ge=le.dependencies.get(N.identHash);if(!ge)throw new Error("Assertion failed: Expected the original dependency to have been registered");I.set(ge.descriptorHash,ge)}}for(let R of x)for(let N of _t.hardDependencies){let U=R.manifest[N].get(E.identHash);if(!U)continue;let K=PL(U,{parentLocator:null,sourceDescriptor:H.convertLocatorToDescriptor(E),patchPaths:[Y.join(yr.home,Y.relative(s.cwd,S))]});R.manifest[N].set(U.identHash,K)}for(let R of I.values()){let N=PL(R,{parentLocator:null,sourceDescriptor:H.convertLocatorToDescriptor(E),patchPaths:[Y.join(yr.home,Y.relative(s.cwd,S))]});s.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:H.stringifyIdent(N),description:R.range}},reference:N.range})}await s.persist()}};Ge();bt();jt();var U1=class extends ft{constructor(){super(...arguments);this.update=he.Boolean("-u,--update",!1,{description:"Reapply local patches that already apply to this packages"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=he.String()}static{this.paths=[["patch"]]}static{this.usage=st.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n\n Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n\n Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\n "})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=H.parseLocator(this.package);if(c.reference==="unknown"){let f=qe.mapAndFilter([...s.storedPackages.values()],p=>p.identHash!==c.identHash?qe.mapAndFilter.skip:H.isVirtualLocator(p)?qe.mapAndFilter.skip:Fg(p)!==this.update?qe.mapAndFilter.skip:p);if(f.length===0)throw new ot("No package found in the project for the given locator");if(f.length>1)throw new ot(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): +${f.map(p=>` +- ${H.prettyLocator(r,p)}`).join("")}`);c=f[0]}if(!s.storedPackages.has(c.locatorHash))throw new ot("No package found in the project for the given locator");await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=DL(c),h=await PJ(c,{cache:n,project:s});f.reportJson({locator:H.stringifyLocator(p),path:Ae.fromPortablePath(h)});let E=this.update?" along with its current modifications":"";f.reportInfo(0,`Package ${H.prettyLocator(r,p)} got extracted with success${E}!`),f.reportInfo(0,`You can now edit the following folder: ${ue.pretty(r,Ae.fromPortablePath(h),"magenta")}`),f.reportInfo(0,`Once you are done run ${ue.pretty(r,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${Ae.fromPortablePath(h)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};var NSt={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[M1,U1],fetchers:[aP],resolvers:[lP]},OSt=NSt;var FJ={};Vt(FJ,{PnpmLinker:()=>uP,default:()=>GSt});Ge();bt();jt();var lPe=".package-map.json",uP=class{getCustomDataKey(){return JSON.stringify({name:"PnpmLinker",version:3})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new ot(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(t.locatorHash);if(typeof n>"u")throw new ot(`Couldn't find ${H.prettyLocator(r.project.configuration,t)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new ot(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=t.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let c=t,f=t;do{f=c,c=Y.dirname(f);let p=a.locatorByPath.get(f);if(p)return p}while(c!==f);return null}makeInstaller(t){return new TJ(t)}isEnabled(t){return t.project.configuration.get("nodeLinker")==="pnpm"}},TJ=class{constructor(t){this.opts=t;this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.packageMapNodesByLocator=new Map;this.asyncActions=new qe.AsyncActions(t.project.configuration.get("pnpmInstallConcurrency")),this.indexFolderPromise=sx(ae,{indexPath:Y.join(t.project.configuration.get("globalFolder"),"index")})}attachCustomData(t){}registerPackageMapNode(t,{packageLocation:r}){let s=APe(r);this.packageMapNodesByLocator.has(t)||this.packageMapNodesByLocator.set(t,{packageLocation:s,dependencies:new Map})}registerPackageMapDependency(t,r,s){if(!this.packageMapNodesByLocator.has(s.locatorHash))throw new Error(`Assertion failed: Expected the package to have been registered (${H.stringifyLocator(s)})`);t.dependencies.set(r,s.locatorHash)}async installPackage(t,r,s){switch(t.linkType){case"SOFT":return this.installPackageSoft(t,r,s);case"HARD":return this.installPackageHard(t,r,s)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(t,r,s){let a=Y.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(t)?Y.join(a,yr.nodeModules):null,c={packageLocation:a,dependenciesLocation:n};return this.customData.pathsByLocator.set(t.locatorHash,c),this.registerPackageMapNode(t.locatorHash,c),{packageLocation:a,buildRequest:null}}async installPackageHard(t,r,s){let a=LSt(t,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,H.stringifyLocator(t)),this.customData.pathsByLocator.set(t.locatorHash,a),this.registerPackageMapNode(t.locatorHash,a),s.holdFetchResult(this.asyncActions.set(t.locatorHash,async()=>{await ae.mkdirPromise(n,{recursive:!0}),await ae.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:"HardlinkFromIndex",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let f=H.isVirtualLocator(t)?H.devirtualizeLocator(t):t,p={manifest:await _t.tryFind(r.prefixPath,{baseFs:r.packageFs})??new _t,misc:{hasBindingGyp:yA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(f,t.version),E=yA.extractBuildRequest(t,p,h,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:E}}async attachInternalDependencies(t,r){if(this.opts.project.configuration.get("nodeLinker")!=="pnpm"||!uPe(t,{project:this.opts.project}))return;let s=this.customData.pathsByLocator.get(t.locatorHash);if(typeof s>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${H.stringifyLocator(t)})`);let{dependenciesLocation:a}=s;if(!a)return;let n=this.packageMapNodesByLocator.get(t.locatorHash);if(typeof n>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${H.stringifyLocator(t)})`);this.asyncActions.reduce(t.locatorHash,async c=>{await ae.mkdirPromise(a,{recursive:!0});let f=await _St(a),p=new Map(f),h=[c],E=(S,x)=>{let I=x;uPe(x,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),I=H.devirtualizeLocator(x));let R=this.customData.pathsByLocator.get(I.locatorHash);if(typeof R>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${H.stringifyLocator(x)})`);let N=H.stringifyIdent(S);this.registerPackageMapDependency(n,N,I);let U=Y.join(a,N),K=Y.relative(Y.dirname(U),R.packageLocation),$=p.get(N);p.delete(N),h.push(Promise.resolve().then(async()=>{if($){if($.isSymbolicLink()&&await ae.readlinkPromise(U)===K)return;await ae.removePromise(U)}await ae.mkdirpPromise(Y.dirname(U)),process.platform=="win32"&&this.opts.project.configuration.get("winLinkType")==="junctions"?await ae.symlinkPromise(R.packageLocation,U,"junction"):await ae.symlinkPromise(K,U)}))},C=!1;for(let[S,x]of r)S.identHash===t.identHash&&(C=!0),E(S,x);!C&&!this.opts.project.tryWorkspaceByLocator(t)&&E(H.convertLocatorToDescriptor(t),t),h.push(HSt(a,p)),await Promise.all(h)})}async attachExternalDependents(t,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let t=fPe(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await ae.removePromise(t);else{let s;try{s=new Set(await ae.readdirPromise(t))}catch{s=new Set}for(let{dependenciesLocation:a}of this.customData.pathsByLocator.values()){if(!a)continue;let n=Y.contains(t,a);if(n===null)continue;let[c]=n.split(Y.sep);s.delete(c)}await Promise.all([...s].map(async a=>{await ae.removePromise(Y.join(t,a))}))}await this.asyncActions.wait();let r=this.opts.project.configuration.get("nodeLinker");if(r==="pnpm"){let s=USt({basePath:cP(this.opts.project),packageMapNodesByLocator:this.packageMapNodesByLocator,topLevelLocatorHash:this.opts.project.topLevelWorkspace.anchoredLocator.locatorHash,type:this.opts.project.configuration.get("nodePackageMapType")});await ae.mkdirPromise(cP(this.opts.project),{recursive:!0}),await ae.changeFilePromise(Y.join(cP(this.opts.project),lPe),JSON.stringify(s,null,2),{automaticNewlines:!0})}else r!=="node-modules"&&await ae.removePromise(Y.join(cP(this.opts.project),lPe));return await RJ(t),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await RJ(cP(this.opts.project)),{customData:this.customData}}};function cP(e){return Y.join(e.cwd,yr.nodeModules)}function fPe(e){return e.configuration.get("pnpmStoreFolder")}function LSt(e,{project:t}){let r=H.slugifyLocator(e),s=fPe(t),a=Y.join(s,r,"package"),n=Y.join(s,r,yr.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function APe(e){for(;e!==wt.root&&e.endsWith(Y.sep);)e=e.slice(0,-1);return e}function MSt(e,t){let r=Y.relative(e,t)||wt.dot;return r.startsWith(".")||(r=`./${r}`),r}function xL(e,t){let r=Y.relative(e,t)||wt.dot;return r===".."?wt.dot:r}function cPe(e,t){return et?1:0}function USt({basePath:e,packageMapNodesByLocator:t,topLevelLocatorHash:r,type:s}){e=APe(e);let a=t.get(r);if(typeof a>"u")throw new Error("Assertion failed: Expected the top-level package to have been registered");let n=new Map;for(let[p,h]of t)n.set(p,xL(e,h.packageLocation));let c=p=>Object.fromEntries(Array.from(p).sort(([h],[E])=>cPe(h,E)).map(([h,E])=>{let C=n.get(E);if(typeof C>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${E})`);return[h,C]})),f={};for(let p of Array.from(t.values()).sort((h,E)=>cPe(xL(e,h.packageLocation),xL(e,E.packageLocation)))){let h=s==="loose"?new Map([...a.dependencies,...p.dependencies]):p.dependencies;f[xL(e,p.packageLocation)]={url:MSt(e,p.packageLocation),dependencies:c(h)}}return{packages:f}}function uPe(e,{project:t}){return!H.isVirtualLocator(e)||!t.tryWorkspaceByLocator(e)}async function _St(e){let t=new Map,r=[];try{r=await ae.readdirPromise(e,{withFileTypes:!0})}catch(s){if(s.code!=="ENOENT")throw s}try{for(let s of r)if(!s.name.startsWith("."))if(s.name.startsWith("@")){let a=await ae.readdirPromise(Y.join(e,s.name),{withFileTypes:!0});if(a.length===0)t.set(s.name,s);else for(let n of a)t.set(`${s.name}/${n.name}`,n)}else t.set(s.name,s)}catch(s){if(s.code!=="ENOENT")throw s}return t}async function HSt(e,t){let r=[],s=new Set;for(let a of t.keys()){r.push(ae.removePromise(Y.join(e,a)));let n=H.tryParseIdent(a)?.scope;n&&s.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...s].map(a=>RJ(Y.join(e,a)))))}async function RJ(e){try{await ae.rmdirPromise(e)}catch(t){if(t.code!=="ENOENT"&&t.code!=="ENOTEMPTY"&&t.code!=="EBUSY")throw t}}var jSt={configuration:{pnpmStoreFolder:{description:"By default, the store is stored in the 'node_modules/.store' of the project. Sometimes in CI scenario's it is convenient to store this in a different location so it can be cached and reused.",type:"ABSOLUTE_PATH",default:"./node_modules/.store"},pnpmInstallConcurrency:{description:`Maximum number of packages the pnpm linker will install in parallel. Lower this on monorepos with very large caches if you hit "Couldn't allocate enough memory" from the bundled libzip WASM heap.`,type:"NUMBER",default:10}},linkers:[uP]},GSt=jSt;var HJ={};Vt(HJ,{StageCommand:()=>_1,default:()=>ebt,stageUtils:()=>QL});Ge();bt();jt();Ge();bt();var QL={};Vt(QL,{ActionType:()=>NJ,checkConsensus:()=>kL,expandDirectory:()=>MJ,findConsensus:()=>UJ,findVcsRoot:()=>OJ,genCommitMessage:()=>_J,getCommitPrefix:()=>pPe,isYarnFile:()=>LJ});bt();var NJ=(n=>(n[n.CREATE=0]="CREATE",n[n.DELETE=1]="DELETE",n[n.ADD=2]="ADD",n[n.REMOVE=3]="REMOVE",n[n.MODIFY=4]="MODIFY",n))(NJ||{});async function OJ(e,{marker:t}){do if(!ae.existsSync(Y.join(e,t)))e=Y.dirname(e);else return e;while(e!=="/");return null}function LJ(e,{roots:t,names:r}){if(r.has(Y.basename(e)))return!0;do if(!t.has(e))e=Y.dirname(e);else return!0;while(e!=="/");return!1}function MJ(e){let t=[],r=[e];for(;r.length>0;){let s=r.pop(),a=ae.readdirSync(s);for(let n of a){let c=Y.resolve(s,n);ae.lstatSync(c).isDirectory()?r.push(c):t.push(c)}}return t}function kL(e,t){let r=0,s=0;for(let a of e)a!=="wip"&&(t.test(a)?r+=1:s+=1);return r>=s}function UJ(e){let t=kL(e,/^(\w\(\w+\):\s*)?\w+s/),r=kL(e,/^(\w\(\w+\):\s*)?[A-Z]/),s=kL(e,/^\w\(\w+\):/);return{useThirdPerson:t,useUpperCase:r,useComponent:s}}function pPe(e){return e.useComponent?"chore(yarn): ":""}var qSt=new Map([[0,"create"],[1,"delete"],[2,"add"],[3,"remove"],[4,"update"]]);function _J(e,t){let r=pPe(e),s=[],a=t.slice().sort((n,c)=>n[0]-c[0]);for(;a.length>0;){let[n,c]=a.shift(),f=qSt.get(n);e.useUpperCase&&s.length===0&&(f=`${f[0].toUpperCase()}${f.slice(1)}`),e.useThirdPerson&&(f+="s");let p=[c];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=" (and one other)":p.length>1&&(h+=` (and ${p.length} others)`),s.push(`${f} ${h}`)}return`${r}${s.join(", ")}`}var YSt="Commit generated via `yarn stage`",WSt=11;async function hPe(e){let{code:t,stdout:r}=await Yr.execvp("git",["log","-1","--pretty=format:%H"],{cwd:e});return t===0?r.trim():null}async function VSt(e,t){let r=[],s=t.filter(h=>Y.basename(h.path)==="package.json");for(let{action:h,path:E}of s){let C=Y.relative(e,E);if(h===4){let S=await hPe(e),{stdout:x}=await Yr.execvp("git",["show",`${S}:${C}`],{cwd:e,strict:!0}),I=await _t.fromText(x),R=await _t.fromFile(E),N=new Map([...R.dependencies,...R.devDependencies]),U=new Map([...I.dependencies,...I.devDependencies]);for(let[K,$]of U){let ie=H.stringifyIdent($),fe=N.get(K);fe?fe.range!==$.range&&r.push([4,`${ie} to ${fe.range}`]):r.push([3,ie])}for(let[K,$]of N)U.has(K)||r.push([2,H.stringifyIdent($)])}else if(h===0){let S=await _t.fromFile(E);S.name?r.push([0,H.stringifyIdent(S.name)]):r.push([0,"a package"])}else if(h===1){let S=await hPe(e),{stdout:x}=await Yr.execvp("git",["show",`${S}:${C}`],{cwd:e,strict:!0}),I=await _t.fromText(x);I.name?r.push([1,H.stringifyIdent(I.name)]):r.push([1,"a package"])}else throw new Error("Assertion failed: Unsupported action type")}let{code:a,stdout:n}=await Yr.execvp("git",["log",`-${WSt}`,"--pretty=format:%s"],{cwd:e}),c=a===0?n.split(/\n/g).filter(h=>h!==""):[],f=UJ(c);return _J(f,r)}var KSt={0:[" A ","?? "],4:[" M "],1:[" D "]},JSt={0:["A "],4:["M "],1:["D "]},dPe={async findRoot(e){return await OJ(e,{marker:".git"})},async filterChanges(e,t,r,s){let{stdout:a}=await Yr.execvp("git",["status","-s"],{cwd:e,strict:!0}),n=a.toString().split(/\n/g),c=s?.staged?JSt:KSt;return[].concat(...n.map(p=>{if(p==="")return[];let h=p.slice(0,3),E=Y.resolve(e,p.slice(3));if(!s?.staged&&h==="?? "&&p.endsWith("/"))return MJ(E).map(C=>({action:0,path:C}));{let S=[0,4,1].find(x=>c[x].includes(h));return S!==void 0?[{action:S,path:E}]:[]}})).filter(p=>LJ(p.path,{roots:t,names:r}))},async genCommitMessage(e,t){return await VSt(e,t)},async makeStage(e,t){let r=t.map(s=>Ae.fromPortablePath(s.path));await Yr.execvp("git",["add","--",...r],{cwd:e,strict:!0})},async makeCommit(e,t,r){let s=t.map(a=>Ae.fromPortablePath(a.path));await Yr.execvp("git",["add","-N","--",...s],{cwd:e,strict:!0}),await Yr.execvp("git",["commit","-m",`${r} + +${YSt} +`,"--",...s],{cwd:e,strict:!0})},async makeReset(e,t){let r=t.map(s=>Ae.fromPortablePath(s.path));await Yr.execvp("git",["reset","HEAD","--",...r],{cwd:e,strict:!0})}};var zSt=[dPe],_1=class extends ft{constructor(){super(...arguments);this.commit=he.Boolean("-c,--commit",!1,{description:"Commit the staged files"});this.reset=he.Boolean("-r,--reset",!1,{description:"Remove all files from the staging area"});this.dryRun=he.Boolean("-n,--dry-run",!1,{description:"Print the commit message and the list of modified files without staging / committing"});this.update=he.Boolean("-u,--update",!1,{hidden:!0})}static{this.paths=[["stage"]]}static{this.usage=st.Usage({description:"add all yarn files to your vcs",details:"\n This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\n\n Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\n\n Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\n ",examples:[["Adds all modified project files to the staging area","yarn stage"],["Creates a new commit containing all modified project files","yarn stage --commit"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),{driver:a,root:n}=await ZSt(s.cwd),c=[r.get("cacheFolder"),r.get("globalFolder"),r.get("virtualFolder"),r.get("yarnPath")];await r.triggerHook(C=>C.populateYarnPaths,s,C=>{c.push(C)});let f=new Set;for(let C of c)for(let S of XSt(n,C))f.add(S);let p=new Set([r.get("rcFilename"),yr.lockfile,yr.manifest]),h=await a.filterChanges(n,f,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E} +`);else for(let C of h)this.context.stdout.write(`${Ae.fromPortablePath(C.path)} +`);else if(this.reset){let C=await a.filterChanges(n,f,p,{staged:!0});C.length===0?this.context.stdout.write("No staged changes found!"):await a.makeReset(n,C)}else h.length===0?this.context.stdout.write("No changes found!"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};async function ZSt(e){let t=null,r=null;for(let s of zSt)if((r=await s.findRoot(e))!==null){t=s;break}if(t===null||r===null)throw new ot("No stage driver has been found for your current project");return{driver:t,root:r}}function XSt(e,t){let r=[];if(t===null)return r;for(;;){(t===e||t.startsWith(`${e}/`))&&r.push(t);let s;try{s=ae.statSync(t)}catch{break}if(s.isSymbolicLink())t=Y.resolve(Y.dirname(t),ae.readlinkSync(t));else break}return r}var $St={commands:[_1]},ebt=$St;var jJ={};Vt(jJ,{default:()=>lbt});Ge();Ge();bt();var yPe=et(hi());Ge();var gPe=et(q9()),tbt="e8e1bd300d860104bb8c58453ffa1eb4",rbt="OFCNCOG2CU",mPe=async(e,t)=>{let r=H.stringifyIdent(e),a=nbt(t).initIndex("npm-search");try{return(await a.getObject(r,{attributesToRetrieve:["types"]})).types?.ts==="definitely-typed"}catch{return!1}},nbt=e=>(0,gPe.default)(rbt,tbt,{requester:{async send(r){try{let s=await nn.request(r.url,r.data||null,{configuration:e,headers:r.headers});return{content:s.body,isTimedOut:!1,status:s.statusCode}}catch(s){return{content:s.response.body,isTimedOut:!1,status:s.response.statusCode}}}}});var EPe=e=>e.scope?`${e.scope}__${e.name}`:`${e.name}`,ibt=async(e,t,r,s)=>{if(r.scope==="types")return;let{project:a}=e,{configuration:n}=a;if(!(n.get("tsEnableAutoTypes")??(ae.existsSync(Y.join(e.cwd,"tsconfig.json"))||ae.existsSync(Y.join(a.cwd,"tsconfig.json")))))return;let f=n.makeResolver(),p={project:a,resolver:f,report:new Qi};if(!await mPe(r,n))return;let E=EPe(r),C=H.parseRange(r.range).selector;if(!kr.validRange(C)){let N=n.normalizeDependency(r),U=await f.getCandidates(N,{},p);C=H.parseRange(U[0].reference).selector}let S=yPe.default.coerce(C);if(S===null)return;let x=`${ef.Modifier.CARET}${S.major}`,I=H.makeDescriptor(H.makeIdent("types",E),x),R=qe.mapAndFind(a.workspaces,N=>{let U=N.manifest.dependencies.get(r.identHash)?.descriptorHash,K=N.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&K!==r.descriptorHash)return qe.mapAndFind.skip;let $=[];for(let ie of _t.allDependencies){let fe=N.manifest[ie].get(I.identHash);typeof fe>"u"||$.push([ie,fe])}return $.length===0?qe.mapAndFind.skip:$});if(typeof R<"u")for(let[N,U]of R)e.manifest[N].set(U.identHash,U);else{try{let N=n.normalizeDependency(I);if((await f.getCandidates(N,{},p)).length===0)return}catch{return}e.manifest[ef.Target.DEVELOPMENT].set(I.identHash,I)}},sbt=async(e,t,r)=>{if(r.scope==="types")return;let{project:s}=e,{configuration:a}=s;if(!(a.get("tsEnableAutoTypes")??(ae.existsSync(Y.join(e.cwd,"tsconfig.json"))||ae.existsSync(Y.join(s.cwd,"tsconfig.json")))))return;let c=EPe(r),f=H.makeIdent("types",c);for(let p of _t.allDependencies)typeof e.manifest[p].get(f.identHash)>"u"||e.manifest[p].delete(f.identHash)},obt=(e,t)=>{t.publishConfig&&t.publishConfig.typings&&(t.typings=t.publishConfig.typings),t.publishConfig&&t.publishConfig.types&&(t.types=t.publishConfig.types)},abt={configuration:{tsEnableAutoTypes:{description:"Whether Yarn should auto-install @types/ dependencies on 'yarn add'",type:"BOOLEAN",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:ibt,afterWorkspaceDependencyRemoval:sbt,beforeWorkspacePacking:obt}},lbt=abt;var VJ={};Vt(VJ,{VersionApplyCommand:()=>q1,VersionCheckCommand:()=>Y1,VersionCommand:()=>W1,default:()=>pbt,versionUtils:()=>G1});Ge();Ge();jt();var G1={};Vt(G1,{Decision:()=>H1,applyPrerelease:()=>IPe,applyReleases:()=>WJ,applyStrategy:()=>fP,clearVersionFiles:()=>GJ,getUndecidedDependentWorkspaces:()=>pP,getUndecidedWorkspaces:()=>TL,openVersionFile:()=>j1,requireMoreDecisions:()=>ubt,resolveVersionFiles:()=>AP,suggestStrategy:()=>YJ,updateVersionFiles:()=>qJ,validateReleaseDecision:()=>wy});Ge();bt();Sc();jt();Zl();var RA=et(hi()),cbt=/^(>=|[~^]|)(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$/,H1=(h=>(h.UNDECIDED="undecided",h.DECLINE="decline",h.MAJOR="major",h.MINOR="minor",h.PATCH="patch",h.PREMAJOR="premajor",h.PREMINOR="preminor",h.PREPATCH="prepatch",h.PRERELEASE="prerelease",h))(H1||{});function wy(e){let t=RA.default.valid(e);return t||qe.validateEnum(x4(H1,"UNDECIDED"),e)}async function AP(e,{prerelease:t=null}={}){let r=new Map,s=e.configuration.get("deferredVersionFolder");if(!ae.existsSync(s))return r;let a=await ae.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=Y.join(s,n),f=await ae.readFilePromise(c,"utf8"),p=us(f);for(let[h,E]of Object.entries(p.releases||{})){if(E==="decline")continue;let C=H.parseIdent(h),S=e.tryWorkspaceByIdent(C);if(S===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${Y.basename(c)} references ${h})`);if(S.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${H.prettyLocator(e.configuration,S.anchoredLocator)})`);let x=S.manifest.raw.stableVersion??S.manifest.version,I=r.get(S),R=fP(E==="prerelease"?S.manifest.version:x,wy(E));if(R===null)throw new Error(`Assertion failed: Expected ${x} to support being bumped via strategy ${E}`);let N=typeof I<"u"?RA.default.gt(R,I)?R:I:R;r.set(S,N)}}return t&&(r=new Map([...r].map(([n,c])=>[n,IPe(c,{current:n.manifest.version,prerelease:t})]))),r}async function GJ(e){let t=e.configuration.get("deferredVersionFolder");ae.existsSync(t)&&await ae.removePromise(t)}async function qJ(e,t){let r=new Set(t),s=e.configuration.get("deferredVersionFolder");if(!ae.existsSync(s))return;let a=await ae.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=Y.join(s,n),f=await ae.readFilePromise(c,"utf8"),p=us(f),h=p?.releases;if(h){for(let E of Object.keys(h)){let C=H.parseIdent(E),S=e.tryWorkspaceByIdent(C);(S===null||r.has(S))&&delete p.releases[E]}Object.keys(p.releases).length>0?await ae.changeFilePromise(c,Al(new Al.PreserveOrdering(p))):await ae.unlinkPromise(c)}}}async function j1(e,{allowEmpty:t=!1}={}){let r=e.configuration;if(r.projectCwd===null)throw new ot("This command can only be run from within a Yarn project");let s=await Ma.fetchRoot(r.projectCwd),a=s!==null?await Ma.fetchBase(s,{baseRefs:r.get("changesetBaseRefs")}):null,n=s!==null?await Ma.fetchChangedFiles(s,{base:a.hash,project:e}):[],c=r.get("deferredVersionFolder"),f=n.filter(x=>Y.contains(c,x)!==null);if(f.length>1)throw new ot(`Your current branch contains multiple versioning files; this isn't supported: +- ${f.map(x=>Ae.fromPortablePath(x)).join(` +- `)}`);let p=new Set(qe.mapAndFilter(n,x=>{let I=e.tryWorkspaceByFilePath(x);return I===null?qe.mapAndFilter.skip:I}));if(f.length===0&&p.size===0&&!t)return null;let h=f.length===1?f[0]:Y.join(c,`${Mn.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=ae.existsSync(h)?await ae.readFilePromise(h,"utf8"):"{}",C=us(E),S=new Map;for(let x of C.declined||[]){let I=H.parseIdent(x),R=e.getWorkspaceByIdent(I);S.set(R,"decline")}for(let[x,I]of Object.entries(C.releases||{})){let R=H.parseIdent(x),N=e.getWorkspaceByIdent(R);S.set(N,wy(I))}return{project:e,root:s,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(x=>x.manifest.version!==null)),releases:S,async saveAll(){let x={},I=[],R=[];for(let N of e.workspaces){if(N.manifest.version===null)continue;let U=H.stringifyIdent(N.anchoredLocator),K=S.get(N);K==="decline"?I.push(U):typeof K<"u"?x[U]=wy(K):p.has(N)&&R.push(U)}await ae.mkdirPromise(Y.dirname(h),{recursive:!0}),await ae.changeFilePromise(h,Al(new Al.PreserveOrdering({releases:Object.keys(x).length>0?x:void 0,declined:I.length>0?I:void 0,undecided:R.length>0?R:void 0})))}}}function ubt(e){return TL(e).size>0||pP(e).length>0}function TL(e){let t=new Set;for(let r of e.changedWorkspaces)r.manifest.version!==null&&(e.releases.has(r)||t.add(r));return t}function pP(e,{include:t=new Set}={}){let r=[],s=new Map(qe.mapAndFilter([...e.releases],([n,c])=>c==="decline"?qe.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(qe.mapAndFilter([...e.releases],([n,c])=>c!=="decline"?qe.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of e.project.workspaces)if(!(!t.has(n)&&(a.has(n.anchoredLocator.locatorHash)||s.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let c of _t.hardDependencies)for(let f of n.manifest.getForScope(c).values()){let p=e.project.tryWorkspaceByDescriptor(f);p!==null&&s.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function YJ(e,t){let r=RA.default.clean(t);for(let s of Object.values(H1))if(s!=="undecided"&&s!=="decline"&&RA.default.inc(e,s)===r)return s;return null}function fP(e,t){if(RA.default.valid(t))return t;if(e===null)throw new ot(`Cannot apply the release strategy "${t}" unless the workspace already has a valid version`);if(!RA.default.valid(e))throw new ot(`Cannot apply the release strategy "${t}" on a non-semver version (${e})`);let r=RA.default.inc(e,t);if(r===null)throw new ot(`Cannot apply the release strategy "${t}" on the specified version (${e})`);return r}function WJ(e,t,{report:r,exact:s}){let a=new Map;for(let n of e.workspaces)for(let c of _t.allDependencies)for(let f of n.manifest[c].values()){let p=e.tryWorkspaceByDescriptor(f);if(p===null||!t.has(p))continue;qe.getArrayWithDefault(a,p).push([n,c,f.identHash])}for(let[n,c]of t){let f=n.manifest.version;n.manifest.version=c,RA.default.prerelease(c)===null?delete n.manifest.raw.stableVersion:n.manifest.raw.stableVersion||(n.manifest.raw.stableVersion=f);let p=n.manifest.name!==null?H.stringifyIdent(n.manifest.name):null;r.reportInfo(0,`${H.prettyLocator(e.configuration,n.anchoredLocator)}: Bumped to ${c}`),r.reportJson({cwd:Ae.fromPortablePath(n.cwd),ident:p,oldVersion:f,newVersion:c});let h=a.get(n);if(!(typeof h>"u"))for(let[E,C,S]of h){let x=E.manifest[C].get(S);if(typeof x>"u")throw new Error("Assertion failed: The dependency should have existed");let I=x.range,R=!1;if(I.startsWith(Ii.protocol)&&(I=I.slice(Ii.protocol.length),R=!0,I===n.relativeCwd))continue;let N=I.match(cbt);if(!N){r.reportWarning(0,`Couldn't auto-upgrade range ${I} (in ${H.prettyLocator(e.configuration,E.anchoredLocator)})`);continue}let U=s?`${c}`:`${N[1]}${c}`;R&&(U=`${Ii.protocol}${U}`);let K=H.makeDescriptor(x,U);E.manifest[C].set(S,K)}}}var fbt=new Map([["%n",{extract:e=>e.length>=1?[e[0],e.slice(1)]:null,generate:(e=0)=>`${e+1}`}]]);function IPe(e,{current:t,prerelease:r}){let s=new RA.default.SemVer(t),a=s.prerelease.slice(),n=[];s.prerelease=[],s.format()!==e&&(a.length=0);let c=!0,f=r.split(/\./g);for(let p of f){let h=fbt.get(p);if(typeof h>"u")n.push(p),a[0]===p?a.shift():c=!1;else{let E=c?h.extract(a):null;E!==null&&typeof E[0]=="number"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),c=!1)}}return s.prerelease&&(s.prerelease=[]),`${e}-${n.join(".")}`}var q1=class extends ft{constructor(){super(...arguments);this.all=he.Boolean("--all",!1,{description:"Apply the deferred version changes on all workspaces"});this.dryRun=he.Boolean("--dry-run",!1,{description:"Print the versions without actually generating the package archive"});this.prerelease=he.String("--prerelease",{description:"Add a prerelease identifier to new versions",tolerateBoolean:!0});this.exact=he.Boolean("--exact",!1,{description:"Use the exact version of each package, removes any range. Useful for nightly releases where the range might match another version."});this.recursive=he.Boolean("-R,--recursive",{description:"Release the transitive workspaces as well"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["version","apply"]]}static{this.usage=st.Usage({category:"Release-related commands",description:"apply all the deferred version bumps at once",details:` + This command will apply the deferred version changes and remove their definitions from the repository. + + Note that if \`--prerelease\` is set, the given prerelease identifier (by default \`rc.%n\`) will be used on all new versions and the version definitions will be kept as-is. + + By default only the current workspace will be bumped, but you can configure this behavior by using one of: + + - \`--recursive\` to also apply the version bump on its dependencies + - \`--all\` to apply the version bump on all packages in the repository + + Note that this command will also update the \`workspace:\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump. + `,examples:[["Apply the version change to the local workspace","yarn version apply"],["Apply the version change to all the workspaces in the local workspace","yarn version apply --all"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=await Ft.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=this.prerelease?typeof this.prerelease!="boolean"?this.prerelease:"rc.%n":null,h=await AP(s,{prerelease:p}),E=new Map;if(this.all)E=h;else{let C=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let S of C){let x=h.get(S);typeof x<"u"&&E.set(S,x)}}if(E.size===0){let C=h.size>0?" Did you want to add --all?":"";f.reportWarning(0,`The current workspace doesn't seem to require a version bump.${C}`);return}WJ(s,E,{report:f,exact:this.exact}),this.dryRun||(p||(this.all?await GJ(s):await qJ(s,[...E.keys()])),f.reportSeparator())});return this.dryRun||c.hasErrors()?c.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};Ge();bt();jt();var RL=et(hi());var Y1=class extends ft{constructor(){super(...arguments);this.interactive=he.Boolean("-i,--interactive",{description:"Open an interactive interface used to set version bumps"})}static{this.paths=[["version","check"]]}static{this.usage=st.Usage({category:"Release-related commands",description:"check that all the relevant packages have been bumped",details:"\n **Warning:** This command currently requires Git.\n\n This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\n\n In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\n\n In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\n ",examples:[["Check whether the modified packages need a bump","yarn version check"]]})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){XC(this.context);let{Gem:r}=await Promise.resolve().then(()=>(FF(),AY)),{ScrollableItems:s}=await Promise.resolve().then(()=>(MF(),LF)),{FocusRequest:a}=await Promise.resolve().then(()=>(dY(),bwe)),{useListInput:n}=await Promise.resolve().then(()=>(OF(),Dwe)),{renderForm:c}=await Promise.resolve().then(()=>(jF(),HF)),{Box:f,Text:p}=await Promise.resolve().then(()=>et(Yc())),{default:h,useCallback:E,useState:C}=await Promise.resolve().then(()=>et(dn())),S=await Je.find(this.context.cwd,this.context.plugins),{project:x,workspace:I}=await Tt.find(S,this.context.cwd);if(!I)throw new ar(x.cwd,this.context.cwd);await x.restoreInstallState();let R=await j1(x);if(R===null||R.releaseRoots.size===0)return 0;if(R.root===null)throw new ot("This command can only be run on Git repositories");let N=()=>h.createElement(f,{flexDirection:"row",paddingBottom:1},h.createElement(f,{flexDirection:"column",width:60},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select workspaces.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select release strategies."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to save.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),U=({workspace:ge,active:pe,decision:De,setDecision:ye})=>{let d=ge.manifest.raw.stableVersion??ge.manifest.version;if(d===null)throw new Error(`Assertion failed: The version should have been set (${H.prettyLocator(S,ge.anchoredLocator)})`);if(RL.default.prerelease(d)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${d})`);let ve=["undecided","decline","patch","minor","major"];n(De,ve,{active:pe,minus:"left",plus:"right",set:ye});let Ie=De==="undecided"?h.createElement(p,{color:"yellow"},d):De==="decline"?h.createElement(p,{color:"green"},d):h.createElement(p,null,h.createElement(p,{color:"magenta"},d)," \u2192 ",h.createElement(p,{color:"green"},RL.default.valid(De)?De:RL.default.inc(d,De)));return h.createElement(f,{flexDirection:"column"},h.createElement(f,null,h.createElement(p,null,H.prettyLocator(S,ge.anchoredLocator)," - ",Ie)),h.createElement(f,null,ve.map(me=>h.createElement(f,{key:me,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:me===De})," ",me)))))},K=ge=>{let pe=new Set(R.releaseRoots),De=new Map([...ge].filter(([ye])=>pe.has(ye)));for(;;){let ye=pP({project:R.project,releases:De}),d=!1;if(ye.length>0){for(let[ve]of ye)if(!pe.has(ve)){pe.add(ve),d=!0;let Ie=ge.get(ve);typeof Ie<"u"&&De.set(ve,Ie)}}if(!d)break}return{relevantWorkspaces:pe,relevantReleases:De}},$=()=>{let[ge,pe]=C(()=>new Map(R.releases)),De=E((ye,d)=>{let ve=new Map(ge);d!=="undecided"?ve.set(ye,d):ve.delete(ye);let{relevantReleases:Ie}=K(ve);pe(Ie)},[ge,pe]);return[ge,De]},ie=({workspaces:ge,releases:pe})=>{let De=[];De.push(`${ge.size} total`);let ye=0,d=0;for(let ve of ge){let Ie=pe.get(ve);typeof Ie>"u"?d+=1:Ie!=="decline"&&(ye+=1)}return De.push(`${ye} release${ye===1?"":"s"}`),De.push(`${d} remaining`),h.createElement(p,{color:"yellow"},De.join(", "))},le=await c(({useSubmit:ge})=>{let[pe,De]=$();ge(pe);let{relevantWorkspaces:ye}=K(pe),d=new Set([...ye].filter(ce=>!R.releaseRoots.has(ce))),[ve,Ie]=C(0),me=E(ce=>{switch(ce){case a.BEFORE:Ie(ve-1);break;case a.AFTER:Ie(ve+1);break}},[ve,Ie]);return h.createElement(f,{flexDirection:"column"},h.createElement(N,null),h.createElement(f,null,h.createElement(p,{wrap:"wrap"},"The following files have been modified in your local checkout.")),h.createElement(f,{flexDirection:"column",marginTop:1,paddingLeft:2},[...R.changedFiles].map(ce=>h.createElement(f,{key:ce},h.createElement(p,null,h.createElement(p,{color:"grey"},Ae.fromPortablePath(R.root)),Ae.sep,Ae.relative(Ae.fromPortablePath(R.root),Ae.fromPortablePath(ce)))))),R.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):")),d.size>3?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:R.releaseRoots,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:ve%2===0,radius:1,size:2,onFocusRequest:me},[...R.releaseRoots].map(ce=>h.createElement(U,{key:ce.cwd,workspace:ce,decision:pe.get(ce)||"undecided",setDecision:X=>De(ce,X)}))))),d.size>0?h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:")),h.createElement(f,null,h.createElement(p,null,"(Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move the focus between the workspace groups.)")),d.size>5?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:d,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:ve%2===1,radius:2,size:2,onFocusRequest:me},[...d].map(ce=>h.createElement(U,{key:ce.cwd,workspace:ce,decision:pe.get(ce)||"undecided",setDecision:X=>De(ce,X)}))))):null)},{versionFile:R},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof le>"u")return 1;R.releases.clear();for(let[ge,pe]of le)R.releases.set(ge,pe);await R.saveAll()}async executeStandard(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return await s.restoreInstallState(),(await Ft.start({configuration:r,stdout:this.context.stdout},async c=>{let f=await j1(s);if(f===null||f.releaseRoots.size===0)return;if(f.root===null)throw new ot("This command can only be run on Git repositories");if(c.reportInfo(0,`Your PR was started right after ${ue.pretty(r,f.baseHash.slice(0,7),"yellow")} ${ue.pretty(r,f.baseTitle,"magenta")}`),f.changedFiles.size>0){c.reportInfo(0,"You have changed the following files since then:"),c.reportSeparator();for(let S of f.changedFiles)c.reportInfo(null,`${ue.pretty(r,Ae.fromPortablePath(f.root),"gray")}${Ae.sep}${Ae.relative(Ae.fromPortablePath(f.root),Ae.fromPortablePath(S))}`)}let p=!1,h=!1,E=TL(f);if(E.size>0){p||c.reportSeparator();for(let S of E)c.reportError(0,`${H.prettyLocator(r,S.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let C=pP(f);for(let[S,x]of C)h||c.reportSeparator(),c.reportError(0,`${H.prettyLocator(r,S.anchoredLocator)} doesn't have a release strategy attached, but depends on ${H.prettyWorkspace(r,x)} which is planned for release.`),h=!0;(p||h)&&(c.reportSeparator(),c.reportInfo(0,"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed)."),c.reportInfo(0,"To correct these errors, run `yarn version check --interactive` then follow the instructions."))})).exitCode()}};Ge();jt();var FL=et(hi());var W1=class extends ft{constructor(){super(...arguments);this.deferred=he.Boolean("-d,--deferred",{description:"Prepare the version to be bumped during the next release cycle"});this.immediate=he.Boolean("-i,--immediate",{description:"Bump the version immediately"});this.strategy=he.String()}static{this.paths=[["version"]]}static{this.usage=st.Usage({category:"Release-related commands",description:"apply a new version to the current package",details:"\n This command will bump the version number for the given package, following the specified strategy:\n\n - If `major`, the first number from the semver range will be increased (`X.0.0`).\n - If `minor`, the second number from the semver range will be increased (`0.X.0`).\n - If `patch`, the third number from the semver range will be increased (`0.0.X`).\n - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\n - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\n - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\n - If a valid semver range, it will be used as new version.\n - If unspecified, Yarn will ask you for guidance.\n\n For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\n ",examples:[["Immediately bump the version to the next major","yarn version major"],["Prepare the version to be bumped to the next major","yarn version major --deferred"]]})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=r.get("preferDeferredVersions");this.deferred&&(n=!0),this.immediate&&(n=!1);let c=FL.default.valid(this.strategy),f=this.strategy==="decline",p;if(c)if(a.manifest.version!==null){let E=YJ(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!f){if(E===null)throw new ot("Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.");if(typeof E!="string"||!FL.default.valid(E))throw new ot(`Can't bump the version (${E}) if it's not valid semver`)}p=wy(this.strategy)}if(!n){let C=(await AP(s)).get(a);if(typeof C<"u"&&p!=="decline"){let S=fP(a.manifest.version,p);if(FL.default.lt(S,C))throw new ot(`Can't bump the version to one that would be lower than the current deferred one (${C})`)}}let h=await j1(s,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run(["version","apply"])}};var Abt={configuration:{deferredVersionFolder:{description:"Folder where are stored the versioning files",type:"ABSOLUTE_PATH",default:"./.yarn/versions"},preferDeferredVersions:{description:"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set",type:"BOOLEAN",default:!1}},commands:[q1,Y1,W1]},pbt=Abt;var KJ={};Vt(KJ,{WorkspacesFocusCommand:()=>V1,WorkspacesForeachCommand:()=>J1,default:()=>gbt});Ge();Ge();jt();var V1=class extends ft{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.production=he.Boolean("--production",!1,{description:"Only install regular dependencies by omitting dev dependencies"});this.all=he.Boolean("-A,--all",!1,{description:"Install the entire project"});this.workspaces=he.Rest()}static{this.paths=[["workspaces","focus"]]}static{this.usage=st.Usage({category:"Workspace-related commands",description:"install a single workspace and its dependencies",details:"\n This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\n\n Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\n\n If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\n "})}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await zr.find(r);await s.restoreInstallState({restoreResolutions:!1});let c;if(this.all)c=new Set(s.workspaces);else if(this.workspaces.length===0){if(!a)throw new ar(s.cwd,this.context.cwd);c=new Set([a])}else c=new Set(this.workspaces.map(f=>s.getWorkspaceByIdent(H.parseIdent(f))));for(let f of c)for(let p of this.production?["dependencies"]:_t.hardDependencies)for(let h of f.manifest.getForScope(p).values()){let E=s.tryWorkspaceByDescriptor(h);E!==null&&c.add(E)}for(let f of s.workspaces)c.has(f)?this.production&&f.manifest.devDependencies.clear():(f.manifest.installConfig=f.manifest.installConfig||{},f.manifest.installConfig.selfReferences=!1,f.manifest.dependencies.clear(),f.manifest.devDependencies.clear(),f.manifest.peerDependencies.clear(),f.manifest.scripts.clear());return await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};Ge();Ge();Ge();jt();var K1=et(Zo()),wPe=et(M0());Jo();var J1=class extends ft{constructor(){super(...arguments);this.from=he.Array("--from",{description:"An array of glob pattern idents or paths from which to base any recursion"});this.all=he.Boolean("-A,--all",{description:"Run the command on all workspaces of a project"});this.recursive=he.Boolean("-R,--recursive",{description:"Run the command on the current workspace and all of its recursive dependencies"});this.worktree=he.Boolean("-W,--worktree",{description:"Run the command on all workspaces of the current worktree"});this.verbose=he.Counter("-v,--verbose",{description:"Increase level of logging verbosity up to 2 times"});this.parallel=he.Boolean("-p,--parallel",!1,{description:"Run the commands in parallel"});this.interlaced=he.Boolean("-i,--interlaced",!1,{description:"Print the output of commands in real-time instead of buffering it"});this.jobs=he.String("-j,--jobs",{description:"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`",validator:l_([Qs(["unlimited"]),z2(a_(),[u_(),c_(1)])])});this.topological=he.Boolean("-t,--topological",!1,{description:"Run the command after all workspaces it depends on (regular) have finished"});this.topologicalDev=he.Boolean("--topological-dev",!1,{description:"Run the command after all workspaces it depends on (regular + dev) have finished"});this.include=he.Array("--include",[],{description:"An array of glob pattern idents or paths; only matching workspaces will be traversed"});this.exclude=he.Array("--exclude",[],{description:"An array of glob pattern idents or paths; matching workspaces won't be traversed"});this.publicOnly=he.Boolean("--no-private",{description:"Avoid running the command on private workspaces"});this.since=he.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.dryRun=he.Boolean("-n,--dry-run",{description:"Print the commands that would be run, without actually running them"});this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[["workspaces","foreach"]]}static{this.usage=st.Usage({category:"Workspace-related commands",description:"run a command on all workspaces",details:"\n This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\n\n - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\n\n - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\n\n - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\n\n - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\n\n - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\n\n - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\n\n - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. You can also use the `--no-private` flag to avoid running the command in private workspaces.\n\n The `-v,--verbose` flag can be passed up to twice: once to prefix output lines with the originating workspace's name, and again to include start/finish/timing log lines. Maximum verbosity is enabled by default in terminal environments.\n\n If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\n ",examples:[["Publish all packages","yarn workspaces foreach -A --no-private npm publish --tolerate-republish"],["Run the build script on all descendant packages","yarn workspaces foreach -A run build"],["Run the build script on current and all descendant packages in parallel, building package dependencies first","yarn workspaces foreach -Apt run build"],["Run the build script on several packages and all their dependencies, building dependencies first","yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build"]]})}static{this.schema=[X2("all",Vf.Forbids,["from","recursive","since","worktree"],{missingIf:"undefined"}),f_(["all","recursive","since","worktree"],{missingIf:"undefined"})]}async execute(){let r=await Je.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!this.all&&!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),c=n.path.length===1&&n.path[0]==="run"&&typeof n.scriptName<"u"?n.scriptName:null;if(n.path.length===0)throw new ot("Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script");let f=ye=>{this.dryRun&&this.context.stdout.write(`${ye} +`)},p=()=>{let ye=this.from.map(d=>K1.default.matcher(d));return s.workspaces.filter(d=>{let ve=H.stringifyIdent(d.anchoredLocator),Ie=d.relativeCwd;return ye.some(me=>me(ve)||me(Ie))})},h=[];if(this.since?(f("Option --since is set; selecting the changed workspaces as root for workspace selection"),h=Array.from(await Ma.fetchChangedWorkspaces({ref:this.since,project:s}))):this.from?(f("Option --from is set; selecting the specified workspaces"),h=[...p()]):this.worktree?(f("Option --worktree is set; selecting the current workspace"),h=[a]):this.recursive?(f("Option --recursive is set; selecting the current workspace"),h=[a]):this.all&&(f("Option --all is set; selecting all workspaces"),h=[...s.workspaces]),this.dryRun&&!this.all){for(let ye of h)f(` +- ${ye.relativeCwd} + ${H.prettyLocator(r,ye.anchoredLocator)}`);h.length>0&&f("")}let E;if(this.recursive?this.since?(f("Option --recursive --since is set; recursively selecting all dependent workspaces"),E=new Set(h.map(ye=>[...ye.getRecursiveWorkspaceDependents()]).flat())):(f("Option --recursive is set; recursively selecting all transitive dependencies"),E=new Set(h.map(ye=>[...ye.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(f("Option --worktree is set; recursively selecting all nested workspaces"),E=new Set(h.map(ye=>[...ye.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let ye of E)f(` +- ${ye.relativeCwd} + ${H.prettyLocator(r,ye.anchoredLocator)}`);let C=[],S=!1;if(c?.includes(":")){for(let ye of s.workspaces)if(ye.manifest.scripts.has(c)&&(S=!S,S===!1))break}for(let ye of h){if(c&&!ye.manifest.scripts.has(c)&&!S&&!(await wn.getWorkspaceAccessibleBinaries(ye)).has(c)){f(`Excluding ${ye.relativeCwd} because it doesn't have a "${c}" script`);continue}if(!(c===r.env.npm_lifecycle_event&&ye.cwd===a.cwd)){if(this.include.length>0&&!K1.default.isMatch(H.stringifyIdent(ye.anchoredLocator),this.include)&&!K1.default.isMatch(ye.relativeCwd,this.include)){f(`Excluding ${ye.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(K1.default.isMatch(H.stringifyIdent(ye.anchoredLocator),this.exclude)||K1.default.isMatch(ye.relativeCwd,this.exclude))){f(`Excluding ${ye.relativeCwd} because it matches the --exclude filter`);continue}if(this.publicOnly&&ye.manifest.private===!0){f(`Excluding ${ye.relativeCwd} because it's a private workspace and --no-private was set`);continue}C.push(ye)}}if(C.sort((ye,d)=>H.stringifyIdent(ye.anchoredLocator).localeCompare(H.stringifyIdent(d.anchoredLocator))),this.dryRun)return 0;let x=this.verbose??(this.context.stdout.isTTY?1/0:0),I=x>0,R=x>1,N=this.parallel?this.jobs==="unlimited"?1/0:Number(this.jobs)||Math.ceil(Ui.availableParallelism()/2):1,U=N===1?!1:this.parallel,K=U?this.interlaced:!0,$=(0,wPe.default)(N),ie=new Map,fe=new Set,le=0,ge=null,pe=!1,De=await Ft.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async ye=>{let d=async(ve,{commandIndex:Ie})=>{if(pe)return-1;!U&&R&&Ie>1&&ye.reportSeparator();let me=hbt(ve,{configuration:r,label:I,commandIndex:Ie}),[ce,X]=CPe(ye,{prefix:me,interlaced:K}),[be,ke]=CPe(ye,{prefix:me,interlaced:K});try{R&&ye.reportInfo(null,`${me?`${me} `:""}Process started`);let it=Date.now(),_=await this.cli.run([this.commandName,...this.args],{cwd:ve.cwd,stdout:ce,stderr:be})||0;ce.end(),be.end(),await X,await ke;let tt=Date.now();if(R){let Fe=r.get("enableTimers")?`, completed in ${ue.pretty(r,tt-it,ue.Type.DURATION)}`:"";ye.reportInfo(null,`${me?`${me} `:""}Process exited (exit code ${_})${Fe}`)}return _===130&&(pe=!0,ge=_),_}catch(it){throw ce.end(),be.end(),await X,await ke,it}};for(let ve of C)ie.set(ve.anchoredLocator.locatorHash,ve);for(;ie.size>0&&!ye.hasErrors();){let ve=[];for(let[X,be]of ie){if(fe.has(be.anchoredDescriptor.descriptorHash))continue;let ke=!0;if(this.topological||this.topologicalDev){let it=this.topologicalDev?new Map([...be.manifest.dependencies,...be.manifest.devDependencies]):be.manifest.dependencies;for(let _ of it.values()){let tt=s.tryWorkspaceByDescriptor(_);if(ke=tt===null||!ie.has(tt.anchoredLocator.locatorHash),!ke)break}}if(ke&&(fe.add(be.anchoredDescriptor.descriptorHash),ve.push($(async()=>{let it=await d(be,{commandIndex:++le});return ie.delete(X),fe.delete(be.anchoredDescriptor.descriptorHash),{workspace:be,exitCode:it}})),!U))break}if(ve.length===0){let X=Array.from(ie.values()).map(be=>H.prettyLocator(r,be.anchoredLocator)).join(", ");ye.reportError(3,`Dependency cycle detected (${X})`);return}let Ie=await Promise.all(ve);Ie.forEach(({workspace:X,exitCode:be})=>{be!==0&&ye.reportError(0,`The command failed in workspace ${H.prettyLocator(r,X.anchoredLocator)} with exit code ${be}`)});let ce=Ie.map(X=>X.exitCode).find(X=>X!==0);(this.topological||this.topologicalDev)&&typeof ce<"u"&&ye.reportError(0,"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph")}});return ge!==null?ge:De.exitCode()}};function CPe(e,{prefix:t,interlaced:r}){let s=e.createStreamReporter(t),a=new qe.DefaultStream;a.pipe(s,{end:!1}),a.on("finish",()=>{s.end()});let n=new Promise(f=>{s.on("finish",()=>{f(a.active)})});if(r)return[a,n];let c=new qe.BufferStream;return c.pipe(a,{end:!1}),c.on("finish",()=>{a.end()}),[c,n]}function hbt(e,{configuration:t,commandIndex:r,label:s}){if(!s)return null;let n=`[${H.stringifyIdent(e.anchoredLocator)}]:`,c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[r%c.length];return ue.pretty(t,n,f)}var dbt={commands:[V1,J1]},gbt=dbt;var KI=()=>({modules:new Map([["@yarnpkg/cli",Kv],["@yarnpkg/core",Vv],["@yarnpkg/fslib",M2],["@yarnpkg/libzip",lv],["@yarnpkg/parsers",W2],["@yarnpkg/shell",hv],["clipanion",nB],["semver",mbt],["typanion",qs],["@yarnpkg/plugin-essentials",G5],["@yarnpkg/plugin-catalog",V5],["@yarnpkg/plugin-compat",X5],["@yarnpkg/plugin-constraints",d9],["@yarnpkg/plugin-dlx",g9],["@yarnpkg/plugin-exec",E9],["@yarnpkg/plugin-file",C9],["@yarnpkg/plugin-git",j5],["@yarnpkg/plugin-github",v9],["@yarnpkg/plugin-http",S9],["@yarnpkg/plugin-init",b9],["@yarnpkg/plugin-interactive-tools",BY],["@yarnpkg/plugin-jsr",SY],["@yarnpkg/plugin-link",bY],["@yarnpkg/plugin-nm",dW],["@yarnpkg/plugin-npm",hJ],["@yarnpkg/plugin-npm-cli",vJ],["@yarnpkg/plugin-pack",aV],["@yarnpkg/plugin-patch",QJ],["@yarnpkg/plugin-pnp",rW],["@yarnpkg/plugin-pnpm",FJ],["@yarnpkg/plugin-stage",HJ],["@yarnpkg/plugin-typescript",jJ],["@yarnpkg/plugin-version",VJ],["@yarnpkg/plugin-workspace-tools",KJ]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-catalog","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"])});function SPe({cwd:e,pluginConfiguration:t}){let r=new ba({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:An??""});return Object.assign(r,{defaultContext:{...ba.defaultContext,cwd:e,plugins:t,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function ybt(e){if(qe.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,s=">=18.12.0";if(kr.satisfiesWithPrereleases(r,s))return!0;let a=new ot(`This tool requires a Node version compatible with ${s} (got ${r}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);return ba.defaultContext.stdout.write(e.error(a)),!1}async function bPe({selfPath:e,pluginConfiguration:t}){return await Je.find(Ae.toPortablePath(process.cwd()),t,{strict:!1,usePathCheck:e})}function Ebt(e,t,{yarnPath:r}){if(!ae.existsSync(r))return e.error(new Error(`The "yarn-path" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on("SIGINT",()=>{});let s={stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1"}};try{(0,BPe.execFileSync)(process.execPath,[Ae.fromPortablePath(r),...t],s)}catch(a){return a.status??1}return 0}function Ibt(e,t){let r=null,s=t;return t.length>=2&&t[0]==="--cwd"?(r=Ae.toPortablePath(t[1]),s=t.slice(2)):t.length>=1&&t[0].startsWith("--cwd=")?(r=Ae.toPortablePath(t[0].slice(6)),s=t.slice(1)):t[0]==="add"&&t[t.length-2]==="--cwd"&&(r=Ae.toPortablePath(t[t.length-1]),s=t.slice(0,t.length-2)),e.defaultContext.cwd=r!==null?Y.resolve(r):Y.cwd(),s}function Cbt(e,{configuration:t}){if(!t.get("enableTelemetry")||vPe.isCI||!process.stdout.isTTY)return;Je.telemetry=new YI(t,"puba9cdc10ec5790a2cf4969dd413a47270");let s=/^@yarnpkg\/plugin-(.*)$/;for(let a of t.plugins.keys())WI.has(a.match(s)?.[1]??"")&&Je.telemetry?.reportPluginName(a);e.binaryVersion&&Je.telemetry.reportVersion(e.binaryVersion)}function DPe(e,{configuration:t}){for(let r of t.plugins.values())for(let s of r.commands||[])e.register(s)}async function wbt(e,t,{selfPath:r,pluginConfiguration:s}){if(!ybt(e))return 1;let a=await bPe({selfPath:r,pluginConfiguration:s}),n=a.get("yarnPath"),c=a.get("ignorePath");if(n&&!c)return Ebt(e,t,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let f=Ibt(e,t);Cbt(e,{configuration:a}),DPe(e,{configuration:a});let p=e.process(f,e.defaultContext);return p.help||Je.telemetry?.reportCommandName(p.path.join(" ")),await e.run(p,e.defaultContext)}async function kde({cwd:e=Y.cwd(),pluginConfiguration:t=KI()}={}){let r=SPe({cwd:e,pluginConfiguration:t}),s=await bPe({pluginConfiguration:t,selfPath:null});return DPe(r,{configuration:s}),r}async function OR(e,{cwd:t=Y.cwd(),selfPath:r,pluginConfiguration:s}){let a=SPe({cwd:t,pluginConfiguration:s});function n(){ba.defaultContext.stdout.write(`ERROR: Yarn is terminating due to an unexpected empty event loop. +Please report this issue at https://github.com/yarnpkg/berry/issues.`)}process.once("beforeExit",n);try{process.exitCode=42,process.exitCode=await wbt(a,e,{selfPath:r,pluginConfiguration:s})}catch(c){ba.defaultContext.stdout.write(a.error(c)),process.exitCode=1}finally{process.off("beforeExit",n),await ae.rmtempPromise()}}OR(process.argv.slice(2),{cwd:Y.cwd(),selfPath:Ae.toPortablePath(Ae.resolve(process.argv[1])),pluginConfiguration:KI()});})(); +/** + @license + Copyright (c) 2015, Rebecca Turner + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + */ +/** + @license + Copyright Node.js contributors. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. +*/ +/** + @license + The MIT License (MIT) + + Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ +/** + @license + Copyright Joyent, Inc. and other Node contributors. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +/*! Bundled license information: + +is-number/index.js: + (*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + *) + +to-regex-range/index.js: + (*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + *) + +fill-range/index.js: + (*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + *) + +is-extglob/index.js: + (*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + *) + +is-glob/index.js: + (*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + *) + +queue-microtask/index.js: + (*! queue-microtask. MIT License. Feross Aboukhadijeh *) + +run-parallel/index.js: + (*! run-parallel. MIT License. Feross Aboukhadijeh *) + +git-url-parse/lib/index.js: + (*! + * buildToken + * Builds OAuth token prefix (helper function) + * + * @name buildToken + * @function + * @param {GitUrl} obj The parsed Git url object. + * @return {String} token prefix + *) + +object-assign/index.js: + (* + object-assign + (c) Sindre Sorhus + @license MIT + *) + +react/cjs/react.production.min.js: + (** @license React v17.0.2 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +scheduler/cjs/scheduler.production.min.js: + (** @license React v0.20.2 + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react-reconciler/cjs/react-reconciler.production.min.js: + (** @license React v0.26.2 + * react-reconciler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +is-windows/index.js: + (*! + * is-windows + * + * Copyright © 2015-2018, Jon Schlinkert. + * Released under the MIT License. + *) +*/ diff --git a/.yarnrc.yml b/.yarnrc.yml index fd84577753a88..7deb93c1747f8 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1,3 +1,6 @@ +approvedGitRepositories: + - "**" + checksumBehavior: update compressionLevel: mixed @@ -6,10 +9,14 @@ enableGlobalCache: false enableImmutableInstalls: false +enableScripts: true + nodeLinker: node-modules +npmMinimalAgeGate: 0 + plugins: - path: .yarn/plugins/@yarnpkg/plugin-engines.cjs spec: "https://raw.githubusercontent.com/devoto13/yarn-plugin-engines/main/bundles/%40yarnpkg/plugin-engines.js" -yarnPath: .yarn/releases/yarn-4.12.0.cjs +yarnPath: .yarn/releases/yarn-4.17.1.cjs diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000000000..1338ebb9f4a79 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,41 @@ +# Rocket.Chat + +Monorepo: the main Meteor app lives in `apps/meteor/`, shared libraries in `packages/`, other services in `apps/` and `ee/`. + +## Documentation index + +Read the doc that matches the task instead of scanning `docs/` wholesale. + +### Cross-cutting + +- [docs/i18n.md](docs/i18n.md) — translation keys: where they live, naming, namespaces, interpolation, plurals, server-side `lng`, what the i18n linter enforces + +### Frontend + +- [docs/frontend/](docs/frontend/) — frontend guidelines, split by topic: + - [typescript-conventions.md](docs/frontend/typescript-conventions.md) — ES modules, `import type`, `type` vs `interface`, `any` vs `unknown` + - [migrating-from-javascript.md](docs/frontend/migrating-from-javascript.md) — gradual JS → TS migration + - [react.md](docs/frontend/react.md) — component structure, naming, exports, explicit and generic props types + - [building-components.md](docs/frontend/building-components.md) — application vs Fuselage components, styling rules, Storybook-first + - [i18n.md](docs/frontend/i18n.md) — client side only: `useTranslation`, `Trans`, runtime keys, escaping (shared rules in [docs/i18n.md](docs/i18n.md)) +- [docs/form-validation.md](docs/form-validation.md) — standardized form validation patterns +- [docs/anchor-navigation.md](docs/anchor-navigation.md) — deep-linking to a field via URL hash fragments +- [docs/bundle-optimization-react-aria.md](docs/bundle-optimization-react-aria.md) — barrel-import patches; Meteor's bundler does not tree-shake + +### Backend + +- [docs/backend-folder-structure.md](docs/backend-folder-structure.md) — how `apps/meteor/` server code is organized and where new code goes +- [docs/api-endpoint-migration.md](docs/api-endpoint-migration.md) — migrating `API.v1.addRoute()` to the validated `API.v1.get()`/`.post()`/… pattern +- [docs/ajv-instances.md](docs/ajv-instances.md) — when to use `ajv` vs `ajvQuery` in `@rocket.chat/rest-typings` +- [docs/apps-engine-migration.md](docs/apps-engine-migration.md) — phased extraction of apps execution into a microservice + +### Build and tooling + +- [docs/meteor-modern-stack.md](docs/meteor-modern-stack.md) — Meteor modern build stack, file-watching caveats +- [docs/coverage.md](docs/coverage.md) — coverage instrumentation in build and CI + +### Other + +- [docs/adr/](docs/adr/) — architecture decision records +- [docs/features/](docs/features/) — per-feature notes +- [docs/proposals/](docs/proposals/) — design proposals, not yet implemented diff --git a/README.md b/README.md index 5c8f065f1849b..84109f3b1b39b 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,3 @@ We're hiring developers, technical support, and product managers all the time. C - [Facebook](https://www.facebook.com/RocketChatApp) - [LinkedIn](https://www.linkedin.com/company/rocket-chat) - [YouTube](https://www.youtube.com/channel/UCin9nv7mUjoqrRiwrzS5UVQ) - -# 🗒️ Credits - -- Emoji provided graciously by [JoyPixels](https://www.joypixels.com). diff --git a/apps/meteor/.docker/Dockerfile.alpine b/apps/meteor/.docker/Dockerfile.alpine index 2bee7b45f36e3..307c801f261a0 100644 --- a/apps/meteor/.docker/Dockerfile.alpine +++ b/apps/meteor/.docker/Dockerfile.alpine @@ -20,7 +20,7 @@ RUN cd /app/bundle/programs/server \ && find /app/bundle/programs/server/npm/node_modules -type f -name '*.map' -delete \ && find /app/bundle/programs/web.browser -type f -name '*.map' -delete -FROM node:22.22.3-alpine3.23 +FROM node:22.22.3-alpine3.23 AS release-standard LABEL maintainer="buildmaster@rocket.chat" @@ -65,3 +65,29 @@ WORKDIR /app/bundle EXPOSE 3000 CMD ["node", "main.js"] + +FROM rocketchat/dhi-node:22.22.3-alpine3.23-fips AS release-fips + +LABEL maintainer="buildmaster@rocket.chat" + +# needs a mongo instance - defaults to container linking with alias 'mongo' +ENV DEPLOY_METHOD=docker \ + NODE_ENV=production \ + MONGO_URL=mongodb://mongo:27017/rocketchat \ + HOME=/tmp \ + PORT=3000 \ + ROOT_URL=http://localhost:3000 \ + Accounts_AvatarStorePath=/app/uploads \ + APPS_ENGINE_RUNTIME_BACKEND=node + +USER node + +COPY --from=builder --chown=node:node /app /app + +VOLUME /app/uploads + +WORKDIR /app/bundle + +EXPOSE 3000 + +CMD ["node", "--force-fips", "main.js"] diff --git a/apps/meteor/.mocharc.api.apps.js b/apps/meteor/.mocharc.api.apps.js new file mode 100644 index 0000000000000..7eea51b389f01 --- /dev/null +++ b/apps/meteor/.mocharc.api.apps.js @@ -0,0 +1,15 @@ +'use strict'; + +/* + * Mocha configuration for REST API integration tests. + */ + +module.exports = /** @satisfies {import('mocha').MochaOptions} */ ({ + ...require('./.mocharc.base.json'), // see https://github.com/mochajs/mocha/issues/3916 + timeout: 10000, + bail: false, + retries: 0, + file: 'tests/end-to-end/teardown.ts', + reporter: 'tests/end-to-end/reporter.ts', + spec: ['tests/end-to-end/apps/*'], +}); diff --git a/apps/meteor/.mocharc.js b/apps/meteor/.mocharc.js index bcbb789e3dd98..6837d59437853 100644 --- a/apps/meteor/.mocharc.js +++ b/apps/meteor/.mocharc.js @@ -9,9 +9,14 @@ const base = require('./.mocharc.base.json'); module.exports = { ...base, // see https://github.com/mochajs/mocha/issues/3916 exit: true, + // getUserInfo.spec.ts lives under server/api/lib but is a Jest test (run via jest.config.ts), + // so it must be excluded from the mocha `server/api/lib/**` glob below. Same for the + // business-hour spec under server/lib/omnichannel. + ignore: ['server/api/lib/getUserInfo.spec.ts', 'server/lib/omnichannel/business-hour/**/*.spec.ts'], spec: [ 'server/lib/callbacks.spec.ts', 'server/lib/cas/*.spec.ts', + 'server/lib/messages/**/*.spec.ts', 'server/lib/ldap/*.spec.ts', 'server/lib/ldap/**/*.spec.ts', 'server/lib/dataExport/**/*.spec.ts', @@ -25,14 +30,16 @@ module.exports = { 'tests/unit/lib/**/*.tests.ts', 'server/routes/avatar/**/*.spec.ts', 'tests/unit/lib/**/*.spec.ts', + 'tests/unit/server/**/*.tests.js', 'tests/unit/server/**/*.tests.ts', 'tests/unit/server/**/*.spec.ts', - 'app/2fa/server/**/*.spec.ts', - 'app/api/server/lib/**/*.spec.ts', - 'app/file-upload/server/**/*.spec.ts', - 'app/statistics/server/**/*.spec.ts', - 'app/livechat/server/lib/**/*.spec.ts', - 'app/push/server/**/*.spec.ts', - 'app/utils/server/**/*.spec.ts', + 'server/lib/2fa/**/*.spec.ts', + 'server/api/lib/**/*.spec.ts', + 'server/lib/media/**/*.spec.ts', + 'server/lib/statistics/**/*.spec.ts', + 'server/meteor-methods/**/*.spec.ts', + 'server/lib/omnichannel/**/*.spec.ts', + 'server/lib/notifications/push/**/*.spec.ts', + 'server/lib/utils/**/*.spec.ts', ], }; diff --git a/apps/meteor/.scripts/run-ha.ts b/apps/meteor/.scripts/run-ha.ts index a1a3775000690..2b53a960d7c06 100644 --- a/apps/meteor/.scripts/run-ha.ts +++ b/apps/meteor/.scripts/run-ha.ts @@ -56,7 +56,7 @@ async function runMain(config: IConfig): Promise { async function runInstance(config: IConfig): Promise { // Desctructuring the unused variables allows us to omit them in the `mainConfig` - // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { customEnv, parentEnv, ...mainConfig } = config; const env = { diff --git a/apps/meteor/.scripts/version.js b/apps/meteor/.scripts/version.js index 9ad130f449f4f..d33237361fbc1 100644 --- a/apps/meteor/.scripts/version.js +++ b/apps/meteor/.scripts/version.js @@ -3,7 +3,7 @@ const path = require('path'); let pkgJson = {}; try { - // eslint-disable-next-line import/no-dynamic-require + // eslint-disable-next-line import-x/no-dynamic-require pkgJson = require(path.resolve(process.cwd(), './package.json')); } catch (err) { console.error('no root package.json found'); diff --git a/apps/meteor/.stylelintignore b/apps/meteor/.stylelintignore index 242e9a4701c3a..edc9384135b98 100644 --- a/apps/meteor/.stylelintignore +++ b/apps/meteor/.stylelintignore @@ -1,3 +1,2 @@ app/meteor-autocomplete/client/autocomplete.css -app/emoji-emojione/client/*.css storybook-static diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index e7fea70650c34..f445c229fe51f 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,224 @@ # @rocket.chat/meteor +## 8.7.0-rc.4 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +- ([#41588](https://github.com/RocketChat/Rocket.Chat/pull/41588)) Fixes audio attachments not being seekable using the progress slider + +-
Updated dependencies []: + + - @rocket.chat/core-typings@8.7.0-rc.4 + - @rocket.chat/rest-typings@8.7.0-rc.4 +
+ +## 8.7.0-rc.3 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +-
Updated dependencies []: + + - @rocket.chat/core-typings@8.7.0-rc.3 + - @rocket.chat/rest-typings@8.7.0-rc.3 +
+ +## 8.7.0-rc.2 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +-
Updated dependencies []: + + - @rocket.chat/core-typings@8.7.0-rc.2 + - @rocket.chat/rest-typings@8.7.0-rc.2 +
+ +## 8.7.0-rc.1 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +-
Updated dependencies []: + + - @rocket.chat/core-typings@8.7.0-rc.1 + - @rocket.chat/rest-typings@8.7.0-rc.1 +
+ +## 8.7.0-rc.0 + +### Minor Changes + +- ([#40351](https://github.com/RocketChat/Rocket.Chat/pull/40351)) Adds `current` field to `DeviceManagementSession` type and `currentLoginToken` parameter to `aggregateSessionsByUserId`, allowing the sessions endpoint to identify and flag the caller's active session. + +- ([#40721](https://github.com/RocketChat/Rocket.Chat/pull/40721)) ## Phishing-Resistant Multi-Factor Authentication + + Introduces a more secure and reliable server-side OAuth authentication flow. + + ### What’s New + + - **Improved OAuth login security** + OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. + - **Built-in CSRF, state validation, and PKCE protection** + OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. + - **Improved two-step verification with OAuth logins** + Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. + - **Improved mobile & desktop app login** + Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. + - **A new setting to enable/disable new OAuth Flow** + Enable this new setting `Accounts_OAuth_Use_Modern_Flow` to use all of the above mentioned features. + +- ([#40890](https://github.com/RocketChat/Rocket.Chat/pull/40890)) Adds AI Search with semantic message results, optional OpenAI-compatible answers, and AI Center configuration. + +- ([#39324](https://github.com/RocketChat/Rocket.Chat/pull/39324)) Adds support for running Rocket.Chat in FIPS mode. The monolith and all microservices (ddp-streamer, account-service, authorization-service, presence-service, queue-worker, omnichannel-transcript) can now enforce FIPS-compliant cryptography via Node.js/OpenSSL FIPS, with dedicated FIPS Docker images. Running in FIPS mode requires a license including the new `fips` module, and FIPS status is now reported in server logs and statistics. + +- ([#41019](https://github.com/RocketChat/Rocket.Chat/pull/41019)) Adds an alternative runtime runner for apps. It can be enabled via environment variable `APPS_ENGINE_RUNTIME_BACKEND='node'` + +- ([#41142](https://github.com/RocketChat/Rocket.Chat/pull/41142)) Adds inline JSON validation feedback to admin settings that hold JSON (`code: application/json`), showing an error in the editor and blocking save while the value is malformed + +- ([#40916](https://github.com/RocketChat/Rocket.Chat/pull/40916)) Adds a new `licenses.validate` REST endpoint that validates a Rocket.Chat license (V2 or V3 JWT) against the current workspace without applying it, so a license can be previewed before it is applied from the UI. A valid license responds with success; an invalid one responds with the validation behaviors that rejected it. + +- ([#39411](https://github.com/RocketChat/Rocket.Chat/pull/39411)) Replaces proprietary emojis with native (unicode) emojis and increases available emoji set + +- ([#41148](https://github.com/RocketChat/Rocket.Chat/pull/41148)) Adds support for the `offline` license flag, suppressing every outbound connection to Rocket.Chat Cloud services and the Push Gateway at its source, so air-gapped workspaces never initiate calls that would violate their security compliance. + +- ([#41120](https://github.com/RocketChat/Rocket.Chat/pull/41120)) Added a persistent audio player. Playing an audio attachment now continues across room navigation: the audio keeps playing when you switch or close the conversation, and a "Now playing" card appears at the top of the sidebar with play/pause, seek, playback speed (1x/1.5x/2x), and a shortcut back to the originating conversation. + +- ([#40728](https://github.com/RocketChat/Rocket.Chat/pull/40728)) Deprecates the `logoutCleanUp` DDP method and stops the client from calling it. The post-logout side effects (`afterLogoutCleanUpCallback` + `Apps.IPostUserLoggedOut`) now run server-side via a new `Accounts.onLogout` handler and from `POST /v1/users.logout`, so both DDP and REST logout paths fire them without a client round-trip. The DDP method keeps its original implementation and registration with a deprecation log pointing at `/v1/users.logout` until 9.0.0. + +- ([#40728](https://github.com/RocketChat/Rocket.Chat/pull/40728)) Added `POST /v1/cloud.connectWorkspace` (replaces the deprecated `cloud:connectWorkspace` DDP method). Body is `{ token }`; auth-gated with `manage-cloud` permission. The legacy DDP method remains registered with a deprecation log pointing at the new route. + +- ([#40728](https://github.com/RocketChat/Rocket.Chat/pull/40728)) Added `POST /v1/integrations.clearHistory` and `POST /v1/integrations.replayOutgoing` (replace the deprecated `clearIntegrationHistory` and `replayOutgoingIntegration` DDP methods). Bodies `{ integrationId }` and `{ integrationId, historyId }` respectively. Permissions (`manage-outgoing-integrations` or `manage-own-outgoing-integrations`) are enforced the same way the DDP methods did. Legacy DDP methods remain registered with deprecation logs pointing at the new routes. + +- ([#40728](https://github.com/RocketChat/Rocket.Chat/pull/40728)) Added `POST /v1/permissions.addRole` and `POST /v1/permissions.removeRole` (replace the deprecated `authorization:addPermissionToRole` and `authorization:removeRoleFromPermission` DDP methods). Body is `{ permissionId, role }` on both. The same per-user permission checks (`access-permissions`, `access-setting-permissions`) the DDP methods enforced are reused. Legacy DDP methods remain registered with deprecation logs pointing at the new routes. + +- ([#40728](https://github.com/RocketChat/Rocket.Chat/pull/40728)) Extended `POST /v1/users.setAvatar` to accept an optional `service` multipart field. When provided, the value is stored as the user's `avatarOrigin`, matching what the deprecated `setAvatarFromService` DDP method did. The legacy DDP method remains registered with a deprecation log pointing at the new route. + +- ([#40728](https://github.com/RocketChat/Rocket.Chat/pull/40728)) Added `POST /v1/users.verifyEmail` (replaces the two-call DDP flow of `verifyEmail` + `afterVerifyEmail`). Body is `{ token }`; the server resolves the user, marks the email verified, and runs the anonymous→user role swap in a single request. The deprecated `afterVerifyEmail` DDP method keeps its registration with a deprecation log pointing at the new route. + +- ([#40916](https://github.com/RocketChat/Rocket.Chat/pull/40916)) Adds a manage license flow to the subscription admin page, allowing license verification before applying it and an option to remove the license. Note: From this point license management should be made in subscription page instead of the Enterprise settings page. + +### Patch Changes + +- ([#41174](https://github.com/RocketChat/Rocket.Chat/pull/41174)) Fixes race conditions in several check-then-write database flows by collapsing them into single atomic operations: CAS login tokens can no longer be consumed by two concurrent logins, revoking a room invite no longer emits duplicate removal notifications, and deleting an integration now enforces the creator-only permission scope in the delete itself + +- ([#41152](https://github.com/RocketChat/Rocket.Chat/pull/41152)) Fixes own account showing twice in navbar room search when searching by username + +- ([#41285](https://github.com/RocketChat/Rocket.Chat/pull/41285)) Fixes the Slack importer storing shared files as raw URLs in the message body. Imported file messages now stay hidden until "Download Pending Files" button fetches them, then display as native attachments with image previews. Failed downloads (e.g. invalidated export links) are no longer silently saved as the file's content — they are counted as errors and can be retried. + +- ([#41056](https://github.com/RocketChat/Rocket.Chat/pull/41056)) Added a `setUserRoles` bridge method to the desktop API and pushed the logged-in user's roles to the desktop app. This lets the desktop client restrict supportedVersions messages (such as version-expiration warnings) to specific roles like admins, instead of showing them to every user. The push is reactive to role changes; desktop builds without the bridge method fall back to their own role lookup. + +- ([#41207](https://github.com/RocketChat/Rocket.Chat/pull/41207)) Fixes engagement dashboard loading unnecessary data into memory on startup + +- ([#41173](https://github.com/RocketChat/Rocket.Chat/pull/41173)) Fixes the password policy allowing a maximum length lower than the minimum length to be saved — a combination that made it impossible to set any valid password. The server now rejects such configurations when password policy settings are saved and shows an error explaining the constraint. + +- ([#41233](https://github.com/RocketChat/Rocket.Chat/pull/41233)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + +- ([#41195](https://github.com/RocketChat/Rocket.Chat/pull/41195)) fix: Buttons from emoji picker misbehaving on clicks + + An infinite render loop was preventing proper behavior when clicking on the emoji picker buttons. It was fixed by removing the unnecessary state update that was causing the loop and replacing multiple fires of the same mouseover event (when a mouseenter event was the right one to use). There is a chance this pre-existing bug was hidden by React 18's event delegation. + +- ([#41158](https://github.com/RocketChat/Rocket.Chat/pull/41158)) Fixes agents' business-hour availability not being updated when they are removed from a department linked to a business hour while multiple business hours are enabled. The recomputation step always failed, leaving removed agents available (or unavailable) according to a business hour that no longer applied to them — and, on deployments running with `EXIT_UNHANDLEDPROMISEREJECTION` (or in development/test mode), the unhandled rejection crashed the server process. + +- ([#41164](https://github.com/RocketChat/Rocket.Chat/pull/41164)) Fixes multiple business hours losing their linked departments after a daylight saving time change or a server restart. The automatic timezone adjustment re-saved business hours without their department associations, causing business hours configured with timezones to silently stop applying to agents. + + Also fixes agents keeping a business hour's availability after their department was removed from it: saving a business hour with a smaller department list unlinked the departments but never cleared the business hour from the removed departments' agents. + +- ([#41472](https://github.com/RocketChat/Rocket.Chat/pull/41472)) Fixes the license provided via the `ROCKETCHAT_LICENSE` environment variable not being applied when it is newer than the one persisted in the workspace. + +- ([#40351](https://github.com/RocketChat/Rocket.Chat/pull/40351)) Fixes error message being shown when logging out current device via Device Management despite successful logout. + +- ([#41169](https://github.com/RocketChat/Rocket.Chat/pull/41169)) Fixes a race condition that left messages permanently undecryptable ("incorrect encryption key") in rooms created with encryption enabled. When several members opened such a room at the same time, each client could independently generate and distribute a different group key. Establishing the room key is now atomic (first-write-wins) on the server, and a client that loses the race discards its locally generated key and adopts the established one instead of encrypting with a divergent key. + +- ([#41069](https://github.com/RocketChat/Rocket.Chat/pull/41069)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + +- ([#41168](https://github.com/RocketChat/Rocket.Chat/pull/41168)) Fixes LDAP channel sync aborting the entire add/removal pass when a mapped channel could not be resolved, which prevented users from being removed from channels when "Auto Remove Users from Channels" was enabled. + +- ([#41279](https://github.com/RocketChat/Rocket.Chat/pull/41279)) Fixes LDAP sync failing to merge an existing user matched by email, which caused a `Username already exists` error when the user's username differed from the directory. + +- ([#41373](https://github.com/RocketChat/Rocket.Chat/pull/41373)) Fixes the server crashing during LDAP login or sync when the configured search settings produce an invalid LDAP filter (for example, an empty User Search Field). The operation now fails gracefully with a logged error instead of terminating the process. + +- ([#41202](https://github.com/RocketChat/Rocket.Chat/pull/41202)) Disables more actions on message composer during public channel preview. + +- ([#41480](https://github.com/RocketChat/Rocket.Chat/pull/41480)) Fixes an issue where the "user left" system message could be added to an Omnichannel conversation only after the forwarding process had already finished, causing it to appear out of order in the conversation history + +- ([#41110](https://github.com/RocketChat/Rocket.Chat/pull/41110)) Passes the original message text to the message renderer so blocks without a dedicated renderer (e.g. tables on clients that don't render them yet) can degrade to their raw markup via the parser's `fallback` source offsets, instead of disappearing. + +- ([#41074](https://github.com/RocketChat/Rocket.Chat/pull/41074)) Fixes an issue where the cursor jumped to the wrong position after inserting a mention at the start or middle of a message. + +- ([#41304](https://github.com/RocketChat/Rocket.Chat/pull/41304)) Fixes wrong FederationLookup type assigned to IUser in apps. The correct data is there, but the type does not represent it. + +- ([#41089](https://github.com/RocketChat/Rocket.Chat/pull/41089)) Enables keyboard activation for Display menu radio buttons and checkboxes + +- ([#41204](https://github.com/RocketChat/Rocket.Chat/pull/41204)) Changes the date columns in the Omnichannel Contact Center to show both the formatted date and the relative time: the **Last Chat** column in the contacts list, and the **Started at** and **Last Message** columns in the chats list + +- ([#41341](https://github.com/RocketChat/Rocket.Chat/pull/41341)) Fixes a server crash when re-enabling the "Enable Push" setting after it was disabled. Push notifications are now fully reconfigured on re-enable, so settings changed while push was disabled are picked up as well. + +- ([#40768](https://github.com/RocketChat/Rocket.Chat/pull/40768)) Ensures the `users.CreateToken` endpoint checks for the `user-generate-access-token` permission when generating a login token for another user + +- ([#41206](https://github.com/RocketChat/Rocket.Chat/pull/41206)) Ensures room permission checks are applied consistently regardless of how the room is identified when converting a channel to a team or creating a team from an existing room + +- ([#41414](https://github.com/RocketChat/Rocket.Chat/pull/41414)) Restores Away as a selectable preset in the quick status menu, custom status modal, and account profile page. + +- ([#41145](https://github.com/RocketChat/Rocket.Chat/pull/41145)) Fixes the SAML Single Logout response so the `RelayState` matches the exact value received on the logout request, as required by the SAML specification, instead of using Rocket.Chat's own URL + +- ([#41254](https://github.com/RocketChat/Rocket.Chat/pull/41254)) Fixes the setup wizard being forced back into the registration step on the first start after an upgrade when `OVERWRITE_SETTING_Show_Setup_Wizard=completed` is set, which affected air-gapped workspaces running offline licenses without cloud registration. + +- ([#41122](https://github.com/RocketChat/Rocket.Chat/pull/41122)) Adds keyboard navigation support in Room members list + +- ([#41112](https://github.com/RocketChat/Rocket.Chat/pull/41112)) Returns `custom fields` on admin rooms detail view + +- ([#41101](https://github.com/RocketChat/Rocket.Chat/pull/41101)) Improved `/v1/spotlight` search performance: results return faster, and room searches now read from secondary database replicas when available, reducing load on the primary. + +- ([#41402](https://github.com/RocketChat/Rocket.Chat/pull/41402)) Fixes broken pagination on `rooms.bannedUsers` and on omnichannel department listing endpoints, which ignored the `offset` parameter and always returned results from the first page. Also reduces payload over-fetching on several endpoints that unintentionally loaded full documents (`rooms.hide`, private group lookups, direct email replies, omnichannel auto-transfer), and removes the permissive model query typings that allowed these invalid find options to compile unnoticed. + +- ([#41229](https://github.com/RocketChat/Rocket.Chat/pull/41229)) Fixes dates showing one day earlier for users in negative UTC-offset timezones + +- ([#41200](https://github.com/RocketChat/Rocket.Chat/pull/41200)) Fixes an issue where the whole app remounts when VoIP availability changes + +-
Updated dependencies [c7aff48a40a9a78924cbf27fd38930c536ee11e5, 5f92f9a27dca70d506d919351612bd32dc04241a, 70c0ff0967cc50144dba4971fc7c3f3e996264a3, 13b4a7b2dc203959b77b3b0c5f154d3e34fe2058, eec6083bb88f0caa1bd0de28b93b926a11c17507, 4b34bd62f2ac8d51efd2f48caea7092e87f30ce7, adc15707128bc3fbe1ccd1cd57e9d30a702fa6ca, 1bf84cbe288df03fc622fbddbc0e434bda291c2f, 4b57346a59b5c9433c25845c886be11af1bf71d4, 8d8cd01d0a4e6872ed543320c966efd52140e884, 297df1a45500e8bcd9989a4ce613dce9cef71740, 6ebabce27a153d36ea8426f3257ffff880e820bc, ffe1b646226eeeda5a4d4697c831e568ec1eec64, 784c287489367c4ff9d6460f73c10a4a0a06658d, 3cd7db677a72521439b564dca7a4ca6d6c3a1c07, 115dfe8f7e0ac788a2ef92c6ca298cf37b61b136, 719e3db9734708e812ceb33483ffaa2e064b4d59, b2b5edf5b37be3ee070290553f6aec42c39c98f6, 74d6cacb77cc2b029dfd1a12890cfcae7fd540cb, 4186deb7febee0aa653bb48b27022afa36529b21, 4117a1d3fb07905e8c9488a96f368747b48d528e, 376c9d862f63cb7dd4995842a23340e581056eee, 73c3aec49bacdfb42e67b6cbf90dfffbb65e0658, 73c3aec49bacdfb42e67b6cbf90dfffbb65e0658, 73c3aec49bacdfb42e67b6cbf90dfffbb65e0658, 73c3aec49bacdfb42e67b6cbf90dfffbb65e0658, 615ae2bf74bba0402e0151d9c0b8e4f8dd04cb17, b2b5edf5b37be3ee070290553f6aec42c39c98f6, 1cc7bbdef9330899a8207d3d55130f48321d68f1, 6041285601ce6f9586f85cff72fb167642893245, e5da5d016948c9bb5cfd784a65396e08e61264c4, 2ec4d291b38e3c00d3eb9125f35730c1a0f540e2, 70c0ff0967cc50144dba4971fc7c3f3e996264a3, 1637a8bfe94e761a3c3edef201f016fe1cfe5a7d]: + + - @rocket.chat/model-typings@2.4.0-rc.0 + - @rocket.chat/core-typings@8.7.0-rc.0 + - @rocket.chat/models@2.4.0-rc.0 + - @rocket.chat/gazzodown@33.0.0-rc.0 + - @rocket.chat/web-ui-registration@33.0.0-rc.0 + - @rocket.chat/rest-typings@8.7.0-rc.0 + - @rocket.chat/passport-x@0.1.0-rc.0 + - @rocket.chat/i18n@3.3.0-rc.0 + - @rocket.chat/message-parser@0.32.0-rc.0 + - @rocket.chat/core-services@0.15.0-rc.0 + - @rocket.chat/ai-search@0.2.0-rc.0 + - @rocket.chat/ui-client@33.0.0-rc.0 + - @rocket.chat/federation-matrix@0.2.0-rc.0 + - @rocket.chat/apps@0.8.0-rc.0 + - @rocket.chat/license@1.2.0-rc.0 + - @rocket.chat/apps-engine@1.64.1-rc.0 + - @rocket.chat/ui-voip@23.0.0-rc.0 + - @rocket.chat/omnichannel-services@0.3.56-rc.0 + - @rocket.chat/abac@0.3.1-rc.0 + - @rocket.chat/media-calls@0.5.2-rc.0 + - @rocket.chat/omni-core-ee@0.0.24-rc.0 + - @rocket.chat/presence@0.3.1-rc.0 + - @rocket.chat/cron@0.1.59-rc.0 + - @rocket.chat/instance-status@0.1.59-rc.0 + - @rocket.chat/omni-core@0.1.3-rc.0 + - @rocket.chat/server-fetch@0.2.3-rc.0 + - @rocket.chat/fuselage-ui-kit@33.0.0-rc.0 + - @rocket.chat/ui-contexts@33.0.0-rc.0 + - @rocket.chat/pdf-worker@0.3.35 + - @rocket.chat/network-broker@0.2.38-rc.0 + - @rocket.chat/ui-composer@4.0.0-rc.0 + - @rocket.chat/server-cloud-communication@0.0.3 + - @rocket.chat/ui-avatar@29.0.0-rc.0 + - @rocket.chat/ui-video-conf@33.0.0-rc.0 +
+ ## 8.6.1 ### Patch Changes diff --git a/apps/meteor/app/2fa/server/code/index.ts b/apps/meteor/app/2fa/server/code/index.ts deleted file mode 100644 index cbba0724214f3..0000000000000 --- a/apps/meteor/app/2fa/server/code/index.ts +++ /dev/null @@ -1,250 +0,0 @@ -import crypto from 'node:crypto'; - -import type { IUser, IMethodConnection } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; -import { Accounts } from 'meteor/accounts-base'; -import { Meteor } from 'meteor/meteor'; - -import { EmailCheck } from './EmailCheck'; -import type { ICodeCheck } from './ICodeCheck'; -import { PasswordCheckFallback } from './PasswordCheckFallback'; -import { TOTPCheck } from './TOTPCheck'; -import { normalizeHeaders } from '../../../lib/server/functions/getModifiedHttpHeaders'; -import { settings } from '../../../settings/server'; - -export interface ITwoFactorOptions { - disablePasswordFallback?: boolean; - disableRememberMe?: boolean; - requireSecondFactor?: boolean; // whether any two factor should be required -} - -const totpCheck = new TOTPCheck(); -export const emailCheck = new EmailCheck(); -const passwordCheckFallback = new PasswordCheckFallback(); - -const checkMethods = new Map(); - -checkMethods.set(totpCheck.name, totpCheck); -checkMethods.set(emailCheck.name, emailCheck); - -function getMethodByNameOrFirstActiveForUser(user: IUser, name?: string): ICodeCheck | undefined { - if (name && checkMethods.has(name)) { - return checkMethods.get(name); - } - - return Array.from(checkMethods.values()).find((method) => method.isEnabled(user)); -} - -function getAvailableMethodNames(user: IUser): string[] { - return ( - Array.from(checkMethods) - .filter(([, method]) => method.isEnabled(user)) - .map(([name]) => name) || [] - ); -} - -export async function getUserForCheck(userId: string): Promise { - return Users.findOneById(userId, { - projection: { - emails: 1, - language: 1, - createdAt: 1, - services: 1, - }, - }); -} - -export function getFingerprintFromConnection(connection: IMethodConnection): string { - const data = JSON.stringify({ - userAgent: connection.httpHeaders['user-agent'], - clientAddress: connection.clientAddress, - }); - - return crypto.createHash('md5').update(data).digest('hex'); -} - -function getRememberDate(from: Date = new Date()): Date | undefined { - const rememberFor = parseInt(settings.get('Accounts_TwoFactorAuthentication_RememberFor') as string, 10); - - if (rememberFor <= 0) { - return; - } - - const expires = new Date(from); - expires.setSeconds(expires.getSeconds() + rememberFor); - - return expires; -} - -function isAuthorizedForToken(connection: IMethodConnection, user: IUser, options: ITwoFactorOptions): boolean { - // Resolve the current login token from both transports: - // - DDP: the login flow registers it in `Accounts._accountData`, read via `_getLoginToken`. - // - REST: it is not registered in account data, so it is carried on `connection.token`. - // Both are needed; REST is the fallback that fixes `bypassTwoFactor` PATs (SUP-1064). - const currentToken = Accounts._getLoginToken(connection.id) || connection.token; - const tokenObject = user.services?.resume?.loginTokens?.find((i) => i.hashedToken === currentToken); - - if (!tokenObject) { - return false; - } - - // if any two factor is required, early abort - if (options.requireSecondFactor) { - return false; - } - - if ('bypassTwoFactor' in tokenObject && tokenObject.bypassTwoFactor === true) { - return true; - } - - // Skip 2FA for a freshly registered user who has not set up any 2FA method yet, - // until the grace period that starts at registration expires. - // (e.g. the Setup Wizard saving settings between steps before any 2FA is configured) - const rememberPeriodEnd = user.createdAt && getRememberDate(user.createdAt); - const isWithinRememberPeriod = rememberPeriodEnd && rememberPeriodEnd >= new Date(); - const hasNoTwoFactorMethod = getAvailableMethodNames(user).length === 0; - if (isWithinRememberPeriod && hasNoTwoFactorMethod) { - return true; - } - - if (options.disableRememberMe === true) { - return false; - } - - if (!tokenObject.twoFactorAuthorizedUntil || !tokenObject.twoFactorAuthorizedHash) { - return false; - } - - if (tokenObject.twoFactorAuthorizedUntil < new Date()) { - return false; - } - - if (tokenObject.twoFactorAuthorizedHash !== getFingerprintFromConnection(connection)) { - return false; - } - - return true; -} - -async function rememberAuthorization(connection: IMethodConnection, user: IUser): Promise { - // Same dual-transport resolution as `isAuthorizedForToken`: DDP reads from `Accounts._accountData` - // via `_getLoginToken`, REST falls back to the token carried on `connection.token`. - const currentToken = Accounts._getLoginToken(connection.id) || connection.token; - - const expires = getRememberDate(); - if (!expires) { - return; - } - - if (!currentToken) { - return; - } - - await Users.setTwoFactorAuthorizationHashAndUntilForUserIdAndToken( - user._id, - currentToken, - getFingerprintFromConnection(connection), - expires, - ); -} - -interface ICheckCodeForUser { - user: IUser | string; - code?: string; - method?: string; - options?: ITwoFactorOptions; - connection?: IMethodConnection; -} - -const getSecondFactorMethod = (user: IUser, method: string | undefined, options: ITwoFactorOptions): ICodeCheck | undefined => { - // try first getting one of the available methods or the one that was already provided - const selectedMethod = getMethodByNameOrFirstActiveForUser(user, method); - if (selectedMethod) { - return selectedMethod; - } - - // if none found but a second factor is required, chose the password check - if (options.requireSecondFactor) { - return passwordCheckFallback; - } - - // check if password fallback is enabled - if (!options.disablePasswordFallback && passwordCheckFallback.isEnabled(user, !!options.requireSecondFactor)) { - return passwordCheckFallback; - } -}; - -export async function checkCodeForUser({ user, code, method, options = {}, connection }: ICheckCodeForUser): Promise { - if (process.env.TEST_MODE && !options.requireSecondFactor) { - return true; - } - - if (!settings.get('Accounts_TwoFactorAuthentication_Enabled')) { - return true; - } - - let existingUser: IUser | null; - - if (typeof user === 'string') { - existingUser = await getUserForCheck(user); - } else { - existingUser = user; - } - - if (!existingUser) { - throw new Meteor.Error('totp-user-not-found', 'TOTP User not found'); - } - - const headers = normalizeHeaders(connection?.httpHeaders); - - if (!code && !method && headers?.['x-2fa-code'] && headers['x-2fa-method']) { - code = headers['x-2fa-code']; - method = headers['x-2fa-method']; - } - - if (connection && isAuthorizedForToken(connection, existingUser, options)) { - return true; - } - - // select a second factor method or return if none is found/available - const selectedMethod = getSecondFactorMethod(existingUser, method, options); - if (!selectedMethod) { - return true; - } - - const data = await selectedMethod.processInvalidCode(existingUser); - - const availableMethods = getAvailableMethodNames(existingUser); - - if (!code) { - throw new Meteor.Error('totp-required', 'TOTP Required', { - method: selectedMethod.name, - ...data, - availableMethods, - }); - } - - const valid = await selectedMethod.verify(existingUser, code, options.requireSecondFactor); - if (!valid) { - const tooManyFailedAttempts = await selectedMethod.maxFaildedAttemtpsReached(existingUser); - if (tooManyFailedAttempts) { - throw new Meteor.Error('totp-max-attempts', 'TOTP Maximun Failed Attempts Reached', { - method: selectedMethod.name, - ...data, - availableMethods, - }); - } - - throw new Meteor.Error('totp-invalid', 'TOTP Invalid', { - method: selectedMethod.name, - ...data, - availableMethods, - }); - } - - if (options.disableRememberMe !== true && connection) { - await rememberAuthorization(connection, existingUser); - } - - return true; -} diff --git a/apps/meteor/app/2fa/server/index.ts b/apps/meteor/app/2fa/server/index.ts deleted file mode 100644 index 783232a610eb2..0000000000000 --- a/apps/meteor/app/2fa/server/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import './MethodInvocationOverride'; -import './methods/checkCodesRemaining'; -import './methods/disable'; -import './methods/enable'; -import './methods/regenerateCodes'; -import './methods/validateTempToken'; -import './loginHandler'; diff --git a/apps/meteor/app/2fa/server/lib/totp.ts b/apps/meteor/app/2fa/server/lib/totp.ts deleted file mode 100644 index 87a4c39ac2518..0000000000000 --- a/apps/meteor/app/2fa/server/lib/totp.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { Users } from '@rocket.chat/models'; -import { Random } from '@rocket.chat/random'; -import { SHA256 } from '@rocket.chat/sha256'; -import speakeasy from 'speakeasy'; - -import { settings } from '../../../settings/server'; - -export const TOTP = { - generateSecret(): speakeasy.GeneratedSecret { - return speakeasy.generateSecret(); - }, - - generateOtpauthURL(secret: speakeasy.GeneratedSecret, username: string): string { - return speakeasy.otpauthURL({ - secret: secret.ascii, - label: `Rocket.Chat:${username}`, - }); - }, - - async verify({ - secret, - token, - backupTokens, - userId, - }: { - secret: string; - token: string; - backupTokens?: string[]; - userId?: string; - }): Promise { - // validates a backup code - if (token.length === 8 && backupTokens) { - const hashedCode = SHA256(token); - const usedCode = backupTokens.indexOf(hashedCode); - - if (usedCode !== -1 && userId) { - backupTokens.splice(usedCode, 1); - - // mark the code as used (remove it from the list) - await Users.update2FABackupCodesByUserId(userId, backupTokens); - return true; - } - - return false; - } - - const maxDelta = settings.get('Accounts_TwoFactorAuthentication_MaxDelta'); - if (maxDelta) { - const verifiedDelta = speakeasy.totp.verifyDelta({ - secret, - encoding: 'base32', - token, - window: maxDelta, - }); - - return verifiedDelta !== undefined; - } - - return speakeasy.totp.verify({ - secret, - encoding: 'base32', - token, - }); - }, - - generateCodes(): { codes: string[]; hashedCodes: string[] } { - // generate 12 backup codes - const codes = []; - const hashedCodes = []; - for (let i = 0; i < 12; i++) { - const code = Random.id(8); - codes.push(code); - hashedCodes.push(SHA256(code)); - } - - return { codes, hashedCodes }; - }, -}; diff --git a/apps/meteor/app/2fa/server/loginHandler.ts b/apps/meteor/app/2fa/server/loginHandler.ts deleted file mode 100644 index 772e3cff93696..0000000000000 --- a/apps/meteor/app/2fa/server/loginHandler.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { Accounts } from 'meteor/accounts-base'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; -import { OAuth } from 'meteor/oauth'; - -import { checkCodeForUser } from './code/index'; -import { callbacks } from '../../../server/lib/callbacks'; - -const isMeteorError = (error: any): error is Meteor.Error => { - return error?.meteorError !== undefined; -}; - -const isCredentialWithError = (credential: any): credential is { error: Error } => { - return credential?.error !== undefined; -}; - -Accounts.registerLoginHandler('totp', function (options) { - if (!options.totp?.code) { - return; - } - - // @ts-expect-error - not sure how to type this yet - return Accounts._runLoginHandlers(this, options.totp.login); -}); - -callbacks.add( - 'onValidateLogin', - async (login) => { - if ( - !login.user || - login.type === 'resume' || - login.type === 'proxy' || - login.type === 'cas' || - (login.type === 'password' && login.methodName === 'resetPassword') || - login.methodName === 'verifyEmail' - ) { - return login; - } - - const [loginArgs] = login.methodArguments; - const { totp } = loginArgs; - - await checkCodeForUser({ - user: login.user, - code: totp?.code, - options: { disablePasswordFallback: true }, - }); - - return login; - }, - callbacks.priority.MEDIUM, - '2fa', -); - -const copyTo = (from: T, to: T): T => { - Object.getOwnPropertyNames(to).forEach((key) => { - const idx: keyof T = key as keyof T; - to[idx] = from[idx]; - }); - - return to; -}; - -const recreateError = (errorDoc: Error | Meteor.Error): Error | Meteor.Error => { - if (isMeteorError(errorDoc)) { - const error = new Meteor.Error(''); - return copyTo(errorDoc, error); - } - - const error = new Error(); - return copyTo(errorDoc, error); -}; - -OAuth._retrievePendingCredential = async function (key, ...args): Promise { - const credentialSecret = args.length > 0 && args[0] !== undefined ? args[0] : undefined; - check(key, String); - - const pendingCredential = await OAuth._pendingCredentials.findOneAsync({ - key, - credentialSecret, - }); - - if (!pendingCredential) { - return; - } - - if (isCredentialWithError(pendingCredential.credential)) { - await OAuth._pendingCredentials.removeAsync({ - _id: pendingCredential._id, - }); - return recreateError(pendingCredential.credential.error); - } - - // Work-around to make the credentials reusable for 2FA - const future = new Date(); - future.setMinutes(future.getMinutes() + 2); - - await OAuth._pendingCredentials.updateAsync( - { - _id: pendingCredential._id, - }, - { - $set: { - createdAt: future, - }, - }, - ); - - return OAuth.openSecret(pendingCredential.credential); -}; diff --git a/apps/meteor/app/2fa/server/methods/checkCodesRemaining.ts b/apps/meteor/app/2fa/server/methods/checkCodesRemaining.ts deleted file mode 100644 index f5f5b0e1f2758..0000000000000 --- a/apps/meteor/app/2fa/server/methods/checkCodesRemaining.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Meteor } from 'meteor/meteor'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - '2fa:checkCodesRemaining': () => { remaining: number }; - } -} - -Meteor.methods({ - async '2fa:checkCodesRemaining'() { - if (!Meteor.userId()) { - throw new Meteor.Error('not-authorized'); - } - - const user = await Meteor.userAsync(); - - if (!user) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: '2fa:checkCodesRemaining', - }); - } - - if (!user.services?.totp?.enabled) { - throw new Meteor.Error('invalid-totp'); - } - - return { - remaining: user.services.totp.hashedBackup.length, - }; - }, -}); diff --git a/apps/meteor/app/2fa/server/methods/disable.ts b/apps/meteor/app/2fa/server/methods/disable.ts deleted file mode 100644 index 9e64afb48f20e..0000000000000 --- a/apps/meteor/app/2fa/server/methods/disable.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Users } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { notifyOnUserChange } from '../../../lib/server/lib/notifyListener'; -import { TOTP } from '../lib/totp'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - '2fa:disable': (code: string) => Promise; - } -} - -Meteor.methods({ - async '2fa:disable'(code) { - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('not-authorized'); - } - - const user = await Meteor.userAsync(); - - if (!user) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: '2fa:disable', - }); - } - - if (!user.services?.totp?.enabled) { - return false; - } - - const verified = await TOTP.verify({ - secret: user.services.totp.secret, - token: code, - userId, - backupTokens: user.services.totp.hashedBackup, - }); - - if (!verified) { - return false; - } - - const { modifiedCount } = await Users.disable2FAByUserId(userId); - - if (!modifiedCount) { - return false; - } - - void notifyOnUserChange({ clientAction: 'updated', id: user._id, diff: { 'services.totp.enabled': false } }); - - return true; - }, -}); diff --git a/apps/meteor/app/2fa/server/methods/enable.ts b/apps/meteor/app/2fa/server/methods/enable.ts deleted file mode 100644 index c273dfbadaf74..0000000000000 --- a/apps/meteor/app/2fa/server/methods/enable.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Users } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { TOTP } from '../lib/totp'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - '2fa:enable': () => Promise<{ secret: string; url: string }>; - } -} - -Meteor.methods({ - async '2fa:enable'() { - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('not-authorized'); - } - - const user = await Meteor.userAsync(); - - if (!user?.username) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: '2fa:enable', - }); - } - - if (user.services?.totp?.enabled) { - throw new Meteor.Error('error-2fa-already-enabled'); - } - - const secret = TOTP.generateSecret(); - - await Users.disable2FAAndSetTempSecretByUserId(userId, secret.base32); - - return { - secret: secret.base32, - url: TOTP.generateOtpauthURL(secret, user.username), - }; - }, -}); diff --git a/apps/meteor/app/2fa/server/methods/regenerateCodes.ts b/apps/meteor/app/2fa/server/methods/regenerateCodes.ts deleted file mode 100644 index 6968abfb93c2c..0000000000000 --- a/apps/meteor/app/2fa/server/methods/regenerateCodes.ts +++ /dev/null @@ -1,46 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Users } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { TOTP } from '../lib/totp'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - '2fa:regenerateCodes': (userToken: string) => { codes: string[] } | undefined; - } -} - -Meteor.methods({ - async '2fa:regenerateCodes'(userToken) { - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('not-authorized'); - } - - const user = await Meteor.userAsync(); - if (!user) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: '2fa:regenerateCodes', - }); - } - - if (!user.services?.totp?.enabled) { - throw new Meteor.Error('invalid-totp'); - } - - const verified = await TOTP.verify({ - secret: user.services.totp.secret, - token: userToken, - userId, - backupTokens: user.services.totp.hashedBackup, - }); - - if (verified) { - const { codes, hashedCodes } = TOTP.generateCodes(); - - await Users.update2FABackupCodesByUserId(userId, hashedCodes); - return { codes }; - } - }, -}); diff --git a/apps/meteor/app/2fa/server/methods/validateTempToken.ts b/apps/meteor/app/2fa/server/methods/validateTempToken.ts deleted file mode 100644 index cc5c7ad4f9544..0000000000000 --- a/apps/meteor/app/2fa/server/methods/validateTempToken.ts +++ /dev/null @@ -1,77 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Users } from '@rocket.chat/models'; -import { Accounts } from 'meteor/accounts-base'; -import { Meteor } from 'meteor/meteor'; - -import { notifyOnUserChange, notifyOnUserChangeAsync } from '../../../lib/server/lib/notifyListener'; -import { TOTP } from '../lib/totp'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - '2fa:validateTempToken': (userToken: string) => { codes: string[] } | undefined; - } -} - -Meteor.methods({ - async '2fa:validateTempToken'(userToken) { - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('not-authorized'); - } - - const user = await Meteor.userAsync(); - if (!user) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: '2fa:validateTempToken', - }); - } - - if (!user.services?.totp?.tempSecret) { - throw new Meteor.Error('invalid-totp'); - } - - const verified = await TOTP.verify({ - secret: user.services.totp.tempSecret, - token: userToken, - }); - if (!verified) { - throw new Meteor.Error('invalid-totp'); - } - - const { codes, hashedCodes } = TOTP.generateCodes(); - - await Users.enable2FAAndSetSecretAndCodesByUserId(userId, user.services.totp.tempSecret, hashedCodes); - - // Once the TOTP is validated we logout all other clients - const { 'x-auth-token': xAuthToken } = this.connection?.httpHeaders ?? {}; - if (xAuthToken && this.userId) { - const hashedToken = Accounts._hashLoginToken(xAuthToken); - - const { modifiedCount } = await Users.removeNonPATLoginTokensExcept(this.userId, hashedToken); - - if (modifiedCount > 0) { - // TODO this can be optmized so places that care about loginTokens being removed are invoked directly - // instead of having to listen to every watch.users event - void notifyOnUserChangeAsync(async () => { - if (!this.userId) { - return; - } - const user = await Users.findOneById(this.userId, { projection: { 'services.resume.loginTokens': 1, 'services.totp': 1 } }); - return { - clientAction: 'updated', - id: this.userId, - diff: { - 'services.resume.loginTokens': user?.services?.resume?.loginTokens, - ...(user?.services?.totp && { 'services.totp.enabled': user.services.totp.enabled }), - }, - }; - }); - } else { - void notifyOnUserChange({ clientAction: 'updated', id: user._id, diff: { 'services.totp.enabled': true } }); - } - } - - return { codes }; - }, -}); diff --git a/apps/meteor/app/api/server/ajv.ts b/apps/meteor/app/api/server/ajv.ts deleted file mode 100644 index 10556de26582f..0000000000000 --- a/apps/meteor/app/api/server/ajv.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { schemas } from '@rocket.chat/core-typings'; -import { ajv, ajvQuery } from '@rocket.chat/rest-typings'; - -const components = schemas.components?.schemas; -if (components) { - // Patch MessageAttachmentDefault to reject unknown properties so the oneOf - // discriminator works correctly (otherwise it matches every attachment). - const mad = components.MessageAttachmentDefault; - if (mad && typeof mad === 'object' && 'type' in mad) { - (mad as Record).additionalProperties = false; - } - - for (const key in components) { - if (Object.prototype.hasOwnProperty.call(components, key)) { - const uri = `#/components/schemas/${key}`; - ajv.addSchema(components[key], uri); - ajvQuery.addSchema(components[key], uri); - } - } -} diff --git a/apps/meteor/app/api/server/api.ts b/apps/meteor/app/api/server/api.ts deleted file mode 100644 index 1b5bac10a65df..0000000000000 --- a/apps/meteor/app/api/server/api.ts +++ /dev/null @@ -1,126 +0,0 @@ -import type { IRoom } from '@rocket.chat/core-typings'; -import type { Router } from '@rocket.chat/http-router'; -import { Logger } from '@rocket.chat/logger'; -import type express from 'express'; -import { WebApp } from 'meteor/webapp'; - -import { APIClass } from './ApiClass'; -import { cors } from './middlewares/cors'; -import { loggerMiddleware } from './middlewares/logger'; -import { metricsMiddleware } from './middlewares/metrics'; -import { remoteAddressMiddleware } from './middlewares/remoteAddressMiddleware'; -import { tracerSpanMiddleware } from './middlewares/tracer'; -import { type APIActionHandler, RocketChatAPIRouter } from './router'; -import { metrics } from '../../metrics/server'; -import { settings } from '../../settings/server'; - -const logger = new Logger('API'); - -export type Prettify = { - [K in keyof T]: T[K]; -} & unknown; - -export type RateLimiterOptions = { - numRequestsAllowed?: number; - intervalTimeInMS?: number; -}; - -export const defaultRateLimiterOptions: RateLimiterOptions = { - numRequestsAllowed: settings.get('API_Enable_Rate_Limiter_Limit_Calls_Default'), - intervalTimeInMS: settings.get('API_Enable_Rate_Limiter_Limit_Time_Default'), -}; - -const createApi = function _createApi(options: { version?: string; useDefaultAuth?: true } = {}): APIClass { - return new APIClass({ - apiPath: '', - useDefaultAuth: false, - prettyJson: process.env.NODE_ENV === 'development', - ...options, - }); -}; - -export const API: { - api: Router<'/api', any, APIActionHandler>; - v1: APIClass<'/v1'>; - default: APIClass; - ApiClass: typeof APIClass; - channels?: { - create: { - validate: (params: { - user: { value: string }; - name?: { key: string; value?: string }; - members?: { key: string; value?: string[] }; - customFields?: { key: string; value?: string }; - teams?: { key: string; value?: string[] }; - teamId?: { key: string; value?: string }; - }) => Promise; - execute: ( - userId: string, - params: { - name?: string; - members?: string[]; - customFields?: Record; - extraData?: Record; - readOnly?: boolean; - }, - ) => Promise<{ channel: IRoom }>; - }; - }; -} = { - ApiClass: APIClass, - api: new RocketChatAPIRouter('/api'), - v1: createApi({ - version: 'v1', - useDefaultAuth: true, - }), - default: createApi({}), -}; - -settings.watch('Accounts_CustomFields', (value) => { - if (!value) { - return API.v1?.setLimitedCustomFields([]); - } - try { - const customFields = JSON.parse(value); - const nonPublicCustomFields = Object.keys(customFields).filter((customFieldKey) => customFields[customFieldKey].public !== true); - API.v1.setLimitedCustomFields(nonPublicCustomFields); - } catch (error) { - console.warn('Invalid Custom Fields', error); - } -}); - -settings.watch('API_Enable_Rate_Limiter_Limit_Time_Default', (value) => { - defaultRateLimiterOptions.intervalTimeInMS = value; - API.v1.reloadRoutesToRefreshRateLimiter(); -}); - -settings.watch('API_Enable_Rate_Limiter_Limit_Calls_Default', (value) => { - defaultRateLimiterOptions.numRequestsAllowed = value; - API.v1.reloadRoutesToRefreshRateLimiter(); -}); - -export const startRestAPI = () => { - (WebApp.rawConnectHandlers as unknown as ReturnType).use( - API.api - .use( - metricsMiddleware({ - basePathRegex: new RegExp(/^\/api\/v1\//), - api: API.v1, - settings, - endpointTimeSummary: metrics.rocketchatRestApi, - endpointTimeHistogram: metrics.rocketchatRestApiSeconds, - responseSizeHistogram: metrics.rocketchatRestApiResponseSizeBytes, - activeRequestsGauge: metrics.rocketchatRestApiActiveRequests, - }), - ) - .use(tracerSpanMiddleware) - .use(remoteAddressMiddleware) - .use(cors(settings)) - .use(loggerMiddleware(logger)) - .use(API.v1.router) - .use(API.default.router).router, - ); -}; - -export type ExtractApiClassEndpoints> = - TApi extends APIClass ? (TOperations extends { method: string } ? Prettify : never) : never; diff --git a/apps/meteor/app/api/server/index.ts b/apps/meteor/app/api/server/index.ts deleted file mode 100644 index 5a6a6f06cbbab..0000000000000 --- a/apps/meteor/app/api/server/index.ts +++ /dev/null @@ -1,52 +0,0 @@ -import './ajv'; -import './helpers/composeRoomWithLastMessage'; -import './helpers/getPaginationItems'; -import './helpers/getUserFromParams'; -import './helpers/getUserInfo'; -import './helpers/isUserFromParams'; -import './helpers/parseJsonQuery'; -import './default/info'; -import './v1/assets'; -import './v1/calendar'; -import './v1/call-history'; -import './v1/channels'; -import './v1/chat'; -import './v1/cloud'; -import './v1/commands'; -import './v1/e2e'; -import './v1/emoji-custom'; -import './v1/groups'; -import './v1/im'; -import './v1/integrations'; -import './v1/invites'; -import './v1/import'; -import './v1/ldap'; -import './v1/media-calls'; -import './v1/misc'; -import './v1/permissions'; -import './v1/presence'; -import './v1/push'; -import './v1/roles'; -import './v1/rooms'; -import './v1/settings'; -import './v1/stats'; -import './v1/subscriptions'; -import './v1/users'; -import './v1/videoConference'; -import './v1/autotranslate'; -import './v1/webdav'; -import './v1/oauthapps'; -import './v1/custom-sounds'; -import './v1/custom-user-status'; -import './v1/instances'; -import './v1/banners'; -import './v1/email-inbox'; -import './v1/mailer'; -import './v1/teams'; -import './v1/moderation'; -import './v1/uploads'; - -// This has to come last so all endpoints are registered before generating the OpenAPI documentation -import './default/openApi'; - -export { API, defaultRateLimiterOptions } from './api'; diff --git a/apps/meteor/app/api/server/lib/getServerInfo.ts b/apps/meteor/app/api/server/lib/getServerInfo.ts deleted file mode 100644 index adaf6ec6998c5..0000000000000 --- a/apps/meteor/app/api/server/lib/getServerInfo.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { IWorkspaceInfo } from '@rocket.chat/core-typings'; -import { License } from '@rocket.chat/license'; - -import { getTrimmedServerVersion } from './getTrimmedServerVersion'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { - getCachedSupportedVersionsToken, - wrapPromise, -} from '../../../cloud/server/functions/supportedVersionsToken/supportedVersionsToken'; -import { settings } from '../../../settings/server'; -import { Info, minimumClientVersions } from '../../../utils/rocketchat.info'; - -export async function getServerInfo(userId?: string): Promise { - const hasPermissionToViewStatistics = userId && (await hasPermissionAsync(userId, 'view-statistics')); - const supportedVersionsToken = await wrapPromise(getCachedSupportedVersionsToken()); - const cloudWorkspaceId = settings.get('Cloud_Workspace_Id'); - - return { - workspaceUrl: License.getWorkspaceUrl(), - hashedWorkspaceUrl: License.getHashedWorkspaceUrl(), - version: getTrimmedServerVersion(), - ...(hasPermissionToViewStatistics && { - info: { - ...Info, - }, - version: Info.version, - }), - - minimumClientVersions, - ...(supportedVersionsToken.success && - supportedVersionsToken.result && { - supportedVersions: { signed: supportedVersionsToken.result }, - }), - - cloudWorkspaceId, - }; -} diff --git a/apps/meteor/app/api/server/lib/getTrimmedServerVersion.ts b/apps/meteor/app/api/server/lib/getTrimmedServerVersion.ts deleted file mode 100644 index c0ceb9e880d5c..0000000000000 --- a/apps/meteor/app/api/server/lib/getTrimmedServerVersion.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Info } from '../../../utils/rocketchat.info'; - -// Removes the patch version from the server version string -export const getTrimmedServerVersion = (): string => Info.version.replace(/(\d+\.\d+).*/, '$1'); diff --git a/apps/meteor/app/api/server/lib/integrations.ts b/apps/meteor/app/api/server/lib/integrations.ts deleted file mode 100644 index 13b4d286b3058..0000000000000 --- a/apps/meteor/app/api/server/lib/integrations.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { IIntegration, IUser } from '@rocket.chat/core-typings'; -import { Integrations } from '@rocket.chat/models'; - -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; - -const hasIntegrationsPermission = async (userId: string, integration: IIntegration): Promise => { - const type = integration.type === 'webhook-incoming' ? 'incoming' : 'outgoing'; - - if (await hasPermissionAsync(userId, `manage-${type}-integrations`)) { - return true; - } - - if (userId === integration._createdBy?._id) { - return hasPermissionAsync(userId, `manage-own-${type}-integrations`); - } - - return false; -}; - -export const findOneIntegration = async ({ - userId, - integrationId, - createdBy, -}: { - userId: string; - integrationId: string; - createdBy?: IUser['_id']; -}): Promise => { - const integration = await Integrations.findOneByIdAndCreatedByIfExists({ - _id: integrationId, - createdBy, - }); - if (!integration) { - throw new Error('The integration does not exists.'); - } - if (!(await hasIntegrationsPermission(userId, integration))) { - throw new Error('not-authorized'); - } - return integration; -}; diff --git a/apps/meteor/app/api/server/lib/messages.ts b/apps/meteor/app/api/server/lib/messages.ts deleted file mode 100644 index cce09a1b27418..0000000000000 --- a/apps/meteor/app/api/server/lib/messages.ts +++ /dev/null @@ -1,121 +0,0 @@ -import type { IMessage, IUser } from '@rocket.chat/core-typings'; -import { Rooms, Messages, Users } from '@rocket.chat/models'; -import type { FindOptions } from 'mongodb'; - -import { canAccessRoomAsync } from '../../../authorization/server/functions/canAccessRoom'; - -export async function findMentionedMessages({ - uid, - roomId, - pagination: { offset, count, sort }, -}: { - uid: string; - roomId: string; - pagination: { offset: number; count: number; sort: FindOptions['sort'] }; -}): Promise<{ - messages: IMessage[]; - count: number; - offset: number; - total: number; -}> { - const room = await Rooms.findOneById(roomId); - if (!room || !(await canAccessRoomAsync(room, { _id: uid }))) { - throw new Error('error-not-allowed'); - } - const user = await Users.findOneById>(uid, { projection: { username: 1 } }); - if (!user) { - throw new Error('invalid-user'); - } - - const { cursor, totalCount } = Messages.findPaginatedVisibleByMentionAndRoomId(user.username, roomId, { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - }); - - const [messages, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - messages, - count: messages.length, - offset, - total, - }; -} - -export async function findStarredMessages({ - uid, - roomId, - pagination: { offset, count, sort }, -}: { - uid: string; - roomId: string; - pagination: { offset: number; count: number; sort: FindOptions['sort'] }; -}): Promise<{ - messages: IMessage[]; - count: number; - offset: number; - total: number; -}> { - const room = await Rooms.findOneById(roomId); - if (!room || !(await canAccessRoomAsync(room, { _id: uid }))) { - throw new Error('error-not-allowed'); - } - const user = await Users.findOneById>(uid, { projection: { username: 1 } }); - if (!user) { - throw new Error('invalid-user'); - } - - const { cursor, totalCount } = Messages.findStarredByUserAtRoom(uid, roomId, { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - }); - - const [messages, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - messages, - count: messages.length, - offset, - total, - }; -} - -export async function findDiscussionsFromRoom({ - uid, - roomId, - text, - pagination: { offset, count, sort }, -}: { - uid: string; - roomId: string; - text: string; - pagination: { offset: number; count: number; sort: FindOptions['sort'] }; -}): Promise<{ - messages: IMessage[]; - count: number; - offset: number; - total: number; -}> { - const room = await Rooms.findOneById(roomId); - - if (!room || !(await canAccessRoomAsync(room, { _id: uid }))) { - throw new Error('error-not-allowed'); - } - - const { cursor, totalCount } = await Messages.findDiscussionsByRoomAndText(roomId, text, { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - }); - - const [messages, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - messages, - count: messages.length, - offset, - total, - }; -} diff --git a/apps/meteor/app/api/server/lib/rooms.ts b/apps/meteor/app/api/server/lib/rooms.ts deleted file mode 100644 index f93551e4e9c08..0000000000000 --- a/apps/meteor/app/api/server/lib/rooms.ts +++ /dev/null @@ -1,202 +0,0 @@ -import type { IRoom, IRoomAbacRedaction, ISubscription, RoomAdminFieldsType, RoomType } from '@rocket.chat/core-typings'; -import { Rooms, Subscriptions } from '@rocket.chat/models'; -import type { FindOptions, Sort } from 'mongodb'; - -import { scopeAdminRoomsForAbac } from './scopeAdminRoomsForAbac'; -import { adminFields } from '../../../../lib/rooms/adminFields'; -import { hasAtLeastOnePermissionAsync, hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { stripABACManagedFieldsForAdmin } from '../../../authorization/server/lib/isABACManagedRoom'; - -export async function findAdminRooms({ - uid, - filter, - types = [], - pagination: { offset, count, sort }, -}: { - uid: string; - filter: string; - types: Array; - pagination: { offset: number; count: number; sort: Sort }; -}): Promise<{ - rooms: Array & IRoomAbacRedaction>; - count: number; - offset: number; - total: number; -}> { - if (!(await hasPermissionAsync(uid, 'view-room-administration'))) { - throw new Error('error-not-authorized'); - } - const name = filter?.trim(); - const discussion = types?.includes('discussions'); - const includeTeams = types?.includes('teams'); - const typesToRemove = ['discussions', 'teams']; - const showTypes = Array.isArray(types) ? types.filter((type): type is RoomType => !typesToRemove.includes(type)) : []; - const options: FindOptions = { - projection: adminFields, - skip: offset, - limit: count, - }; - - const result = Rooms.findByNameOrFnameContainingAndTypes(name, showTypes, discussion, includeTeams, options); - - const { cursor, totalCount } = result; - - const [rooms, total] = await Promise.all([ - cursor - .sort(sort || { default: -1, name: 1 }) - .map(stripABACManagedFieldsForAdmin) - .toArray(), - totalCount, - ]); - - return { - rooms: await scopeAdminRoomsForAbac(rooms, uid), - count: rooms.length, - offset, - total, - }; -} - -export async function findAdminRoom({ - uid, - rid, -}: { - uid: string; - rid: string; -}): Promise<(Pick & IRoomAbacRedaction) | null> { - if (!(await hasPermissionAsync(uid, 'view-room-administration'))) { - throw new Error('error-not-authorized'); - } - - const room = await Rooms.findOneById(rid, { projection: adminFields }); - if (!room) { - return null; - } - - const [scoped] = await scopeAdminRoomsForAbac([stripABACManagedFieldsForAdmin(room)], uid); - return scoped ?? null; -} - -export async function findChannelAndPrivateAutocomplete({ uid, selector }: { uid: string; selector: { name: string } }): Promise<{ - items: IRoom[]; -}> { - const options: FindOptions = { - projection: { - _id: 1, - fname: 1, - name: 1, - t: 1, - avatarETag: 1, - encrypted: 1, - }, - limit: 10, - sort: { - name: 1, - }, - }; - - const userRoomsIds = (await Subscriptions.findByUserId(uid, { projection: { rid: 1 } }).toArray()).map( - (item: Pick) => item.rid, - ); - - const rooms = await Rooms.findRoomsWithoutDiscussionsByRoomIds(selector.name, userRoomsIds, options).toArray(); - - return { - items: rooms, - }; -} - -export async function findAdminRoomsAutocomplete({ uid, selector }: { uid: string; selector: { name: string } }): Promise<{ - items: IRoom[]; -}> { - if (!(await hasAtLeastOnePermissionAsync(uid, ['view-room-administration', 'can-audit']))) { - throw new Error('error-not-authorized'); - } - const options: FindOptions = { - projection: { - _id: 1, - fname: 1, - name: 1, - t: 1, - avatarETag: 1, - encrypted: 1, - }, - limit: 10, - sort: { - name: 1, - }, - }; - - const rooms = await Rooms.findRoomsByNameOrFnameStarting(selector.name, options).toArray(); - - return { - items: rooms, - }; -} - -export async function findChannelAndPrivateAutocompleteWithPagination({ - uid, - selector, - pagination: { offset, count, sort }, -}: { - uid: string; - selector: { name: string }; - pagination: { offset: number; count: number; sort: Sort }; -}): Promise<{ - items: IRoom[]; - total: number; -}> { - const userRoomsIds = (await Subscriptions.findByUserId(uid, { projection: { rid: 1 } }).toArray()).map( - (item: Pick) => item.rid, - ); - - const options: FindOptions = { - projection: { - _id: 1, - fname: 1, - name: 1, - t: 1, - avatarETag: 1, - }, - sort: sort || { name: 1 }, - skip: offset, - limit: count, - }; - - const { cursor, totalCount } = Rooms.findPaginatedRoomsWithoutDiscussionsByRoomIds(selector.name, userRoomsIds, options); - - const [rooms, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - items: rooms, - total, - }; -} - -export async function findRoomsAvailableForTeams({ uid, name }: { uid: string; name?: string }): Promise<{ - items: IRoom[]; -}> { - const options: FindOptions = { - projection: { - _id: 1, - fname: 1, - name: 1, - t: 1, - avatarETag: 1, - }, - limit: 10, - sort: { - name: 1, - }, - }; - - const userRooms = ( - (await Subscriptions.findByUserIdAndRoles(uid, ['owner'], { projection: { rid: 1 } }).toArray()) as Pick[] - ).map((item) => item.rid); - - const rooms = await Rooms.findChannelAndGroupListWithoutTeamsByNameStartingByOwner(name, userRooms, options).toArray(); - - return { - items: rooms, - }; -} diff --git a/apps/meteor/app/api/server/lib/users.ts b/apps/meteor/app/api/server/lib/users.ts deleted file mode 100644 index 19e9ccba16585..0000000000000 --- a/apps/meteor/app/api/server/lib/users.ts +++ /dev/null @@ -1,242 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { Users, Subscriptions } from '@rocket.chat/models'; -import { escapeRegExp } from '@rocket.chat/string-helpers'; -import type { Mongo } from 'meteor/mongo'; -import type { Filter, FindOptions, RootFilterOperators } from 'mongodb'; - -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { settings } from '../../../settings/server'; - -type UserAutoComplete = Required>; - -export async function findUsersToAutocomplete({ - uid, - selector, -}: { - uid: string; - selector: { exceptions: Required['username'][]; conditions: Filter; term: string }; -}): Promise<{ - items: UserAutoComplete[]; -}> { - const searchFields = settings.get('Accounts_SearchFields').trim().split(','); - const exceptions = selector.exceptions || []; - const conditions = selector.conditions || {}; - const options: FindOptions & { limit: number } = { - projection: { - name: 1, - username: 1, - nickname: 1, - status: 1, - avatarETag: 1, - freeSwitchExtension: 1, - }, - sort: { - username: 1, - }, - limit: 10, - }; - - // Search on DMs first, to list known users before others. - const contacts = await Subscriptions.findConnectedUsersExcept(uid, selector.term, exceptions, searchFields, conditions, 10, 'd'); - if (contacts.length >= options.limit) { - return { items: contacts as UserAutoComplete[] }; - } - - options.limit -= contacts.length; - contacts.forEach(({ username }) => exceptions.push(username)); - - if (!(await hasPermissionAsync(uid, 'view-outside-room'))) { - const users = await Subscriptions.findConnectedUsersExcept(uid, selector.term, exceptions, searchFields, conditions, 10); - return { items: contacts.concat(users) as UserAutoComplete[] }; - } - - const users = await Users.findActiveByUsernameOrNameRegexWithExceptionsAndConditions( - new RegExp(escapeRegExp(selector.term), 'i'), - exceptions, - conditions, - options, - ).toArray(); - - return { - items: (contacts as UserAutoComplete[]).concat(users), - }; -} - -/** - * Returns a new query object with the inclusive fields only - */ -export function getInclusiveFields(query: Record): Record { - const newQuery = Object.create(null); - - for (const [key, value] of Object.entries(query)) { - if (value === 1) { - newQuery[key] = value; - } - } - - return newQuery; -} - -/** - * get the default fields if **fields** are empty (`{}`) or `undefined`/`null` - * @param fields the fields from parsed jsonQuery - */ -export function getNonEmptyFields(fields: Record): Record { - const defaultFields = { - name: 1, - username: 1, - emails: 1, - roles: 1, - status: 1, - active: 1, - avatarETag: 1, - lastLogin: 1, - type: 1, - } as const; - - if (!fields || Object.keys(fields).length === 0) { - return defaultFields; - } - - return { ...defaultFields, ...fields }; -} - -/** - * get the default query if **query** is empty (`{}`) or `undefined`/`null` - * @param query the query from parsed jsonQuery - */ -export function getNonEmptyQuery(query: Mongo.Query | undefined | null, canSeeAllUserInfo?: boolean): Mongo.Query { - const defaultQuery: Mongo.Query = { - $or: [{ username: { $regex: '', $options: 'i' } }, { name: { $regex: '', $options: 'i' } }], - }; - - if (canSeeAllUserInfo) { - defaultQuery.$or?.push({ 'emails.address': { $regex: '', $options: 'i' } }); - } - - if (!query || Object.keys(query).length === 0) { - return defaultQuery; - } - - return { ...defaultQuery, ...query }; -} - -type FindPaginatedUsersByStatusProps = { - uid: string; - offset: number; - count: number; - sort: Record; - status?: 'active' | 'deactivated'; - roles?: string[] | null; - searchTerm?: string; - hasLoggedIn?: boolean; - type?: string; - inactiveReason?: ('deactivated' | 'pending_approval' | 'idle_too_long')[]; -}; - -export async function findPaginatedUsersByStatus({ - uid, - offset, - count, - sort, - status, - roles, - searchTerm, - hasLoggedIn, - type, - inactiveReason, -}: FindPaginatedUsersByStatusProps) { - const actualSort: Record = sort || { username: 1 }; - if (sort?.status) { - actualSort.active = sort.status; - } - const match: Filter> = {}; - switch (status) { - case 'active': - match.active = true; - break; - case 'deactivated': - match.active = false; - break; - } - - if (hasLoggedIn !== undefined) { - match.lastLogin = { $exists: hasLoggedIn }; - } - - if (type) { - match.type = type; - } - - const canSeeAllUserInfo = await hasPermissionAsync(uid, 'view-full-other-user-info'); - - const projection = { - name: 1, - username: 1, - emails: 1, - roles: 1, - status: 1, - active: 1, - avatarETag: 1, - lastLogin: 1, - type: 1, - reason: 1, - federated: 1, - freeSwitchExtension: 1, - }; - - if (searchTerm?.trim()) { - match.$or = [ - ...(canSeeAllUserInfo ? [{ 'emails.address': { $regex: escapeRegExp(searchTerm || ''), $options: 'i' } }] : []), - { - username: { $regex: escapeRegExp(searchTerm || ''), $options: 'i' }, - }, - { - name: { $regex: escapeRegExp(searchTerm || ''), $options: 'i' }, - }, - ]; - } - if (roles?.length && !roles.includes('all')) { - match.roles = { $in: roles }; - } - - if (inactiveReason) { - const inactiveReasonCondition = { - $or: [ - { inactiveReason: { $in: inactiveReason } }, - // This condition is to make it backward compatible with the old behavior - // The deactivated users not having the inactiveReason field should be returned as well - ...(inactiveReason.includes('deactivated') || inactiveReason.includes('idle_too_long') - ? [{ inactiveReason: { $exists: false } }] - : []), - ], - }; - - if (match.$or) { - match.$and = [{ $or: match.$or }, inactiveReasonCondition]; - delete match.$or; - } else { - Object.assign(match, inactiveReasonCondition); - } - } - - const { cursor, totalCount } = Users.findPaginated( - { - ...match, - }, - { - sort: actualSort, - skip: offset, - limit: count, - projection, - allowDiskUse: true, - }, - ); - const [users, total] = await Promise.all([cursor.toArray(), totalCount]); - return { - users, - count: users.length, - offset, - total, - }; -} diff --git a/apps/meteor/app/api/server/lib/webdav.ts b/apps/meteor/app/api/server/lib/webdav.ts deleted file mode 100644 index db0c47a64e2d5..0000000000000 --- a/apps/meteor/app/api/server/lib/webdav.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { IWebdavAccount } from '@rocket.chat/core-typings'; -import { WebdavAccounts } from '@rocket.chat/models'; - -export async function findWebdavAccountsByUserId({ uid }: { uid: string }): Promise { - return WebdavAccounts.findWithUserId(uid, { - projection: { - _id: 1, - username: 1, - serverURL: 1, - name: 1, - }, - }).toArray(); -} diff --git a/apps/meteor/app/api/server/middlewares/cors.ts b/apps/meteor/app/api/server/middlewares/cors.ts deleted file mode 100644 index b46be3c54c08c..0000000000000 --- a/apps/meteor/app/api/server/middlewares/cors.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type { MiddlewareHandler } from 'hono'; - -import type { CachedSettings } from '../../../settings/server/CachedSettings'; - -const defaultHeaders = { - 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, HEAD, PATCH', - 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, X-User-Id, X-Auth-Token, x-visitor-token, Authorization', -}; - -export const cors = - (settings: CachedSettings): MiddlewareHandler => - async (c, next) => { - const { req, res } = c; - if (req.method !== 'OPTIONS') { - res.headers.set('Access-Control-Allow-Origin', '*'); - res.headers.set('Access-Control-Allow-Headers', defaultHeaders['Access-Control-Allow-Headers']); - - await next(); - return; - } - - // check if a pre-flight request - if (!req.header('access-control-request-method') && !req.header('origin')) { - await next(); - return; - } - - if (!settings.get('API_Enable_CORS')) { - return c.body('CORS not enabled. Go to "Admin > General > REST Api" to enable it.', 405); - } - - const CORSOriginSetting = String(settings.get('API_CORS_Origin')); - - if (CORSOriginSetting === '*') { - res.headers.set('Access-Control-Allow-Origin', '*'); - res.headers.set('Access-Control-Allow-Methods', defaultHeaders['Access-Control-Allow-Methods']); - res.headers.set('Access-Control-Allow-Headers', defaultHeaders['Access-Control-Allow-Headers']); - await next(); - return; - } - - const origins = CORSOriginSetting.trim() - .split(',') - .map((origin) => String(origin).trim().toLocaleLowerCase()); - - const originHeader = req.header('origin'); - - // if invalid origin reply without required CORS headers - if (!originHeader || !origins.includes(originHeader)) { - return c.body('Invalid origin', 403); - } - - res.headers.set('Vary', 'Origin'); - res.headers.set('Access-Control-Allow-Origin', originHeader); - res.headers.set('Access-Control-Allow-Methods', defaultHeaders['Access-Control-Allow-Methods']); - res.headers.set('Access-Control-Allow-Headers', defaultHeaders['Access-Control-Allow-Headers']); - await next(); - }; diff --git a/apps/meteor/app/api/server/middlewares/logger.ts b/apps/meteor/app/api/server/middlewares/logger.ts deleted file mode 100644 index 17759687390df..0000000000000 --- a/apps/meteor/app/api/server/middlewares/logger.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { Logger } from '@rocket.chat/logger'; -import { censorUrl } from '@rocket.chat/tools'; -import type { MiddlewareHandler } from 'hono'; - -import { getRestPayload } from '../../../../server/lib/logger/logPayloads'; - -export const loggerMiddleware = - (logger: Logger): MiddlewareHandler => - async (c, next) => { - const startTime = Date.now(); - - const log = logger.logger.child( - { - method: c.req.method, - url: censorUrl(c.req.url), - userId: c.req.header('x-user-id'), - userAgent: c.req.header('user-agent'), - length: c.req.header('content-length'), - host: c.req.header('host'), - referer: c.req.header('referer'), - remoteIP: c.get('remoteAddress'), - ...(['POST', 'PUT', 'PATCH', 'DELETE'].includes(c.req.method) && (await getRestPayload(c.req))), - }, - { - redact: [ - 'payload.password', // Potentially logged by v1/login - ], - }, - ); - - await next(); - - log.http({ - status: c.res.status, - responseTime: Date.now() - startTime, - }); - }; diff --git a/apps/meteor/app/api/server/middlewares/permissions.ts b/apps/meteor/app/api/server/middlewares/permissions.ts deleted file mode 100644 index b168eadfed684..0000000000000 --- a/apps/meteor/app/api/server/middlewares/permissions.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { Logger } from '@rocket.chat/logger'; -import type { Method } from '@rocket.chat/rest-typings'; -import type { MiddlewareHandler } from 'hono'; - -import { applyBreakingChanges } from '../ApiClass'; -import { API } from '../api'; -import { type PermissionsPayload, checkPermissionsForInvocation } from '../api.helpers'; -import type { TypedOptions } from '../definition'; -import type { HonoContext } from '../router'; - -const logger = new Logger('PermissionsMiddleware'); - -export const permissionsMiddleware = - (options: TypedOptions): MiddlewareHandler => - async (c: HonoContext, next) => { - if (!options.permissionsRequired) { - return next(); - } - - const user = c.get('user'); - - if (!user) { - if (applyBreakingChanges) { - const unauthorized = API.v1.unauthorized('You must be logged in to do this'); - return c.json(unauthorized.body, unauthorized.statusCode); - } - - const failure = API.v1.forbidden('User does not have the permissions required for this action [error-unauthorized]'); - return c.json(failure.body, failure.statusCode); - } - - let hasPermission: boolean; - try { - hasPermission = await checkPermissionsForInvocation( - user._id, - options.permissionsRequired as PermissionsPayload, - c.req.method as Method, - ); - } catch (e) { - logger.error({ msg: 'Error checking permissions for invocation', err: e }); - const error = API.v1.internalError(); - return c.json(error.body, error.statusCode); - } - - if (!hasPermission) { - if (applyBreakingChanges) { - const forbidden = API.v1.forbidden('User does not have the permissions required for this action [error-unauthorized]'); - return c.json(forbidden.body, forbidden.statusCode); - } - - const failure = API.v1.forbidden('User does not have the permissions required for this action [error-unauthorized]'); - return c.json(failure.body, failure.statusCode); - } - - return next(); - }; diff --git a/apps/meteor/app/api/server/v1/assets.ts b/apps/meteor/app/api/server/v1/assets.ts deleted file mode 100644 index fda2522406021..0000000000000 --- a/apps/meteor/app/api/server/v1/assets.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { Settings } from '@rocket.chat/models'; -import { - ajv, - isAssetsUnsetAssetProps, - validateUnauthorizedErrorResponse, - validateForbiddenErrorResponse, - validateBadRequestErrorResponse, -} from '@rocket.chat/rest-typings'; - -import { updateAuditedByUser } from '../../../../server/settings/lib/auditedSettingUpdates'; -import { RocketChatAssets, refreshClients } from '../../../assets/server'; -import { notifyOnSettingChangedById } from '../../../lib/server/lib/notifyListener'; -import { settings } from '../../../settings/server'; -import { API } from '../api'; -import { getUploadFormData } from '../lib/getUploadFormData'; - -const successResponseSchema = ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [true] } }, - required: ['success'], - additionalProperties: false, -}); - -API.v1.post( - 'assets.setAsset', - { - authRequired: true, - permissionsRequired: ['manage-assets'], - response: { - 200: successResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const asset = await getUploadFormData( - { - request: this.request, - }, - { field: 'asset', sizeLimit: settings.get('FileUpload_MaxFileSize') }, - ); - - const { fileBuffer, fields, filename, mimetype } = asset; - - const { refreshAllClients, assetName: customName } = fields; - - const assetName = customName || filename; - const assetsKeys = Object.keys(RocketChatAssets.assets); - - const isValidAsset = assetsKeys.includes(assetName); - if (!isValidAsset) { - throw new Error('Invalid asset'); - } - - const { key, value } = await RocketChatAssets.setAssetWithBuffer(fileBuffer, mimetype, assetName); - - const { modifiedCount } = await updateAuditedByUser({ - _id: this.userId, - username: this.user.username ?? '', - ip: this.requestIp ?? '', - useragent: this.request.headers.get('user-agent') ?? '', - })(Settings.updateValueById, key, value); - - if (modifiedCount) { - void notifyOnSettingChangedById(key); - } - - if (refreshAllClients) { - await refreshClients(this.userId); - } - - return API.v1.success(); - }, -); - -API.v1.post( - 'assets.unsetAsset', - { - authRequired: true, - body: isAssetsUnsetAssetProps, - permissionsRequired: ['manage-assets'], - response: { - 200: successResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { assetName, refreshAllClients } = this.bodyParams; - const isValidAsset = Object.keys(RocketChatAssets.assets).includes(assetName); - if (!isValidAsset) { - throw Error('Invalid asset'); - } - - const { key, value } = await RocketChatAssets.unsetAsset(assetName); - - const { modifiedCount } = await updateAuditedByUser({ - _id: this.userId, - username: this.user.username ?? '', - ip: this.requestIp ?? '', - useragent: this.request.headers.get('user-agent') ?? '', - })(Settings.updateValueById, key, value); - - if (modifiedCount) { - void notifyOnSettingChangedById(key); - } - - if (refreshAllClients) { - await refreshClients(this.userId); - } - return API.v1.success(); - }, -); diff --git a/apps/meteor/app/api/server/v1/autotranslate.ts b/apps/meteor/app/api/server/v1/autotranslate.ts deleted file mode 100644 index b8cdeebe32260..0000000000000 --- a/apps/meteor/app/api/server/v1/autotranslate.ts +++ /dev/null @@ -1,165 +0,0 @@ -import type { IMessage, ISupportedLanguage } from '@rocket.chat/core-typings'; -import { Messages, Rooms } from '@rocket.chat/models'; -import { - ajv, - validateUnauthorizedErrorResponse, - validateBadRequestErrorResponse, - validateForbiddenErrorResponse, - isAutotranslateSaveSettingsParamsPOST, - isAutotranslateGetSupportedLanguagesParamsGET, -} from '@rocket.chat/rest-typings'; - -import { canAccessRoomAsync } from '../../../authorization/server'; -import { getSupportedLanguages } from '../../../autotranslate/server/functions/getSupportedLanguages'; -import { saveAutoTranslateSettings } from '../../../autotranslate/server/functions/saveSettings'; -import { translateMessage } from '../../../autotranslate/server/functions/translateMessage'; -import { settings } from '../../../settings/server'; -import type { ExtractRoutesFromAPI } from '../ApiClass'; -import { API } from '../api'; - -type AutotranslateTranslateMessageParamsPOST = { - messageId: string; - targetLanguage?: string; -}; - -const AutotranslateTranslateMessageParamsPostSchema = { - type: 'object', - properties: { - messageId: { - type: 'string', - }, - targetLanguage: { - type: 'string', - nullable: true, - }, - }, - required: ['messageId'], - additionalProperties: false, -}; - -const isAutotranslateTranslateMessageParamsPOST = ajv.compile( - AutotranslateTranslateMessageParamsPostSchema, -); - -const autotranslateEndpoints = API.v1 - .get( - 'autotranslate.getSupportedLanguages', - { - authRequired: true, - query: isAutotranslateGetSupportedLanguagesParamsGET, - response: { - 200: ajv.compile<{ languages: ISupportedLanguage[] }>({ - type: 'object', - properties: { - languages: { type: 'array', items: { type: 'object' } }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['languages', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - if (!settings.get('AutoTranslate_Enabled')) { - return API.v1.failure('AutoTranslate is disabled.'); - } - const { targetLanguage } = this.queryParams; - const languages = await getSupportedLanguages(this.userId, targetLanguage); - - return API.v1.success({ languages: languages || [] }); - }, - ) - .post( - 'autotranslate.saveSettings', - { - authRequired: true, - body: isAutotranslateSaveSettingsParamsPOST, - response: { - 200: ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [true] } }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { roomId, field, value, defaultLanguage } = this.bodyParams; - if (!settings.get('AutoTranslate_Enabled')) { - return API.v1.failure('AutoTranslate is disabled.'); - } - - // ajv 2020-12 with coerceTypes coerces booleans to strings, so check for both - if (field === 'autoTranslate' && value !== true && value !== 'true' && value !== false && value !== 'false') { - return API.v1.failure('The bodyParam "autoTranslate" must be a boolean.'); - } - - if (field === 'autoTranslateLanguage' && (typeof value !== 'string' || !Number.isNaN(Number.parseInt(value)))) { - return API.v1.failure('The bodyParam "autoTranslateLanguage" must be a string.'); - } - - await saveAutoTranslateSettings(this.userId, roomId, field, value === true || value === 'true' ? '1' : String(value), { - defaultLanguage: defaultLanguage || '', - }); - - return API.v1.success(); - }, - ) - .post( - 'autotranslate.translateMessage', - { - authRequired: true, - body: isAutotranslateTranslateMessageParamsPOST, - response: { - 200: ajv.compile<{ message: IMessage }>({ - type: 'object', - properties: { - message: { $ref: '#/components/schemas/IMessage' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['message', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { messageId, targetLanguage } = this.bodyParams; - if (!settings.get('AutoTranslate_Enabled')) { - return API.v1.failure('AutoTranslate is disabled.'); - } - if (!messageId) { - return API.v1.failure('The bodyParam "messageId" is required.'); - } - const message = await Messages.findOneById(messageId); - if (!message) { - return API.v1.failure('Message not found.'); - } - - const room = await Rooms.findOneById(message.rid); - if (!room || !(await canAccessRoomAsync(room, { _id: this.userId }))) { - return API.v1.forbidden(); - } - - const translatedMessage = await translateMessage(targetLanguage, message); - - if (!translatedMessage) { - return API.v1.failure('Failed to translate message.'); - } - - return API.v1.success({ message: translatedMessage }); - }, - ); - -type AutotranslateEndpoints = ExtractRoutesFromAPI; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends AutotranslateEndpoints {} -} diff --git a/apps/meteor/app/api/server/v1/channels.ts b/apps/meteor/app/api/server/v1/channels.ts deleted file mode 100644 index 5cd2e327dc17f..0000000000000 --- a/apps/meteor/app/api/server/v1/channels.ts +++ /dev/null @@ -1,1509 +0,0 @@ -import { Team, Room } from '@rocket.chat/core-services'; -import { - TeamType, - isRoomNativeFederated, - type IRoom, - type ISubscription, - type IUser, - type RoomType, - type UserStatus, -} from '@rocket.chat/core-typings'; -import { Integrations, Messages, Rooms, Subscriptions, Uploads, Users } from '@rocket.chat/models'; -import { - isChannelsAddAllProps, - isChannelsArchiveProps, - isChannelsHistoryProps, - isChannelsUnarchiveProps, - isChannelsRolesProps, - isChannelsJoinProps, - isChannelsKickProps, - isChannelsLeaveProps, - isChannelsMessagesProps, - isChannelsOpenProps, - isChannelsSetAnnouncementProps, - isChannelsGetAllUserMentionsByChannelProps, - isChannelsModeratorsProps, - isChannelsConvertToTeamProps, - isChannelsSetReadOnlyProps, - isChannelsDeleteProps, - isChannelsListProps, - isChannelsFilesListProps, - isChannelsOnlineProps, -} from '@rocket.chat/rest-typings'; -import { isTruthy } from '@rocket.chat/tools'; -import { Meteor } from 'meteor/meteor'; - -import { eraseRoom } from '../../../../server/lib/eraseRoom'; -import { findUsersOfRoom } from '../../../../server/lib/findUsersOfRoom'; -import { openRoom } from '../../../../server/lib/openRoom'; -import { addAllUserToRoomFn } from '../../../../server/methods/addAllUserToRoom'; -import { addRoomLeader } from '../../../../server/methods/addRoomLeader'; -import { addRoomModerator } from '../../../../server/methods/addRoomModerator'; -import { addRoomOwner } from '../../../../server/methods/addRoomOwner'; -import { hideRoomMethod } from '../../../../server/methods/hideRoom'; -import { removeRoomLeader } from '../../../../server/methods/removeRoomLeader'; -import { removeRoomModerator } from '../../../../server/methods/removeRoomModerator'; -import { removeRoomOwner } from '../../../../server/methods/removeRoomOwner'; -import { removeUserFromRoomMethod } from '../../../../server/methods/removeUserFromRoom'; -import { canAccessRoomAsync } from '../../../authorization/server'; -import { hasAllPermissionAsync, hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { saveRoomSettings } from '../../../channel-settings/server/methods/saveRoomSettings'; -import { mountIntegrationQueryBasedOnPermissions } from '../../../integrations/server/lib/mountQueriesBasedOnPermission'; -import { addUsersToRoomMethod } from '../../../lib/server/methods/addUsersToRoom'; -import { executeArchiveRoom } from '../../../lib/server/methods/archiveRoom'; -import { createChannelMethod } from '../../../lib/server/methods/createChannel'; -import { getChannelHistory } from '../../../lib/server/methods/getChannelHistory'; -import { executeGetRoomRoles } from '../../../lib/server/methods/getRoomRoles'; -import { leaveRoomMethod } from '../../../lib/server/methods/leaveRoom'; -import { executeUnarchiveRoom } from '../../../lib/server/methods/unarchiveRoom'; -import { getUserMentionsByChannel } from '../../../mentions/server/methods/getUserMentionsByChannel'; -import { settings } from '../../../settings/server'; -import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser'; -import { API } from '../api'; -import { addUserToFileObj } from '../helpers/addUserToFileObj'; -import { composeRoomWithLastMessage } from '../helpers/composeRoomWithLastMessage'; -import { getPaginationItems } from '../helpers/getPaginationItems'; -import { getUserFromParams, getUserListFromParams, getUsernameListFromParams } from '../helpers/getUserFromParams'; - -// Returns the channel IF found otherwise it will return the failure of why it didn't. Check the `statusCode` property -async function findChannelByIdOrName({ - params, - checkedArchived = true, - userId, -}: { - params: - | { - roomId?: string; - } - | { - roomName?: string; - }; - userId?: string; - checkedArchived?: boolean; -}): Promise { - const projection = { ...API.v1.defaultFieldsToExclude }; - - let room; - if ('roomId' in params) { - room = await Rooms.findOneById(params.roomId || '', { projection }); - } else if ('roomName' in params) { - room = await Rooms.findOneByName(params.roomName || '', { projection }); - } - - if (!room || (room.t !== 'c' && room.t !== 'l')) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any channel'); - } - - if (checkedArchived && room.archived) { - throw new Meteor.Error('error-room-archived', `The channel, ${room.name}, is archived`); - } - if (userId && room.lastMessage) { - const [lastMessage] = await normalizeMessagesForUser([room.lastMessage], userId); - room.lastMessage = lastMessage; - } - - return room; -} - -API.v1.addRoute( - 'channels.addAll', - { - authRequired: true, - validateParams: isChannelsAddAllProps, - }, - { - async post() { - const { activeUsersOnly, ...params } = this.bodyParams; - const findResult = await findChannelByIdOrName({ params, userId: this.userId }); - - await addAllUserToRoomFn(this.userId, findResult._id, activeUsersOnly === 'true' || activeUsersOnly === 1); - - return API.v1.success({ - channel: await findChannelByIdOrName({ params, userId: this.userId }), - }); - }, - }, -); - -API.v1.addRoute( - 'channels.archive', - { - authRequired: true, - validateParams: isChannelsArchiveProps, - }, - { - async post() { - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - await executeArchiveRoom(this.userId, findResult._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'channels.unarchive', - { - authRequired: true, - validateParams: isChannelsUnarchiveProps, - }, - { - async post() { - const findResult = await findChannelByIdOrName({ - params: this.bodyParams, - checkedArchived: false, - }); - - if (!findResult.archived) { - return API.v1.failure(`The channel, ${findResult.name}, is not archived`); - } - - await executeUnarchiveRoom(this.userId, findResult._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'channels.history', - { - authRequired: true, - validateParams: isChannelsHistoryProps, - }, - { - async get() { - const { unreads, oldest, latest, showThreadMessages, inclusive, ...params } = this.queryParams; - const findResult = await findChannelByIdOrName({ - params, - checkedArchived: false, - }); - - const { count = 20, offset = 0 } = await getPaginationItems(this.queryParams); - - const result = await getChannelHistory({ - rid: findResult._id, - fromUserId: this.userId, - latest: latest ? new Date(latest) : new Date(), - oldest: oldest ? new Date(oldest) : undefined, - inclusive: inclusive === 'true', - offset, - count, - unreads: unreads === 'true', - showThreadMessages: showThreadMessages === 'true', - }); - - if (!result) { - return API.v1.forbidden(); - } - - return API.v1.success(result); - }, - }, -); - -API.v1.addRoute( - 'channels.roles', - { - authRequired: true, - validateParams: isChannelsRolesProps, - }, - { - async get() { - const findResult = await findChannelByIdOrName({ params: this.queryParams }); - - const roles = await executeGetRoomRoles(findResult._id, this.user); - - return API.v1.success({ - roles, - }); - }, - }, -); - -API.v1.addRoute( - 'channels.join', - { - authRequired: true, - validateParams: isChannelsJoinProps, - }, - { - async post() { - const { joinCode, ...params } = this.bodyParams; - const findResult = await findChannelByIdOrName({ params }); - - await Room.join({ room: findResult, user: this.user, joinCode }); - - return API.v1.success({ - channel: await findChannelByIdOrName({ params, userId: this.userId }), - }); - }, - }, -); - -API.v1.addRoute( - 'channels.kick', - { - authRequired: true, - validateParams: isChannelsKickProps, - }, - { - async post() { - const { ...params /* userId */ } = this.bodyParams; - const findResult = await findChannelByIdOrName({ params }); - - const user = await getUserFromParams(this.bodyParams); - if (!user?.username) { - return API.v1.failure('Invalid user'); - } - - await removeUserFromRoomMethod(this.userId, { rid: findResult._id, username: user.username }); - - return API.v1.success({ - channel: await findChannelByIdOrName({ params, userId: this.userId }), - }); - }, - }, -); - -API.v1.addRoute( - 'channels.leave', - { - authRequired: true, - validateParams: isChannelsLeaveProps, - }, - { - async post() { - const { ...params } = this.bodyParams; - const findResult = await findChannelByIdOrName({ params }); - - const user = await Users.findOneById(this.userId); - if (!user) { - return API.v1.failure('Invalid user'); - } - await leaveRoomMethod(user, findResult._id); - - return API.v1.success({ - channel: await findChannelByIdOrName({ params, userId: this.userId }), - }); - }, - }, -); - -API.v1.addRoute( - 'channels.messages', - { - authRequired: true, - validateParams: isChannelsMessagesProps, - permissionsRequired: ['view-c-room'], - }, - { - async get() { - const { roomId, mentionIds, starredIds, pinned } = this.queryParams; - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - - const findResult = await findChannelByIdOrName({ - params: { roomId }, - checkedArchived: false, - }); - - const parseIds = (ids: string | undefined, field: string) => - typeof ids === 'string' && ids ? { [field]: { $in: ids.split(',').map((id) => id.trim()) } } : {}; - - const ourQuery = { - ...query, - rid: findResult._id, - ...parseIds(mentionIds, 'mentions._id'), - ...parseIds(starredIds, 'starred._id'), - ...(pinned?.toLowerCase() === 'true' ? { pinned: true } : {}), - _hidden: { $ne: true }, - }; - - if (!(await canAccessRoomAsync(findResult, { _id: this.userId }))) { - return API.v1.forbidden(); - } - - // Special check for the permissions - if ( - (await hasPermissionAsync(this.userId, 'view-joined-room')) && - !(await Subscriptions.findOneByRoomIdAndUserId(findResult._id, this.userId, { projection: { _id: 1 } })) - ) { - return API.v1.forbidden(); - } - - const { cursor, totalCount } = Messages.findPaginated(ourQuery, { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [messages, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - messages: await normalizeMessagesForUser(messages, this.userId), - count: messages.length, - offset, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'channels.open', - { - authRequired: true, - validateParams: isChannelsOpenProps, - }, - { - async post() { - const { ...params } = this.bodyParams; - - const findResult = await findChannelByIdOrName({ - params, - checkedArchived: false, - }); - - const sub = await Subscriptions.findOneByRoomIdAndUserId(findResult._id, this.userId); - - if (!sub) { - return API.v1.failure(`The user/callee is not in the channel "${findResult.name}".`); - } - - if (sub.open) { - return API.v1.failure(`The channel, ${findResult.name}, is already open to the sender`); - } - - await openRoom(this.userId, findResult._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'channels.setReadOnly', - { - authRequired: true, - validateParams: isChannelsSetReadOnlyProps, - }, - { - async post() { - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - if (findResult.ro === this.bodyParams.readOnly) { - return API.v1.failure('The channel read only setting is the same as what it would be changed to.'); - } - - await saveRoomSettings(this.userId, findResult._id, 'readOnly', this.bodyParams.readOnly); - - return API.v1.success({ - channel: await findChannelByIdOrName({ params: this.bodyParams, userId: this.userId }), - }); - }, - }, -); - -API.v1.addRoute( - 'channels.setAnnouncement', - { - authRequired: true, - validateParams: isChannelsSetAnnouncementProps, - }, - { - async post() { - const { announcement, ...params } = this.bodyParams; - - const findResult = await findChannelByIdOrName({ params }); - - await saveRoomSettings(this.userId, findResult._id, 'roomAnnouncement', announcement); - - return API.v1.success({ - announcement: this.bodyParams.announcement, - }); - }, - }, -); - -API.v1.addRoute( - 'channels.getAllUserMentionsByChannel', - { - authRequired: true, - validateParams: isChannelsGetAllUserMentionsByChannelProps, - }, - { - async get() { - const { roomId } = this.queryParams; - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - - const mentions = await getUserMentionsByChannel(this.userId, roomId, { - sort: sort || { ts: 1 }, - skip: offset, - limit: count, - }); - - const allMentions = await getUserMentionsByChannel(this.userId, roomId, {}); - - return API.v1.success({ - mentions, - count: mentions.length, - offset, - total: allMentions.length, - }); - }, - }, -); - -API.v1.addRoute( - 'channels.moderators', - { - authRequired: true, - validateParams: isChannelsModeratorsProps, - }, - { - async get() { - const { ...params } = this.queryParams; - - const findResult = await findChannelByIdOrName({ params }); - - if (!(await canAccessRoomAsync(findResult, { _id: this.userId }))) { - return API.v1.forbidden(); - } - - const moderators = await Subscriptions.findByRoomIdAndRoles(findResult._id, ['moderator'], { - projection: { u: 1, _id: 0 }, - }) - .map((sub) => sub.u) - .toArray(); - - return API.v1.success({ - moderators, - }); - }, - }, -); - -API.v1.addRoute( - 'channels.delete', - { - authRequired: true, - validateParams: isChannelsDeleteProps, - }, - { - async post() { - const room = await findChannelByIdOrName({ - params: this.bodyParams, - checkedArchived: false, - }); - - await eraseRoom(room._id, this.user); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'channels.convertToTeam', - { - authRequired: true, - validateParams: isChannelsConvertToTeamProps, - permissionsRequired: ['create-team'], - }, - { - async post() { - const { channelId, channelName } = this.bodyParams; - - if (!channelId && !channelName) { - return API.v1.failure('The parameter "channelId" or "channelName" is required'); - } - - const room = await findChannelByIdOrName({ - params: channelId !== undefined ? { roomId: channelId } : { roomName: channelName }, - userId: this.userId, - }); - - if (!room) { - return API.v1.failure('Channel not found'); - } - - if (!(await hasAllPermissionAsync(this.userId, ['create-team', 'edit-room'], room._id))) { - return API.v1.forbidden(); - } - - const subscriptions = await Subscriptions.findByRoomId(room._id, { - projection: { 'u._id': 1 }, - }); - - const members = (await subscriptions.toArray()).map((s: ISubscription) => s.u?._id); - - const teamData = { - team: { - name: room.name ?? '', - type: room.t === 'c' ? 0 : 1, - }, - members, - room: { - name: room.name, - id: room._id, - }, - }; - - const team = await Team.create(this.userId, teamData); - - return API.v1.success({ team }); - }, - }, -); - -API.v1.addRoute( - 'channels.addModerator', - { authRequired: true }, - { - async post() { - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - const user = await getUserFromParams(this.bodyParams); - - await addRoomModerator(this.userId, findResult._id, user._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'channels.addOwner', - { authRequired: true }, - { - async post() { - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - const user = await getUserFromParams(this.bodyParams); - - await addRoomOwner(this.userId, findResult._id, user._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'channels.close', - { authRequired: true }, - { - async post() { - const findResult = await findChannelByIdOrName({ - params: this.bodyParams, - checkedArchived: false, - }); - - const sub = await Subscriptions.findOneByRoomIdAndUserId(findResult._id, this.userId); - - if (!sub) { - return API.v1.failure(`The user/callee is not in the channel "${findResult.name}.`); - } - - if (!sub.open) { - return API.v1.failure(`The channel, ${findResult.name}, is already closed to the sender`); - } - - await hideRoomMethod(this.userId, findResult._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'channels.counters', - { authRequired: true }, - { - async get() { - const access = await hasPermissionAsync(this.userId, 'view-room-administration'); - const { userId } = this.queryParams; - let user = this.userId; - let unreads = null; - let userMentions = null; - let unreadsFrom = null; - let joined = false; - let msgs = null; - let latest = null; - let members = null; - - if (userId) { - if (!access) { - return API.v1.forbidden(); - } - user = userId; - } - const room = await findChannelByIdOrName({ - params: this.queryParams, - }); - const subscription = await Subscriptions.findOneByRoomIdAndUserId(room._id, user); - const lm = room.lm ? room.lm : room._updatedAt; - - if (subscription?.open) { - unreads = await Messages.countVisibleByRoomIdBetweenTimestampsInclusive(subscription.rid, subscription.ls ?? subscription.ts, lm); - unreadsFrom = subscription.ls || subscription.ts; - userMentions = subscription.userMentions; - joined = true; - } - - if (access || joined) { - msgs = room.msgs; - latest = lm; - members = await Users.countActiveUsersInNonDMRoom(room._id); - } - - return API.v1.success({ - joined, - members, - unreads, - unreadsFrom, - msgs, - latest, - userMentions, - }); - }, - }, -); - -async function createChannelValidator(params: { - user: { value: string }; - name?: { key: string; value?: string }; - members?: { key: string; value?: string[] }; - customFields?: { key: string; value?: string }; - teams?: { key: string; value?: string[] }; - teamId?: { key: string; value?: string }; -}) { - const teamId = params.teamId?.value; - - const team = teamId && (await Team.getInfoById(teamId)); - if ( - (!teamId && !(await hasPermissionAsync(params.user.value, 'create-c'))) || - (teamId && team && !(await hasPermissionAsync(params.user.value, 'create-team-channel', team.roomId))) - ) { - throw new Error('unauthorized'); - } - - if (!params.name?.value) { - throw new Error(`Param "${params.name?.key}" is required`); - } - - if (params.members?.value && !Array.isArray(params.members.value)) { - throw new Error(`Param "${params.members.key}" must be an array if provided`); - } - - if (params.customFields?.value && !(typeof params.customFields.value === 'object')) { - throw new Error(`Param "${params.customFields.key}" must be an object if provided`); - } - - if (params.teams?.value && !Array.isArray(params.teams.value)) { - throw new Error(`Param ${params.teams.key} must be an array`); - } -} - -async function createChannel( - userId: string, - params: { - name?: string; - members?: string[]; - customFields?: Record; - extraData?: Record; - readOnly?: boolean; - excludeSelf?: boolean; - }, -): Promise<{ channel: IRoom }> { - const readOnly = typeof params.readOnly !== 'undefined' ? params.readOnly : false; - const id = await createChannelMethod( - userId, - params.name || '', - params.members ? params.members : [], - readOnly, - params.customFields, - params.extraData, - params.excludeSelf, - ); - - return { - channel: await findChannelByIdOrName({ params: { roomId: id.rid }, userId }), - }; -} - -API.channels = { - create: { - validate: createChannelValidator, - execute: createChannel, - }, -}; - -API.v1.addRoute( - 'channels.create', - { authRequired: true }, - { - async post() { - const { userId, bodyParams } = this; - - let error; - - try { - await API.channels?.create.validate({ - user: { - value: userId, - }, - name: { - value: bodyParams.name, - key: 'name', - }, - members: { - value: bodyParams.members, - key: 'members', - }, - teams: { - value: bodyParams.teams, - key: 'teams', - }, - teamId: { - value: bodyParams.extraData?.teamId, - key: 'teamId', - }, - }); - } catch (e: any) { - if (e.message === 'unauthorized') { - error = API.v1.forbidden(); - } else { - error = API.v1.failure(e.message); - } - } - - if (error) { - return error; - } - - if (bodyParams.teams) { - const canSeeAllTeams = await hasPermissionAsync(this.userId, 'view-all-teams'); - const teams = await Team.listByNames(bodyParams.teams, { projection: { _id: 1 } }); - const teamMembers = []; - - for (const team of teams) { - const { records: members } = await Team.members(this.userId, team._id, canSeeAllTeams, { - offset: 0, - count: Number.MAX_SAFE_INTEGER, - }); - const uids = members.map((member) => member.user.username); - teamMembers.push(...uids); - } - - const membersToAdd = new Set([...teamMembers, ...(bodyParams.members || [])]); - bodyParams.members = [...membersToAdd].filter(Boolean) as string[]; - } - - return API.v1.success(await API.channels?.create.execute(userId, bodyParams)); - }, - }, -); - -API.v1.addRoute( - 'channels.files', - { authRequired: true, validateParams: isChannelsFilesListProps }, - { - async get() { - const { typeGroup, name, roomId, roomName, onlyConfirmed } = this.queryParams; - - const findResult = await findChannelByIdOrName({ - params: { - ...(roomId ? { roomId } : {}), - ...(roomName ? { roomName } : {}), - }, - checkedArchived: false, - }); - - if (!(await canAccessRoomAsync(findResult, { _id: this.userId }))) { - return API.v1.forbidden(); - } - - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - - const filter = { - rid: findResult._id, - ...query, - ...(name ? { name: { $regex: name || '', $options: 'i' } } : {}), - ...(typeGroup ? { typeGroup } : {}), - ...(onlyConfirmed && { expiresAt: { $exists: false } }), - }; - - const { cursor, totalCount } = await Uploads.findPaginatedWithoutThumbs(filter, { - sort: sort || { name: 1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [files, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - files: await addUserToFileObj(files), - count: files.length, - offset, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'channels.getIntegrations', - { - authRequired: true, - permissionsRequired: { - GET: { - permissions: [ - 'manage-outgoing-integrations', - 'manage-own-outgoing-integrations', - 'manage-incoming-integrations', - 'manage-own-incoming-integrations', - ], - operation: 'hasAny', - }, - }, - }, - { - async get() { - const findResult = await findChannelByIdOrName({ - params: this.queryParams, - checkedArchived: false, - }); - - if (!(await canAccessRoomAsync(findResult, { _id: this.userId }))) { - return API.v1.forbidden(); - } - - let includeAllPublicChannels = true; - if (typeof this.queryParams.includeAllPublicChannels !== 'undefined') { - includeAllPublicChannels = this.queryParams.includeAllPublicChannels === 'true'; - } - - let ourQuery: { channel: string | { $in: string[] } } = { - channel: `#${findResult.name}`, - }; - - if (includeAllPublicChannels) { - ourQuery.channel = { - $in: [ourQuery.channel as string, 'all_public_channels'], - }; - } - - const params = this.queryParams; - const { offset, count } = await getPaginationItems(params); - const { sort, fields: projection, query } = await this.parseJsonQuery(); - - ourQuery = Object.assign(await mountIntegrationQueryBasedOnPermissions(this.userId), query, ourQuery); - - const { cursor, totalCount } = await Integrations.findPaginated(ourQuery, { - sort: sort || { _createdAt: 1 }, - skip: offset, - limit: count, - projection, - }); - - const [integrations, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - integrations, - count: integrations.length, - offset, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'channels.info', - { authRequired: true }, - { - async get() { - const findResult = await findChannelByIdOrName({ - params: this.queryParams, - checkedArchived: false, - userId: this.userId, - }); - - if (!(await canAccessRoomAsync(findResult, { _id: this.userId }))) { - return API.v1.forbidden(); - } - - return API.v1.success({ - channel: findResult, - }); - }, - }, -); - -API.v1.addRoute( - 'channels.invite', - { authRequired: true }, - { - async post() { - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - // Federated rooms invite by raw username: the federated user record is created - // lazily inside addUsersToRoomMethod, so we must not require it to exist locally yet. - if (isRoomNativeFederated(findResult)) { - const users = await getUsernameListFromParams(this.bodyParams); - - await addUsersToRoomMethod(this.userId, { rid: findResult._id, users }, this.user); - - return API.v1.success({ - channel: await findChannelByIdOrName({ params: this.bodyParams, userId: this.userId }), - }); - } - - const users = await getUserListFromParams(this.bodyParams); - - if (!users.length) { - return API.v1.failure('invalid-user-invite-list', 'Cannot invite if no users are provided'); - } - - await addUsersToRoomMethod(this.userId, { rid: findResult._id, users: users.map((u) => u.username).filter(isTruthy) }, this.user); - - return API.v1.success({ - channel: await findChannelByIdOrName({ params: this.bodyParams, userId: this.userId }), - }); - }, - }, -); - -API.v1.addRoute( - 'channels.list', - { - authRequired: true, - permissionsRequired: { - GET: { permissions: ['view-c-room', 'view-joined-room'], operation: 'hasAny' }, - }, - validateParams: isChannelsListProps, - }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - const hasPermissionToSeeAllPublicChannels = await hasPermissionAsync(this.userId, 'view-c-room'); - - const { _id } = this.queryParams; - - const ourQuery = { - ...query, - ...(_id ? { _id } : {}), - t: 'c', - }; - - if (!hasPermissionToSeeAllPublicChannels) { - const roomIds = ( - await Subscriptions.findByUserIdAndType(this.userId, 'c', { - projection: { rid: 1 }, - }).toArray() - ).map((s) => s.rid); - ourQuery._id = { $in: roomIds }; - } - - // teams filter - I would love to have a way to apply this filter @ db level :( - const ids = (await Subscriptions.findByUserId(this.userId, { projection: { rid: 1 } }).toArray()).map( - (item: Record) => item.rid, - ); - - ourQuery.$or = [ - { - teamId: { - $exists: false, - }, - }, - { - teamId: { - $exists: true, - }, - _id: { - $in: ids, - }, - }, - ]; - - const { cursor, totalCount } = Rooms.findPaginated(ourQuery, { - sort: sort || { name: 1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [channels, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - channels: await Promise.all(channels.map((room) => composeRoomWithLastMessage(room, this.userId))), - count: channels.length, - offset, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'channels.list.joined', - { authRequired: true }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields } = await this.parseJsonQuery(); - - const subs = await Subscriptions.findByUserIdAndTypes(this.userId, ['c'], { projection: { rid: 1 } }).toArray(); - const rids = subs.map(({ rid }) => rid).filter(Boolean); - - if (rids.length === 0) { - return API.v1.success({ - channels: [], - offset, - count: 0, - total: 0, - }); - } - - const { cursor, totalCount } = Rooms.findPaginatedByTypeAndIds('c', rids, { - sort: sort || { name: 1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [channels, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - channels: await Promise.all(channels.map((room) => composeRoomWithLastMessage(room, this.userId))), - offset, - count: channels.length, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'channels.members', - { authRequired: true }, - { - async get() { - const findResult = await findChannelByIdOrName({ - params: this.queryParams, - checkedArchived: false, - }); - - if (!(await canAccessRoomAsync(findResult, { _id: this.userId }))) { - return API.v1.forbidden(); - } - - if (findResult.broadcast && !(await hasPermissionAsync(this.userId, 'view-broadcast-member-list', findResult._id))) { - return API.v1.forbidden(); - } - - const { offset: skip, count: limit } = await getPaginationItems(this.queryParams); - const { sort = {} } = await this.parseJsonQuery(); - - check( - this.queryParams, - Match.ObjectIncluding({ - status: Match.Maybe([String]), - filter: Match.Maybe(String), - }), - ); - const { status, filter } = this.queryParams; - - const { cursor, totalCount } = await findUsersOfRoom({ - rid: findResult._id, - ...(status && { status: { $in: status as UserStatus[] } }), - skip, - limit, - filter, - ...(sort?.username && { sort: { username: sort.username } }), - }); - - const [members, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - members, - count: members.length, - offset: skip, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'channels.online', - { authRequired: true, validateParams: isChannelsOnlineProps }, - { - async get() { - const { query } = await this.parseJsonQuery(); - const { _id } = this.queryParams; - - if ((!query || Object.keys(query).length === 0) && !_id) { - return API.v1.failure('Invalid query'); - } - - const filter = { - ...query, - ...(_id ? { _id } : {}), - t: 'c', - }; - - const room = await Rooms.findOne(filter as Record); - if (!room) { - return API.v1.failure('Channel does not exists'); - } - - if (!(await canAccessRoomAsync(room, this.user))) { - throw new Meteor.Error('error-not-allowed', 'Not Allowed'); - } - - const online: Pick[] = await Users.findUsersNotOffline({ - projection: { username: 1 }, - }).toArray(); - - const onlineInRoom = await Promise.all( - online.map(async (user) => { - const subscription = await Subscriptions.findOneByRoomIdAndUserId(room._id, user._id, { - projection: { _id: 1, username: 1 }, - }); - if (subscription) { - return { - _id: user._id, - username: user.username, - }; - } - }), - ); - - return API.v1.success({ - online: onlineInRoom.filter(Boolean) as IUser[], - }); - }, - }, -); - -API.v1.addRoute( - 'channels.removeModerator', - { authRequired: true }, - { - async post() { - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - const user = await getUserFromParams(this.bodyParams); - - await removeRoomModerator(this.userId, findResult._id, user._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'channels.removeOwner', - { authRequired: true }, - { - async post() { - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - const user = await getUserFromParams(this.bodyParams); - - await removeRoomOwner(this.userId, findResult._id, user._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'channels.rename', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.name?.trim()) { - return API.v1.failure('The bodyParam "name" is required'); - } - - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - if (findResult.name === this.bodyParams.name) { - return API.v1.failure('The channel name is the same as what it would be renamed to.'); - } - - await saveRoomSettings(this.userId, findResult._id, 'roomName', this.bodyParams.name); - - return API.v1.success({ - channel: await findChannelByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }), - }); - }, - }, -); - -API.v1.addRoute( - 'channels.setCustomFields', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.customFields || !(typeof this.bodyParams.customFields === 'object')) { - return API.v1.failure('The bodyParam "customFields" is required with a type like object.'); - } - - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - await saveRoomSettings(this.userId, findResult._id, 'roomCustomFields', this.bodyParams.customFields); - - return API.v1.success({ - channel: await findChannelByIdOrName({ params: this.bodyParams, userId: this.userId }), - }); - }, - }, -); - -API.v1.addRoute( - 'channels.setDefault', - { authRequired: true }, - { - async post() { - if (typeof this.bodyParams.default === 'undefined') { - return API.v1.failure('The bodyParam "default" is required', 'error-channels-setdefault-is-same'); - } - - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - if (findResult.default === this.bodyParams.default) { - return API.v1.failure( - 'The channel default setting is the same as what it would be changed to.', - 'error-channels-setdefault-missing-default-param', - ); - } - - await saveRoomSettings( - this.userId, - findResult._id, - 'default', - ['true', '1'].includes(this.bodyParams.default.toString().toLowerCase()), - ); - - return API.v1.success({ - channel: await findChannelByIdOrName({ params: this.bodyParams, userId: this.userId }), - }); - }, - }, -); - -API.v1.addRoute( - 'channels.setDescription', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.hasOwnProperty('description')) { - return API.v1.failure('The bodyParam "description" is required'); - } - - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - if (findResult.description === this.bodyParams.description) { - return API.v1.failure('The channel description is the same as what it would be changed to.'); - } - - await saveRoomSettings(this.userId, findResult._id, 'roomDescription', this.bodyParams.description || ''); - - return API.v1.success({ - description: this.bodyParams.description || '', - }); - }, - }, -); - -API.v1.addRoute( - 'channels.setPurpose', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.hasOwnProperty('purpose')) { - return API.v1.failure('The bodyParam "purpose" is required'); - } - - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - if (findResult.description === this.bodyParams.purpose) { - return API.v1.failure('The channel purpose (description) is the same as what it would be changed to.'); - } - - await saveRoomSettings(this.userId, findResult._id, 'roomDescription', this.bodyParams.purpose || ''); - - return API.v1.success({ - purpose: this.bodyParams.purpose || '', - }); - }, - }, -); - -API.v1.addRoute( - 'channels.setTopic', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.hasOwnProperty('topic')) { - return API.v1.failure('The bodyParam "topic" is required'); - } - - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - if (findResult.topic === this.bodyParams.topic) { - return API.v1.failure('The channel topic is the same as what it would be changed to.'); - } - - await saveRoomSettings(this.userId, findResult._id, 'roomTopic', this.bodyParams.topic || ''); - - return API.v1.success({ - topic: this.bodyParams.topic || '', - }); - }, - }, -); - -API.v1.addRoute( - 'channels.setType', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.type?.trim()) { - return API.v1.failure('The bodyParam "type" is required'); - } - - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - if (findResult.t === this.bodyParams.type) { - return API.v1.failure('The channel type is the same as what it would be changed to.'); - } - - await saveRoomSettings(this.userId, findResult._id, 'roomType', this.bodyParams.type as RoomType); - - const room = await Rooms.findOneById(findResult._id, { projection: API.v1.defaultFieldsToExclude }); - - if (!room) { - return API.v1.failure('The channel does not exist'); - } - - return API.v1.success({ - channel: await composeRoomWithLastMessage(room, this.userId), - }); - }, - }, -); - -API.v1.addRoute( - 'channels.addLeader', - { authRequired: true }, - { - async post() { - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - const user = await getUserFromParams(this.bodyParams); - - await addRoomLeader(this.userId, findResult._id, user._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'channels.removeLeader', - { authRequired: true }, - { - async post() { - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - const user = await getUserFromParams(this.bodyParams); - - await removeRoomLeader(this.userId, findResult._id, user._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'channels.setJoinCode', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.joinCode?.trim()) { - return API.v1.failure('The bodyParam "joinCode" is required'); - } - - const findResult = await findChannelByIdOrName({ params: this.bodyParams }); - - await saveRoomSettings(this.userId, findResult._id, 'joinCode', this.bodyParams.joinCode); - - return API.v1.success({ - channel: await findChannelByIdOrName({ params: this.bodyParams, userId: this.userId }), - }); - }, - }, -); - -API.v1.addRoute( - 'channels.anonymousread', - { authOrAnonRequired: true }, - { - async get() { - const findResult = await findChannelByIdOrName({ - params: this.queryParams, - checkedArchived: false, - }); - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - - const ourQuery = Object.assign({}, query, { rid: findResult._id }); - - if (!settings.get('Accounts_AllowAnonymousRead')) { - throw new Meteor.Error('error-not-allowed', 'Enable "Allow Anonymous Read"', { - method: 'channels.anonymousread', - }); - } - - // Public rooms of private teams should be accessible only by team members - if (findResult.teamId) { - const team = await Team.getOneById(findResult.teamId); - if (team?.type === TeamType.PRIVATE) { - if (!this.userId || !(await canAccessRoomAsync(findResult, { _id: this.userId }))) { - return API.v1.notFound('Room not found'); - } - } - } - - const { cursor, totalCount } = await Messages.findPaginated(ourQuery, { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [messages, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - messages: await normalizeMessagesForUser(messages, this.userId || ''), - count: messages.length, - offset, - total, - }); - }, - }, -); diff --git a/apps/meteor/app/api/server/v1/cloud.ts b/apps/meteor/app/api/server/v1/cloud.ts deleted file mode 100644 index 1338192c00ec5..0000000000000 --- a/apps/meteor/app/api/server/v1/cloud.ts +++ /dev/null @@ -1,311 +0,0 @@ -import type { CloudRegistrationIntentData, CloudConfirmationPollData, CloudRegistrationStatus } from '@rocket.chat/core-typings'; -import { - isCloudConfirmationPollProps, - isCloudCreateRegistrationIntentProps, - isCloudManualRegisterProps, - ajv, - validateUnauthorizedErrorResponse, - validateForbiddenErrorResponse, - validateBadRequestErrorResponse, -} from '@rocket.chat/rest-typings'; - -import { CloudWorkspaceRegistrationError } from '../../../../lib/errors/CloudWorkspaceRegistrationError'; -import { SystemLogger } from '../../../../server/lib/logger/system'; -import { getCheckoutUrl } from '../../../cloud/server/functions/getCheckoutUrl'; -import { getConfirmationPoll } from '../../../cloud/server/functions/getConfirmationPoll'; -import { - CloudWorkspaceAccessTokenEmptyError, - CloudWorkspaceAccessTokenError, -} from '../../../cloud/server/functions/getWorkspaceAccessToken'; -import { registerPreIntentWorkspaceWizard } from '../../../cloud/server/functions/registerPreIntentWorkspaceWizard'; -import { removeLicense } from '../../../cloud/server/functions/removeLicense'; -import { retrieveRegistrationStatus } from '../../../cloud/server/functions/retrieveRegistrationStatus'; -import { saveRegistrationData, saveRegistrationDataManual } from '../../../cloud/server/functions/saveRegistrationData'; -import { startRegisterWorkspaceSetupWizard } from '../../../cloud/server/functions/startRegisterWorkspaceSetupWizard'; -import { syncWorkspace } from '../../../cloud/server/functions/syncWorkspace'; -import { API } from '../api'; - -const successResponseSchema = ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [true] } }, - required: ['success'], - additionalProperties: false, -}); - -const manualRegisterResponseSchema = ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [true] } }, - required: ['success'], - additionalProperties: false, -}); - -const createRegistrationIntentResponseSchema = ajv.compile<{ intentData: CloudRegistrationIntentData }>({ - type: 'object', - properties: { - intentData: { $ref: '#/components/schemas/CloudRegistrationIntentData' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['intentData', 'success'], - additionalProperties: false, -}); - -const registerPreIntentResponseSchema = ajv.compile<{ offline: boolean }>({ - type: 'object', - properties: { - offline: { type: 'boolean' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['offline', 'success'], - additionalProperties: false, -}); - -const confirmationPollResponseSchema = ajv.compile<{ pollData: CloudConfirmationPollData }>({ - type: 'object', - properties: { - pollData: { - oneOf: [ - { $ref: '#/components/schemas/CloudConfirmationPollDataPending' }, - { $ref: '#/components/schemas/CloudConfirmationPollDataSuccess' }, - ], - }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['pollData', 'success'], - additionalProperties: false, -}); - -const registrationStatusResponseSchema = ajv.compile<{ registrationStatus: CloudRegistrationStatus }>({ - type: 'object', - properties: { - registrationStatus: { $ref: '#/components/schemas/CloudRegistrationStatus' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['registrationStatus', 'success'], - additionalProperties: false, -}); - -const checkoutUrlResponseSchema = ajv.compile<{ url: string }>({ - type: 'object', - properties: { - url: { type: 'string' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['url', 'success'], - additionalProperties: false, -}); - -API.v1.post( - 'cloud.manualRegister', - { - authRequired: true, - permissionsRequired: ['register-on-cloud'], - body: isCloudManualRegisterProps, - response: { - 200: manualRegisterResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const registrationInfo = await retrieveRegistrationStatus(); - - if (registrationInfo.workspaceRegistered) { - return API.v1.failure('Workspace is already registered'); - } - - const settingsData = JSON.parse(Buffer.from(this.bodyParams.cloudBlob, 'base64').toString()); - - await saveRegistrationDataManual(settingsData); - - return API.v1.success(); - }, -); - -API.v1.post( - 'cloud.createRegistrationIntent', - { - authRequired: true, - permissionsRequired: ['manage-cloud'], - body: isCloudCreateRegistrationIntentProps, - response: { - 200: createRegistrationIntentResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const intentData = await startRegisterWorkspaceSetupWizard(this.bodyParams.resend, this.bodyParams.email); - - if (intentData) { - return API.v1.success({ intentData }); - } - - return API.v1.failure('Invalid query'); - }, -); - -API.v1.post( - 'cloud.registerPreIntent', - { - authRequired: true, - permissionsRequired: ['manage-cloud'], - response: { - 200: registerPreIntentResponseSchema, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - return API.v1.success({ offline: !(await registerPreIntentWorkspaceWizard()) }); - }, -); - -API.v1.get( - 'cloud.confirmationPoll', - { - authRequired: true, - permissionsRequired: ['manage-cloud'], - query: isCloudConfirmationPollProps, - response: { - 200: confirmationPollResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { deviceCode } = this.queryParams; - - const pollData = await getConfirmationPoll(deviceCode); - if (pollData) { - if ('successful' in pollData && pollData.successful) { - await saveRegistrationData(pollData.payload); - } - return API.v1.success({ pollData }); - } - - return API.v1.failure('Invalid query'); - }, -); - -API.v1.get( - 'cloud.registrationStatus', - { - authRequired: true, - permissionsRequired: ['manage-cloud'], - response: { - 200: registrationStatusResponseSchema, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const registrationStatus = await retrieveRegistrationStatus(); - - return API.v1.success({ registrationStatus }); - }, -); - -API.v1.post( - 'cloud.syncWorkspace', - { - authRequired: true, - permissionsRequired: ['manage-cloud'], - rateLimiterOptions: { numRequestsAllowed: 2, intervalTimeInMS: 60000 }, - response: { - 200: successResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - try { - await syncWorkspace(); - - return API.v1.success(); - } catch (error) { - return API.v1.failure('Error during workspace sync'); - } - }, -); - -API.v1.post( - 'cloud.removeLicense', - { - authRequired: true, - permissionsRequired: ['manage-cloud'], - rateLimiterOptions: { numRequestsAllowed: 2, intervalTimeInMS: 60000 }, - response: { - 200: successResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - try { - await removeLicense(); - return API.v1.success(); - } catch (error) { - switch (true) { - case error instanceof CloudWorkspaceRegistrationError: - case error instanceof CloudWorkspaceAccessTokenEmptyError: - case error instanceof CloudWorkspaceAccessTokenError: { - SystemLogger.info({ - msg: 'Manual license removal failed', - endpoint: 'cloud.removeLicense', - error, - }); - break; - } - default: { - SystemLogger.error({ - msg: 'Manual license removal failed', - endpoint: 'cloud.removeLicense', - error, - }); - break; - } - } - return API.v1.failure('License removal failed'); - } - }, -); - -/** - * Declaring endpoint here because we don't want this available to the sdk client - */ -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface Endpoints { - '/v1/cloud.checkoutUrl': { - GET: () => { url: string }; - }; - } -} - -API.v1.get( - 'cloud.checkoutUrl', - { - authRequired: true, - permissionsRequired: ['manage-cloud'], - response: { - 200: checkoutUrlResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const checkoutUrl = await getCheckoutUrl(); - - if (!checkoutUrl.url) { - return API.v1.failure(); - } - - return API.v1.success({ url: checkoutUrl.url }); - }, -); diff --git a/apps/meteor/app/api/server/v1/groups.ts b/apps/meteor/app/api/server/v1/groups.ts deleted file mode 100644 index 9916a44a6323d..0000000000000 --- a/apps/meteor/app/api/server/v1/groups.ts +++ /dev/null @@ -1,1318 +0,0 @@ -import { Team, isMeteorError } from '@rocket.chat/core-services'; -import { - isRoomNativeFederated, - type IIntegration, - type IUser, - type IRoom, - type RoomType, - type UserStatus, -} from '@rocket.chat/core-typings'; -import { Integrations, Messages, Rooms, Subscriptions, Uploads, Users } from '@rocket.chat/models'; -import { isGroupsOnlineProps, isGroupsMessagesProps, isGroupsFilesProps } from '@rocket.chat/rest-typings'; -import { isTruthy } from '@rocket.chat/tools'; -import { check, Match } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; -import type { Filter } from 'mongodb'; - -import { eraseRoom } from '../../../../server/lib/eraseRoom'; -import { findUsersOfRoom } from '../../../../server/lib/findUsersOfRoom'; -import { openRoom } from '../../../../server/lib/openRoom'; -import { addAllUserToRoomFn } from '../../../../server/methods/addAllUserToRoom'; -import { addRoomLeader } from '../../../../server/methods/addRoomLeader'; -import { addRoomModerator } from '../../../../server/methods/addRoomModerator'; -import { addRoomOwner } from '../../../../server/methods/addRoomOwner'; -import { hideRoomMethod } from '../../../../server/methods/hideRoom'; -import { removeRoomLeader } from '../../../../server/methods/removeRoomLeader'; -import { removeRoomModerator } from '../../../../server/methods/removeRoomModerator'; -import { removeRoomOwner } from '../../../../server/methods/removeRoomOwner'; -import { removeUserFromRoomMethod } from '../../../../server/methods/removeUserFromRoom'; -import { canAccessRoomAsync, roomAccessAttributes } from '../../../authorization/server'; -import { hasAllPermissionAsync, hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { saveRoomSettings } from '../../../channel-settings/server/methods/saveRoomSettings'; -import { mountIntegrationQueryBasedOnPermissions } from '../../../integrations/server/lib/mountQueriesBasedOnPermission'; -import { addUsersToRoomMethod } from '../../../lib/server/methods/addUsersToRoom'; -import { executeArchiveRoom } from '../../../lib/server/methods/archiveRoom'; -import { createPrivateGroupMethod } from '../../../lib/server/methods/createPrivateGroup'; -import { getChannelHistory } from '../../../lib/server/methods/getChannelHistory'; -import { executeGetRoomRoles } from '../../../lib/server/methods/getRoomRoles'; -import { leaveRoomMethod } from '../../../lib/server/methods/leaveRoom'; -import { executeUnarchiveRoom } from '../../../lib/server/methods/unarchiveRoom'; -import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser'; -import { API } from '../api'; -import { addUserToFileObj } from '../helpers/addUserToFileObj'; -import { composeRoomWithLastMessage } from '../helpers/composeRoomWithLastMessage'; -import { getPaginationItems } from '../helpers/getPaginationItems'; -import { getUserFromParams, getUserListFromParams, getUsernameListFromParams } from '../helpers/getUserFromParams'; - -async function getRoomFromParams(params: { roomId?: string } | { roomName?: string }): Promise { - if ( - (!('roomId' in params) && !('roomName' in params)) || - ('roomId' in params && !(params as { roomId?: string }).roomId && 'roomName' in params && !(params as { roomName?: string }).roomName) - ) { - throw new Meteor.Error('error-room-param-not-provided', 'The parameter "roomId" or "roomName" is required'); - } - - const roomOptions = { - projection: { - ...roomAccessAttributes, - t: 1, - ro: 1, - name: 1, - fname: 1, - prid: 1, - archived: 1, - broadcast: 1, - }, - }; - - const room = await (() => { - if ('roomId' in params) { - return Rooms.findOneById(params.roomId || '', roomOptions); - } - if ('roomName' in params) { - return Rooms.findOneByName(params.roomName || '', roomOptions); - } - })(); - - if (room?.t !== 'p') { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - return room; -} - -// Returns the private group subscription IF found otherwise it will return the failure of why it didn't. Check the `statusCode` property -async function findPrivateGroupByIdOrName({ - params, - checkedArchived = true, - userId, -}: { - params: - | { - roomId?: string; - } - | { - roomName?: string; - }; - userId: string; - checkedArchived?: boolean; -}): Promise<{ - rid: string; - open: boolean; - ro: boolean; - t: string; - name: string; - broadcast: boolean; -}> { - const room = await getRoomFromParams(params); - - const user = await Users.findOneById(userId, { projections: { username: 1 } }); - - if (!room || !user || !(await canAccessRoomAsync(room, user))) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - // discussions have their names saved on `fname` property - const roomName = room.prid ? room.fname : room.name; - - if (checkedArchived && room.archived) { - throw new Meteor.Error('error-room-archived', `The private group, ${roomName}, is archived`); - } - - const sub = await Subscriptions.findOneByRoomIdAndUserId(room._id, userId, { projection: { open: 1 } }); - - return { - rid: room._id, - open: Boolean(sub?.open), - ro: Boolean(room.ro), - t: room.t, - name: roomName ?? '', - broadcast: Boolean(room.broadcast), - }; -} - -API.v1.addRoute( - 'groups.addAll', - { authRequired: true }, - { - async post() { - const { activeUsersOnly, ...params } = this.bodyParams; - const findResult = await findPrivateGroupByIdOrName({ - params, - userId: this.userId, - }); - - await addAllUserToRoomFn(this.userId, findResult.rid, activeUsersOnly === 'true' || activeUsersOnly === 1); - - const room = await Rooms.findOneById(findResult.rid, { projection: API.v1.defaultFieldsToExclude }); - - if (!room) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - return API.v1.success({ - group: await composeRoomWithLastMessage(room, this.userId), - }); - }, - }, -); - -API.v1.addRoute( - 'groups.addModerator', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - const user = await getUserFromParams(this.bodyParams); - - await addRoomModerator(this.userId, findResult.rid, user._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'groups.addOwner', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - const user = await getUserFromParams(this.bodyParams); - - await addRoomOwner(this.userId, findResult.rid, user._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'groups.addLeader', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - const user = await getUserFromParams(this.bodyParams); - - await addRoomLeader(this.userId, findResult.rid, user._id); - - return API.v1.success(); - }, - }, -); - -// Archives a private group only if it wasn't -API.v1.addRoute( - 'groups.archive', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - await executeArchiveRoom(this.userId, findResult.rid); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'groups.close', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - checkedArchived: false, - }); - - if (!findResult.open) { - return API.v1.failure(`The private group, ${findResult.name}, is already closed to the sender`); - } - - await hideRoomMethod(this.userId, findResult.rid); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'groups.counters', - { authRequired: true }, - { - async get() { - const access = await hasPermissionAsync(this.userId, 'view-room-administration'); - const params = this.queryParams; - let user = this.userId; - let room; - let unreads = null; - let userMentions = null; - let unreadsFrom = null; - let joined = false; - let msgs = null; - let latest = null; - let members = null; - - if (('roomId' in params && !params.roomId) || ('roomName' in params && !params.roomName)) { - throw new Meteor.Error('error-room-param-not-provided', 'The parameter "roomId" or "roomName" is required'); - } - - if ('roomId' in params) { - room = await Rooms.findOneById(params.roomId || ''); - } else if ('roomName' in params) { - room = await Rooms.findOneByName(params.roomName || ''); - } - - if (room?.t !== 'p') { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - if (room.archived) { - throw new Meteor.Error('error-room-archived', `The private group, ${room.name}, is archived`); - } - - if (params.userId) { - if (!access) { - return API.v1.forbidden(); - } - user = params.userId; - } - const subscription = await Subscriptions.findOneByRoomIdAndUserId(room._id, user); - const lm = room.lm ? room.lm : room._updatedAt; - - if (subscription?.open) { - unreads = await Messages.countVisibleByRoomIdBetweenTimestampsInclusive(subscription.rid, subscription.ls || subscription.ts, lm); - unreadsFrom = subscription.ls || subscription.ts; - userMentions = subscription.userMentions; - joined = true; - } - - if (access || joined) { - msgs = room.msgs; - latest = lm; - members = await Users.countActiveUsersInNonDMRoom(room._id); - } - - return API.v1.success({ - joined, - members, - unreads, - unreadsFrom, - msgs, - latest, - userMentions, - }); - }, - }, -); - -// Create Private Group -API.v1.addRoute( - 'groups.create', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.name) { - return API.v1.failure('Body param "name" is required'); - } - - if (this.bodyParams.members && !Array.isArray(this.bodyParams.members)) { - return API.v1.failure('Body param "members" must be an array if provided'); - } - - if (this.bodyParams.customFields && !(typeof this.bodyParams.customFields === 'object')) { - return API.v1.failure('Body param "customFields" must be an object if provided'); - } - if (this.bodyParams.extraData && !(typeof this.bodyParams.extraData === 'object')) { - return API.v1.failure('Body param "extraData" must be an object if provided'); - } - - const readOnly = typeof this.bodyParams.readOnly !== 'undefined' ? this.bodyParams.readOnly : false; - - try { - const result = await createPrivateGroupMethod( - this.user, - this.bodyParams.name, - this.bodyParams.members ? this.bodyParams.members : [], - readOnly, - this.bodyParams.customFields, - this.bodyParams.extraData, - this.bodyParams.excludeSelf ?? false, - ); - - const room = await Rooms.findOneById(result.rid, { projection: API.v1.defaultFieldsToExclude }); - if (!room) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - return API.v1.success({ - group: await composeRoomWithLastMessage(room, this.userId), - }); - } catch (error: unknown) { - if (isMeteorError(error) && error.reason === 'error-not-allowed') { - return API.v1.forbidden(); - } - throw error; - } - }, - }, -); - -API.v1.addRoute( - 'groups.delete', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - checkedArchived: false, - }); - - await eraseRoom(findResult.rid, this.user); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'groups.files', - { authRequired: true, validateParams: isGroupsFilesProps }, - { - async get() { - const { typeGroup, name, roomId, roomName, onlyConfirmed } = this.queryParams; - - const findResult = await findPrivateGroupByIdOrName({ - params: roomId ? { roomId } : { roomName }, - userId: this.userId, - checkedArchived: false, - }); - - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - - const filter = { - ...query, - rid: findResult.rid, - ...(name ? { name: { $regex: name || '', $options: 'i' } } : {}), - ...(typeGroup ? { typeGroup } : {}), - ...(onlyConfirmed && { expiresAt: { $exists: false } }), - }; - - const { cursor, totalCount } = await Uploads.findPaginatedWithoutThumbs(filter, { - sort: sort || { name: 1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [files, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - files: await addUserToFileObj(files), - count: files.length, - offset, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'groups.getIntegrations', - { - authRequired: true, - permissionsRequired: { - GET: { - permissions: [ - 'manage-outgoing-integrations', - 'manage-own-outgoing-integrations', - 'manage-incoming-integrations', - 'manage-own-incoming-integrations', - ], - operation: 'hasAny', - }, - }, - }, - { - async get() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.queryParams, - userId: this.userId, - checkedArchived: false, - }); - - let includeAllPrivateGroups = true; - if (this.queryParams.includeAllPrivateGroups) { - includeAllPrivateGroups = this.queryParams.includeAllPrivateGroups === 'true'; - } - - const channelsToSearch = [`#${findResult.name}`]; - if (includeAllPrivateGroups) { - channelsToSearch.push('all_private_groups'); - } - - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields: projection, query } = await this.parseJsonQuery(); - - const ourQuery = Object.assign(await mountIntegrationQueryBasedOnPermissions(this.userId), query, { - channel: { $in: channelsToSearch }, - }) as Filter; - const { cursor, totalCount } = await Integrations.findPaginated(ourQuery, { - sort: sort || { _createdAt: 1 }, - skip: offset, - limit: count, - projection, - }); - - const [integrations, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - integrations, - count: integrations.length, - offset, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'groups.history', - { authRequired: true }, - { - async get() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.queryParams, - userId: this.userId, - checkedArchived: false, - }); - - let latestDate = new Date(); - if (this.queryParams.latest) { - latestDate = new Date(this.queryParams.latest); - } - - let oldestDate = undefined; - if (this.queryParams.oldest) { - oldestDate = new Date(this.queryParams.oldest); - } - - const inclusive = this.queryParams.inclusive === 'true'; - - let count = 20; - if (this.queryParams.count) { - count = parseInt(String(this.queryParams.count)); - } - - let offset = 0; - if (this.queryParams.offset) { - offset = parseInt(String(this.queryParams.offset)); - } - - const unreads = this.queryParams.unreads === 'true'; - - const showThreadMessages = this.queryParams.showThreadMessages !== 'false'; - - const result = await getChannelHistory({ - rid: findResult.rid, - fromUserId: this.userId, - latest: latestDate, - oldest: oldestDate, - inclusive, - offset, - count, - unreads, - showThreadMessages, - }); - - if (!result) { - return API.v1.forbidden(); - } - - return API.v1.success(result); - }, - }, -); - -API.v1.addRoute( - 'groups.info', - { authRequired: true }, - { - async get() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.queryParams, - userId: this.userId, - checkedArchived: false, - }); - - const room = await Rooms.findOneById(findResult.rid, { projection: API.v1.defaultFieldsToExclude }); - - if (!room) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - return API.v1.success({ - group: await composeRoomWithLastMessage(room, this.userId), - }); - }, - }, -); - -API.v1.addRoute( - 'groups.invite', - { authRequired: true }, - { - async post() { - const roomId = 'roomId' in this.bodyParams ? this.bodyParams.roomId : ''; - const roomName = 'roomName' in this.bodyParams ? this.bodyParams.roomName : ''; - const idOrName = roomId || roomName; - - if (!idOrName?.trim()) { - throw new Meteor.Error('error-room-param-not-provided', 'The parameter "roomId" or "roomName" is required'); - } - - const groupRoom = await Rooms.findOneByIdOrName(idOrName); - const { _id: rid, t: type } = groupRoom || {}; - - if (!rid || type !== 'p') { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - // Federated rooms invite by raw username: the federated user record is created - // lazily inside addUsersToRoomMethod, so we must not require it to exist locally yet. - if (groupRoom && isRoomNativeFederated(groupRoom)) { - const usernames = await getUsernameListFromParams(this.bodyParams); - - await addUsersToRoomMethod(this.userId, { rid, users: usernames }, this.user); - } else { - const users = await getUserListFromParams(this.bodyParams); - - if (!users.length) { - throw new Meteor.Error('error-empty-invite-list', 'Cannot invite if no valid users are provided'); - } - - await addUsersToRoomMethod(this.userId, { rid, users: users.map((u) => u.username).filter(isTruthy) }, this.user); - } - - const room = await Rooms.findOneById(rid, { projection: API.v1.defaultFieldsToExclude }); - - if (!room) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - return API.v1.success({ - group: await composeRoomWithLastMessage(room, this.userId), - }); - }, - }, -); - -API.v1.addRoute( - 'groups.kick', - { authRequired: true }, - { - async post() { - const room = await getRoomFromParams(this.bodyParams); - - const user = await getUserFromParams(this.bodyParams); - if (!user?.username) { - return API.v1.failure('Invalid user'); - } - - await removeUserFromRoomMethod(this.userId, { rid: room._id, username: user.username }); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'groups.leave', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - const user = await Users.findOneById(this.userId); - if (!user) { - return API.v1.failure('Invalid user'); - } - await leaveRoomMethod(user, findResult.rid); - - return API.v1.success(); - }, - }, -); - -// List Private Groups a user has access to -API.v1.addRoute( - 'groups.list', - { authRequired: true }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields } = await this.parseJsonQuery(); - - const subs = await Subscriptions.findByUserIdAndTypes(this.userId, ['p'], { projection: { rid: 1 } }).toArray(); - const rids = subs.map(({ rid }) => rid).filter(Boolean); - - if (rids.length === 0) { - return API.v1.success({ - groups: [], - offset, - count: 0, - total: 0, - }); - } - - const { cursor, totalCount } = await Rooms.findPaginatedByTypeAndIds('p', rids, { - sort: sort || { name: 1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [groups, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - groups: await Promise.all(groups.map((room) => composeRoomWithLastMessage(room, this.userId))), - offset, - count: groups.length, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'groups.listAll', - { authRequired: true, permissionsRequired: ['view-room-administration'] }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - const ourQuery = Object.assign({}, query, { t: 'p' as RoomType }); - - const { cursor, totalCount } = await Rooms.findPaginated(ourQuery, { - sort: sort || { name: 1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [rooms, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - groups: await Promise.all(rooms.map((room) => composeRoomWithLastMessage(room, this.userId))), - offset, - count: rooms.length, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'groups.members', - { authRequired: true }, - { - async get() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.queryParams, - userId: this.userId, - }); - - if (findResult.broadcast && !(await hasPermissionAsync(this.userId, 'view-broadcast-member-list', findResult.rid))) { - return API.v1.forbidden(); - } - - const { offset: skip, count: limit } = await getPaginationItems(this.queryParams); - const { sort = {} } = await this.parseJsonQuery(); - - check( - this.queryParams, - Match.ObjectIncluding({ - status: Match.Maybe([String]), - filter: Match.Maybe(String), - }), - ); - - const { status, filter } = this.queryParams; - - const { cursor, totalCount } = await findUsersOfRoom({ - rid: findResult.rid, - ...(status && { status: { $in: status as UserStatus[] } }), - skip, - limit, - filter, - ...(sort?.username && { sort: { username: sort.username } }), - }); - - const [members, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - members, - count: members.length, - offset: skip, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'groups.messages', - { authRequired: true, validateParams: isGroupsMessagesProps }, - { - async get() { - const { roomId, roomName, mentionIds, starredIds, pinned } = this.queryParams; - - const findResult = await findPrivateGroupByIdOrName({ - params: { - ...(roomId && { roomId }), - ...(roomName && { roomName }), - }, - userId: this.userId, - }); - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - - const parseIds = (ids: string | undefined, field: string) => - typeof ids === 'string' && ids ? { [field]: { $in: ids.split(',').map((id) => id.trim()) } } : {}; - - const ourQuery = { - ...query, - rid: findResult.rid, - ...parseIds(mentionIds, 'mentions._id'), - ...parseIds(starredIds, 'starred._id'), - ...(pinned?.toLowerCase() === 'true' ? { pinned: true } : {}), - _hidden: { $ne: true }, - }; - - const { cursor, totalCount } = Messages.findPaginated(ourQuery, { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [messages, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - messages: await normalizeMessagesForUser(messages, this.userId), - count: messages.length, - offset, - total, - }); - }, - }, -); - -// TODO: CACHE: same as channels.online -API.v1.addRoute( - 'groups.online', - { authRequired: true, validateParams: isGroupsOnlineProps }, - { - async get() { - const { query } = await this.parseJsonQuery(); - const { _id } = this.queryParams; - - if ((!query || Object.keys(query).length === 0) && !_id) { - return API.v1.failure('Invalid query'); - } - - const filter = { - ...query, - ...(_id ? { _id } : {}), - t: 'p', - }; - - const room = await Rooms.findOne(filter as Record); - if (!room) { - return API.v1.failure('Group does not exists'); - } - - if (!(await canAccessRoomAsync(room, this.user))) { - throw new Meteor.Error('error-not-allowed', 'Not Allowed'); - } - - const online: Pick[] = await Users.findUsersNotOffline({ - projection: { - username: 1, - }, - }).toArray(); - - const onlineInRoom = await Promise.all( - online.map(async (user) => { - const subscription = await Subscriptions.findOneByRoomIdAndUserId(room._id, user._id, { - projection: { _id: 1, username: 1 }, - }); - if (subscription) { - return { - _id: user._id, - username: user.username, - }; - } - }), - ); - - return API.v1.success({ - online: onlineInRoom.filter(Boolean) as IUser[], - }); - }, - }, -); - -API.v1.addRoute( - 'groups.open', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - checkedArchived: false, - }); - - if (findResult.open) { - return API.v1.failure(`The private group, ${findResult.name}, is already open for the sender`); - } - - await openRoom(this.userId, findResult.rid); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'groups.removeModerator', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - const user = await getUserFromParams(this.bodyParams); - - await removeRoomModerator(this.userId, findResult.rid, user._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'groups.removeOwner', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - const user = await getUserFromParams(this.bodyParams); - - await removeRoomOwner(this.userId, findResult.rid, user._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'groups.removeLeader', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - const user = await getUserFromParams(this.bodyParams); - - await removeRoomLeader(this.userId, findResult.rid, user._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'groups.rename', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.name?.trim()) { - return API.v1.failure('The bodyParam "name" is required'); - } - - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - await saveRoomSettings(this.userId, findResult.rid, 'roomName', this.bodyParams.name); - - const room = await Rooms.findOneById(findResult.rid, { projection: API.v1.defaultFieldsToExclude }); - - if (!room) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - return API.v1.success({ - group: await composeRoomWithLastMessage(room, this.userId), - }); - }, - }, -); - -API.v1.addRoute( - 'groups.setCustomFields', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.customFields || !(typeof this.bodyParams.customFields === 'object')) { - return API.v1.failure('The bodyParam "customFields" is required with a type like object.'); - } - - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - await saveRoomSettings(this.userId, findResult.rid, 'roomCustomFields', this.bodyParams.customFields); - - const room = await Rooms.findOneById(findResult.rid, { projection: API.v1.defaultFieldsToExclude }); - - if (!room) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - return API.v1.success({ - group: await composeRoomWithLastMessage(room, this.userId), - }); - }, - }, -); - -API.v1.addRoute( - 'groups.setDescription', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.hasOwnProperty('description')) { - return API.v1.failure('The bodyParam "description" is required'); - } - - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - await saveRoomSettings(this.userId, findResult.rid, 'roomDescription', this.bodyParams.description || ''); - - return API.v1.success({ - description: this.bodyParams.description || '', - }); - }, - }, -); - -API.v1.addRoute( - 'groups.setPurpose', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.hasOwnProperty('purpose')) { - return API.v1.failure('The bodyParam "purpose" is required'); - } - - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - await saveRoomSettings(this.userId, findResult.rid, 'roomDescription', this.bodyParams.purpose || ''); - - return API.v1.success({ - purpose: this.bodyParams.purpose || '', - }); - }, - }, -); - -API.v1.addRoute( - 'groups.setReadOnly', - { authRequired: true }, - { - async post() { - if (typeof this.bodyParams.readOnly === 'undefined') { - return API.v1.failure('The bodyParam "readOnly" is required'); - } - - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - if (findResult.ro === this.bodyParams.readOnly) { - return API.v1.failure('The private group read only setting is the same as what it would be changed to.'); - } - - await saveRoomSettings(this.userId, findResult.rid, 'readOnly', this.bodyParams.readOnly); - - const room = await Rooms.findOneById(findResult.rid, { projection: API.v1.defaultFieldsToExclude }); - - if (!room) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - return API.v1.success({ - group: await composeRoomWithLastMessage(room, this.userId), - }); - }, - }, -); - -API.v1.addRoute( - 'groups.setTopic', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.hasOwnProperty('topic')) { - return API.v1.failure('The bodyParam "topic" is required'); - } - - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - await saveRoomSettings(this.userId, findResult.rid, 'roomTopic', this.bodyParams.topic || ''); - - return API.v1.success({ - topic: this.bodyParams.topic || '', - }); - }, - }, -); - -API.v1.addRoute( - 'groups.setType', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.type?.trim()) { - return API.v1.failure('The bodyParam "type" is required'); - } - - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - if (findResult.t === this.bodyParams.type) { - return API.v1.failure('The private group type is the same as what it would be changed to.'); - } - - await saveRoomSettings(this.userId, findResult.rid, 'roomType', this.bodyParams.type as RoomType); - - const room = await Rooms.findOneById(findResult.rid, { projection: API.v1.defaultFieldsToExclude }); - - if (!room) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - return API.v1.success({ - group: await composeRoomWithLastMessage(room, this.userId), - }); - }, - }, -); - -API.v1.addRoute( - 'groups.setAnnouncement', - { authRequired: true }, - { - async post() { - if (!this.bodyParams.hasOwnProperty('announcement')) { - return API.v1.failure('The bodyParam "announcement" is required'); - } - - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - await saveRoomSettings(this.userId, findResult.rid, 'roomAnnouncement', this.bodyParams.announcement || ''); - - return API.v1.success({ - announcement: this.bodyParams.announcement || '', - }); - }, - }, -); - -API.v1.addRoute( - 'groups.unarchive', - { authRequired: true }, - { - async post() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - checkedArchived: false, - }); - - await executeUnarchiveRoom(this.userId, findResult.rid); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'groups.roles', - { authRequired: true }, - { - async get() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.queryParams, - userId: this.userId, - }); - - const roles = await executeGetRoomRoles(findResult.rid, this.user); - - return API.v1.success({ - roles, - }); - }, - }, -); - -API.v1.addRoute( - 'groups.moderators', - { authRequired: true }, - { - async get() { - const findResult = await findPrivateGroupByIdOrName({ - params: this.queryParams, - userId: this.userId, - }); - - const moderators = await Subscriptions.findByRoomIdAndRoles(findResult.rid, ['moderator'], { - projection: { u: 1, _id: 0 }, - }) - .map((sub) => sub.u) - .toArray(); - - return API.v1.success({ - moderators, - }); - }, - }, -); - -API.v1.addRoute( - 'groups.setEncrypted', - { authRequired: true }, - { - async post() { - if (!Match.test(this.bodyParams, Match.ObjectIncluding({ encrypted: Boolean }))) { - return API.v1.failure('The bodyParam "encrypted" is required'); - } - const { encrypted, ...params } = this.bodyParams; - - const findResult = await findPrivateGroupByIdOrName({ - params, - userId: this.userId, - }); - - await saveRoomSettings(this.userId, findResult.rid, 'encrypted', encrypted); - - const room = await Rooms.findOneById(findResult.rid, { projection: API.v1.defaultFieldsToExclude }); - - if (!room) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any group'); - } - - return API.v1.success({ - group: await composeRoomWithLastMessage(room, this.userId), - }); - }, - }, -); - -API.v1.addRoute( - 'groups.convertToTeam', - { authRequired: true }, - { - async post() { - if (('roomId' in this.bodyParams && !this.bodyParams.roomId) || ('roomName' in this.bodyParams && !this.bodyParams.roomName)) { - return API.v1.failure('The parameter "roomId" or "roomName" is required'); - } - - const room = await findPrivateGroupByIdOrName({ - params: this.bodyParams, - userId: this.userId, - }); - - if (!room) { - return API.v1.failure('Private group not found'); - } - - if (!(await hasAllPermissionAsync(this.userId, ['create-team', 'edit-room'], room.rid))) { - return API.v1.forbidden(); - } - - const subscriptions = await Subscriptions.findByRoomId(room.rid, { - projection: { 'u._id': 1 }, - }).toArray(); - - const members = subscriptions.map((s) => s.u?._id); - - const teamData = { - team: { - name: room.name, - type: 1, - }, - members, - room: { - name: room.name, - id: room.rid, - }, - }; - - const team = await Team.create(this.userId, teamData); - - return API.v1.success({ team }); - }, - }, -); diff --git a/apps/meteor/app/api/server/v1/integrations.ts b/apps/meteor/app/api/server/v1/integrations.ts deleted file mode 100644 index 2870fdb8236e8..0000000000000 --- a/apps/meteor/app/api/server/v1/integrations.ts +++ /dev/null @@ -1,365 +0,0 @@ -import type { IIntegration, IIntegrationHistory, INewIncomingIntegration, INewOutgoingIntegration } from '@rocket.chat/core-typings'; -import { Integrations, IntegrationHistory } from '@rocket.chat/models'; -import { - ajv, - isIntegrationsCreateProps, - isIntegrationsHistoryProps, - isIntegrationsRemoveProps, - isIntegrationsGetProps, - isIntegrationsUpdateProps, - isIntegrationsListProps, - validateBadRequestErrorResponse, - validateForbiddenErrorResponse, - validateUnauthorizedErrorResponse, -} from '@rocket.chat/rest-typings'; -import { escapeRegExp } from '@rocket.chat/string-helpers'; -import { Match, check } from 'meteor/check'; -import type { Filter } from 'mongodb'; - -import { - mountIntegrationHistoryQueryBasedOnPermissions, - mountIntegrationQueryBasedOnPermissions, -} from '../../../integrations/server/lib/mountQueriesBasedOnPermission'; -import { addIncomingIntegration } from '../../../integrations/server/methods/incoming/addIncomingIntegration'; -import { deleteIncomingIntegration } from '../../../integrations/server/methods/incoming/deleteIncomingIntegration'; -import { updateIncomingIntegration } from '../../../integrations/server/methods/incoming/updateIncomingIntegration'; -import { addOutgoingIntegration } from '../../../integrations/server/methods/outgoing/addOutgoingIntegration'; -import { deleteOutgoingIntegration } from '../../../integrations/server/methods/outgoing/deleteOutgoingIntegration'; -import { updateOutgoingIntegration } from '../../../integrations/server/methods/outgoing/updateOutgoingIntegration'; -import { API } from '../api'; -import { getPaginationItems } from '../helpers/getPaginationItems'; -import { findOneIntegration } from '../lib/integrations'; - -const integrationSuccessSchema = ajv.compile<{ integration: IIntegration | null }>({ - type: 'object', - properties: { - integration: { oneOf: [{ $ref: '#/components/schemas/IIncomingIntegration' }, { $ref: '#/components/schemas/IOutgoingIntegration' }] }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['integration', 'success'], - additionalProperties: false, -}); - -API.v1.post( - 'integrations.create', - { - authRequired: true, - body: isIntegrationsCreateProps, - response: { - 200: integrationSuccessSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - switch (this.bodyParams.type) { - case 'webhook-outgoing': - return API.v1.success({ - integration: await addOutgoingIntegration(this.userId, this.bodyParams as INewOutgoingIntegration), - }); - case 'webhook-incoming': - return API.v1.success({ - integration: await addIncomingIntegration(this.userId, this.bodyParams as INewIncomingIntegration), - }); - default: - return API.v1.failure('Invalid integration type.'); - } - }, -); - -API.v1.get( - 'integrations.history', - { - authRequired: true, - query: isIntegrationsHistoryProps, - permissionsRequired: { - GET: { permissions: ['manage-outgoing-integrations', 'manage-own-outgoing-integrations'], operation: 'hasAny' }, - }, - response: { - 200: ajv.compile<{ history: IIntegrationHistory[]; offset: number; items: number; count: number; total: number }>({ - type: 'object', - properties: { - history: { type: 'array', items: { $ref: '#/components/schemas/IIntegrationHistory' } }, - offset: { type: 'number' }, - items: { type: 'number' }, - count: { type: 'number' }, - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['history', 'offset', 'items', 'count', 'total', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { userId, queryParams } = this; - - if (!queryParams.id || queryParams.id.trim() === '') { - return API.v1.failure('Invalid integration id.'); - } - - const { id } = queryParams; - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields: projection, query } = await this.parseJsonQuery(); - const ourQuery = Object.assign(await mountIntegrationHistoryQueryBasedOnPermissions(userId, id), query); - - const { cursor, totalCount } = IntegrationHistory.findPaginated(ourQuery, { - sort: sort || { _updatedAt: -1 }, - skip: offset, - limit: count, - projection, - }); - - const [history, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - history, - offset, - items: history.length, - count: history.length, - total, - }); - }, -); - -API.v1.get( - 'integrations.list', - { - authRequired: true, - query: isIntegrationsListProps, - permissionsRequired: { - GET: { - permissions: [ - 'manage-outgoing-integrations', - 'manage-own-outgoing-integrations', - 'manage-incoming-integrations', - 'manage-own-incoming-integrations', - ], - operation: 'hasAny', - }, - }, - response: { - 200: ajv.compile<{ integrations: IIntegration[]; offset: number; items: number; count: number; total: number }>({ - type: 'object', - properties: { - integrations: { - type: 'array', - items: { - oneOf: [{ $ref: '#/components/schemas/IIncomingIntegration' }, { $ref: '#/components/schemas/IOutgoingIntegration' }], - }, - }, - offset: { type: 'number' }, - items: { type: 'number' }, - count: { type: 'number' }, - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['integrations', 'offset', 'items', 'count', 'total', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - const { name, type } = this.queryParams; - - const filter = { - ...query, - ...(name ? { name: { $regex: escapeRegExp(name), $options: 'i' } } : {}), - ...(type ? { type } : {}), - }; - - const ourQuery = Object.assign(await mountIntegrationQueryBasedOnPermissions(this.userId), filter) as Filter; - - const { cursor, totalCount } = Integrations.findPaginated(ourQuery, { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [integrations, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - integrations, - offset, - items: integrations.length, - count: integrations.length, - total, - }); - }, -); - -API.v1.post( - 'integrations.remove', - { - authRequired: true, - body: isIntegrationsRemoveProps, - permissionsRequired: { - POST: { - permissions: [ - 'manage-outgoing-integrations', - 'manage-own-outgoing-integrations', - 'manage-incoming-integrations', - 'manage-own-incoming-integrations', - ], - operation: 'hasAny', - }, - }, - response: { - 200: integrationSuccessSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { bodyParams } = this; - - let integration: IIntegration | null = null; - switch (bodyParams.type) { - case 'webhook-outgoing': - if (!bodyParams.target_url && !bodyParams.integrationId) { - return API.v1.failure('An integrationId or target_url needs to be provided.'); - } - - if (bodyParams.target_url) { - integration = await Integrations.findOne({ urls: bodyParams.target_url }); - } else if (bodyParams.integrationId) { - integration = await Integrations.findOne({ _id: bodyParams.integrationId }); - } - - if (!integration) { - return API.v1.failure('No integration found.'); - } - - const outgoingId = integration._id; - - await deleteOutgoingIntegration(outgoingId, this.userId); - - return API.v1.success({ - integration, - }); - case 'webhook-incoming': - check( - bodyParams, - Match.ObjectIncluding({ - integrationId: String, - }), - ); - - integration = await Integrations.findOne({ _id: bodyParams.integrationId }); - - if (!integration) { - return API.v1.failure('No integration found.'); - } - - const incomingId = integration._id; - await deleteIncomingIntegration(incomingId, this.userId); - - return API.v1.success({ - integration, - }); - default: - return API.v1.failure('Invalid integration type.'); - } - }, -); - -API.v1.get( - 'integrations.get', - { - authRequired: true, - query: isIntegrationsGetProps, - response: { - 200: ajv.compile<{ integration: IIntegration | null }>({ - type: 'object', - properties: { - integration: { - oneOf: [{ $ref: '#/components/schemas/IIncomingIntegration' }, { $ref: '#/components/schemas/IOutgoingIntegration' }], - }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['integration', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { integrationId, createdBy } = this.queryParams; - if (!integrationId) { - return API.v1.failure('The query parameter "integrationId" is required.'); - } - - return API.v1.success({ - integration: await findOneIntegration({ - userId: this.userId, - integrationId, - createdBy, - }), - }); - }, -); - -API.v1.put( - 'integrations.update', - { - authRequired: true, - body: isIntegrationsUpdateProps, - response: { - 200: integrationSuccessSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { bodyParams } = this; - - let integration: IIntegration | null = null; - switch (bodyParams.type) { - case 'webhook-outgoing': - if (bodyParams.target_url) { - integration = await Integrations.findOne({ urls: bodyParams.target_url }); - } else if (bodyParams.integrationId) { - integration = await Integrations.findOne({ _id: bodyParams.integrationId }); - } - - if (!integration) { - return API.v1.failure('No integration found.'); - } - - await updateOutgoingIntegration(this.userId, integration._id, bodyParams as Parameters[2]); - - return API.v1.success({ - integration: await Integrations.findOne({ _id: integration._id }), - }); - case 'webhook-incoming': - integration = await Integrations.findOne({ _id: bodyParams.integrationId }); - - if (!integration) { - return API.v1.failure('No integration found.'); - } - - await updateIncomingIntegration( - this.userId, - integration._id, - bodyParams as unknown as Parameters[2], - ); - - return API.v1.success({ - integration: await Integrations.findOne({ _id: integration._id }), - }); - default: - return API.v1.failure('Invalid integration type.'); - } - }, -); diff --git a/apps/meteor/app/api/server/v1/permissions.ts b/apps/meteor/app/api/server/v1/permissions.ts deleted file mode 100644 index 38c63b1f22a4c..0000000000000 --- a/apps/meteor/app/api/server/v1/permissions.ts +++ /dev/null @@ -1,195 +0,0 @@ -import type { IPermission } from '@rocket.chat/core-typings'; -import { Permissions, Roles } from '@rocket.chat/models'; -import { - ajv, - ajvQuery, - validateUnauthorizedErrorResponse, - validateBadRequestErrorResponse, - validateForbiddenErrorResponse, -} from '@rocket.chat/rest-typings'; -import { Meteor } from 'meteor/meteor'; - -import { permissionsGetMethod } from '../../../authorization/server/streamer/permissions'; -import { notifyOnPermissionChangedById } from '../../../lib/server/lib/notifyListener'; -import type { ExtractRoutesFromAPI } from '../ApiClass'; -import { API } from '../api'; - -type PermissionsListAllProps = { - updatedSince?: string; -}; - -type PermissionsUpdateProps = { - permissions: { _id: string; roles: string[] }[]; -}; - -const permissionListAllSchema = { - type: 'object', - properties: { - updatedSince: { - type: 'string', - nullable: true, - }, - }, - required: [], - additionalProperties: false, -}; - -const permissionUpdatePropsSchema = { - type: 'object', - properties: { - permissions: { - type: 'array', - items: { - type: 'object', - properties: { - _id: { type: 'string' }, - roles: { - type: 'array', - items: { type: 'string' }, - uniqueItems: true, - }, - }, - additionalProperties: false, - required: ['_id', 'roles'], - }, - }, - }, - required: ['permissions'], - additionalProperties: false, -}; - -const isPermissionsListAll = ajvQuery.compile(permissionListAllSchema); - -const isBodyParamsValidPermissionUpdate = ajv.compile(permissionUpdatePropsSchema); - -const permissionsEndpoints = API.v1 - .get( - 'permissions.listAll', - { - authRequired: true, - query: isPermissionsListAll, - response: { - 200: ajv.compile<{ - update: IPermission[]; - remove: IPermission[]; - }>({ - type: 'object', - properties: { - update: { - type: 'array', - items: { $ref: '#/components/schemas/IPermission' }, - }, - remove: { - type: 'array', - items: { $ref: '#/components/schemas/IPermission' }, - }, - success: { - type: 'boolean', - enum: [true], - description: 'Indicates if the request was successful.', - }, - }, - required: ['update', 'remove', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { updatedSince } = this.queryParams; - - let updatedSinceDate: Date | undefined; - if (updatedSince) { - if (isNaN(Date.parse(updatedSince))) { - throw new Meteor.Error('error-roomId-param-invalid', 'The "updatedSince" query parameter must be a valid date.'); - } - updatedSinceDate = new Date(updatedSince); - } - - const result = (await permissionsGetMethod(updatedSinceDate)) as { - update: IPermission[]; - remove: IPermission[]; - }; - - if (Array.isArray(result)) { - return API.v1.success({ - update: result, - remove: [], - }); - } - - return API.v1.success(result); - }, - ) - .post( - 'permissions.update', - { - authRequired: true, - permissionsRequired: ['access-permissions'], - body: isBodyParamsValidPermissionUpdate, - response: { - 200: ajv.compile<{ - permissions: IPermission[]; - }>({ - type: 'object', - properties: { - permissions: { - type: 'array', - items: { $ref: '#/components/schemas/IPermission' }, - }, - success: { - type: 'boolean', - enum: [true], - description: 'Indicates if the request was successful.', - }, - }, - required: ['permissions', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { bodyParams } = this; - - if (!isBodyParamsValidPermissionUpdate(bodyParams)) { - return API.v1.failure('Invalid body params', 'error-invalid-body-params'); - } - - const permissionKeys = bodyParams.permissions.map(({ _id }) => _id); - const permissions = await Permissions.find({ _id: { $in: permissionKeys } }).toArray(); - - if (permissions.length !== bodyParams.permissions.length) { - return API.v1.failure('Invalid permission', 'error-invalid-permission'); - } - - const roleKeys = [...new Set(bodyParams.permissions.flatMap((p) => p.roles))]; - - const roles = await Roles.find({ _id: { $in: roleKeys } }).toArray(); - - if (roles.length !== roleKeys.length) { - return API.v1.failure('Invalid role', 'error-invalid-role'); - } - - for (const permission of bodyParams.permissions) { - await Permissions.setRoles(permission._id, permission.roles); - void notifyOnPermissionChangedById(permission._id); - } - - const result = (await permissionsGetMethod()) as IPermission[]; - - return API.v1.success({ - permissions: result, - }); - }, - ); - -export type PermissionsEndpoints = ExtractRoutesFromAPI; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends PermissionsEndpoints {} -} diff --git a/apps/meteor/app/api/server/v1/push.ts b/apps/meteor/app/api/server/v1/push.ts deleted file mode 100644 index e16dc9bb37de4..0000000000000 --- a/apps/meteor/app/api/server/v1/push.ts +++ /dev/null @@ -1,398 +0,0 @@ -import { Push } from '@rocket.chat/core-services'; -import { pushTokenTypes } from '@rocket.chat/core-typings'; -import type { IMessage, IPushNotificationConfig, IPushToken, IPushTokenTypes } from '@rocket.chat/core-typings'; -import { Messages, PushToken, Users, Rooms, Settings } from '@rocket.chat/models'; -import { - ajv, - isPushGetProps, - validateNotFoundErrorResponse, - validateBadRequestErrorResponse, - validateUnauthorizedErrorResponse, - validateForbiddenErrorResponse, -} from '@rocket.chat/rest-typings'; -import type { JSONSchemaType } from 'ajv'; -import { Accounts } from 'meteor/accounts-base'; -import { Meteor } from 'meteor/meteor'; - -import { executePushTest } from '../../../../server/lib/pushConfig'; -import { canAccessRoomAsync } from '../../../authorization/server/functions/canAccessRoom'; -import PushNotification from '../../../push-notifications/server/lib/PushNotification'; -import { settings } from '../../../settings/server'; -import type { ExtractRoutesFromAPI } from '../ApiClass'; -import { API } from '../api'; -import type { SuccessResult } from '../definition'; - -type PushTokenPOST = { - id?: string; - type: IPushTokenTypes; - value: string; - appName: string; - voipToken?: string; -}; - -const PushTokenPOSTSchema: JSONSchemaType = { - type: 'object', - properties: { - id: { - type: 'string', - nullable: true, - }, - type: { - type: 'string', - enum: pushTokenTypes, - }, - value: { - type: 'string', - minLength: 1, - }, - appName: { - type: 'string', - minLength: 1, - }, - voipToken: { - type: 'string', - nullable: true, - }, - }, - required: ['type', 'value', 'appName'], - additionalProperties: false, -}; - -export const isPushTokenPOSTProps = ajv.compile(PushTokenPOSTSchema); - -type PushTokenDELETE = { - token: string; -}; - -const PushTokenDELETESchema: JSONSchemaType = { - type: 'object', - properties: { - token: { - type: 'string', - minLength: 1, - }, - }, - required: ['token'], - additionalProperties: false, -}; - -export const isPushTokenDELETEProps = ajv.compile(PushTokenDELETESchema); - -type PushTokenResult = Pick; - -/** - * Pick only the attributes we actually want to return on the endpoint, ensuring nothing from older schemas get mixed in - */ -function cleanTokenResult(result: Omit): PushTokenResult { - const { _id, token, appName, userId, enabled, createdAt, _updatedAt, voipToken } = result; - - return { - _id, - token, - appName, - userId, - enabled, - createdAt, - _updatedAt, - voipToken, - }; -} - -const pushTokenEndpoints = API.v1 - .post( - 'push.token', - { - response: { - 200: ajv.compile['body']>({ - additionalProperties: false, - type: 'object', - properties: { - success: { - type: 'boolean', - description: 'Indicates if the request was successful.', - }, - result: { - type: 'object', - description: 'The updated token data for this device', - properties: { - _id: { - type: 'string', - }, - token: { - type: 'object', - properties: { - apn: { - type: 'string', - }, - gcm: { - type: 'string', - }, - }, - required: [], - additionalProperties: false, - }, - appName: { - type: 'string', - }, - userId: { - type: 'string', - nullable: true, - }, - enabled: { - type: 'boolean', - }, - createdAt: { - type: 'string', - }, - _updatedAt: { - type: 'string', - }, - voipToken: { - type: 'string', - nullable: true, - }, - }, - additionalProperties: false, - }, - }, - required: ['success', 'result'], - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - body: isPushTokenPOSTProps, - authRequired: true, - }, - async function action() { - const { id, type, value, appName, voipToken } = this.bodyParams; - - if (voipToken && !id) { - return API.v1.failure('voip-tokens-must-specify-device-id'); - } - - const rawToken = this.request.headers.get('x-auth-token'); - if (!rawToken) { - throw new Meteor.Error('error-authToken-param-not-valid', 'The required "authToken" header param is missing or invalid.'); - } - const authToken = Accounts._hashLoginToken(rawToken); - - const result = await Push.registerPushToken({ - ...(id && { _id: id }), - token: { [type]: value } as IPushToken['token'], - authToken, - appName, - userId: this.userId, - ...(voipToken && { voipToken }), - }); - - return API.v1.success({ result: cleanTokenResult(result) }); - }, - ) - .delete( - 'push.token', - { - response: { - 200: ajv.compile({ - additionalProperties: false, - type: 'object', - properties: { - success: { - type: 'boolean', - }, - }, - required: ['success'], - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - 404: validateNotFoundErrorResponse, - }, - body: isPushTokenDELETEProps, - authRequired: true, - }, - async function action() { - const { token } = this.bodyParams; - - const removeResult = await PushToken.removeAllByTokenStringAndUserId(token, this.userId); - - if (removeResult.deletedCount === 0) { - return API.v1.notFound(); - } - - return API.v1.success(); - }, - ); - -const pushGetResponseSchema = ajv.compile<{ - data: { message: IMessage; notification: IPushNotificationConfig }; -}>({ - type: 'object', - properties: { - data: { - type: 'object', - properties: { - message: { type: 'object' }, - notification: { - type: 'object', - properties: { - from: { type: 'string' }, - title: { type: 'string' }, - text: { type: 'string' }, - userId: { type: 'string' }, - badge: { type: 'number', nullable: true }, - sound: { type: 'string', nullable: true }, - priority: { type: 'number', nullable: true }, - payload: { type: 'object', nullable: true }, - notId: { type: 'number', nullable: true }, - gcm: { - type: 'object', - properties: { - style: { type: 'string' }, - image: { type: 'string' }, - }, - required: ['style', 'image'], - nullable: true, - }, - apn: { - type: 'object', - properties: { - category: { type: 'string' }, - topicSuffix: { type: 'string', nullable: true }, - }, - required: ['category'], - nullable: true, - }, - }, - required: ['from', 'title', 'text', 'userId'], - }, - }, - required: ['message', 'notification'], - }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['data', 'success'], - additionalProperties: false, -}); - -const pushInfoResponseSchema = ajv.compile<{ pushGatewayEnabled: boolean; defaultPushGateway: boolean }>({ - type: 'object', - properties: { - pushGatewayEnabled: { type: 'boolean' }, - defaultPushGateway: { type: 'boolean' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['pushGatewayEnabled', 'defaultPushGateway', 'success'], - additionalProperties: false, -}); - -const pushGetInfoEndpoints = API.v1 - .get( - 'push.get', - { - authRequired: true, - query: isPushGetProps, - response: { - 200: pushGetResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { id } = this.queryParams; - - const receiver = await Users.findOneById(this.userId); - if (!receiver) { - throw new Error('error-user-not-found'); - } - - const message = await Messages.findOneById(id); - if (!message) { - throw new Error('error-message-not-found'); - } - - const room = await Rooms.findOneById(message.rid); - if (!room) { - throw new Error('error-room-not-found'); - } - - if (!(await canAccessRoomAsync(room, receiver))) { - throw new Error('error-not-allowed'); - } - - const data = await PushNotification.getNotificationForMessageId({ receiver, room, message }); - - return API.v1.success({ data }); - }, - ) - .get( - 'push.info', - { - authRequired: true, - response: { - 200: pushInfoResponseSchema, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const defaultGateway = (await Settings.findOneById('Push_gateway', { projection: { packageValue: 1 } }))?.packageValue; - const defaultPushGateway = settings.get('Push_gateway') === defaultGateway; - return API.v1.success({ - pushGatewayEnabled: Boolean(settings.get('Push_enable')), - defaultPushGateway, - }); - }, - ); - -const pushTestEndpoints = API.v1.post( - 'push.test', - { - authRequired: true, - rateLimiterOptions: { - numRequestsAllowed: 1, - intervalTimeInMS: 1000, - }, - permissionsRequired: ['test-push-notifications'], - body: ajv.compile({ type: 'object', additionalProperties: false }), - response: { - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 200: ajv.compile<{ tokensCount: number }>({ - type: 'object', - properties: { - tokensCount: { type: 'integer' }, - success: { - type: 'boolean', - enum: [true], - }, - }, - required: ['tokensCount', 'success'], - additionalProperties: false, - }), - }, - }, - - async function action() { - if (settings.get('Push_enable') !== true) { - throw new Meteor.Error('error-push-disabled', 'Push is disabled', { - method: 'push_test', - }); - } - - const tokensCount = await executePushTest(this.userId, this.user.username); - return API.v1.success({ tokensCount }); - }, -); - -type PushTestEndpoints = ExtractRoutesFromAPI; - -type PushTokenEndpoints = ExtractRoutesFromAPI; - -type PushGetInfoEndpoints = ExtractRoutesFromAPI; - -type PushEndpoints = PushTestEndpoints & PushTokenEndpoints & PushGetInfoEndpoints; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends PushEndpoints {} -} diff --git a/apps/meteor/app/api/server/v1/roles.ts b/apps/meteor/app/api/server/v1/roles.ts deleted file mode 100644 index e809baa3d7a19..0000000000000 --- a/apps/meteor/app/api/server/v1/roles.ts +++ /dev/null @@ -1,370 +0,0 @@ -import { api, Authorization } from '@rocket.chat/core-services'; -import type { IRole, IUserInRole } from '@rocket.chat/core-typings'; -import { Roles, Users } from '@rocket.chat/models'; -import { - ajv, - ajvQuery, - isRoleAddUserToRoleProps, - isRoleDeleteProps, - isRoleRemoveUserFromRoleProps, - isRolesGetUsersInRoleProps, - validateBadRequestErrorResponse, - validateForbiddenErrorResponse, - validateUnauthorizedErrorResponse, -} from '@rocket.chat/rest-typings'; -import { Meteor } from 'meteor/meteor'; - -import { removeUserFromRolesAsync } from '../../../../server/lib/roles/removeUserFromRoles'; -import { getUsersInRolePaginated } from '../../../authorization/server/functions/getUsersInRole'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { hasRoleAsync, hasAnyRoleAsync } from '../../../authorization/server/functions/hasRole'; -import { addUserToRole } from '../../../authorization/server/methods/addUserToRole'; -import { notifyOnRoleChanged } from '../../../lib/server/lib/notifyListener'; -import { settings } from '../../../settings/server/index'; -import type { ExtractRoutesFromAPI } from '../ApiClass'; -import { API } from '../api'; -import { getPaginationItems } from '../helpers/getPaginationItems'; -import { getUserFromParams } from '../helpers/getUserFromParams'; - -const rolesSyncQuerySchema = ajvQuery.compile<{ updatedSince?: string }>({ - type: 'object', - properties: { updatedSince: { type: 'string' } }, - additionalProperties: false, -}); - -const rolesRoutes = API.v1 - .get( - 'roles.list', - { - authRequired: true, - response: { - 200: ajv.compile<{ roles: Omit[] }>({ - type: 'object', - properties: { - roles: { - type: 'array', - items: { - type: 'object', - properties: { - _id: { type: 'string' }, - description: { type: 'string' }, - mandatory2fa: { type: 'boolean' }, - name: { type: 'string' }, - protected: { type: 'boolean' }, - scope: { type: 'string', enum: ['Users', 'Subscriptions'] }, - }, - required: ['_id', 'description', 'name', 'protected', 'scope'], - }, - }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['roles', 'success'], - additionalProperties: false, - }), - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const roles = await Roles.find({}, { projection: { _updatedAt: 0 } }).toArray(); - - return API.v1.success({ roles }); - }, - ) - .get( - 'roles.sync', - { - authRequired: true, - query: rolesSyncQuerySchema, - response: { - 200: ajv.compile<{ roles: { update: IRole[]; remove: IRole[] } }>({ - type: 'object', - properties: { - roles: { - type: 'object', - properties: { - update: { type: 'array', items: { $ref: '#/components/schemas/IRole' } }, - remove: { type: 'array', items: { $ref: '#/components/schemas/IRole' } }, - }, - required: ['update', 'remove'], - }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['roles', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { updatedSince } = this.queryParams; - - if (updatedSince && Number.isNaN(Date.parse(updatedSince))) { - throw new Meteor.Error('error-invalid-param', 'updatedSince must be a valid date string'); - } - - return API.v1.success({ - roles: { - update: await Roles.findByUpdatedDate(new Date(updatedSince || 0)).toArray(), - remove: await Roles.trashFindDeletedAfter(new Date(updatedSince || 0)).toArray(), - }, - }); - }, - ) - .post( - 'roles.addUserToRole', - { - authRequired: true, - body: isRoleAddUserToRoleProps, - response: { - 200: ajv.compile<{ role: IRole }>({ - type: 'object', - properties: { role: { $ref: '#/components/schemas/IRole' }, success: { type: 'boolean', enum: [true] } }, - required: ['role', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const user = await getUserFromParams(this.bodyParams); - const { roleId, roomId } = this.bodyParams; - - if (!roleId) { - return API.v1.failure('error-invalid-role-properties'); - } - - const role = await Roles.findOneById(roleId); - if (!role) { - return API.v1.failure('error-role-not-found', 'Role not found'); - } - - if (await hasRoleAsync(user._id, role._id, roomId)) { - throw new Meteor.Error('error-user-already-in-role', 'User already in role'); - } - - await addUserToRole(this.userId, role._id, user.username, roomId); - - return API.v1.success({ - role, - }); - }, - ) - .get( - 'roles.getUsersInRole', - { - authRequired: true, - permissionsRequired: ['access-permissions'], - query: isRolesGetUsersInRoleProps, - response: { - 200: ajv.compile<{ users: IUserInRole[]; total: number }>({ - type: 'object', - properties: { - users: { type: 'array', items: { type: 'object' } }, - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['users', 'total', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { roomId, role } = this.queryParams; - const { offset, count = 50 } = await getPaginationItems(this.queryParams); - - const projection = { - name: 1, - username: 1, - emails: 1, - avatarETag: 1, - createdAt: 1, - _updatedAt: 1, - }; - - if (!role) { - throw new Meteor.Error('error-param-not-provided', 'Query param "role" is required'); - } - if (roomId && !(await hasPermissionAsync(this.userId, 'view-other-user-channels'))) { - throw new Meteor.Error('error-not-allowed', 'Not allowed'); - } - - const options = { projection: { _id: 1 } }; - const roleData = await Roles.findOneById>(role, options); - - if (!roleData) { - throw new Meteor.Error('error-invalid-roleId'); - } - - const { cursor, totalCount } = await getUsersInRolePaginated(roleData._id, roomId, { - limit: count, - sort: { username: 1 }, - skip: offset, - projection, - }); - - const [users, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ users, total }); - }, - ) - .post( - 'roles.delete', - { - authRequired: true, - permissionsRequired: ['access-permissions'], - body: isRoleDeleteProps, - response: { - 200: ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [true] } }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { bodyParams } = this; - - const role = await Roles.findOneByIdOrName(bodyParams.roleId); - - if (!role) { - throw new Meteor.Error('error-invalid-roleId', 'This role does not exist'); - } - - if (role.protected) { - throw new Meteor.Error('error-role-protected', 'Cannot delete a protected role'); - } - - if ((await Roles.countUsersInRole(role._id)) > 0) { - throw new Meteor.Error('error-role-in-use', "Cannot delete role because it's in use"); - } - - await Roles.removeById(role._id); - - void notifyOnRoleChanged(role, 'removed'); - - return API.v1.success(); - }, - ) - .post( - 'roles.removeUserFromRole', - { - authRequired: true, - permissionsRequired: ['access-permissions'], - body: isRoleRemoveUserFromRoleProps, - response: { - 200: ajv.compile<{ role: IRole }>({ - type: 'object', - properties: { role: { $ref: '#/components/schemas/IRole' }, success: { type: 'boolean', enum: [true] } }, - required: ['role', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { bodyParams } = this; - - const { roleId, username, scope } = bodyParams; - - if (!roleId) { - return API.v1.failure('error-invalid-role-properties'); - } - - const user = await Users.findOneByUsername(username); - - if (!user) { - throw new Meteor.Error('error-invalid-user', 'There is no user with this username'); - } - - const role = await Roles.findOneById(roleId); - - if (!role) { - throw new Meteor.Error('error-invalid-roleId', 'This role does not exist'); - } - - if (!(await hasAnyRoleAsync(user._id, [role._id], scope))) { - throw new Meteor.Error('error-user-not-in-role', 'User is not in this role'); - } - - if (role._id === 'admin') { - const adminCount = await Roles.countUsersInRole('admin'); - if (adminCount === 1) { - throw new Meteor.Error('error-admin-required', 'You need to have at least one admin'); - } - } - - await removeUserFromRolesAsync(user._id, [role._id], scope); - - if (settings.get('UI_DisplayRoles')) { - void api.broadcast('user.roleUpdate', { - type: 'removed', - _id: role._id, - u: { - _id: user._id, - username: user.username, - }, - scope, - }); - } - - return API.v1.success({ - role, - }); - }, - ) - .get( - 'roles.getUsersInPublicRoles', - { - authRequired: true, - response: { - 200: ajv.compile<{ - users: { - _id: string; - username: string; - roles: string[]; - }[]; - }>({ - type: 'object', - properties: { - users: { - type: 'array', - items: { - type: 'object', - properties: { - _id: { type: 'string' }, - username: { type: 'string' }, - roles: { type: 'array', items: { type: 'string' } }, - }, - }, - }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['users', 'success'], - additionalProperties: false, - }), - }, - }, - async () => { - return API.v1.success({ - users: await Authorization.getUsersFromPublicRoles(), - }); - }, - ); - -type RolesEndpoints = ExtractRoutesFromAPI; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends RolesEndpoints {} -} diff --git a/apps/meteor/app/api/server/v1/rooms.ts b/apps/meteor/app/api/server/v1/rooms.ts deleted file mode 100644 index 1cf83d741bdb2..0000000000000 --- a/apps/meteor/app/api/server/v1/rooms.ts +++ /dev/null @@ -1,1735 +0,0 @@ -import { FederationMatrix, MeteorError, Room, Team } from '@rocket.chat/core-services'; -import { - type IRoom, - type IRoomAbacRedaction, - type IUpload, - type RequiredField, - type RoomAdminFieldsType, - isPrivateRoom, - isPublicRoom, - type IUser, -} from '@rocket.chat/core-typings'; -import { Messages, Rooms, Users, Uploads, Subscriptions } from '@rocket.chat/models'; -import type { Notifications } from '@rocket.chat/rest-typings'; -import { - ajv, - ajvQuery, - isGETRoomsNameExists, - isRoomsImagesProps, - isRoomsMuteUnmuteUserProps, - isRoomsBanUserProps, - isRoomsUnbanUserProps, - isRoomsBannedUsersProps, - isRoomsExportProps, - isRoomsIsMemberProps, - isRoomsCleanHistoryProps, - isRoomsOpenProps, - isRoomsJoinProps, - isRoomsMembersOrderedByRoleProps, - isRoomsChangeArchivationStateProps, - isRoomsHideProps, - isRoomsInviteProps, - isRoomsCreateDiscussionProps, - isRoomsAdminRoomsProps, - isRoomsAutocompleteAdminRoomsPayload, - isRoomsAdminRoomsGetRoomProps, - isRoomsAutoCompleteChannelAndPrivateProps, - isRoomsAutocompleteChannelAndPrivateWithPaginationProps, - isRoomsAutocompleteAvailableForTeamsProps, - isRoomsSaveRoomSettingsProps, - validateBadRequestErrorResponse, - validateUnauthorizedErrorResponse, - validateForbiddenErrorResponse, - validateNotFoundErrorResponse, -} from '@rocket.chat/rest-typings'; -import { isTruthy } from '@rocket.chat/tools'; -import { Meteor } from 'meteor/meteor'; - -import { adminFields } from '../../../../lib/rooms/adminFields'; -import { omit } from '../../../../lib/utils/omit'; -import { banUserFromRoomMethod } from '../../../../server/lib/banUserFromRoom'; -import * as dataExport from '../../../../server/lib/dataExport'; -import { eraseRoom } from '../../../../server/lib/eraseRoom'; -import { findUsersOfRoomOrderedByRole } from '../../../../server/lib/findUsersOfRoomOrderedByRole'; -import { openRoom } from '../../../../server/lib/openRoom'; -import type { RoomRoles } from '../../../../server/lib/roles/getRoomRoles'; -import { unbanUserFromRoom } from '../../../../server/lib/unbanUserFromRoom'; -import { hideRoomMethod } from '../../../../server/methods/hideRoom'; -import { muteUserInRoom } from '../../../../server/methods/muteUserInRoom'; -import { toggleFavoriteMethod } from '../../../../server/methods/toggleFavorite'; -import { unmuteUserInRoom } from '../../../../server/methods/unmuteUserInRoom'; -import { roomsGetMethod } from '../../../../server/publications/room'; -import { canAccessRoomAsync, canAccessRoomIdAsync } from '../../../authorization/server/functions/canAccessRoom'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { stripABACManagedFieldsForAdmin } from '../../../authorization/server/lib/isABACManagedRoom'; -import { saveRoomSettings } from '../../../channel-settings/server/methods/saveRoomSettings'; -import { createDiscussion } from '../../../discussion/server/methods/createDiscussion'; -import { FileUpload } from '../../../file-upload/server'; -import { sendFileMessage } from '../../../file-upload/server/methods/sendFileMessage'; -import { syncRolePrioritiesForRoomIfRequired } from '../../../lib/server/functions/syncRolePrioritiesForRoomIfRequired'; -import { notifyOnSubscriptionChanged } from '../../../lib/server/lib/notifyListener'; -import { executeArchiveRoom } from '../../../lib/server/methods/archiveRoom'; -import { cleanRoomHistoryMethod } from '../../../lib/server/methods/cleanRoomHistory'; -import { executeGetRoomRoles } from '../../../lib/server/methods/getRoomRoles'; -import { leaveRoomMethod } from '../../../lib/server/methods/leaveRoom'; -import { executeUnarchiveRoom } from '../../../lib/server/methods/unarchiveRoom'; -import { applyAirGappedRestrictionsValidation } from '../../../license/server/airGappedRestrictionsWrapper'; -import type { NotificationFieldType } from '../../../push-notifications/server/methods/saveNotificationSettings'; -import { saveNotificationSettingsMethod } from '../../../push-notifications/server/methods/saveNotificationSettings'; -import { settings } from '../../../settings/server'; -import type { ExtractRoutesFromAPI } from '../ApiClass'; -import { API } from '../api'; -import { composeRoomWithLastMessage } from '../helpers/composeRoomWithLastMessage'; -import { getPaginationItems } from '../helpers/getPaginationItems'; -import { getUserFromParams } from '../helpers/getUserFromParams'; -import { MultipartUploadHandler } from '../lib/MultipartUploadHandler'; -import { - findAdminRoom, - findAdminRooms, - findAdminRoomsAutocomplete, - findChannelAndPrivateAutocomplete, - findChannelAndPrivateAutocompleteWithPagination, - findRoomsAvailableForTeams, -} from '../lib/rooms'; -import { scopeAdminRoomsForAbac } from '../lib/scopeAdminRoomsForAbac'; - -export async function findRoomByIdOrName({ - params, - checkedArchived = true, -}: { - params: - | { - roomId?: string; - } - | { - roomName?: string; - }; - checkedArchived?: boolean; -}): Promise { - if ( - (!('roomId' in params) && !('roomName' in params)) || - ('roomId' in params && !(params as { roomId?: string }).roomId && 'roomName' in params && !(params as { roomName?: string }).roomName) - ) { - throw new Meteor.Error('error-roomid-param-not-provided', 'The parameter "roomId" or "roomName" is required'); - } - - const projection = { ...API.v1.defaultFieldsToExclude }; - - let room; - if ('roomId' in params) { - room = await Rooms.findOneById(params.roomId || '', { projection }); - } else if ('roomName' in params) { - room = await Rooms.findOneByName(params.roomName || '', { projection }); - } - - if (!room) { - throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any channel'); - } - if (checkedArchived && room.archived) { - throw new Meteor.Error('error-room-archived', `The channel, ${room.name}, is archived`); - } - - return room; -} - -API.v1.get( - 'rooms.nameExists', - { - authRequired: true, - query: isGETRoomsNameExists, - response: { - 200: ajv.compile<{ exists: boolean }>({ - type: 'object', - properties: { - exists: { type: 'boolean' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['exists', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { roomName } = this.queryParams; - - const room = await Rooms.findOneByName(roomName, { projection: { _id: 1 } }); - - return API.v1.success({ exists: !!room }); - }, -); - -const roomDeleteEndpoint = API.v1.post( - 'rooms.delete', - { - authRequired: true, - body: ajv.compile<{ roomId: string }>({ - type: 'object', - properties: { - roomId: { - type: 'string', - description: 'The ID of the room to delete.', - }, - }, - required: ['roomId'], - additionalProperties: false, - }), - response: { - 200: ajv.compile({ - type: 'object', - properties: { - success: { - type: 'boolean', - enum: [true], - description: 'Indicates if the request was successful.', - }, - }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { roomId } = this.bodyParams; - - const room = await Rooms.findOneById(roomId); - - if (!room) { - throw new MeteorError('error-invalid-room', 'Invalid room', { - method: 'eraseRoom', - }); - } - - if (room.teamMain) { - throw new Meteor.Error('error-cannot-delete-team-channel', 'Cannot delete a team channel', { - method: 'eraseRoom', - }); - } - - await eraseRoom(room, this.user); - - return API.v1.success(); - }, -); - -API.v1.get( - 'rooms.get', - { - authRequired: true, - response: { - 200: ajv.compile<{ update: IRoom[]; remove: IRoom[] }>({ - type: 'object', - properties: { - update: { type: 'array', items: { type: 'object' } }, // relaxed: IRoom composed with lastMessage - remove: { type: 'array', items: { type: 'object' } }, // relaxed: IRoom composed with lastMessage - success: { type: 'boolean', enum: [true] }, - }, - required: ['update', 'remove', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { updatedSince } = this.queryParams; - - let updatedSinceDate; - if (updatedSince) { - if (isNaN(Date.parse(updatedSince))) { - throw new Meteor.Error('error-updatedSince-param-invalid', 'The "updatedSince" query parameter must be a valid date.'); - } else { - updatedSinceDate = new Date(updatedSince); - } - } - - let result = await roomsGetMethod(this.userId, updatedSinceDate); - - if (Array.isArray(result)) { - result = { - update: result, - remove: [], - }; - } - - return API.v1.success({ - update: await Promise.all(result.update.map((room) => composeRoomWithLastMessage(room, this.userId))), - remove: await Promise.all(result.remove.map((room) => composeRoomWithLastMessage(room, this.userId))), - }); - }, -); - -API.v1.addRoute( - 'rooms.media/:rid', - { authRequired: true }, - { - async post() { - if (!(await canAccessRoomIdAsync(this.urlParams.rid, this.userId))) { - return API.v1.forbidden(); - } - - const { file, fields } = await MultipartUploadHandler.parseRequest(this.incoming, { - field: 'file', - maxSize: settings.get('FileUpload_MaxFileSize'), - }); - - if (!file) { - throw new Meteor.Error('error-no-file-uploaded', 'No file was uploaded'); - } - - const expiresAt = new Date(); - expiresAt.setHours(expiresAt.getHours() + 24); - - let content; - - if (fields.content) { - try { - content = JSON.parse(fields.content); - } catch (e) { - console.error(e); - throw new Meteor.Error('invalid-field-content'); - } - } - - const details = { - name: file.filename, - size: file.size, - type: file.mimetype, - rid: this.urlParams.rid, - userId: this.userId, - content, - expiresAt, - }; - - // TODO: In the future, we should isolate file receival from storage and post-processing. - const fileStore = FileUpload.getStore('Uploads'); - const uploadedFile = await fileStore.insert(details, file.tempFilePath); - - uploadedFile.path = FileUpload.getPath(`${uploadedFile._id}/${encodeURI(uploadedFile.name || '')}`); - - await Uploads.updateFileComplete(uploadedFile._id, this.userId, omit(uploadedFile, '_id')); - - return API.v1.success({ - file: { - _id: uploadedFile._id, - url: uploadedFile.path, - }, - }); - }, - }, -); - -API.v1.addRoute( - 'rooms.mediaConfirm/:rid/:fileId', - { authRequired: true }, - { - async post() { - if (!(await canAccessRoomIdAsync(this.urlParams.rid, this.userId))) { - return API.v1.forbidden(); - } - - const file = await Uploads.findOneByIdAndUserIdAndRoomId(this.urlParams.fileId, this.userId, this.urlParams.rid); - - if (!file) { - throw new Meteor.Error('invalid-file'); - } - - if ((this.bodyParams.description?.length ?? 0) > settings.get('Message_MaxAllowedSize')) { - throw new Meteor.Error('error-message-size-exceeded'); - } - - file.description = this.bodyParams.description; - delete this.bodyParams.description; - - if (this.bodyParams.fileName) { - file.name = this.bodyParams.fileName; - delete this.bodyParams.fileName; - } - - if (this.bodyParams.fileContent) { - file.content = this.bodyParams.fileContent; - delete this.bodyParams.fileContent; - } - - await applyAirGappedRestrictionsValidation(() => - sendFileMessage(this.userId, { roomId: this.urlParams.rid, file, msgData: this.bodyParams }), - ); - - await Uploads.confirmTemporaryFile(this.urlParams.fileId, this.userId); - - const message = await Messages.getMessageByFileIdAndUsername(file._id, this.userId); - - return API.v1.success({ - message, - }); - }, - }, -); - -const saveNotificationBodySchema = ajv.compile<{ - roomId: string; - notifications: Record; -}>({ - type: 'object', - properties: { - roomId: { type: 'string', minLength: 1 }, - notifications: { - type: 'object', - minProperties: 1, - additionalProperties: { type: 'string' }, - }, - }, - required: ['roomId', 'notifications'], - additionalProperties: false, -}); - -const saveNotificationResponseSchema = ajv.compile({ - type: 'object', - properties: { - success: { type: 'boolean', enum: [true] }, - }, - required: ['success'], - additionalProperties: false, -}); - -const roomsSaveNotificationEndpoint = API.v1.post( - 'rooms.saveNotification', - { - authRequired: true, - body: saveNotificationBodySchema, - response: { - 200: saveNotificationResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { roomId, notifications } = this.bodyParams; - - await Promise.all( - Object.entries(notifications as Notifications).map(async ([notificationKey, notificationValue]) => - saveNotificationSettingsMethod(this.userId, roomId, notificationKey as NotificationFieldType, notificationValue), - ), - ); - - return API.v1.success({ success: true }); - }, -); - -const saveDraftBodySchema = ajv.compile<{ rid: IRoom['_id']; draft: string }>({ - type: 'object', - properties: { - rid: { type: 'string', minLength: 1 }, - draft: { type: 'string' }, - }, - required: ['rid', 'draft'], - additionalProperties: false, -}); - -const saveDraftResponseSchema = ajv.compile({ - type: 'object', - properties: { - success: { type: 'boolean', enum: [true] }, - }, - required: ['success'], - additionalProperties: false, -}); - -const roomsSaveDraftEndpoint = API.v1.post( - 'rooms.saveDraft', - { - authRequired: true, - body: saveDraftBodySchema, - response: { - 200: saveDraftResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { rid, draft } = this.bodyParams; - - if (draft.length > (settings.get('Message_MaxAllowedSize') ?? 0)) { - return API.v1.failure('error-message-size-exceeded'); - } - - const subscription = await Subscriptions.updateDraftByRoomIdAndUserId(rid, this.userId, draft || undefined); - if (!subscription) { - throw new Meteor.Error('error-invalid-subscription', 'Invalid subscription'); - } - - void notifyOnSubscriptionChanged(subscription); - - return API.v1.success(); - }, -); - -API.v1.post( - 'rooms.cleanHistory', - { - authRequired: true, - body: isRoomsCleanHistoryProps, - response: { - 200: ajv.compile<{ _id: string; count: number }>({ - type: 'object', - properties: { - _id: { type: 'string' }, - count: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['_id', 'count', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const room = await findRoomByIdOrName({ params: this.bodyParams }); - const { _id } = room; - - if (!room || !(await canAccessRoomAsync(room, { _id: this.userId }))) { - return API.v1.failure('User does not have access to the room [error-not-allowed]', 'error-not-allowed'); - } - - const { latest, oldest, inclusive = false, limit, excludePinned, filesOnly, ignoreThreads, ignoreDiscussion, users } = this.bodyParams; - - const count = await cleanRoomHistoryMethod(this.userId, { - roomId: _id, - latest: new Date(latest), - oldest: new Date(oldest), - inclusive, - limit, - excludePinned: [true, 'true', 1, '1'].includes(excludePinned ?? false), - filesOnly: [true, 'true', 1, '1'].includes(filesOnly ?? false), - ignoreThreads: [true, 'true', 1, '1'].includes(ignoreThreads ?? false), - ignoreDiscussion: [true, 'true', 1, '1'].includes(ignoreDiscussion ?? false), - fromUsers: users?.filter(isTruthy) || [], - }); - - return API.v1.success({ _id, count }); - }, -); - -API.v1.get( - 'rooms.info', - { - authRequired: true, - response: { - 200: ajv.compile<{ room: IRoom | null }>({ - type: 'object', - properties: { - room: { type: ['object', 'null'] }, - team: { type: 'object' }, - parent: { type: 'object' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['room', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const room = await findRoomByIdOrName({ params: this.queryParams, checkedArchived: false }); - const { fields } = await this.parseJsonQuery(); - - if (!room || !(await canAccessRoomAsync(room, { _id: this.userId }))) { - return API.v1.failure('not-allowed', 'Not Allowed'); - } - - const discussionParent = - room.prid && - (await Rooms.findOneById>(room.prid, { - projection: { name: 1, fname: 1, t: 1, prid: 1, u: 1 }, - })); - const { team, parentRoom } = await Team.getRoomInfo(room); - const parent = discussionParent || parentRoom; - - return API.v1.success({ - room: await Rooms.findOneByIdOrName(room._id, { projection: fields }), - ...(team && { team }), - ...(parent && { parent }), - }); - }, -); - -API.v1.post( - 'rooms.createDiscussion', - { - authRequired: true, - body: isRoomsCreateDiscussionProps, - response: { - 200: ajv.compile<{ discussion: IRoom }>({ - type: 'object', - properties: { - discussion: { type: 'object' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['discussion', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { prid, pmid, reply, t_name, users, encrypted, topic } = this.bodyParams; - - const discussion = await applyAirGappedRestrictionsValidation(() => - createDiscussion(this.userId, { - prid, - pmid, - t_name, - reply, - users: users?.filter(isTruthy) || [], - encrypted, - topic, - }), - ); - - return API.v1.success({ discussion }); - }, -); - -API.v1.get( - 'rooms.getDiscussions', - { - authRequired: true, - response: { - 200: ajv.compile<{ discussions: IRoom[]; count: number; offset: number; total: number }>({ - type: 'object', - properties: { - discussions: { type: 'array', items: { type: 'object' } }, // relaxed: discussions have extra room fields - count: { type: 'number' }, - offset: { type: 'number' }, - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['discussions', 'count', 'offset', 'total', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const room = await findRoomByIdOrName({ params: this.queryParams }); - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - - if (!room || !(await canAccessRoomAsync(room, { _id: this.userId }))) { - return API.v1.failure('not-allowed', 'Not Allowed'); - } - - const ourQuery = Object.assign(query, { prid: room._id }); - - const { cursor, totalCount } = await Rooms.findPaginated(ourQuery, { - sort: sort || { fname: 1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [discussions, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - discussions, - count: discussions.length, - offset, - total, - }); - }, -); - -API.v1.get( - 'rooms.images', - { - authRequired: true, - query: isRoomsImagesProps, - response: { - 200: ajv.compile<{ files: IUpload[]; count: number; offset: number; total: number }>({ - type: 'object', - properties: { - files: { type: 'array', items: { type: 'object' } }, // relaxed: IUpload with user transform - count: { type: 'number' }, - offset: { type: 'number' }, - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['files', 'count', 'offset', 'total', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const room = await Rooms.findOneById>(this.queryParams.roomId, { - projection: { t: 1, teamId: 1, prid: 1 }, - }); - - if (!room || !(await canAccessRoomAsync(room, { _id: this.userId }))) { - return API.v1.forbidden(); - } - - let initialImage: IUpload | null = null; - if (this.queryParams.startingFromId) { - initialImage = await Uploads.findOneById(this.queryParams.startingFromId); - if (initialImage && initialImage.rid !== room._id) { - initialImage = null; - } - } - - const { offset, count } = await getPaginationItems(this.queryParams); - - const { cursor, totalCount } = Uploads.findImagesByRoomId(room._id, initialImage?.uploadedAt, { - skip: offset, - limit: count, - }); - - const [files, total] = await Promise.all([cursor.toArray(), totalCount]); - - // If the initial image was not returned in the query, insert it as the first element of the list - if (initialImage && !files.find(({ _id }) => _id === initialImage._id)) { - files.splice(0, 0, initialImage); - } - - return API.v1.success({ - files, - count, - offset, - total, - }); - }, -); - -API.v1.get( - 'rooms.adminRooms', - { - authRequired: true, - query: isRoomsAdminRoomsProps, - response: { - 200: ajv.compile<{ - rooms: Array & IRoomAbacRedaction>; - count: number; - offset: number; - total: number; - }>({ - type: 'object', - properties: { - rooms: { type: 'array', items: { type: 'object' } }, // relaxed: IRoom with admin fields + optional ABAC redaction - count: { type: 'number' }, - offset: { type: 'number' }, - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['rooms', 'count', 'offset', 'total', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - const { types, filter } = this.queryParams; - - return API.v1.success( - await findAdminRooms({ - uid: this.userId, - filter: filter || '', - types: types ?? [], - pagination: { - offset, - count, - sort, - }, - }), - ); - }, -); - -API.v1.get( - 'rooms.autocomplete.adminRooms', - { - authRequired: true, - query: isRoomsAutocompleteAdminRoomsPayload, - response: { - 200: ajv.compile<{ items: IRoom[] }>({ - type: 'object', - properties: { - items: { type: 'array', items: { type: 'object' } }, // relaxed: IRoom autocomplete subset - success: { type: 'boolean', enum: [true] }, - }, - required: ['items', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { selector } = this.queryParams; - - return API.v1.success( - await findAdminRoomsAutocomplete({ - uid: this.userId, - selector: JSON.parse(selector), - }), - ); - }, -); - -API.v1.get( - 'rooms.adminRooms.getRoom', - { - authRequired: true, - query: isRoomsAdminRoomsGetRoomProps, - response: { - 200: ajv.compile & IRoomAbacRedaction>({ - allOf: [ - { $ref: '#/components/schemas/IRoomAdmin' }, - { - type: 'object', - properties: { - success: { type: 'boolean', enum: [true] }, - abacAttributesRedacted: { type: 'boolean' }, - }, - required: ['success'], - }, - ], - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { rid } = this.queryParams; - const room = await findAdminRoom({ - uid: this.userId, - rid: rid || '', - }); - - if (!room) { - return API.v1.failure('not-allowed', 'Not Allowed'); - } - return API.v1.success(room); - }, -); - -API.v1.get( - 'rooms.autocomplete.channelAndPrivate', - { - authRequired: true, - query: isRoomsAutoCompleteChannelAndPrivateProps, - response: { - 200: ajv.compile<{ items: IRoom[] }>({ - type: 'object', - properties: { - items: { type: 'array', items: { type: 'object' } }, // relaxed: IRoom autocomplete subset - success: { type: 'boolean', enum: [true] }, - }, - required: ['items', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { selector } = this.queryParams; - - return API.v1.success( - await findChannelAndPrivateAutocomplete({ - uid: this.userId, - selector: JSON.parse(selector), - }), - ); - }, -); - -API.v1.get( - 'rooms.autocomplete.channelAndPrivate.withPagination', - { - authRequired: true, - query: isRoomsAutocompleteChannelAndPrivateWithPaginationProps, - response: { - 200: ajv.compile<{ items: IRoom[]; total: number }>({ - type: 'object', - properties: { - items: { type: 'array', items: { type: 'object' } }, // relaxed: IRoom autocomplete subset - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['items', 'total', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { selector } = this.queryParams; - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - - return API.v1.success( - await findChannelAndPrivateAutocompleteWithPagination({ - uid: this.userId, - selector: JSON.parse(selector), - pagination: { - offset, - count, - sort, - }, - }), - ); - }, -); - -API.v1.get( - 'rooms.autocomplete.availableForTeams', - { - authRequired: true, - query: isRoomsAutocompleteAvailableForTeamsProps, - response: { - 200: ajv.compile<{ items: IRoom[] }>({ - type: 'object', - properties: { - items: { type: 'array', items: { type: 'object' } }, // relaxed: IRoom autocomplete subset - success: { type: 'boolean', enum: [true] }, - }, - required: ['items', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { name } = this.queryParams; - - return API.v1.success( - await findRoomsAvailableForTeams({ - uid: this.userId, - name, - }), - ); - }, -); - -API.v1.post( - 'rooms.saveRoomSettings', - { - authRequired: true, - body: isRoomsSaveRoomSettingsProps, - response: { - 200: ajv.compile<{ rid: string }>({ - type: 'object', - properties: { - rid: { type: 'string' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['rid', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { rid, ...params } = this.bodyParams; - - const result = await saveRoomSettings(this.userId, rid, params); - - return API.v1.success({ rid: result.rid }); - }, -); - -const successResponseSchema = ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [true] } }, - required: ['success'], - additionalProperties: false, -}); - -API.v1.post( - 'rooms.changeArchivationState', - { - authRequired: true, - body: isRoomsChangeArchivationStateProps, - response: { - 200: successResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { rid, action } = this.bodyParams; - - if (action === 'archive') { - await executeArchiveRoom(this.userId, rid); - } else { - await executeUnarchiveRoom(this.userId, rid); - } - - return API.v1.success(); - }, -); - -API.v1.post( - 'rooms.export', - { - authRequired: true, - body: isRoomsExportProps, - response: { - 200: ajv.compile({ - type: 'object', - properties: { - success: { type: 'boolean', enum: [true] }, - missing: { type: 'array', items: { type: 'string' } }, - }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { rid, type } = this.bodyParams; - - if (!(await hasPermissionAsync(this.userId, 'mail-messages', rid))) { - throw new Meteor.Error('error-action-not-allowed', 'Mailing is not allowed'); - } - - const room = await Rooms.findOneById(rid); - if (!room) { - throw new Meteor.Error('error-invalid-room'); - } - - const user = await Users.findOneById(this.userId); - - if (!user || !(await canAccessRoomAsync(room, user))) { - throw new Meteor.Error('error-not-allowed', 'Not Allowed'); - } - - if (type === 'file') { - const { dateFrom, dateTo } = this.bodyParams; - const { format } = this.bodyParams; - - const convertedDateFrom = dateFrom ? new Date(dateFrom) : new Date(0); - const convertedDateTo = dateTo ? new Date(dateTo) : new Date(); - convertedDateTo.setDate(convertedDateTo.getDate() + 1); - - if (convertedDateFrom > convertedDateTo) { - throw new Meteor.Error('error-invalid-dates', 'From date cannot be after To date'); - } - - void dataExport.sendFile( - { - rid, - format, - dateFrom: convertedDateFrom, - dateTo: convertedDateTo, - }, - user, - ); - return API.v1.success(); - } - - if (type === 'email') { - const { toUsers, toEmails, subject, messages } = this.bodyParams; - - if ((!toUsers || toUsers.length === 0) && (!toEmails || toEmails.length === 0)) { - throw new Meteor.Error('error-invalid-recipient'); - } - - const result = await dataExport.sendViaEmail( - { - rid, - toUsers: (toUsers as string[]) || [], - toEmails: toEmails || [], - subject: subject || '', - messages: messages || [], - language: user.language || 'en', - }, - user, - ); - - return API.v1.success(result); - } - - return API.v1.failure(); - }, -); - -API.v1.get( - 'rooms.isMember', - { - authRequired: true, - query: isRoomsIsMemberProps, - response: { - 200: ajv.compile<{ isMember: boolean }>({ - type: 'object', - properties: { - isMember: { type: 'boolean' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['isMember', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { roomId } = this.queryParams; - const usernameOrUserId = 'userId' in this.queryParams ? this.queryParams.userId : this.queryParams.username; - const [room, user] = await Promise.all([ - findRoomByIdOrName({ - params: { roomId }, - }), - Users.findOneByIdOrUsername(usernameOrUserId), - ]); - - if (!user?._id) { - return API.v1.failure('error-user-not-found'); - } - - if (await canAccessRoomAsync(room, { _id: this.user._id })) { - return API.v1.success({ - isMember: (await Subscriptions.countByRoomIdAndUserId(room._id, user._id)) > 0, - }); - } - return API.v1.forbidden(); - }, -); - -API.v1.get( - 'rooms.membersOrderedByRole', - { - authRequired: true, - query: isRoomsMembersOrderedByRoleProps, - response: { - 200: ajv.compile<{ members: IUser[]; count: number; offset: number; total: number }>({ - type: 'object', - properties: { - members: { type: 'array', items: { type: 'object' } }, // relaxed: projected IUser with role priority - count: { type: 'number' }, - offset: { type: 'number' }, - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['members', 'count', 'offset', 'total', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 404: validateNotFoundErrorResponse, - }, - }, - async function action() { - const findResult = await findRoomByIdOrName({ - params: this.queryParams, - checkedArchived: false, - }); - - if (!(await canAccessRoomAsync(findResult, this.user))) { - return API.v1.notFound('The required "roomId" or "roomName" param provided does not match any room'); - } - - if (!isPublicRoom(findResult) && !isPrivateRoom(findResult)) { - return API.v1.failure('error-room-type-not-supported'); - } - - if (findResult.broadcast && !(await hasPermissionAsync(this.userId, 'view-broadcast-member-list', findResult._id))) { - return API.v1.unauthorized(); - } - - // Ensures that role priorities for the specified room are synchronized correctly. - // This function acts as a soft migration. If the `roomRolePriorities` field - // for the room has already been created and is up-to-date, no updates will be performed. - // If not, it will synchronize the role priorities of the users of the room. - await syncRolePrioritiesForRoomIfRequired(findResult._id); - - const { offset: skip, count: limit } = await getPaginationItems(this.queryParams); - const { sort = {} } = await this.parseJsonQuery(); - - const { status, filter } = this.queryParams; - - const { members, total } = await findUsersOfRoomOrderedByRole({ - rid: findResult._id, - ...(status && { status: { $in: status } }), - skip, - limit, - filter, - sort, - }); - - return API.v1.success({ - members, - count: members.length, - offset: skip, - total, - }); - }, -); - -API.v1.post( - 'rooms.muteUser', - { - authRequired: true, - body: isRoomsMuteUnmuteUserProps, - response: { - 200: successResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const user = await getUserFromParams(this.bodyParams); - - if (!user.username) { - return API.v1.failure('Invalid user'); - } - - await muteUserInRoom(this.userId, { rid: this.bodyParams.roomId, username: user.username }); - - return API.v1.success(); - }, -); - -API.v1.post( - 'rooms.unmuteUser', - { - authRequired: true, - body: isRoomsMuteUnmuteUserProps, - response: { - 200: successResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const user = await getUserFromParams(this.bodyParams); - - if (!user.username) { - return API.v1.failure('Invalid user'); - } - - await unmuteUserInRoom(this.userId, { rid: this.bodyParams.roomId, username: user.username }); - - return API.v1.success(); - }, -); - -API.v1.post( - 'rooms.open', - { - authRequired: true, - body: isRoomsOpenProps, - response: { - 200: successResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { roomId } = this.bodyParams; - - await openRoom(this.userId, roomId); - - return API.v1.success(); - }, -); - -API.v1.post( - 'rooms.join', - { - authRequired: true, - body: isRoomsJoinProps, - response: { - 200: ajv.compile<{ room: IRoom }>({ - type: 'object', - properties: { - room: { type: 'object' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['room', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { joinCode, ...params } = this.bodyParams; - const room = await findRoomByIdOrName({ params }); - - await Room.join({ room, user: this.user, joinCode }); - - return API.v1.success({ - room: await findRoomByIdOrName({ params }), - }); - }, -); - -API.v1.post( - 'rooms.hide', - { - authRequired: true, - body: isRoomsHideProps, - response: { - 200: successResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { roomId } = this.bodyParams; - - if (!(await canAccessRoomIdAsync(roomId, this.userId))) { - return API.v1.unauthorized(); - } - - const user = await Users.findOneById(this.userId, { projections: { _id: 1 } }); - - if (!user) { - return API.v1.failure('error-invalid-user'); - } - - const modCount = await hideRoomMethod(this.userId, roomId); - - if (!modCount) { - return API.v1.failure('error-room-already-hidden'); - } - - return API.v1.success(); - }, -); - -type RoomsFavorite = - | { - roomId: string; - favorite: boolean; - } - | { - roomName: string; - favorite: boolean; - }; - -type RoomsLeave = - | { - roomId: string; - } - | { - roomName: string; - }; - -const isRoomGetRolesPropsSchema = { - type: 'object', - properties: { - rid: { type: 'string' }, - }, - additionalProperties: false, - required: ['rid'], -}; - -const RoomsFavoriteSchema = { - anyOf: [ - { - type: 'object', - properties: { - favorite: { type: 'boolean' }, - roomName: { type: 'string' }, - }, - required: ['roomName', 'favorite'], - additionalProperties: false, - }, - { - type: 'object', - properties: { - favorite: { type: 'boolean' }, - roomId: { type: 'string' }, - }, - required: ['roomId', 'favorite'], - additionalProperties: false, - }, - ], -}; - -const isRoomsLeavePropsSchema = { - anyOf: [ - { - type: 'object', - properties: { - roomId: { type: 'string' }, - }, - required: ['roomId'], - additionalProperties: false, - }, - { - type: 'object', - properties: { - roomName: { type: 'string' }, - }, - required: ['roomName'], - additionalProperties: false, - }, - ], -}; - -const isRoomsFavoriteProps = ajv.compile(RoomsFavoriteSchema); -const isRoomsLeaveProps = ajv.compile(isRoomsLeavePropsSchema); -const roomsBannedUsersResponseSchema = ajv.compile<{ - success: true; - bannedUsers: RequiredField, '_id' | 'username'>[]; - count: number; - offset: number; - total: number; -}>({ - type: 'object', - properties: { - success: { type: 'boolean', enum: [true] }, - bannedUsers: { - type: 'array', - items: { - type: 'object', - properties: { - _id: { type: 'string' }, - username: { type: 'string' }, - name: { type: 'string' }, - }, - required: ['_id', 'username'], - additionalProperties: false, - }, - }, - count: { type: 'number' }, - offset: { type: 'number' }, - total: { type: 'number' }, - }, - required: ['success', 'bannedUsers', 'count', 'offset', 'total'], - additionalProperties: false, -}); - -export const roomEndpoints = API.v1 - .get( - 'rooms.roles', - { - authRequired: true, - query: ajvQuery.compile<{ - rid: string; - }>(isRoomGetRolesPropsSchema), - response: { - 200: ajv.compile<{ - roles: RoomRoles[]; - }>({ - type: 'object', - properties: { - roles: { - type: 'array', - items: { - type: 'object', - properties: { - rid: { type: 'string' }, - u: { - type: 'object', - properties: { _id: { type: 'string' }, username: { type: 'string' } }, - required: ['_id', 'username'], - }, - roles: { type: 'array', items: { type: 'string' } }, - }, - required: ['rid', 'u', 'roles'], - }, - }, - }, - required: ['roles'], - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function () { - const { rid } = this.queryParams; - const roles = await executeGetRoomRoles(rid, this.user); - - return API.v1.success({ - roles, - }); - }, - ) - .get( - 'rooms.adminRooms.privateRooms', - { - authRequired: true, - permissionsRequired: ['view-room-administration'], - query: ajvQuery.compile<{ - filter?: string; - offset?: number; - count?: number; - sort?: string; - }>({ - type: 'object', - properties: { - filter: { type: 'string' }, - offset: { type: 'number' }, - count: { type: 'number' }, - sort: { type: 'string' }, - }, - additionalProperties: true, - }), - response: { - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateUnauthorizedErrorResponse, - 200: ajv.compile<{ - rooms: Array & IRoomAbacRedaction>; - count: number; - offset: number; - total: number; - }>({ - type: 'object', - properties: { - rooms: { - type: 'array', - items: { type: 'object' }, // relaxed: IRoom subset - }, - count: { type: 'number' }, - offset: { type: 'number' }, - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['rooms', 'count', 'offset', 'total', 'success'], - additionalProperties: false, - }), - }, - }, - async function action() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - const { filter } = this.queryParams; - - const name = (filter || '').trim(); - - const { cursor, totalCount } = Rooms.findPrivateRoomsAndTeamsPaginated(name, { - skip: offset, - limit: count, - sort: sort || { default: -1, name: 1 }, - projection: adminFields, - }); - - const [rooms, total] = await Promise.all([cursor.map(stripABACManagedFieldsForAdmin).toArray(), totalCount]); - - return API.v1.success({ - rooms: await scopeAdminRoomsForAbac(rooms, this.userId), - count: rooms.length, - offset, - total, - }); - }, - ) - .post( - 'rooms.invite', - { - authRequired: true, - body: isRoomsInviteProps, - response: { - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 200: ajv.compile({ - type: 'object', - properties: { - success: { type: 'boolean', enum: [true] }, - }, - required: ['success'], - additionalProperties: false, - }), - }, - }, - async function action() { - const { roomId, action } = this.bodyParams; - - try { - await FederationMatrix.handleInvite(roomId, this.userId, action); - return API.v1.success(); - } catch (error) { - return API.v1.failure({ error: `Failed to handle invite: ${error instanceof Error ? error.message : String(error)}` }); - } - }, - ) - .post( - 'rooms.favorite', - { - authRequired: true, - body: isRoomsFavoriteProps, - response: { - 200: ajv.compile({ - type: 'object', - properties: { - success: { - type: 'boolean', - enum: [true], - description: 'Indicates if the request was successful.', - }, - }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { favorite } = this.bodyParams; - - const room = await findRoomByIdOrName({ params: this.bodyParams }); - - await toggleFavoriteMethod(this.userId, room._id, favorite); - - return API.v1.success(); - }, - ) - .post( - 'rooms.leave', - { - authRequired: true, - body: isRoomsLeaveProps, - response: { - 200: ajv.compile({ - type: 'object', - properties: { - success: { type: 'boolean', enum: [true] }, - }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const room = await findRoomByIdOrName({ params: this.bodyParams }); - - const user = await Users.findOneById(this.userId); - - if (!user) { - return API.v1.failure('error-invalid-user'); - } - - await leaveRoomMethod(user, room._id); - - return API.v1.success(); - }, - ) - .post( - 'rooms.banUser', - { - authRequired: true, - body: isRoomsBanUserProps, - response: { - 200: ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [true] } }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const user = await getUserFromParams(this.bodyParams); - - if (!user.username) { - return API.v1.failure('Invalid user'); - } - - await banUserFromRoomMethod(this.userId, { rid: this.bodyParams.roomId, username: user.username }); - - return API.v1.success(); - }, - ) - .post( - 'rooms.unbanUser', - { - authRequired: true, - body: isRoomsUnbanUserProps, - response: { - 200: ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [true] } }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const user = await getUserFromParams(this.bodyParams, true); - - if (!user.username) { - return API.v1.failure('Invalid user'); - } - - await unbanUserFromRoom(this.userId, { rid: this.bodyParams.roomId, username: user.username }); - - return API.v1.success(); - }, - ) - .get( - 'rooms.bannedUsers', - { - authRequired: true, - query: isRoomsBannedUsersProps, - response: { - 200: roomsBannedUsersResponseSchema, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { roomId } = this.queryParams; - - if (!(await canAccessRoomIdAsync(roomId, this.userId))) { - return API.v1.unauthorized(); - } - - const { offset, count } = await getPaginationItems(this.queryParams); - - const { cursor, totalCount } = Subscriptions.findPaginated({ rid: roomId, status: 'BANNED' as const }, { offset, count }); - - const [bannedSubs, total] = await Promise.all([cursor.toArray(), totalCount]); - - const userIds = bannedSubs.map((sub) => sub.u._id); - const users = await Users.find, '_id' | 'username'>>( - { _id: { $in: userIds } }, - { projection: { username: 1, name: 1 } }, - ).toArray(); - - return API.v1.success({ - bannedUsers: users, - count: users.length, - offset, - total, - }); - }, - ); -type RoomEndpoints = ExtractRoutesFromAPI & - ExtractRoutesFromAPI & - ExtractRoutesFromAPI & - ExtractRoutesFromAPI; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends RoomEndpoints {} -} diff --git a/apps/meteor/app/api/server/v1/settings.ts b/apps/meteor/app/api/server/v1/settings.ts deleted file mode 100644 index 6c764f4105bef..0000000000000 --- a/apps/meteor/app/api/server/v1/settings.ts +++ /dev/null @@ -1,448 +0,0 @@ -import type { - FacebookOAuthConfiguration, - ISetting, - ISettingColor, - LoginServiceConfiguration, - TwitterOAuthConfiguration, - OAuthConfiguration, -} from '@rocket.chat/core-typings'; -import { isActionSettingWithEndpoint, isSettingAction, isSettingColor } from '@rocket.chat/core-typings'; -import { LoginServiceConfiguration as LoginServiceConfigurationModel, Settings } from '@rocket.chat/models'; -import { - ajv, - isSettingsUpdatePropDefault, - isSettingsUpdatePropsActions, - isSettingsUpdatePropsColor, - isSettingsPublicWithPaginationProps, - isSettingsGetParams, - isSettingsBulkProps, - validateForbiddenErrorResponse, - validateUnauthorizedErrorResponse, - validateBadRequestErrorResponse, -} from '@rocket.chat/rest-typings'; -import { Meteor } from 'meteor/meteor'; -import type { FindOptions } from 'mongodb'; -import _ from 'underscore'; - -import { updateAuditedByUser } from '../../../../server/settings/lib/auditedSettingUpdates'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { disableCustomScripts } from '../../../lib/server/functions/disableCustomScripts'; -import { saveSettingsBulk } from '../../../lib/server/functions/saveSettingsBulk'; -import { checkSettingValueBounds } from '../../../lib/server/lib/checkSettingValueBonds'; -import { notifyOnSettingChanged, notifyOnSettingChangedById } from '../../../lib/server/lib/notifyListener'; -import { addOAuthServiceMethod } from '../../../lib/server/methods/addOAuthService'; -import { SettingsEvents, settings } from '../../../settings/server'; -import { setValue } from '../../../settings/server/raw'; -import { API } from '../api'; -import { getPaginationItems } from '../helpers/getPaginationItems'; - -async function fetchSettings( - query: Parameters[0], - sort: FindOptions['sort'], - offset: FindOptions['skip'], - count: FindOptions['limit'], - fields: FindOptions['projection'], -): Promise<{ settings: ISetting[]; totalCount: number }> { - const { cursor, totalCount } = Settings.findPaginated(query || {}, { - sort: sort || { _id: 1 }, - skip: offset, - limit: count, - projection: { _id: 1, value: 1, enterprise: 1, invalidValue: 1, modules: 1, ...fields }, - }); - - const [settingsList, total] = await Promise.all([cursor.toArray(), totalCount]); - - SettingsEvents.emit('fetch-settings', settingsList); - return { settings: settingsList, totalCount: total }; -} - -const settingsPublicResponseSchema = ajv.compile<{ settings: ISetting[]; count: number; offset: number; total: number }>({ - type: 'object', - properties: { - settings: { type: 'array', items: { type: 'object' } }, - count: { type: 'number' }, - offset: { type: 'number' }, - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['settings', 'count', 'offset', 'total', 'success'], - additionalProperties: false, -}); - -const settingsOAuthResponseSchema = ajv.compile<{ services: Partial[] }>({ - type: 'object', - properties: { - services: { type: 'array', items: { type: 'object' } }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['services', 'success'], - additionalProperties: false, -}); - -const addCustomOAuthBodySchema = ajv.compile<{ name: string }>({ - type: 'object', - properties: { name: { type: 'string' } }, - required: ['name'], - additionalProperties: false, -}); - -const settingsListResponseSchema = ajv.compile<{ settings: ISetting[]; count: number; offset: number; total: number }>({ - type: 'object', - properties: { - settings: { type: 'array', items: { type: 'object' } }, - count: { type: 'number' }, - offset: { type: 'number' }, - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['settings', 'count', 'offset', 'total', 'success'], - additionalProperties: false, -}); - -const settingByIdGetResponseSchema = ajv.compile>({ - type: 'object', - properties: { - _id: { type: 'string' }, - value: {}, - success: { type: 'boolean', enum: [true] }, - }, - required: ['_id', 'value', 'success'], - additionalProperties: false, -}); - -const settingByIdPostResponseSchema = ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [true] } }, - required: ['success'], - additionalProperties: false, -}); - -const settingsUpdateBodySchema = ajv.compile<{ value?: unknown; execute?: boolean; editor?: string }>({ - type: 'object', - properties: { - value: {}, - execute: { type: 'boolean' }, - editor: { type: 'string' }, - }, - additionalProperties: true, -}); - -const serviceConfigurationsResponseSchema = ajv.compile<{ configurations: LoginServiceConfiguration[] }>({ - type: 'object', - properties: { - configurations: { type: 'array', items: { type: 'object' } }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['configurations', 'success'], - additionalProperties: false, -}); - -API.v1.get( - 'settings.public', - { - authRequired: false, - query: isSettingsPublicWithPaginationProps, - response: { - 200: settingsPublicResponseSchema, - }, - }, - async function action() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - const { _id } = this.queryParams; - - const parsedQueryId = typeof _id === 'string' && _id ? { _id: { $in: _id.split(',').map((id) => id.trim()) } } : {}; - - const ourQuery = { - ...query, - ...parsedQueryId, - hidden: { $ne: true }, - public: true, - }; - - const { settings: settingsList, totalCount: total } = await fetchSettings(ourQuery, sort, offset, count, fields); - - return API.v1.success({ - settings: settingsList, - count: settingsList.length, - offset, - total, - }); - }, -); - -API.v1.get( - 'settings.oauth', - { - authRequired: false, - response: { - 200: settingsOAuthResponseSchema, - }, - }, - async function action() { - const oAuthServicesEnabled = await LoginServiceConfigurationModel.find({}, { projection: { secret: 0 } }).toArray(); - - return API.v1.success({ - services: oAuthServicesEnabled.map((service) => { - if (!service) { - return service; - } - - if ((service as OAuthConfiguration).custom || (service.service && ['saml', 'cas', 'wordpress'].includes(service.service))) { - return { ...service }; - } - - return { - _id: service._id, - name: service.service, - clientId: - (service as FacebookOAuthConfiguration).appId || - (service as OAuthConfiguration).clientId || - (service as TwitterOAuthConfiguration).consumerKey, - buttonLabelText: service.buttonLabelText || '', - buttonColor: service.buttonColor || '', - buttonLabelColor: service.buttonLabelColor || '', - custom: false, - }; - }), - }); - }, -); - -API.v1.post( - 'settings.addCustomOAuth', - { - authRequired: true, - twoFactorRequired: true, - body: addCustomOAuthBodySchema, - response: { - 200: ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [true] } }, - required: ['success'], - additionalProperties: false, - }), - 400: ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [false] }, error: { type: 'string' } }, - required: ['success'], - additionalProperties: false, - }), - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { name } = this.bodyParams; - if (!name?.trim()) { - throw new Meteor.Error('error-name-param-not-provided', 'The parameter "name" is required'); - } - - await addOAuthServiceMethod(this.userId, name); - - return API.v1.success(); - }, -); - -API.v1.get( - 'settings', - { - authRequired: true, - query: isSettingsGetParams, - response: { - 200: settingsListResponseSchema, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { includeDefaults } = this.queryParams; - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - - let ourQuery: Parameters[0] = { - hidden: { $ne: true }, - }; - - if (!(await hasPermissionAsync(this.userId, 'view-privileged-setting'))) { - ourQuery.public = true; - } - - ourQuery = Object.assign({}, query, ourQuery); - - if (includeDefaults) { - fields.packageValue = 1; - } - - const { settings: settingsList, totalCount: total } = await fetchSettings(ourQuery, sort, offset, count, fields); - - return API.v1.success({ - settings: settingsList, - count: settingsList.length, - offset, - total, - }); - }, -); - -API.v1.get( - 'settings/:_id', - { - authRequired: true, - permissionsRequired: { - GET: { permissions: ['view-privileged-setting'], operation: 'hasAll' }, - }, - response: { - 200: settingByIdGetResponseSchema, - 400: ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [false] } }, - required: ['success'], - additionalProperties: true, - }), - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { _id } = this.urlParams; - const setting = await Settings.findOneNotHiddenById(_id); - if (!setting) { - return API.v1.failure(); - } - return API.v1.success(_.pick(setting, '_id', 'value')); - }, -); - -API.v1.post( - 'settings/:_id', - { - authRequired: true, - permissionsRequired: { - POST: { permissions: ['edit-privileged-setting'], operation: 'hasAll' }, - }, - twoFactorRequired: true, - body: settingsUpdateBodySchema, - response: { - 200: settingByIdPostResponseSchema, - 400: ajv.compile({ - type: 'object', - properties: { success: { type: 'boolean', enum: [false] } }, - required: ['success'], - additionalProperties: true, - }), - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const { _id } = this.urlParams; - if (typeof _id !== 'string') { - throw new Meteor.Error('error-id-param-not-provided', 'The parameter "id" is required'); - } - - if (disableCustomScripts() && /^Custom_Script_/.test(_id)) { - return API.v1.forbidden('Custom scripts are disabled'); - } - - const setting = await Settings.findOneNotHiddenById(_id); - - if (!setting) { - return API.v1.failure(); - } - - const { bodyParams } = this; - - if ( - isSettingAction(setting) && - isSettingsUpdatePropsActions(bodyParams) && - bodyParams.execute && - !isActionSettingWithEndpoint(setting.value) - ) { - await Meteor.callAsync(setting.value); - return API.v1.success(); - } - - const auditSettingOperation = updateAuditedByUser({ - _id: this.userId, - username: this.user.username, - ip: this.requestIp ?? '', - useragent: this.request.headers.get('user-agent') ?? '', - }); - - if (isSettingColor(setting) && isSettingsUpdatePropsColor(bodyParams)) { - const updateOptionsPromise = Settings.updateOptionsById(_id, { editor: bodyParams.editor }); - const updateValuePromise = auditSettingOperation(Settings.updateValueNotHiddenById, _id, bodyParams.value); - - const [updateOptionsResult, updateValueResult] = await Promise.all([updateOptionsPromise, updateValuePromise]); - - if (updateOptionsResult.modifiedCount || updateValueResult.modifiedCount) { - await notifyOnSettingChangedById(_id); - } - - return API.v1.success(); - } - - if (isSettingsUpdatePropDefault(bodyParams)) { - checkSettingValueBounds(setting, bodyParams.value); - - const { matchedCount } = await auditSettingOperation(Settings.updateValueNotHiddenById, _id, bodyParams.value); - - if (!matchedCount) { - return API.v1.failure(); - } - - const s = await Settings.findOneNotHiddenById(_id); - if (!s) { - return API.v1.failure(); - } - - settings.set(s); - setValue(_id, bodyParams.value); - - await notifyOnSettingChanged(s); - - return API.v1.success(); - } - - return API.v1.failure(); - }, -); - -API.v1.post( - 'settings', - { - authRequired: true, - twoFactorRequired: true, - twoFactorOptions: { disableRememberMe: true }, - body: isSettingsBulkProps, - response: { - 200: settingByIdPostResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - await saveSettingsBulk(this.userId, this.bodyParams.settings, { - username: this.user.username ?? '', - ip: this.requestIp ?? '', - useragent: this.request.headers.get('user-agent') ?? '', - }); - - return API.v1.success(); - }, -); - -API.v1.get( - 'service.configurations', - { - authRequired: false, - response: { - 200: serviceConfigurationsResponseSchema, - }, - }, - async function action() { - return API.v1.success({ - configurations: await LoginServiceConfigurationModel.find({}, { projection: { secret: 0 } }).toArray(), - }); - }, -); diff --git a/apps/meteor/app/api/server/v1/users.ts b/apps/meteor/app/api/server/v1/users.ts deleted file mode 100644 index 0015ca9e2fb0c..0000000000000 --- a/apps/meteor/app/api/server/v1/users.ts +++ /dev/null @@ -1,2090 +0,0 @@ -import { MeteorError, Presence, Team } from '@rocket.chat/core-services'; -import type { IExportOperation, ILoginToken, IPersonalAccessToken, IUser, UserStatus } from '@rocket.chat/core-typings'; -import { Users, Subscriptions, Sessions, OAuthAccessTokens, OAuthRefreshTokens, OAuthAuthCodes } from '@rocket.chat/models'; -import { - isUserCreateParamsPOST, - isUserSetActiveStatusParamsPOST, - isUserDeactivateIdleParamsPOST, - isUsersInfoParamsGetProps, - isUsersListStatusProps, - isUsersSendWelcomeEmailProps, - isUserRegisterParamsPOST, - isUserLogoutParamsPOST, - isUsersListTeamsProps, - isUsersAutocompleteProps, - isUsersSetAvatarProps, - isUsersUpdateParamsPOST, - isUsersUpdateOwnBasicInfoParamsPOST, - isUsersSetPreferencesParamsPOST, - isUsersCheckUsernameAvailabilityParamsGET, - isUsersSendConfirmationEmailParamsPOST, - isUsersListParamsGET, - isUsersPresenceParamsGET, - isUsersRequestDataDownloadParamsGET, - isUsersGetPresenceParamsGET, - isUsersGetStatusParamsGET, - ajv, - validateBadRequestErrorResponse, - validateUnauthorizedErrorResponse, - validateForbiddenErrorResponse, -} from '@rocket.chat/rest-typings'; -import { escapeRegExp } from '@rocket.chat/string-helpers'; -import { getLoginExpirationInMs } from '@rocket.chat/tools'; -import { Accounts } from 'meteor/accounts-base'; -import { Match, check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; -import type { Filter } from 'mongodb'; - -import { generatePersonalAccessTokenOfUser } from '../../../../imports/personal-access-tokens/server/api/methods/generateToken'; -import { regeneratePersonalAccessTokenOfUser } from '../../../../imports/personal-access-tokens/server/api/methods/regenerateToken'; -import { removePersonalAccessTokenOfUser } from '../../../../imports/personal-access-tokens/server/api/methods/removeToken'; -import { UserChangedAuditStore } from '../../../../server/lib/auditServerEvents/userChanged'; -import { i18n } from '../../../../server/lib/i18n'; -import { SystemLogger } from '../../../../server/lib/logger/system'; -import { resetUserE2EEncriptionKey } from '../../../../server/lib/resetUserE2EKey'; -import { registerUser } from '../../../../server/methods/registerUser'; -import { requestDataDownload } from '../../../../server/methods/requestDataDownload'; -import { resetAvatar } from '../../../../server/methods/resetAvatar'; -import { saveUserPreferences } from '../../../../server/methods/saveUserPreferences'; -import { executeSaveUserProfile } from '../../../../server/methods/saveUserProfile'; -import { sendConfirmationEmail } from '../../../../server/methods/sendConfirmationEmail'; -import { sendForgotPasswordEmail } from '../../../../server/methods/sendForgotPasswordEmail'; -import { executeSetUserActiveStatus } from '../../../../server/methods/setUserActiveStatus'; -import { getUserForCheck, emailCheck } from '../../../2fa/server/code'; -import { resetTOTP } from '../../../2fa/server/functions/resetTOTP'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { checkEmailAvailability } from '../../../lib/server/functions/checkEmailAvailability'; -import { - checkUsernameAvailability, - checkUsernameAvailabilityWithValidation, -} from '../../../lib/server/functions/checkUsernameAvailability'; -import { deleteUser } from '../../../lib/server/functions/deleteUser'; -import { getAvatarSuggestionForUser } from '../../../lib/server/functions/getAvatarSuggestionForUser'; -import { getFullUserDataByUniqueSearchTerm, defaultFields, fullFields } from '../../../lib/server/functions/getFullUserData'; -import { generateUsernameSuggestion } from '../../../lib/server/functions/getUsernameSuggestion'; -import { saveCustomFields } from '../../../lib/server/functions/saveCustomFields'; -import { saveCustomFieldsWithoutValidation } from '../../../lib/server/functions/saveCustomFieldsWithoutValidation'; -import { saveUser } from '../../../lib/server/functions/saveUser'; -import { sendWelcomeEmail } from '../../../lib/server/functions/saveUser/sendUserEmail'; -import { canEditExtension } from '../../../lib/server/functions/saveUser/validateUserEditing'; -import { setUserAvatar } from '../../../lib/server/functions/setUserAvatar'; -import { setUsernameWithValidation } from '../../../lib/server/functions/setUsername'; -import { validateCustomFields } from '../../../lib/server/functions/validateCustomFields'; -import { validateNameChars } from '../../../lib/server/functions/validateNameChars'; -import { validateUsername } from '../../../lib/server/functions/validateUsername'; -import { notifyOnUserChange, notifyOnUserChangeAsync } from '../../../lib/server/lib/notifyListener'; -import { generateAccessToken } from '../../../lib/server/methods/createToken'; -import { deleteUserOwnAccount } from '../../../lib/server/methods/deleteUserOwnAccount'; -import { settings } from '../../../settings/server'; -import { isSMTPConfigured } from '../../../utils/server/functions/isSMTPConfigured'; -import { getURL } from '../../../utils/server/getURL'; -import type { ExtractRoutesFromAPI } from '../ApiClass'; -import { API } from '../api'; -import { getPaginationItems } from '../helpers/getPaginationItems'; -import { getUserFromParams } from '../helpers/getUserFromParams'; -import { getUserInfo } from '../helpers/getUserInfo'; -import { isUserFromParams } from '../helpers/isUserFromParams'; -import { getUploadFormData } from '../lib/getUploadFormData'; -import { isValidQuery } from '../lib/isValidQuery'; -import { findPaginatedUsersByStatus, findUsersToAutocomplete, getInclusiveFields, getNonEmptyFields, getNonEmptyQuery } from '../lib/users'; - -API.v1.addRoute( - 'users.getAvatar', - { authRequired: true }, - { - async get() { - const user = await getUserFromParams(this.queryParams); - - const url = getURL(`/avatar/${user.username}`, { cdn: false, full: true }); - this.response.headers.set('Location', url); - - return { - statusCode: 307, - body: url, - }; - }, - }, -); - -const voidSuccessResponse = ajv.compile({ - type: 'object', - properties: { - success: { type: 'boolean', enum: [true] }, - }, - required: ['success'], - additionalProperties: false, -}); - -// user shape varies by projection and permissions — use $ref when IUser is available in typia -const userObjectResponse = ajv.compile<{ user: object }>({ - type: 'object', - properties: { - user: { type: 'object' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['user', 'success'], - additionalProperties: false, -}); - -API.v1.post( - 'users.update', - { - authRequired: true, - twoFactorRequired: true, - body: isUsersUpdateParamsPOST, - response: { - 200: userObjectResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const userData = { _id: this.bodyParams.userId, ...this.bodyParams.data }; - - if (userData.name && !validateNameChars(userData.name)) { - return API.v1.failure('Name contains invalid characters'); - } - const auditStore = new UserChangedAuditStore({ - _id: this.user._id, - ip: this.requestIp || '', - useragent: this.request.headers.get('user-agent') || '', - username: this.user.username, - }); - - await saveUser(this.userId, userData, { auditStore }); - - if (typeof this.bodyParams.data.active !== 'undefined') { - const { - userId, - data: { active }, - confirmRelinquish, - } = this.bodyParams; - await executeSetUserActiveStatus(this.userId, userId, active, Boolean(confirmRelinquish)); - } - - const { fields } = await this.parseJsonQuery(); - - const user = await Users.findOneById(this.bodyParams.userId, { projection: fields }); - if (!user) { - return API.v1.failure('User not found'); - } - - return API.v1.success({ user }); - }, -); - -API.v1 - .post( - 'users.updateOwnBasicInfo', - { - authRequired: true, - userWithoutUsername: true, - body: isUsersUpdateOwnBasicInfoParamsPOST, - rateLimiterOptions: { - numRequestsAllowed: 1, - intervalTimeInMS: 60000, - }, - response: { - 200: userObjectResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const userData = { - email: this.bodyParams.data.email, - realname: this.bodyParams.data.name, - username: this.bodyParams.data.username, - nickname: this.bodyParams.data.nickname, - bio: this.bodyParams.data.bio, - statusText: this.bodyParams.data.statusText, - statusType: this.bodyParams.data.statusType, - newPassword: this.bodyParams.data.newPassword, - typedPassword: this.bodyParams.data.currentPassword, - }; - - if (userData.realname && !validateNameChars(userData.realname)) { - return API.v1.failure('Name contains invalid characters'); - } - - // saveUserProfile now uses the default two factor authentication procedures, so we need to provide that - const twoFactorOptions = !userData.typedPassword - ? null - : { - twoFactorCode: userData.typedPassword, - twoFactorMethod: 'password', - }; - - await executeSaveUserProfile.call(this, this.user, userData, this.bodyParams.customFields, twoFactorOptions); - - return API.v1.success({ - user: await getUserInfo((await Users.findOneById(this.userId, { projection: API.v1.defaultFieldsToExclude })) as IUser, false), - }); - }, - ) - .post( - 'users.setPreferences', - { - authRequired: true, - body: isUsersSetPreferencesParamsPOST, - response: { - 200: userObjectResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - if ( - this.bodyParams.userId && - this.bodyParams.userId !== this.userId && - !(await hasPermissionAsync(this.userId, 'edit-other-user-info')) - ) { - throw new Meteor.Error('error-action-not-allowed', 'Editing user is not allowed'); - } - const userId = this.bodyParams.userId ? this.bodyParams.userId : this.userId; - if (!(await Users.findOneById(userId))) { - throw new Meteor.Error('error-invalid-user', 'The optional "userId" param provided does not match any users'); - } - - await saveUserPreferences(this.bodyParams.data, userId); - const user = await Users.findOneById(userId, { - projection: { - 'settings.preferences': 1, - 'language': 1, - }, - }); - - if (!user) { - return API.v1.failure('User not found'); - } - - return API.v1.success({ - user: { - _id: user._id, - settings: { - preferences: { - ...user.settings?.preferences, - language: user.language, - }, - }, - } as unknown as Required>, - }); - }, - ) - .post( - 'users.setAvatar', - { - authRequired: true, - body: isUsersSetAvatarProps, - response: { - 200: voidSuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const canEditOtherUserAvatar = await hasPermissionAsync(this.userId, 'edit-other-user-avatar'); - - if (!settings.get('Accounts_AllowUserAvatarChange') && !canEditOtherUserAvatar) { - throw new Meteor.Error('error-not-allowed', 'Change avatar is not allowed', { - method: 'users.setAvatar', - }); - } - - let user = await (async (): Promise | undefined | null> => { - if (isUserFromParams(this.bodyParams, this.userId, this.user)) { - return Users.findOneById(this.userId); - } - if (canEditOtherUserAvatar) { - return getUserFromParams(this.bodyParams); - } - })(); - - if (!user) { - return API.v1.forbidden(); - } - - if (this.bodyParams.avatarUrl) { - await setUserAvatar(user, this.bodyParams.avatarUrl, '', 'url'); - return API.v1.success(); - } - - const image = await getUploadFormData( - { - request: this.request, - }, - { field: 'image', sizeLimit: settings.get('FileUpload_MaxFileSize') }, - ); - - if (!image) { - return API.v1.failure("The 'image' param is required"); - } - - const { fields, fileBuffer, mimetype } = image; - - const sentTheUserByFormData = fields.userId || fields.username; - if (sentTheUserByFormData) { - if (fields.userId) { - user = await Users.findOneById>(fields.userId, { projection: { username: 1 } }); - } else if (fields.username) { - user = await Users.findOneByUsernameIgnoringCase>(fields.username, { - projection: { username: 1 }, - }); - } - - if (!user) { - throw new Meteor.Error('error-invalid-user', 'The optional "userId" or "username" param provided does not match any users'); - } - - const isAnotherUser = this.userId !== user._id; - if (isAnotherUser && !(await hasPermissionAsync(this.userId, 'edit-other-user-avatar'))) { - throw new Meteor.Error('error-not-allowed', 'Not allowed'); - } - } - - await setUserAvatar(user, fileBuffer, mimetype, 'rest'); - - return API.v1.success(); - }, - ) - .post( - 'users.create', - { - authRequired: true, - body: isUserCreateParamsPOST, - response: { - 200: userObjectResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - // New change made by pull request #5152 - if (typeof this.bodyParams.joinDefaultChannels === 'undefined') { - this.bodyParams.joinDefaultChannels = true; - } - - if (this.bodyParams.name && !validateNameChars(this.bodyParams.name)) { - return API.v1.failure('Name contains invalid characters'); - } - - if (this.bodyParams.customFields) { - validateCustomFields(this.bodyParams.customFields); - } - - if (this.bodyParams.freeSwitchExtension && !(await canEditExtension(this.bodyParams.freeSwitchExtension))) { - return API.v1.failure('Setting user voice call extension is not allowed', 'error-action-not-allowed'); - } - - const newUserId = await saveUser(this.userId, this.bodyParams); - const userId = typeof newUserId !== 'string' ? this.userId : newUserId; - - if (this.bodyParams.customFields) { - await saveCustomFieldsWithoutValidation(userId, this.bodyParams.customFields); - } - - if (typeof this.bodyParams.active !== 'undefined') { - await executeSetUserActiveStatus(this.userId, userId, this.bodyParams.active); - } - - const { fields } = await this.parseJsonQuery(); - - const user = await Users.findOneById(userId, { projection: fields }); - if (!user) { - return API.v1.failure('User not found'); - } - - return API.v1.success({ user }); - }, - ); - -API.v1.post( - 'users.delete', - { - authRequired: true, - permissionsRequired: ['delete-user'], - body: ajv.compile<{ userId?: string; username?: string; user?: string; confirmRelinquish?: boolean }>({ - type: 'object', - properties: { - userId: { type: 'string' }, - username: { type: 'string' }, - user: { type: 'string' }, - confirmRelinquish: { type: 'boolean', nullable: true }, - }, - anyOf: [{ required: ['userId'] }, { required: ['username'] }, { required: ['user'] }], - additionalProperties: false, - }), - response: { - 200: ajv.compile<{ deletedRooms: string[] }>({ - type: 'object', - properties: { - deletedRooms: { type: 'array', items: { type: 'string' } }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['deletedRooms', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const user = await getUserFromParams(this.bodyParams); - const { confirmRelinquish = false } = this.bodyParams; - - const { deletedRooms } = await deleteUser(user._id, confirmRelinquish, this.userId); - - return API.v1.success({ deletedRooms }); - }, -); - -API.v1.post( - 'users.deleteOwnAccount', - { - authRequired: true, - body: ajv.compile<{ password: string; confirmRelinquish?: boolean }>({ - type: 'object', - properties: { - password: { type: 'string' }, - confirmRelinquish: { type: 'boolean', nullable: true }, - }, - required: ['password'], - additionalProperties: false, - }), - response: { - 200: ajv.compile({ - type: 'object', - properties: { - success: { type: 'boolean', enum: [true] }, - }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - if (!settings.get('Accounts_AllowDeleteOwnAccount')) { - throw new Meteor.Error('error-not-allowed', 'Not allowed'); - } - - const { confirmRelinquish = false } = this.bodyParams; - - await deleteUserOwnAccount(this.userId, this.bodyParams.password, confirmRelinquish); - - return API.v1.success(); - }, -); - -API.v1.post( - 'users.setActiveStatus', - { - authRequired: true, - body: isUserSetActiveStatusParamsPOST, - permissionsRequired: { - POST: { permissions: ['edit-other-user-active-status', 'manage-moderation-actions'], operation: 'hasAny' }, - }, - response: { - 200: ajv.compile<{ user: Pick }>({ - type: 'object', - properties: { - user: { - type: 'object', - properties: { - _id: { type: 'string' }, - active: { type: 'boolean' }, - }, - required: ['_id', 'active'], - additionalProperties: false, - }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['user', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { userId, activeStatus, confirmRelinquish = false } = this.bodyParams; - await executeSetUserActiveStatus(this.userId, userId, activeStatus, confirmRelinquish); - - const user = await Users.findOneById(this.bodyParams.userId, { projection: { active: 1 } }); - if (!user) { - return API.v1.failure('User not found'); - } - return API.v1.success({ - user, - }); - }, -); - -API.v1.post( - 'users.deactivateIdle', - { - authRequired: true, - body: isUserDeactivateIdleParamsPOST, - permissionsRequired: ['edit-other-user-active-status'], - response: { - 200: ajv.compile<{ count: number }>({ - type: 'object', - properties: { - count: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['count', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { daysIdle, role = 'user' } = this.bodyParams; - - const lastLoggedIn = new Date(); - lastLoggedIn.setDate(lastLoggedIn.getDate() - daysIdle); - - const ids = await Users.findActiveNotLoggedInAfterWithRole(lastLoggedIn, role, { projection: { _id: 1 } }) - .map(({ _id }: { _id: string }) => _id) - .toArray(); - - const { modifiedCount: count } = await Users.setActiveNotLoggedInAfterWithRole(lastLoggedIn, role, false); - - await Promise.all([ - OAuthAccessTokens.deleteByUserIds(ids), - OAuthRefreshTokens.deleteByUserIds(ids), - OAuthAuthCodes.deleteByUserIds(ids), - ]); - - ids.forEach((_id) => { - void notifyOnUserChange({ - clientAction: 'updated', - id: _id, - diff: { 'services.resume.loginTokens': [], 'active': false }, - }); - }); - - return API.v1.success({ - count, - }); - }, -); - -API.v1.get( - 'users.info', - { - authRequired: true, - query: isUsersInfoParamsGetProps, - response: { - // user shape varies by projection, permissions, and includeUserRooms - 200: userObjectResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const searchTerms: [string, 'id' | 'username' | 'importId' | 'email' | 'freeSwitchExtension'] | false = - ('userId' in this.queryParams && !!this.queryParams.userId && [this.queryParams.userId, 'id']) || - ('username' in this.queryParams && !!this.queryParams.username && [this.queryParams.username, 'username']) || - ('importId' in this.queryParams && !!this.queryParams.importId && [this.queryParams.importId, 'importId']) || - ('email' in this.queryParams && !!this.queryParams.email && [this.queryParams.email, 'email']) || - ('freeSwitchExtension' in this.queryParams && - !!this.queryParams.freeSwitchExtension && [this.queryParams.freeSwitchExtension, 'freeSwitchExtension']); - - if (!searchTerms) { - return API.v1.failure('Invalid search query.'); - } - - const user = await getFullUserDataByUniqueSearchTerm(this.userId, ...searchTerms); - - if (!user) { - return API.v1.failure('User not found.'); - } - - const myself = user._id === this.userId; - - if (this.queryParams.includeUserRooms === 'true' && (myself || (await hasPermissionAsync(this.userId, 'view-other-user-channels')))) { - return API.v1.success({ - user: { - ...user, - rooms: await Subscriptions.findByUserId(user._id, { - projection: { - rid: 1, - name: 1, - t: 1, - roles: 1, - unread: 1, - federated: 1, - }, - sort: { - t: 1, - name: 1, - }, - }).toArray(), - }, - }); - } - - return API.v1.success({ - user, - }); - }, -); - -// users.list accepts arbitrary query filter fields (name, username, etc.) -// that cannot be statically defined — keeping as addRoute until params are known -API.v1.addRoute( - 'users.list', - { - authRequired: true, - queryOperations: ['$or', '$and'], - permissionsRequired: ['view-d-room'], - query: isUsersListParamsGET, - }, - { - async get() { - if ( - settings.get('API_Apply_permission_view-outside-room_on_users-list') && - !(await hasPermissionAsync(this.userId, 'view-outside-room')) - ) { - return API.v1.forbidden(); - } - const canViewFullOtherUserInfo = await hasPermissionAsync(this.userId, 'view-full-other-user-info'); - - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - - const nonEmptyFields = getNonEmptyFields(fields); - - const inclusiveFields = getInclusiveFields(nonEmptyFields); - - const inclusiveFieldsKeys = Object.keys(inclusiveFields); - - const nonEmptyQuery = getNonEmptyQuery(query, canViewFullOtherUserInfo); - - if ('email' in this.queryParams && this.queryParams.email) { - if (!canViewFullOtherUserInfo) { - return API.v1.forbidden(); - } - const escapedEmail = escapeRegExp(this.queryParams.email); - nonEmptyQuery['emails.address'] = { - $regex: `^${escapedEmail}$`, - $options: 'i', - }; - } - - // if user provided a query, validate it with their allowed operators - // otherwise we use the default query (with $regex and $options) - if ( - !isValidQuery( - nonEmptyQuery, - [ - ...inclusiveFieldsKeys, - inclusiveFieldsKeys.includes('emails') && 'emails.address.*', - inclusiveFieldsKeys.includes('username') && 'username.*', - inclusiveFieldsKeys.includes('name') && 'name.*', - inclusiveFieldsKeys.includes('type') && 'type.*', - inclusiveFieldsKeys.includes('customFields') && 'customFields.*', - ].filter(Boolean) as string[], - // At this point, we have already validated the user query not containing malicious fields - // On here we are using our own query so we can allow some extra fields - [...this.queryOperations, '$regex', '$options'], - ) - ) { - throw new Meteor.Error('error-invalid-query', isValidQuery.errors.join('\n')); - } - - const actualSort = sort || { username: 1 }; - - if (sort?.status) { - actualSort.active = sort.status; - } - - if (sort?.name) { - actualSort.nameInsensitive = sort.name; - } - - const limit = - count !== 0 - ? [ - { - $limit: count, - }, - ] - : []; - - const result = await Users.col - .aggregate<{ sortedResults: IUser[]; totalCount: { total: number }[] }>([ - { - $match: nonEmptyQuery, - }, - { - $project: inclusiveFields, - }, - { - $addFields: { - nameInsensitive: { - $toLower: '$name', - }, - }, - }, - { - $facet: { - sortedResults: [ - { - $sort: actualSort, - }, - { - $skip: offset, - }, - ...limit, - ], - totalCount: [{ $group: { _id: null, total: { $sum: 1 } } }], - }, - }, - ]) - .toArray(); - - const { - sortedResults: users, - totalCount: [{ total } = { total: 0 }], - } = result[0]; - - return API.v1.success({ - users, - count: users.length, - offset, - total, - }); - }, - }, -); - -API.v1.get( - 'users.listByStatus', - { - authRequired: true, - query: isUsersListStatusProps, - permissionsRequired: ['view-d-room'], - response: { - 200: ajv.compile<{ users: IUser[]; count: number; offset: number; total: number }>({ - type: 'object', - properties: { - // user shape varies by projection and permissions - users: { type: 'array' }, - count: { type: 'number' }, - offset: { type: 'number' }, - total: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['users', 'count', 'offset', 'total', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - if ( - settings.get('API_Apply_permission_view-outside-room_on_users-list') && - !(await hasPermissionAsync(this.userId, 'view-outside-room')) - ) { - return API.v1.forbidden(); - } - - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - const { status, hasLoggedIn, type, roles, searchTerm, inactiveReason } = this.queryParams; - - return API.v1.success( - await findPaginatedUsersByStatus({ - uid: this.userId, - offset, - count, - sort, - status, - roles, - searchTerm, - hasLoggedIn, - type, - inactiveReason, - }), - ); - }, -); - -API.v1.post( - 'users.sendWelcomeEmail', - { - authRequired: true, - body: isUsersSendWelcomeEmailProps, - permissionsRequired: ['send-mail'], - response: { - 200: ajv.compile({ - type: 'object', - properties: { - success: { type: 'boolean', enum: [true] }, - }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { email } = this.bodyParams; - - if (!isSMTPConfigured()) { - throw new MeteorError('error-email-send-failed', 'SMTP is not configured', { - method: 'sendWelcomeEmail', - }); - } - - const user = await Users.findOneByEmailAddress(email.trim(), { projection: { name: 1 } }); - - if (!user) { - throw new MeteorError('error-invalid-user', 'Invalid user', { - method: 'sendWelcomeEmail', - }); - } - - await sendWelcomeEmail({ ...user, email }); - - return API.v1.success(); - }, -); - -API.v1.post( - 'users.register', - { - authRequired: false, - rateLimiterOptions: { - numRequestsAllowed: settings.get('Rate_Limiter_Limit_RegisterUser') ?? 1, - intervalTimeInMS: settings.get('API_Enable_Rate_Limiter_Limit_Time_Default') ?? 60000, - }, - body: isUserRegisterParamsPOST, - response: { - 200: userObjectResponse, - 400: validateBadRequestErrorResponse, - }, - }, - async function action() { - const { secret: secretURL, ...params } = this.bodyParams; - - if (this.userId) { - return API.v1.failure('Logged in users can not register again.'); - } - - if (params.name && !validateNameChars(params.name)) { - return API.v1.failure('Name contains invalid characters'); - } - - if (!validateUsername(this.bodyParams.username)) { - return API.v1.failure(`The username provided is not valid`); - } - - if (!(await checkUsernameAvailability(this.bodyParams.username))) { - return API.v1.failure('Username is already in use'); - } - if (!(await checkEmailAvailability(this.bodyParams.email))) { - return API.v1.failure('Email already exists'); - } - if (this.bodyParams.customFields) { - try { - validateCustomFields(this.bodyParams.customFields); - } catch (e) { - return API.v1.failure(e); - } - } - - // Register the user - const userId = await registerUser({ - ...params, - ...(secretURL && { secretURL }), - }); - - if (typeof userId !== 'string') { - return API.v1.failure('Error creating user'); - } - - // Now set their username - const { fields } = await this.parseJsonQuery(); - await setUsernameWithValidation(userId, this.bodyParams.username); - - const user = await Users.findOneById(userId, { projection: fields }); - if (!user) { - return API.v1.failure('User not found'); - } - - if (this.bodyParams.customFields) { - await saveCustomFields(userId, this.bodyParams.customFields); - } - - return API.v1.success({ user }); - }, -); - -API.v1.post( - 'users.resetAvatar', - { - authRequired: true, - body: ajv.compile<{ userId?: string; username?: string; user?: string }>({ - type: 'object', - properties: { - userId: { type: 'string' }, - username: { type: 'string' }, - user: { type: 'string' }, - }, - additionalProperties: false, - }), - response: { - 200: voidSuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const user = await getUserFromParams(this.bodyParams); - - if (settings.get('Accounts_AllowUserAvatarChange') && user._id === this.userId) { - await resetAvatar(this.userId, this.userId); - } else if ( - (await hasPermissionAsync(this.userId, 'edit-other-user-avatar')) || - (await hasPermissionAsync(this.userId, 'manage-moderation-actions')) - ) { - await resetAvatar(this.userId, user._id); - } else { - throw new Meteor.Error('error-not-allowed', 'Reset avatar is not allowed', { - method: 'users.resetAvatar', - }); - } - - return API.v1.success(); - }, -); - -const usersEndpoints = API.v1 - .post( - 'users.createToken', - { - authRequired: true, - body: ajv.compile<{ userId: string; secret: string }>({ - type: 'object', - properties: { - userId: { - type: 'string', - minLength: 1, - }, - secret: { - type: 'string', - minLength: 1, - }, - }, - required: ['userId', 'secret'], - additionalProperties: false, - }), - response: { - 200: ajv.compile<{ data: { userId: string; authToken: string } }>({ - type: 'object', - properties: { - data: { - type: 'object', - properties: { - userId: { - type: 'string', - minLength: 1, - }, - authToken: { - type: 'string', - minLength: 1, - }, - }, - required: ['userId', 'authToken'], - additionalProperties: false, - }, - success: { - type: 'boolean', - enum: [true], - }, - }, - required: ['data', 'success'], - additionalProperties: false, - }), - 400: ajv.compile({ - type: 'object', - properties: { - success: { type: 'boolean', enum: [false] }, - error: { type: 'string' }, - errorType: { type: 'string' }, - }, - required: ['success'], - additionalProperties: false, - }), - }, - }, - async function action() { - const user = await getUserFromParams(this.bodyParams); - - const data = await generateAccessToken(user._id, this.bodyParams.secret, this.user); - - return API.v1.success({ data }); - }, - ) - .get( - 'users.getAvatarSuggestion', - { - authRequired: true, - response: { - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 200: ajv.compile<{ - suggestions: Record< - string, - { - blob: string; - contentType: string; - service: string; - url: string; - } - >; - }>({ - type: 'object', - properties: { - success: { - type: 'boolean', - enum: [true], - }, - suggestions: { - type: 'object', - additionalProperties: { - type: 'object', - properties: { - blob: { - type: 'string', - }, - contentType: { - type: 'string', - }, - service: { - type: 'string', - }, - url: { - type: 'string', - format: 'uri', - }, - }, - required: ['blob', 'contentType', 'service', 'url'], - additionalProperties: false, - }, - }, - }, - required: ['success', 'suggestions'], - additionalProperties: false, - }), - }, - }, - async function action() { - const suggestions = await getAvatarSuggestionForUser(this.user); - - return API.v1.success({ suggestions }); - }, - ); - -API.v1.get( - 'users.getPreferences', - { - authRequired: true, - response: { - 200: ajv.compile<{ preferences: Record }>({ - type: 'object', - properties: { - // preferences is a dynamic key-value object that varies per user - preferences: { type: 'object' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['preferences', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const user = await Users.findOneById(this.userId); - if (user?.settings) { - const { preferences = {} } = user?.settings; - preferences.language = user?.language; - - return API.v1.success({ - preferences, - }); - } - return API.v1.failure(i18n.t('Accounts_Default_User_Preferences_not_available').toUpperCase()); - }, -); - -API.v1 - .post( - 'users.forgotPassword', - { - authRequired: false, - body: ajv.compile<{ email: string }>({ - type: 'object', - properties: { - email: { type: 'string' }, - }, - required: ['email'], - additionalProperties: false, - }), - response: { - 200: ajv.compile({ - type: 'object', - properties: { - success: { type: 'boolean', enum: [true] }, - }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - }, - }, - async function action() { - const isPasswordResetEnabled = settings.get('Accounts_PasswordReset'); - - if (!isPasswordResetEnabled) { - return API.v1.failure('Password reset is not enabled'); - } - - await sendForgotPasswordEmail(this.bodyParams.email.toLowerCase()); - return API.v1.success(); - }, - ) - .get( - 'users.getUsernameSuggestion', - { - authRequired: true, - userWithoutUsername: true, - response: { - 200: ajv.compile<{ result: string }>({ - type: 'object', - properties: { - result: { type: 'string' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['result', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const result = await generateUsernameSuggestion(this.user); - - if (!result) { - return API.v1.failure('No username suggestion found'); - } - - return API.v1.success({ result }); - }, - ); - -const tokenNameBodySchema = ajv.compile<{ tokenName: string; bypassTwoFactor?: boolean }>({ - type: 'object', - properties: { - tokenName: { type: 'string' }, - bypassTwoFactor: { type: 'boolean', nullable: true }, - }, - required: ['tokenName'], - additionalProperties: false, -}); - -const tokenResponseSchema = ajv.compile<{ token: string }>({ - type: 'object', - properties: { - token: { type: 'string' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['token', 'success'], - additionalProperties: false, -}); - -API.v1 - .get( - 'users.checkUsernameAvailability', - { - authRequired: true, - query: isUsersCheckUsernameAvailabilityParamsGET, - response: { - 200: ajv.compile<{ result: boolean }>({ - type: 'object', - properties: { - result: { type: 'boolean' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['result', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { username } = this.queryParams; - - const result = await checkUsernameAvailabilityWithValidation(this.userId, username); - - return API.v1.success({ result }); - }, - ) - .post( - 'users.generatePersonalAccessToken', - { - authRequired: true, - twoFactorRequired: true, - body: tokenNameBodySchema, - response: { - 200: tokenResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { tokenName, bypassTwoFactor = false } = this.bodyParams; - const token = await generatePersonalAccessTokenOfUser({ tokenName, userId: this.userId, bypassTwoFactor }); - - return API.v1.success({ token }); - }, - ) - .post( - 'users.regeneratePersonalAccessToken', - { - authRequired: true, - twoFactorRequired: true, - body: ajv.compile<{ tokenName: string }>({ - type: 'object', - properties: { - tokenName: { type: 'string' }, - }, - required: ['tokenName'], - additionalProperties: false, - }), - response: { - 200: tokenResponseSchema, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { tokenName } = this.bodyParams; - const token = await regeneratePersonalAccessTokenOfUser(tokenName, this.userId); - - return API.v1.success({ token }); - }, - ) - .get( - 'users.getPersonalAccessTokens', - { - authRequired: true, - permissionsRequired: ['create-personal-access-tokens'], - response: { - 200: ajv.compile<{ tokens: { name: string; createdAt: string; lastTokenPart: string; bypassTwoFactor: boolean }[] }>({ - type: 'object', - properties: { - tokens: { - type: 'array', - items: { - type: 'object', - properties: { - name: { type: 'string' }, - createdAt: { type: 'string' }, - lastTokenPart: { type: 'string' }, - bypassTwoFactor: { type: 'boolean' }, - }, - required: ['name', 'createdAt', 'lastTokenPart', 'bypassTwoFactor'], - additionalProperties: false, - }, - }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['tokens', 'success'], - additionalProperties: false, - }), - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const user = (await Users.getLoginTokensByUserId(this.userId).toArray())[0] as unknown as IUser | undefined; - - const isPersonalAccessToken = (loginToken: ILoginToken | IPersonalAccessToken): loginToken is IPersonalAccessToken => - 'type' in loginToken && loginToken.type === 'personalAccessToken'; - - return API.v1.success({ - tokens: - user?.services?.resume?.loginTokens?.filter(isPersonalAccessToken).map((loginToken) => ({ - name: loginToken.name, - createdAt: loginToken.createdAt.toISOString(), - lastTokenPart: loginToken.lastTokenPart, - bypassTwoFactor: Boolean(loginToken.bypassTwoFactor), - })) || [], - }); - }, - ) - .post( - 'users.removePersonalAccessToken', - { - authRequired: true, - twoFactorRequired: true, - body: ajv.compile<{ tokenName: string }>({ - type: 'object', - properties: { - tokenName: { type: 'string' }, - }, - required: ['tokenName'], - additionalProperties: false, - }), - response: { - 200: voidSuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - await removePersonalAccessTokenOfUser(this.bodyParams.tokenName, this.userId); - - return API.v1.success(); - }, - ); - -API.v1 - .post( - 'users.2fa.enableEmail', - { - authRequired: true, - response: { - 200: voidSuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const hasUnverifiedEmail = this.user.emails?.some((email) => !email.verified); - if (hasUnverifiedEmail) { - throw new MeteorError('error-invalid-user', 'You need to verify your emails before setting up 2FA'); - } - - await Users.enableEmail2FAByUserId(this.userId); - - // When 2FA is enable we logout all other clients - const xAuthToken = this.request.headers.get('x-auth-token') as string; - if (!xAuthToken) { - return API.v1.success(); - } - - const hashedToken = Accounts._hashLoginToken(xAuthToken); - - if (!(await Users.removeNonPATLoginTokensExcept(this.userId, hashedToken))) { - throw new MeteorError('error-logging-out-other-clients', 'Error logging out other clients'); - } - - // TODO this can be optmized so places that care about loginTokens being removed are invoked directly - // instead of having to listen to every watch.users event - void notifyOnUserChangeAsync(async () => { - const user = await Users.findOneById(this.userId, { projection: { 'services.resume.loginTokens': 1, 'services.email2fa': 1 } }); - if (!user) { - return; - } - - return { - clientAction: 'updated', - id: this.user._id, - diff: { 'services.resume.loginTokens': user.services?.resume?.loginTokens, 'services.email2fa': user.services?.email2fa }, - }; - }); - - return API.v1.success(); - }, - ) - .post( - 'users.2fa.disableEmail', - { - authRequired: true, - twoFactorRequired: true, - twoFactorOptions: { disableRememberMe: true }, - response: { - 200: voidSuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - await Users.disableEmail2FAByUserId(this.userId); - - void notifyOnUserChangeAsync(async () => { - const user = await Users.findOneById(this.userId, { projection: { 'services.email2fa': 1 } }); - if (!user) { - return; - } - - return { - clientAction: 'updated', - id: this.user._id, - diff: { 'services.email2fa': user.services?.email2fa }, - }; - }); - - return API.v1.success(); - }, - ) - .post( - 'users.2fa.sendEmailCode', - { - body: ajv.compile<{ emailOrUsername: string }>({ - type: 'object', - properties: { - emailOrUsername: { type: 'string' }, - }, - required: ['emailOrUsername'], - additionalProperties: false, - }), - response: { - 200: voidSuccessResponse, - 400: validateBadRequestErrorResponse, - }, - }, - async function action() { - const { emailOrUsername } = this.bodyParams; - - const method = emailOrUsername.includes('@') ? 'findOneByEmailAddress' : 'findOneByUsername'; - const userId = this.userId || (await Users[method](emailOrUsername, { projection: { _id: 1 } }))?._id; - - if (!userId) { - // this.logger.error('[2fa] User was not found when requesting 2fa email code'); - return API.v1.success(); - } - const user = await getUserForCheck(userId); - if (!user) { - // this.logger.error('[2fa] User was not found when requesting 2fa email code'); - return API.v1.success(); - } - - await emailCheck.sendEmailCode(user); - - return API.v1.success(); - }, - ); - -API.v1.post( - 'users.sendConfirmationEmail', - { - authRequired: false, - body: isUsersSendConfirmationEmailParamsPOST, - rateLimiterOptions: { - numRequestsAllowed: 1, - intervalTimeInMS: 60000, - }, - response: { - 200: voidSuccessResponse, - 400: validateBadRequestErrorResponse, - }, - }, - async function action() { - void sendConfirmationEmail(this.bodyParams.email).catch((err) => SystemLogger.error({ msg: 'sendConfirmationEmail failed', err })); - return API.v1.success(); - }, -); - -API.v1.get( - 'users.presence', - { - authRequired: true, - query: isUsersPresenceParamsGET, - response: { - 200: ajv.compile<{ users: object[]; full: boolean }>({ - type: 'object', - properties: { - // user shape varies by projection and permissions - users: { type: 'array' }, - full: { type: 'boolean' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['users', 'full', 'success'], - additionalProperties: false, - }), - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - // if presence broadcast is disabled, return an empty array (all users are "offline") - if (settings.get('Presence_broadcast_disabled')) { - return API.v1.success({ - users: [], - full: true, - }); - } - - const { from, ids } = this.queryParams; - - const options = { - projection: { - username: 1, - name: 1, - status: 1, - utcOffset: 1, - statusText: 1, - statusSource: 1, - statusExpiresAt: 1, - avatarETag: 1, - }, - }; - - if (ids) { - return API.v1.success({ - users: await Users.findPresenceUsersByIds(Array.isArray(ids) ? ids : ids.split(','), options).toArray(), - full: false, - }); - } - - if (from) { - const ts = new Date(from); - const diff = (Date.now() - Number(ts)) / 1000 / 60; - - if (diff < 10) { - return API.v1.success({ - users: await Users.findNotIdUpdatedFrom(this.userId, ts, options).toArray(), - full: false, - }); - } - } - - return API.v1.success({ - users: await Users.findUsersNotOffline(options).toArray(), - full: true, - }); - }, -); - -API.v1 - .get( - 'users.requestDataDownload', - { - authRequired: true, - query: isUsersRequestDataDownloadParamsGET, - response: { - 200: ajv.compile<{ - requested: boolean; - exportOperation: IExportOperation; - url: string | null; - pendingOperationsBeforeMyRequest: number; - }>({ - type: 'object', - properties: { - requested: { type: 'boolean' }, - // IExportOperation has complex/dynamic shape not yet in typia - exportOperation: { type: 'object' }, - url: { type: 'string', nullable: true }, - pendingOperationsBeforeMyRequest: { type: 'number' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['requested', 'exportOperation', 'pendingOperationsBeforeMyRequest', 'success'], - additionalProperties: false, - }), - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { fullExport = false } = this.queryParams; - const result = await requestDataDownload({ userData: this.user, fullExport: fullExport === 'true' }); - - return API.v1.success({ - requested: Boolean(result.requested), - exportOperation: result.exportOperation, - url: result.url, - pendingOperationsBeforeMyRequest: result.pendingOperationsBeforeMyRequest, - }); - }, - ) - .post( - 'users.logoutOtherClients', - { - authRequired: true, - response: { - 200: ajv.compile<{ token: string; tokenExpires: string }>({ - type: 'object', - properties: { - token: { type: 'string' }, - tokenExpires: { type: 'string' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['token', 'tokenExpires', 'success'], - additionalProperties: false, - }), - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const xAuthToken = this.request.headers.get('x-auth-token') as string; - - if (!xAuthToken) { - throw new Meteor.Error('error-parameter-required', 'x-auth-token is required'); - } - const hashedToken = Accounts._hashLoginToken(xAuthToken); - - if (!(await Users.removeNonPATLoginTokensExcept(this.userId, hashedToken))) { - throw new Meteor.Error('error-invalid-user-id', 'Invalid user id'); - } - - const me = (await Users.findOneById(this.userId, { projection: { 'services.resume.loginTokens': 1 } })) as Pick; - - void notifyOnUserChange({ - clientAction: 'updated', - id: this.userId, - diff: { 'services.resume.loginTokens': me.services?.resume?.loginTokens }, - }); - - const token = me.services?.resume?.loginTokens?.find((token) => token.hashedToken === hashedToken); - - const loginExp = settings.get('Accounts_LoginExpiration'); - - const tokenExpires = (token && 'when' in token && new Date(token.when.getTime() + getLoginExpirationInMs(loginExp))) || undefined; - - return API.v1.success({ - token: xAuthToken, - tokenExpires: tokenExpires?.toISOString() || '', - }); - }, - ); - -API.v1.get( - 'users.autocomplete', - { - authRequired: true, - query: isUsersAutocompleteProps, - response: { - 200: ajv.compile<{ items: object[] }>({ - type: 'object', - properties: { - // autocomplete items shape varies by permissions - items: { type: 'array' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['items', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { selector: selectorRaw } = this.queryParams; - - const selector: { exceptions: Required['username'][]; conditions: Filter; term: string } = JSON.parse(selectorRaw); - - try { - if (selector?.conditions) { - const canViewFullInfo = await hasPermissionAsync(this.userId, 'view-full-other-user-info'); - const allowedFields = canViewFullInfo ? [...Object.keys(defaultFields), ...Object.keys(fullFields)] : Object.keys(defaultFields); - - if (!isValidQuery(selector.conditions, allowedFields, ['$and', '$ne', '$exists'])) { - throw new Error('error-invalid-query'); - } - } - } catch (e) { - return API.v1.failure(e); - } - - return API.v1.success( - await findUsersToAutocomplete({ - uid: this.userId, - selector, - }), - ); - }, -); - -API.v1 - .post( - 'users.removeOtherTokens', - { - authRequired: true, - response: { - 200: voidSuccessResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - await Users.removeNonLoginTokensExcept(this.userId, this.token); - return API.v1.success(); - }, - ) - .post( - 'users.resetE2EKey', - { - authRequired: true, - twoFactorRequired: true, - twoFactorOptions: { disableRememberMe: true }, - body: ajv.compile<{ userId?: string; username?: string; user?: string }>({ - type: 'object', - properties: { - userId: { type: 'string' }, - username: { type: 'string' }, - user: { type: 'string' }, - }, - additionalProperties: false, - }), - response: { - 200: voidSuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - if ('userId' in this.bodyParams || 'username' in this.bodyParams || 'user' in this.bodyParams) { - const user = await getUserFromParams(this.bodyParams); - if (!user) { - throw new Meteor.Error('error-invalid-user-id', 'Invalid user id'); - } - - if (!(await hasPermissionAsync(this.userId, 'edit-other-user-e2ee'))) { - throw new Meteor.Error('error-not-allowed', 'Not allowed'); - } - - if (!(await resetUserE2EEncriptionKey(user._id, true))) { - return API.v1.failure(); - } - - return API.v1.success(); - } - await resetUserE2EEncriptionKey(this.userId, false); - return API.v1.success(); - }, - ) - .post( - 'users.resetTOTP', - { - authRequired: true, - twoFactorRequired: true, - twoFactorOptions: { disableRememberMe: true }, - body: ajv.compile<{ userId?: string; username?: string; user?: string }>({ - type: 'object', - properties: { - userId: { type: 'string' }, - username: { type: 'string' }, - user: { type: 'string' }, - }, - additionalProperties: false, - }), - response: { - 200: voidSuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - if ('userId' in this.bodyParams || 'username' in this.bodyParams || 'user' in this.bodyParams) { - if (!(await hasPermissionAsync(this.userId, 'edit-other-user-totp'))) { - throw new Meteor.Error('error-not-allowed', 'Not allowed'); - } - - if (!settings.get('Accounts_TwoFactorAuthentication_Enabled')) { - throw new Meteor.Error('error-two-factor-not-enabled', 'Two factor authentication is not enabled'); - } - - const user = await getUserFromParams(this.bodyParams); - if (!user) { - throw new Meteor.Error('error-invalid-user-id', 'Invalid user id'); - } - - await resetTOTP(user._id, true); - - return API.v1.success(); - } - await resetTOTP(this.userId, false); - return API.v1.success(); - }, - ); - -API.v1 - .get( - 'users.listTeams', - { - authRequired: true, - query: isUsersListTeamsProps, - response: { - 200: ajv.compile<{ teams: unknown[] }>({ - type: 'object', - properties: { - teams: { type: 'array' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['teams', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - check( - this.queryParams, - Match.ObjectIncluding({ - userId: Match.Maybe(String), - }), - ); - - const { userId } = this.queryParams; - - // If the caller has permission to view all teams, there's no need to filter the teams - const adminId = (await hasPermissionAsync(this.userId, 'view-all-teams')) ? undefined : this.userId; - - const teams = await Team.findBySubscribedUserIds(userId, adminId); - - return API.v1.success({ - teams, - }); - }, - ) - .post( - 'users.logout', - { - authRequired: true, - body: isUserLogoutParamsPOST, - response: { - 200: ajv.compile<{ message: string }>({ - type: 'object', - properties: { - message: { type: 'string' }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['message', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - const userId = this.bodyParams.userId || this.userId; - - if (userId !== this.userId && !(await hasPermissionAsync(this.userId, 'logout-other-user'))) { - return API.v1.forbidden(); - } - - // this method logs the user out automatically, if successful returns 1, otherwise 0 - if (!(await Users.unsetLoginTokens(userId))) { - throw new Meteor.Error('error-invalid-user-id', 'Invalid user id'); - } - - await Sessions.logoutAllByUserId(userId, this.userId); - - void notifyOnUserChange({ clientAction: 'updated', id: userId, diff: { 'services.resume.loginTokens': [] } }); - - return API.v1.success({ - message: `User ${userId} has been logged out!`, - }); - }, - ); - -const statusType = { type: 'string', enum: ['online', 'offline', 'away', 'busy'] } as const; - -API.v1 - .get( - 'users.getPresence', - { - authRequired: true, - query: isUsersGetPresenceParamsGET, - response: { - 200: ajv.compile<{ presence: UserStatus; connectionStatus?: string; lastLogin?: Date }>({ - type: 'object', - properties: { - presence: statusType, - connectionStatus: { type: 'string', nullable: true }, - lastLogin: { type: 'string', nullable: true }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['presence', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - if (isUserFromParams(this.queryParams, this.userId, this.user)) { - const user = await Users.findOneById(this.userId); - return API.v1.success({ - presence: (user?.status || 'offline') as UserStatus, - connectionStatus: user?.statusConnection || 'offline', - ...(user?.lastLogin && { lastLogin: user?.lastLogin }), - }); - } - - const user = await getUserFromParams(this.queryParams); - - return API.v1.success({ - presence: user.status || ('offline' as UserStatus), - }); - }, - ) - .post( - 'users.setStatus', - { - authRequired: true, - rateLimiterOptions: { - numRequestsAllowed: 5, - intervalTimeInMS: 60000, - }, - body: ajv.compile<{ - status?: Exclude; - message?: string; - expiresAt?: string; - userId?: string; - username?: string; - user?: string; - }>({ - type: 'object', - properties: { - status: { type: 'string', enum: ['online', 'away', 'offline', 'busy'] }, - message: { type: 'string', nullable: true }, - expiresAt: { type: 'string', nullable: true }, - userId: { type: 'string' }, - username: { type: 'string' }, - user: { type: 'string' }, - }, - additionalProperties: false, - }), - response: { - 200: voidSuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - }, - async function action() { - check( - this.bodyParams, - Match.OneOf( - Match.ObjectIncluding({ - status: Match.Maybe(String), - message: String, - }), - Match.ObjectIncluding({ - status: String, - message: Match.Maybe(String), - }), - ), - ); - - const user = await (async () => { - if (isUserFromParams(this.bodyParams, this.userId, this.user)) { - return Users.findOneById(this.userId); - } - if (await hasPermissionAsync(this.userId, 'edit-other-user-info')) { - return getUserFromParams(this.bodyParams); - } - })(); - - if (!user) { - return API.v1.forbidden(); - } - - const { status, message, expiresAt } = this.bodyParams; - - if (message && !settings.get('Accounts_AllowUserStatusMessageChange')) { - throw new Meteor.Error('error-not-allowed', 'Change status is not allowed', { - method: 'users.setStatus', - }); - } - - const statusExpiresAt = expiresAt ? new Date(expiresAt) : undefined; - if (statusExpiresAt && Number.isNaN(statusExpiresAt.getTime())) { - throw new Meteor.Error('error-invalid-date', 'Invalid expiresAt date string', { - method: 'users.setStatus', - }); - } - - if (statusExpiresAt && statusExpiresAt.getTime() <= Date.now()) { - throw new Meteor.Error('error-invalid-date', 'expiresAt must be a future date', { - method: 'users.setStatus', - }); - } - - // If status is missing (message-only update), keep the user's chosen status (statusDefault), - // not the computed status — otherwise a transient auto-away/offline gets pinned as a manual claim. - const effectiveStatus = status || user.statusDefault || ('online' as UserStatus); - - if (effectiveStatus === 'offline' && !settings.get('Accounts_AllowInvisibleStatusOption')) { - throw new Meteor.Error('error-status-not-allowed', 'Invisible status is disabled', { - method: 'users.setStatus', - }); - } - - await Presence.setStatus(user._id, effectiveStatus, message, statusExpiresAt); - - return API.v1.success(); - }, - ) - .get( - 'users.getStatus', - { - authRequired: true, - query: isUsersGetStatusParamsGET, - response: { - 200: ajv.compile<{ _id: string; status: string; connectionStatus?: string; statusSource?: string; statusExpiresAt?: string }>({ - type: 'object', - properties: { - _id: { type: 'string' }, - status: statusType, - connectionStatus: { type: 'string', nullable: true }, - statusSource: { type: 'string', nullable: true }, - statusExpiresAt: { type: 'string', nullable: true }, - success: { type: 'boolean', enum: [true] }, - }, - required: ['_id', 'status', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - if (isUserFromParams(this.queryParams, this.userId, this.user)) { - return API.v1.success({ - _id: this.userId, - connectionStatus: (this.user.statusConnection || 'offline') as 'online' | 'offline' | 'away' | 'busy', - status: (this.user.status || 'offline') as 'online' | 'offline' | 'away' | 'busy', - ...(this.user.statusSource && { statusSource: this.user.statusSource }), - ...(this.user.statusExpiresAt && { statusExpiresAt: this.user.statusExpiresAt.toISOString() }), - }); - } - - const user = await getUserFromParams(this.queryParams); - - return API.v1.success({ - _id: user._id, - status: (user.status || 'offline') as 'online' | 'offline' | 'away' | 'busy', - ...(user.statusSource && { statusSource: user.statusSource }), - ...(user.statusExpiresAt && { statusExpiresAt: user.statusExpiresAt.toISOString() }), - }); - }, - ); - -settings.watch('Rate_Limiter_Limit_RegisterUser', (value) => { - const userRegisterRoute = '/api/v1/users.registerpost'; - - API.v1.updateRateLimiterDictionaryForRoute(userRegisterRoute, value); -}); - -type UsersEndpoints = ExtractRoutesFromAPI; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends UsersEndpoints {} -} diff --git a/apps/meteor/app/api/server/v1/webdav.ts b/apps/meteor/app/api/server/v1/webdav.ts deleted file mode 100644 index 0a7fedf500bcd..0000000000000 --- a/apps/meteor/app/api/server/v1/webdav.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { IWebdavAccount, IWebdavAccountIntegration } from '@rocket.chat/core-typings'; -import { WebdavAccounts } from '@rocket.chat/models'; -import { ajv, validateUnauthorizedErrorResponse, validateBadRequestErrorResponse } from '@rocket.chat/rest-typings'; -import type { DeleteResult } from 'mongodb'; - -import type { ExtractRoutesFromAPI } from '../ApiClass'; -import { API } from '../api'; -import { findWebdavAccountsByUserId } from '../lib/webdav'; - -const webdavGetMyAccountsEndpoints = API.v1.get( - 'webdav.getMyAccounts', - { - authRequired: true, - response: { - 200: ajv.compile<{ - accounts: IWebdavAccountIntegration[]; - }>({ - type: 'object', - properties: { - accounts: { - type: 'array', - items: { - type: 'object', - properties: { - _id: { - type: 'string', - }, - serverURL: { - type: 'string', - }, - username: { - type: 'string', - }, - name: { - type: 'string', - }, - }, - required: ['_id', 'serverURL', 'username', 'name'], - additionalProperties: false, - }, - }, - success: { - type: 'boolean', - description: 'Indicates if the request was successful.', - }, - }, - required: ['success', 'accounts'], - additionalProperties: false, - }), - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - return API.v1.success({ - accounts: await findWebdavAccountsByUserId({ uid: this.userId }), - }); - }, -); - -type POSTRemoveWebdavAccount = { - accountId: IWebdavAccount['_id']; -}; - -const POSTRemoveWebdavAccountSchema = { - type: 'object', - properties: { - accountId: { - type: 'string', - }, - }, - required: ['accountId'], - additionalProperties: false, -}; - -const isPOSTRemoveWebdavAccount = ajv.compile(POSTRemoveWebdavAccountSchema); - -const webdavRemoveAccountEndpoints = API.v1.post( - 'webdav.removeWebdavAccount', - { - authRequired: true, - validateParams: isPOSTRemoveWebdavAccount, - body: isPOSTRemoveWebdavAccount, - response: { - 200: ajv.compile<{ - result: DeleteResult; - }>({ - type: 'object', - properties: { - result: { - type: 'object', - properties: { - acknowledged: { - type: 'boolean', - }, - deletedCount: { - type: 'integer', - }, - }, - required: ['acknowledged', 'deletedCount'], - additionalProperties: false, - }, - success: { - type: 'boolean', - description: 'Indicates if the request was successful.', - }, - }, - required: ['result', 'success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - }, - async function action() { - const { accountId } = this.bodyParams; - - const removed = await WebdavAccounts.removeByUserAndId(accountId, this.userId); - if (removed) { - void api.broadcast('notify.webdav', this.userId, { - type: 'removed', - account: { _id: accountId }, - }); - } - - return API.v1.success({ result: removed }); - }, -); - -type WebdavGetMyAccountsEndpoints = ExtractRoutesFromAPI; - -type WebdavRemoveAccountEndpoints = ExtractRoutesFromAPI; - -export type WebdavEndpoints = WebdavGetMyAccountsEndpoints | WebdavRemoveAccountEndpoints; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends WebdavGetMyAccountsEndpoints {} - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends WebdavRemoveAccountEndpoints {} -} diff --git a/apps/meteor/app/apple/server/index.ts b/apps/meteor/app/apple/server/index.ts deleted file mode 100644 index 5643ad67a54e2..0000000000000 --- a/apps/meteor/app/apple/server/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import './appleOauthRegisterService'; -import './loginHandler'; diff --git a/apps/meteor/app/apple/server/loginHandler.spec.ts b/apps/meteor/app/apple/server/loginHandler.spec.ts deleted file mode 100644 index ffa50a952d4cf..0000000000000 --- a/apps/meteor/app/apple/server/loginHandler.spec.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { Accounts } from 'meteor/accounts-base'; - -import { settings } from '../../settings/server'; -import { handleIdentityToken } from '../lib/handleIdentityToken'; - -jest.mock( - 'meteor/accounts-base', - () => ({ - Accounts: { - registerLoginHandler: jest.fn(), - updateOrCreateUserFromExternalService: jest.fn(), - LoginCancelledError: { numericError: 400 }, - }, - }), - { virtual: true }, -); - -jest.mock( - 'meteor/meteor', - () => ({ - Meteor: { - Error: class extends Error { - constructor( - public error: number, - public reason: string, - ) { - super(reason); - } - }, - }, - }), - { virtual: true }, -); - -jest.mock('../../settings/server', () => ({ - settings: { - get: jest.fn(), - }, -})); - -jest.mock('../lib/handleIdentityToken', () => ({ - handleIdentityToken: jest.fn(), -})); - -describe('Apple OAuth loginHandler', () => { - let loginHandlerCallback: Parameters[1]; - - beforeAll(() => { - // eslint-disable-next-line @typescript-eslint/no-require-imports - require('./loginHandler'); - loginHandlerCallback = jest.mocked(Accounts.registerLoginHandler).mock.calls[0][1]; - }); - - beforeEach(() => { - jest.clearAllMocks(); - jest.mocked(settings.get).mockImplementation((key) => { - if (key === 'Accounts_OAuth_Apple') return true; - if (key === 'Accounts_OAuth_Apple_id') return 'com.yourcompany.app'; - return null; - }); - }); - - it('should not use the client-provided email if Apple does not provide one', async () => { - jest.mocked(handleIdentityToken).mockResolvedValue({ - id: 'apple-sub-123', - }); - - const maliciousLoginRequest = { - identityToken: 'valid.token.without_email', - email: 'alice@email.tld', - fullName: { givenName: 'Alice', familyName: 'Sender' }, - }; - - jest.mocked(Accounts.updateOrCreateUserFromExternalService).mockResolvedValue({ userId: 'new-user-id' }); - - await loginHandlerCallback(maliciousLoginRequest); - - expect(Accounts.updateOrCreateUserFromExternalService).toHaveBeenCalledWith( - 'apple', - { id: 'apple-sub-123' }, - { profile: { name: 'Alice Sender' } }, - ); - }); - - it('should successfully pass the email if Apple natively provides it in the signed JWT', async () => { - jest.mocked(handleIdentityToken).mockResolvedValue({ - id: 'apple-sub-123', - email: 'legit@email.tld', - }); - - const legitLoginRequest = { - identityToken: 'valid.token.with_email', - fullName: { givenName: 'John', familyName: 'Doe' }, - }; - - jest.mocked(Accounts.updateOrCreateUserFromExternalService).mockResolvedValue({ userId: 'user-id' }); - - await loginHandlerCallback(legitLoginRequest); - - expect(Accounts.updateOrCreateUserFromExternalService).toHaveBeenCalledWith( - 'apple', - { id: 'apple-sub-123', email: 'legit@email.tld' }, - { profile: { name: 'John Doe' } }, - ); - }); - - it('should pass empty client id to token validation when setting is not configured', async () => { - jest.mocked(settings.get).mockImplementation((key) => { - if (key === 'Accounts_OAuth_Apple') return true; - if (key === 'Accounts_OAuth_Apple_id') return ''; - return null; - }); - - jest.mocked(handleIdentityToken).mockResolvedValue({ id: 'apple-sub-123' }); - jest.mocked(Accounts.updateOrCreateUserFromExternalService).mockResolvedValue({ userId: 'user-id' }); - - await loginHandlerCallback({ - identityToken: 'valid.token.with_mobile_default_audience', - fullName: { givenName: 'Mobile', familyName: 'User' }, - }); - - expect(handleIdentityToken).toHaveBeenCalledWith('valid.token.with_mobile_default_audience', ''); - }); -}); diff --git a/apps/meteor/app/apple/server/loginHandler.ts b/apps/meteor/app/apple/server/loginHandler.ts deleted file mode 100644 index 96ccd53323b32..0000000000000 --- a/apps/meteor/app/apple/server/loginHandler.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Accounts } from 'meteor/accounts-base'; -import { Meteor } from 'meteor/meteor'; - -import { settings } from '../../settings/server'; -import { handleIdentityToken } from '../lib/handleIdentityToken'; - -Accounts.registerLoginHandler('apple', async (loginRequest) => { - if (!loginRequest.identityToken) { - return; - } - - if (!settings.get('Accounts_OAuth_Apple')) { - return; - } - - const { identityToken, fullName } = loginRequest; - - try { - const clientId = settings.get('Accounts_OAuth_Apple_id') || ''; - - const serviceData = await handleIdentityToken(identityToken, clientId); - - const profile: { name?: string } = {}; - - const { givenName, familyName } = fullName || {}; - if (givenName && familyName) { - profile.name = `${givenName} ${familyName}`; - } - - const result = await Accounts.updateOrCreateUserFromExternalService('apple', serviceData, { profile }); - - if (result?.userId === undefined) { - return { - type: 'apple', - error: new Meteor.Error(Accounts.LoginCancelledError.numericError, 'User creation failed from Apple response token'), - }; - } - - return result; - } catch (error: any) { - return { - type: 'apple', - error: new Meteor.Error(Accounts.LoginCancelledError.numericError, error.message), - }; - } -}); diff --git a/apps/meteor/app/apps/server/bridges/api.ts b/apps/meteor/app/apps/server/bridges/api.ts index 4e117855615ed..6323aa3c2ae19 100644 --- a/apps/meteor/app/apps/server/bridges/api.ts +++ b/apps/meteor/app/apps/server/bridges/api.ts @@ -9,7 +9,7 @@ import { Meteor } from 'meteor/meteor'; import { WebApp } from 'meteor/webapp'; import { apiServer } from './router'; -import { authenticationMiddleware } from '../../../api/server/middlewares/authentication'; +import { authenticationMiddleware } from '../../../../server/api/v1/middlewares/authentication'; WebApp.rawConnectHandlers.use(apiServer); diff --git a/apps/meteor/app/apps/server/bridges/cloud.ts b/apps/meteor/app/apps/server/bridges/cloud.ts index 83d9f98311c1b..e3f108e0c7e8c 100644 --- a/apps/meteor/app/apps/server/bridges/cloud.ts +++ b/apps/meteor/app/apps/server/bridges/cloud.ts @@ -2,7 +2,7 @@ import type { IAppServerOrchestrator } from '@rocket.chat/apps'; import { CloudWorkspaceBridge } from '@rocket.chat/apps/dist/server/bridges/CloudWorkspaceBridge'; import type { IWorkspaceToken } from '@rocket.chat/apps-engine/definition/cloud/IWorkspaceToken'; -import { getWorkspaceAccessTokenWithScope } from '../../../cloud/server'; +import { getWorkspaceAccessTokenWithScope } from '../../../../server/lib/cloud'; export class AppCloudBridge extends CloudWorkspaceBridge { constructor(private readonly orch: IAppServerOrchestrator) { diff --git a/apps/meteor/app/apps/server/bridges/commands.ts b/apps/meteor/app/apps/server/bridges/commands.ts index 36eaaed5f047d..b53d7ebfd1195 100644 --- a/apps/meteor/app/apps/server/bridges/commands.ts +++ b/apps/meteor/app/apps/server/bridges/commands.ts @@ -6,7 +6,7 @@ import type { IMessage, RequiredField, SlashCommand, SlashCommandCallbackParams import { Utilities } from '../../../../ee/lib/misc/Utilities'; import { parseParameters } from '../../../../lib/utils/parseParameters'; -import { slashCommands } from '../../../utils/server/slashCommand'; +import { slashCommands } from '../../../../server/lib/utils/slashCommand'; export class AppCommandsBridge extends CommandBridge { disabledCommands: Map; diff --git a/apps/meteor/app/apps/server/bridges/contact.ts b/apps/meteor/app/apps/server/bridges/contact.ts index fa00a839c6a4e..b8705e83b9a37 100644 --- a/apps/meteor/app/apps/server/bridges/contact.ts +++ b/apps/meteor/app/apps/server/bridges/contact.ts @@ -2,8 +2,8 @@ import type { IAppServerOrchestrator } from '@rocket.chat/apps'; import { ContactBridge } from '@rocket.chat/apps/dist/server/bridges/ContactBridge'; import type { ILivechatContact } from '@rocket.chat/apps-engine/definition/livechat'; -import { addContactEmail } from '../../../livechat/server/lib/contacts/addContactEmail'; -import { verifyContactChannel } from '../../../livechat/server/lib/contacts/verifyContactChannel'; +import { addContactEmail } from '../../../../server/lib/omnichannel/contacts/addContactEmail'; +import { verifyContactChannel } from '../../../../server/lib/omnichannel/contacts/verifyContactChannel'; export class AppContactBridge extends ContactBridge { constructor(private readonly orch: IAppServerOrchestrator) { diff --git a/apps/meteor/app/apps/server/bridges/email.ts b/apps/meteor/app/apps/server/bridges/email.ts index 8f984b7bb6ce2..8a5d7a97d55f9 100644 --- a/apps/meteor/app/apps/server/bridges/email.ts +++ b/apps/meteor/app/apps/server/bridges/email.ts @@ -2,8 +2,8 @@ import type { IAppServerOrchestrator } from '@rocket.chat/apps'; import { EmailBridge } from '@rocket.chat/apps/dist/server/bridges/EmailBridge'; import type { IEmail } from '@rocket.chat/apps-engine/definition/email'; -import * as Mailer from '../../../mailer/server/api'; -import { settings } from '../../../settings/server'; +import * as Mailer from '../../../../server/lib/notifications/email/api'; +import { settings } from '../../../../server/settings'; export class AppEmailBridge extends EmailBridge { constructor(private readonly orch: IAppServerOrchestrator) { diff --git a/apps/meteor/app/apps/server/bridges/http.ts b/apps/meteor/app/apps/server/bridges/http.ts index f3bb6c502a426..4ecbcbbcb3ca3 100644 --- a/apps/meteor/app/apps/server/bridges/http.ts +++ b/apps/meteor/app/apps/server/bridges/http.ts @@ -5,7 +5,7 @@ import type { IHttpResponse } from '@rocket.chat/apps-engine/definition/accessor import { serverFetch as fetch, type ExtendedFetchOptions } from '@rocket.chat/server-fetch'; import { censorUrl } from '@rocket.chat/tools'; -import { settings } from '../../../settings/server'; +import { settings } from '../../../../server/settings'; const isGetOrHead = (method: string): boolean => ['GET', 'HEAD'].includes(method.toUpperCase()); diff --git a/apps/meteor/app/apps/server/bridges/livechat.ts b/apps/meteor/app/apps/server/bridges/livechat.ts index 81a6d8551f82e..2a397e502b9ad 100644 --- a/apps/meteor/app/apps/server/bridges/livechat.ts +++ b/apps/meteor/app/apps/server/bridges/livechat.ts @@ -18,16 +18,16 @@ import { registerGuest } from '@rocket.chat/omni-core'; import { deasyncPromise } from '../../../../server/deasync/deasync'; import { callbacks } from '../../../../server/lib/callbacks'; -import { closeRoom } from '../../../livechat/server/lib/closeRoom'; -import { setCustomFields } from '../../../livechat/server/lib/custom-fields'; -import { getRoomMessages } from '../../../livechat/server/lib/getRoomMessages'; -import type { ILivechatMessage } from '../../../livechat/server/lib/localTypes'; -import { updateMessage, sendMessage } from '../../../livechat/server/lib/messages'; -import { resolveVisitor } from '../../../livechat/server/lib/resolveVisitor'; -import { createRoom } from '../../../livechat/server/lib/rooms'; -import { online } from '../../../livechat/server/lib/service-status'; -import { transfer } from '../../../livechat/server/lib/transfer'; -import { settings } from '../../../settings/server'; +import { closeRoom } from '../../../../server/lib/omnichannel/closeRoom'; +import { setCustomFields } from '../../../../server/lib/omnichannel/custom-fields'; +import { getRoomMessages } from '../../../../server/lib/omnichannel/getRoomMessages'; +import type { ILivechatMessage } from '../../../../server/lib/omnichannel/localTypes'; +import { updateMessage, sendMessage } from '../../../../server/lib/omnichannel/messages'; +import { resolveVisitor } from '../../../../server/lib/omnichannel/resolveVisitor'; +import { createRoom } from '../../../../server/lib/omnichannel/rooms'; +import { online } from '../../../../server/lib/omnichannel/service-status'; +import { transfer } from '../../../../server/lib/omnichannel/transfer'; +import { settings } from '../../../../server/settings'; declare module '@rocket.chat/apps-engine/definition/accessors/ILivechatCreator' { interface IExtraRoomParams { diff --git a/apps/meteor/app/apps/server/bridges/messages.ts b/apps/meteor/app/apps/server/bridges/messages.ts index b5be15ae7ca92..61d23f1542b6c 100644 --- a/apps/meteor/app/apps/server/bridges/messages.ts +++ b/apps/meteor/app/apps/server/bridges/messages.ts @@ -7,11 +7,11 @@ import { api } from '@rocket.chat/core-services'; import type { IMessage } from '@rocket.chat/core-typings'; import { Users, Subscriptions } from '@rocket.chat/models'; -import { deleteMessage } from '../../../lib/server/functions/deleteMessage'; -import { updateMessage } from '../../../lib/server/functions/updateMessage'; -import { executeSendMessage } from '../../../lib/server/methods/sendMessage'; -import notifications from '../../../notifications/server/lib/Notifications'; -import { executeSetReaction } from '../../../reactions/server/setReaction'; +import { deleteMessage } from '../../../../server/lib/messages/deleteMessage'; +import { updateMessage } from '../../../../server/lib/messages/updateMessage'; +import { executeSetReaction } from '../../../../server/lib/messaging/reactions/setReaction'; +import notifications from '../../../../server/lib/notifications/core/lib/Notifications'; +import { executeSendMessage } from '../../../../server/meteor-methods/messages/sendMessage'; export class AppMessageBridge extends MessageBridge { constructor(private readonly orch: IAppServerOrchestrator) { diff --git a/apps/meteor/app/apps/server/bridges/outboundCommunication.ts b/apps/meteor/app/apps/server/bridges/outboundCommunication.ts index 3ba7218a601c0..ba0f88dae0894 100644 --- a/apps/meteor/app/apps/server/bridges/outboundCommunication.ts +++ b/apps/meteor/app/apps/server/bridges/outboundCommunication.ts @@ -6,7 +6,7 @@ import type { IOutboundPhoneMessageProvider, } from '@rocket.chat/apps-engine/definition/outboundCommunication'; -import { getOutboundService } from '../../../livechat/server/lib/outboundcommunication'; +import { getOutboundService } from '../../../../server/lib/omnichannel/outboundcommunication'; export class OutboundCommunicationBridge extends OutboundMessageBridge { constructor(private readonly orch: IAppServerOrchestrator) { diff --git a/apps/meteor/app/apps/server/bridges/rooms.ts b/apps/meteor/app/apps/server/bridges/rooms.ts index 1a2963a005676..76c2dbcbe1737 100644 --- a/apps/meteor/app/apps/server/bridges/rooms.ts +++ b/apps/meteor/app/apps/server/bridges/rooms.ts @@ -9,13 +9,13 @@ import type { ISubscription, IUser as ICoreUser, IRoom as ICoreRoom, IMessage as import { Subscriptions, Users, Rooms, Messages } from '@rocket.chat/models'; import type { FindOptions, Sort } from 'mongodb'; -import { createDirectMessage } from '../../../../server/methods/createDirectMessage'; -import { createDiscussion } from '../../../discussion/server/methods/createDiscussion'; -import { addUserToRoom } from '../../../lib/server/functions/addUserToRoom'; -import { deleteRoom } from '../../../lib/server/functions/deleteRoom'; -import { removeUserFromRoom } from '../../../lib/server/functions/removeUserFromRoom'; -import { createChannelMethod } from '../../../lib/server/methods/createChannel'; -import { createPrivateGroupMethod } from '../../../lib/server/methods/createPrivateGroup'; +import { addUserToRoom } from '../../../../server/lib/rooms/addUserToRoom'; +import { deleteRoom } from '../../../../server/lib/rooms/deleteRoom'; +import { removeUserFromRoom } from '../../../../server/lib/rooms/removeUserFromRoom'; +import { createDirectMessage } from '../../../../server/meteor-methods/messages/createDirectMessage'; +import { createDiscussion } from '../../../../server/meteor-methods/messages/createDiscussion'; +import { createChannelMethod } from '../../../../server/meteor-methods/rooms/createChannel'; +import { createPrivateGroupMethod } from '../../../../server/meteor-methods/rooms/createPrivateGroup'; const rawRoomProjection: FindOptions['projection'] = { _id: 1, diff --git a/apps/meteor/app/apps/server/bridges/settings.ts b/apps/meteor/app/apps/server/bridges/settings.ts index 145f81fc129ae..1900a8093bce0 100644 --- a/apps/meteor/app/apps/server/bridges/settings.ts +++ b/apps/meteor/app/apps/server/bridges/settings.ts @@ -4,8 +4,8 @@ import type { IReadSettingPermission } from '@rocket.chat/apps-engine/definition import type { ISetting } from '@rocket.chat/apps-engine/definition/settings'; import { Settings } from '@rocket.chat/models'; +import { notifyOnSettingChanged, notifyOnSettingChangedById } from '../../../../server/lib/notifyListener'; import { updateAuditedByApp } from '../../../../server/settings/lib/auditedSettingUpdates'; -import { notifyOnSettingChanged, notifyOnSettingChangedById } from '../../../lib/server/lib/notifyListener'; export class AppSettingBridge extends ServerSettingBridge { constructor(private readonly orch: IAppServerOrchestrator) { diff --git a/apps/meteor/app/apps/server/bridges/uploads.ts b/apps/meteor/app/apps/server/bridges/uploads.ts index 929e70743c557..0637e29e74a36 100644 --- a/apps/meteor/app/apps/server/bridges/uploads.ts +++ b/apps/meteor/app/apps/server/bridges/uploads.ts @@ -4,9 +4,9 @@ import type { IUpload } from '@rocket.chat/apps-engine/definition/uploads'; import type { IUploadDetails } from '@rocket.chat/apps-engine/definition/uploads/IUploadDetails'; import { determineFileType } from '../../../../ee/lib/misc/determineFileType'; -import { FileUpload } from '../../../file-upload/server'; -import { sendFileMessage } from '../../../file-upload/server/methods/sendFileMessage'; -import { sendFileLivechatMessage } from '../../../livechat/server/methods/sendFileLivechatMessage'; +import { FileUpload } from '../../../../server/lib/media/file-upload'; +import { sendFileMessage } from '../../../../server/meteor-methods/messages/sendFileMessage'; +import { sendFileLivechatMessage } from '../../../../server/meteor-methods/omnichannel/sendFileLivechatMessage'; const getUploadDetails = (details: IUploadDetails): Partial => { if (details.visitorToken) { diff --git a/apps/meteor/app/apps/server/bridges/users.ts b/apps/meteor/app/apps/server/bridges/users.ts index 4a49f6b613e9d..4c345c9a443f2 100644 --- a/apps/meteor/app/apps/server/bridges/users.ts +++ b/apps/meteor/app/apps/server/bridges/users.ts @@ -6,13 +6,13 @@ import type { PresenceSource, UserStatus } from '@rocket.chat/core-typings'; import { Subscriptions, Users } from '@rocket.chat/models'; import { Random } from '@rocket.chat/random'; -import { checkUsernameAvailability } from '../../../lib/server/functions/checkUsernameAvailability'; -import { deleteUser } from '../../../lib/server/functions/deleteUser'; -import { getUserCreatedByApp } from '../../../lib/server/functions/getUserCreatedByApp'; -import { setStatusText } from '../../../lib/server/functions/setStatusText'; -import { setUserActiveStatus } from '../../../lib/server/functions/setUserActiveStatus'; -import { setUserAvatar } from '../../../lib/server/functions/setUserAvatar'; -import { notifyOnUserChange, notifyOnUserChangeById } from '../../../lib/server/lib/notifyListener'; +import { notifyOnUserChange, notifyOnUserChangeById } from '../../../../server/lib/notifyListener'; +import { checkUsernameAvailability } from '../../../../server/lib/users/checkUsernameAvailability'; +import { deleteUser } from '../../../../server/lib/users/deleteUser'; +import { getUserCreatedByApp } from '../../../../server/lib/users/getUserCreatedByApp'; +import { setStatusText } from '../../../../server/lib/users/setStatusText'; +import { setUserActiveStatus } from '../../../../server/lib/users/setUserActiveStatus'; +import { setUserAvatar } from '../../../../server/lib/users/setUserAvatar'; export class AppUserBridge extends UserBridge { constructor(private readonly orch: IAppServerOrchestrator) { diff --git a/apps/meteor/app/apps/server/converters/codecs/contacts.ts b/apps/meteor/app/apps/server/converters/codecs/contacts.ts new file mode 100644 index 0000000000000..73ac52bbf3931 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/contacts.ts @@ -0,0 +1,103 @@ +import type { IAppsLivechatContact } from '@rocket.chat/apps'; +import type { ILivechatContact } from '@rocket.chat/core-typings'; +import * as z from 'zod'; + +import { mappedDecodeAsync } from './mappedData'; + +/** + * Rocket.Chat `ILivechatContact` <-> Apps-Engine `IAppsLivechatContact`. + * + * `decode` (Rocket.Chat -> Apps-Engine) is a straight clone, mirroring the legacy `convertContact`. + * `encode` (Apps-Engine -> Rocket.Chat) maps every attribute individually via a nested field map so + * no extra data coming from the app leaks through — mirroring the legacy `convertAppContact`. + */ +export const ContactCodec = z.codec(z.custom(), z.custom(), { + decode: (contact): IAppsLivechatContact => structuredClone(contact) as unknown as IAppsLivechatContact, + encode: (contact): Promise => { + const map = { + _id: '_id', + _updatedAt: '_updatedAt', + name: 'name', + phones: { + from: 'phones', + list: true, + map: { + phoneNumber: 'phoneNumber', + }, + }, + emails: { + from: 'emails', + list: true, + map: { + address: 'address', + }, + }, + contactManager: 'contactManager', + unknown: 'unknown', + conflictingFields: { + from: 'conflictingFields', + list: true, + map: { + field: 'field', + value: 'value', + }, + }, + customFields: 'customFields', + channels: { + from: 'channels', + list: true, + map: { + name: 'name', + verified: 'verified', + visitor: { + from: 'visitor', + map: { + visitorId: 'visitorId', + source: { + from: 'source', + map: { + type: 'type', + id: 'id', + }, + }, + }, + }, + blocked: 'blocked', + field: 'field', + value: 'value', + verifiedAt: 'verifiedAt', + details: { + from: 'details', + map: { + type: 'type', + id: 'id', + alias: 'alias', + label: 'label', + sidebarIcon: 'sidebarIcon', + defaultIcon: 'defaultIcon', + destination: 'destination', + }, + }, + lastChat: { + from: 'lastChat', + map: { + _id: '_id', + ts: 'ts', + }, + }, + }, + }, + createdAt: 'createdAt', + lastChat: { + from: 'lastChat', + map: { + _id: '_id', + ts: 'ts', + }, + }, + importIds: 'importIds', + }; + + return mappedDecodeAsync(contact, map, { dropUnmapped: true }); + }, +}); diff --git a/apps/meteor/app/apps/server/converters/codecs/departments.ts b/apps/meteor/app/apps/server/converters/codecs/departments.ts new file mode 100644 index 0000000000000..d89f62c989b40 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/departments.ts @@ -0,0 +1,56 @@ +import type { IAppsDepartment } from '@rocket.chat/apps'; +import type { ILivechatDepartment } from '@rocket.chat/core-typings'; +import * as z from 'zod'; + +import { mappedDecode } from './mappedData'; + +/** + * Rocket.Chat `ILivechatDepartment` <-> Apps-Engine `IAppsDepartment`. + * + * `decode` is a plain field-rename with an `_unmappedProperties_` bucket (mirrors the legacy + * `convertDepartment`). `encode` mirrors `convertAppDepartment`: the inverse rename written + * unconditionally, then `_unmappedProperties_` merged on top. + */ +export const DepartmentCodec = z.codec(z.custom(), z.custom(), { + decode: mappedDecode({ + id: '_id', + name: 'name', + email: 'email', + updatedAt: '_updatedAt', + enabled: 'enabled', + numberOfAgents: 'numAgents', + showOnOfflineForm: 'showOnOfflineForm', + description: 'description', + offlineMessageChannelName: 'offlineMessageChannelName', + requestTagBeforeClosingChat: 'requestTagBeforeClosingChat', + chatClosingTags: 'chatClosingTags', + abandonedRoomsCloseCustomMessage: 'abandonedRoomsCloseCustomMessage', + waitingQueueMessage: 'waitingQueueMessage', + departmentsAllowedToForward: 'departmentsAllowedToForward', + showOnRegistration: 'showOnRegistration', + }) as unknown as (department: ILivechatDepartment) => IAppsDepartment, + encode: (department): ILivechatDepartment => { + const newDepartment = { + _id: department.id, + name: department.name, + email: department.email, + _updatedAt: department.updatedAt, + enabled: department.enabled, + numAgents: department.numberOfAgents, + showOnOfflineForm: department.showOnOfflineForm, + showOnRegistration: department.showOnRegistration, + description: department.description, + offlineMessageChannelName: department.offlineMessageChannelName, + requestTagBeforeClosingChat: department.requestTagBeforeClosingChat, + chatClosingTags: department.chatClosingTags, + abandonedRoomsCloseCustomMessage: department.abandonedRoomsCloseCustomMessage, + waitingQueueMessage: department.waitingQueueMessage, + departmentsAllowedToForward: department.departmentsAllowedToForward, + }; + + return Object.assign( + newDepartment, + (department as { _unmappedProperties_?: Record })._unmappedProperties_, + ) as unknown as ILivechatDepartment; + }, +}); diff --git a/apps/meteor/app/apps/server/converters/codecs/enums.ts b/apps/meteor/app/apps/server/converters/codecs/enums.ts new file mode 100644 index 0000000000000..346fc741baa5a --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/enums.ts @@ -0,0 +1,123 @@ +import { RoomType } from '@rocket.chat/apps-engine/definition/rooms'; +import { SettingType } from '@rocket.chat/apps-engine/definition/settings'; +import { UserStatusConnection, UserType } from '@rocket.chat/apps-engine/definition/users'; +import * as z from 'zod'; + +/** + * Bidirectional enum mappings between Rocket.Chat's stored string values and the + * Apps-Engine enums, expressed as Zod codecs (`decode`: Rocket.Chat -> Apps-Engine, + * `encode`: Apps-Engine -> Rocket.Chat). + * + * These are behaviour-preserving replacements for the private `_convert*ToApp`/`_convert*ToEnum` + * helpers currently living inside the converter classes. The `decode` transforms reproduce the + * exact fallback semantics of those helpers (including passing unknown values through, upper-cased + * where the legacy code did so). The `encode` transforms mirror the reverse converters, which today + * assign the Apps-Engine value straight back onto the Rocket.Chat document without translation. + * + * Note: the contextual `console.warn` calls that depend on data unavailable to a pure enum mapping + * (e.g. the affected user's id/username in the status-connection warning) are intentionally left in + * the converter layer and will be wired back in as each converter is migrated. + */ + +/** + * Rocket.Chat `IUser['type']` <-> Apps-Engine `UserType`. + * Mirrors `AppUsersConverter._convertUserTypeToEnum`. + */ +export const UserTypeCodec = z.codec(z.any(), z.any(), { + decode: (type): string => { + switch (type) { + case 'user': + return UserType.USER; + case 'bot': + return UserType.BOT; + case 'app': + return UserType.APP; + case '': + case undefined: + return UserType.UNKNOWN; + default: + console.warn(`A new user type has been added that the Apps don't know about? "${type}"`); + return type.toUpperCase(); + } + }, + // The reverse converter assigns `user.type` straight back onto the document. + encode: (type): string => type, +}); + +/** + * Rocket.Chat `IUser['statusConnection']` <-> Apps-Engine `UserStatusConnection`. + * Mirrors the value mapping of `AppUsersConverter._convertStatusConnectionToEnum`. The legacy + * `console.warn` (which includes the affected user's id/username) stays in the converter, since + * that context is not available to a standalone codec. + */ +export const UserStatusConnectionCodec = z.codec(z.any(), z.any(), { + decode: (status): string => { + switch (status) { + case 'offline': + return UserStatusConnection.OFFLINE; + case 'online': + return UserStatusConnection.ONLINE; + case 'away': + return UserStatusConnection.AWAY; + case 'busy': + return UserStatusConnection.BUSY; + case undefined: + // This is needed for Livechat guests and Rocket.Cat user. + return UserStatusConnection.UNDEFINED; + default: + return !status ? UserStatusConnection.OFFLINE : status.toUpperCase(); + } + }, + encode: (status): string => status, +}); + +/** + * Rocket.Chat `IRoom['t']` <-> Apps-Engine `RoomType`. + * Mirrors `AppRoomsConverter._convertTypeToApp`. Unknown type characters pass through unchanged. + */ +export const RoomTypeCodec = z.codec(z.any(), z.any(), { + decode: (typeChar): string => { + switch (typeChar) { + case 'c': + return RoomType.CHANNEL; + case 'p': + return RoomType.PRIVATE_GROUP; + case 'd': + return RoomType.DIRECT_MESSAGE; + case 'l': + return RoomType.LIVE_CHAT; + default: + return typeChar; + } + }, + // `RoomType` values are identical to the stored `t` characters, so the reverse is an identity. + encode: (type): string => type, +}); + +/** + * Rocket.Chat `ISetting['type']` <-> Apps-Engine `SettingType`. + * Mirrors `AppSettingsConverter._convertTypeToApp`. Unknown types pass through unchanged. + */ +export const SettingTypeCodec = z.codec(z.any(), z.any(), { + decode: (type): string => { + switch (type) { + case 'boolean': + return SettingType.BOOLEAN; + case 'code': + return SettingType.CODE; + case 'color': + return SettingType.COLOR; + case 'font': + return SettingType.FONT; + case 'int': + return SettingType.NUMBER; + case 'select': + return SettingType.SELECT; + case 'string': + return SettingType.STRING; + default: + return type; + } + }, + encode: (type): string => type, +}); diff --git a/apps/meteor/app/apps/server/converters/codecs/index.ts b/apps/meteor/app/apps/server/converters/codecs/index.ts new file mode 100644 index 0000000000000..009db886224b1 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/index.ts @@ -0,0 +1,9 @@ +export { RoomTypeCodec, SettingTypeCodec, UserStatusConnectionCodec, UserTypeCodec } from './enums'; +export { createMappedCodec, mappedDecode, mappedEncode } from './mappedData'; +export type { FieldMap } from './mappedData'; +export { SettingCodec } from './settings'; +export { RoleCodec } from './roles'; +export { VideoConferenceCodec } from './videoConferences'; +export { VisitorCodec } from './visitors'; +export { DepartmentCodec } from './departments'; +export { UserCodec } from './users'; diff --git a/apps/meteor/app/apps/server/converters/codecs/mappedData.ts b/apps/meteor/app/apps/server/converters/codecs/mappedData.ts new file mode 100644 index 0000000000000..7aeab98196af9 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/mappedData.ts @@ -0,0 +1,181 @@ +import * as z from 'zod'; + +type Loose = Record; + +/** + * A declarative field map from Apps-Engine (target) property names to Rocket.Chat (source) property + * names. Values are constrained to the keys of `Source`, so mapping a renamed or misspelled source + * field is a compile error. + */ +export type FieldMap = Record>; + +/** + * The Rocket.Chat -> Apps-Engine result of decoding `Source` through `Map`: each target property + * holds its source value (optional, since it is only set when the source value is defined), and + * everything the map did not name is collected under `_unmappedProperties_`. + */ +export type Decoded> = { + -readonly [Target in keyof Map]?: Source[Map[Target]]; +} & { + _unmappedProperties_: Omit; +}; + +/** + * Rocket.Chat -> Apps-Engine transform for a plain string field map, reproducing the "rename these + * fields, bucket the rest" behaviour of the original mapping helper: the input is deep-cloned (so the + * app can never mutate the stored document), each mapped source field is copied to its target name + * when defined, and every remaining property is collected into `_unmappedProperties_`. + */ +export function mappedDecode = FieldMap>( + fieldMap: Map, +): (data: Source) => Decoded { + const entries = Object.entries(fieldMap) as [string, string][]; + + return (data: Source): Decoded => { + const clone: Loose = structuredClone(data); + const result: Loose = {}; + + for (const [target, sourceKey] of entries) { + if (typeof clone[sourceKey] !== 'undefined') { + result[target] = clone[sourceKey]; + } + + delete clone[sourceKey]; + } + + result._unmappedProperties_ = clone; + + return result as Decoded; + }; +} + +/** + * The Apps-Engine -> Rocket.Chat inverse of {@link mappedDecode}: target fields are copied back to + * their source names when defined and `_unmappedProperties_` is merged onto the result. Because both + * the renamed keys and the bucket originate from `Source`, the result is a `Partial`. + * + * This is the symmetric counterpart to {@link mappedDecode}; converters whose reverse direction has + * defaults, conditional fields or asymmetric mappings provide their own `encode`. + */ +export function mappedEncode = FieldMap>( + fieldMap: Map, +): (app: Decoded) => Partial { + const entries = Object.entries(fieldMap) as [string, string][]; + + return (app: Decoded): Partial => { + const { _unmappedProperties_ = {}, ...rest } = app as Loose; + const result: Loose = {}; + + for (const [target, sourceKey] of entries) { + if (typeof rest[target] !== 'undefined') { + result[sourceKey] = rest[target]; + } + } + + return { ...result, ..._unmappedProperties_ } as Partial; + }; +} + +/** + * A map whose entries are one of the three forms the original mapping helper supports: a source + * property name (string), a function that derives the target value from the (cloned) source data, + * or a nested `{ from, map, list }` descriptor for sub-objects and arrays. + * + * Unlike {@link FieldMap}, this is intentionally loosely typed: its consumers (rooms, messages, + * uploads) map many optional/livechat-only fields that are not part of the base document types. + */ +export type AsyncFieldMap = Record< + string, + string | ((data: Record) => unknown | Promise) | { from: string; map?: AsyncFieldMap; list?: boolean } +>; + +/** + * Rocket.Chat -> Apps-Engine transform for a map mixing string renames, (possibly async) derived-value + * functions and nested `{ from, map, list }` descriptors, reproducing the original mapping helper + * exactly: + * + * - the input is deep-cloned up front, so functions may freely mutate the clone (e.g. `delete` fields + * they consume) and the app can never mutate the stored document; + * - string entries copy the source field to the target name when defined and always drop the source + * key from the bucket; + * - function entries receive the clone and set the target only when they return a defined value + * (functions are responsible for deleting any source keys they consume); + * - nested entries recurse when they carry a `map` (producing a `_unmappedProperties_` bucket at each + * level) or copy the cloned source value verbatim when they do not, and `list` entries map arrays + * element-by-element (or wrap a lone value into a single-element array); + * - absent (`undefined`/`null`) nested sources are skipped, so the target stays unset; + * - everything left in the clone becomes `_unmappedProperties_`. + * + * The result shape is caller-asserted via the `Result` type parameter, since it depends on the map's + * function/nested entries in ways that are not worth expressing in the type system. + * + * `dropUnmapped` omits the `_unmappedProperties_` bucket at the root and every nested level, for + * callers (e.g. contacts) that map every attribute individually and must not let extra app data leak + * through. It defaults to `false`, preserving the "bucket the rest" behaviour for other callers. + */ +export async function mappedDecodeAsync( + data: Loose, + map: AsyncFieldMap, + options: { dropUnmapped?: boolean } = {}, +): Promise { + const clone: Loose = structuredClone(data); + const result: Loose = {}; + + for (const [to, from] of Object.entries(map)) { + if (typeof from === 'function') { + const value = await from(clone); + + if (typeof value !== 'undefined') { + result[to] = value; + } + } else if (typeof from === 'string') { + if (typeof clone[from] !== 'undefined') { + result[to] = clone[from]; + } + + delete clone[from]; + } else { + const { from: fromName } = from; + + if (from.list) { + if (Array.isArray(clone[fromName])) { + if ('map' in from && from.map) { + result[to] = await Promise.all( + clone[fromName].map((item: Loose) => mappedDecodeAsync(item, from.map as AsyncFieldMap, options)), + ); + } else { + result[to] = [...clone[fromName]]; + } + } else if (clone[fromName] !== undefined && clone[fromName] !== null) { + result[to] = [clone[fromName]]; + } + } else if (clone[fromName] !== undefined && clone[fromName] !== null) { + result[to] = from.map + ? await mappedDecodeAsync(clone[fromName], from.map as AsyncFieldMap, options) + : structuredClone(clone[fromName]); + } + + delete clone[fromName]; + } + } + + if (!options.dropUnmapped) { + result._unmappedProperties_ = clone; + } + + return result as Result; +} + +/** + * Builds a Zod codec from a plain string field map, using {@link mappedDecode} / {@link mappedEncode}. + * `decode` produces {@link Decoded}; `encode` is its inverse. + * + * The endpoints are typed with `z.custom` so no runtime validation is added yet (behaviour-preserving); + * schemas can be tightened later without changing the transform logic. + */ +export function createMappedCodec = FieldMap>(fieldMap: Map) { + return z.codec(z.custom(), z.custom>(), { + decode: mappedDecode(fieldMap), + encode: (app) => mappedEncode(fieldMap)(app) as Source, + }); +} diff --git a/apps/meteor/app/apps/server/converters/codecs/roles.ts b/apps/meteor/app/apps/server/converters/codecs/roles.ts new file mode 100644 index 0000000000000..df9f3eb1ca547 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/roles.ts @@ -0,0 +1,19 @@ +import type { IRole } from '@rocket.chat/core-typings'; + +import { createMappedCodec } from './mappedData'; + +/** + * Rocket.Chat `IRole` <-> Apps-Engine role. + * + * A pure field-rename with an `_unmappedProperties_` bucket, so it is expressed directly via + * {@link createMappedCodec}. Keys are the Apps-Engine names, values the Rocket.Chat names (checked + * against `keyof IRole`). + */ +export const RoleCodec = createMappedCodec({ + id: '_id', + name: 'name', + description: 'description', + mandatory2fa: 'mandatory2fa', + protected: 'protected', + scope: 'scope', +}); diff --git a/apps/meteor/app/apps/server/converters/codecs/rooms.ts b/apps/meteor/app/apps/server/converters/codecs/rooms.ts new file mode 100644 index 0000000000000..a6b94c549988b --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/rooms.ts @@ -0,0 +1,462 @@ +import type { IAppServerOrchestrator, IAppsRoom, IAppsLivechatRoom, IAppsRoomRaw } from '@rocket.chat/apps'; +import { secureFieldsMapper } from '@rocket.chat/apps/dist/lib/SecureFields'; +import type { IRoom } from '@rocket.chat/core-typings'; +import { LivechatVisitors, LivechatDepartment, Users, LivechatContacts } from '@rocket.chat/models'; +import * as z from 'zod'; + +import { RoomTypeCodec } from './enums'; +import { mappedDecodeAsync } from './mappedData'; + +// The stored room documents carry many optional/livechat-only fields that are not part of the base +// `IRoom` union, so the transform inputs are treated as loose records (as the legacy converter did). +type RoomData = Record; + +const mapUserLookup = (user: any) => + user && { + _id: user._id ?? user.id, + ...(user.username && { username: user.username }), + ...(user.name && { name: user.name }), + }; + +/** + * Rocket.Chat -> Apps-Engine "raw" room transform (no cross-converter resolution). Mirrors the + * legacy `convertRoomRaw`. + */ +export async function decodeRoomRaw(room: IRoom): Promise { + const map = { + id: '_id', + displayName: 'fname', + slugifiedName: 'name', + members: 'members', + userIds: 'uids', + usernames: 'usernames', + messageCount: 'msgs', + createdAt: 'ts', + updatedAt: '_updatedAt', + closedAt: 'closedAt', + lastModifiedAt: 'lm', + customFields: 'customFields', + livechatData: 'livechatData', + isWaitingResponse: 'waitingResponse', + isOpen: 'open', + description: 'description', + source: 'source', + closer: 'closer', + teamId: 'teamId', + isTeamMain: 'teamMain', + isDefault: 'default', + isReadOnly: 'ro', + contactId: 'contactId', + departmentId: 'departmentId', + parentRoomId: 'prid', + isFederated: 'federated', + federation: 'federation', + visitor: (data: RoomData) => { + const { v } = data; + if (!v) { + return undefined; + } + + delete data.v; + + const { _id: id, ...rest } = v; + + return { + id, + ...rest, + }; + }, + displaySystemMessages: (data: RoomData) => { + const { sysMes } = data; + delete data.sysMes; + return typeof sysMes === 'undefined' ? true : sysMes; + }, + type: (data: RoomData) => { + const result = z.decode(RoomTypeCodec, data.t); + delete data.t; + return result; + }, + creator: (data: RoomData) => { + if (!data.u) { + return undefined; + } + const creator = mapUserLookup(data.u); + delete data.u; + return creator; + }, + closedBy: (data: RoomData) => { + if (!data.closedBy) { + return undefined; + } + const { closedBy } = data; + delete data.closedBy; + return mapUserLookup(closedBy); + }, + servedBy: (data: RoomData) => { + if (!data.servedBy) { + return undefined; + } + const { servedBy } = data; + delete data.servedBy; + return mapUserLookup(servedBy); + }, + responseBy: (data: RoomData) => { + if (!data.responseBy) { + return undefined; + } + const { responseBy } = data; + delete data.responseBy; + return mapUserLookup(responseBy); + }, + }; + + return mappedDecodeAsync(room, map); +} + +async function getCreator(user: string | undefined) { + if (!user) { + return; + } + + const creator = await Users.findOneById(user, { projection: { _id: 1, username: 1, name: 1 } }); + if (!creator) { + return; + } + + return { + _id: creator._id, + username: creator.username, + name: creator.name, + }; +} + +async function getVisitor({ visitor: roomVisitor, visitorChannelInfo }: any) { + if (!roomVisitor) { + return; + } + + const visitor = await LivechatVisitors.findOneEnabledById(roomVisitor.id); + if (!visitor) { + return; + } + + const { lastMessageTs, phone } = visitorChannelInfo || {}; + + return { + _id: visitor._id, + username: visitor.username, + token: visitor.token, + status: visitor.status || 'online', + activity: visitor.activity, + ...(lastMessageTs && { lastMessageTs }), + ...(phone && { phone }), + }; +} + +async function getUserIdAndUsername(userObj: any) { + if (!userObj?.id) { + return; + } + + const user = await Users.findOneById(userObj.id, { projection: { _id: 1, username: 1 } }); + if (!user) { + return; + } + + return { + _id: user._id, + username: user.username, + }; +} + +async function getRoomCloser(room: any, v: any) { + if (!room.closedBy) { + return; + } + + if (room.closer === 'user') { + const user = await Users.findOneById(room.closedBy.id, { projection: { _id: 1, username: 1 } }); + if (!user) { + return; + } + + return { + _id: user._id, + username: user.username, + }; + } + + if (room.closer === 'visitor' && v) { + return { + _id: v._id, + username: v.username, + }; + } +} + +// TODO do we really need this? +async function getContactId({ contact }: any) { + if (!contact?._id) { + return; + } + const contactFromDb = await LivechatContacts.findOneEnabledById(contact._id, { projection: { _id: 1 } }); + return contactFromDb?._id; +} + +// TODO do we really need this? +async function getDepartment({ department }: any) { + if (!department) { + return; + } + const dept = await LivechatDepartment.findOneById(department.id, { projection: { _id: 1 } }); + return dept?._id; +} + +/** + * Apps-Engine -> Rocket.Chat room transform. Mirrors the legacy `convertAppRoom`, including the + * `isPartial` behaviour (skip `_unmappedProperties_` merge). Cross-converter independent — it reads + * the models directly. + */ +export async function appRoomToRocketChat(room: any, isPartial = false): Promise> { + const u = await getCreator(room.creator?.id); + + const v = await getVisitor(room); + + const departmentId = await getDepartment(room); + + const servedBy = await getUserIdAndUsername(room.servedBy); + + const closedBy = await getRoomCloser(room, v); + + const contactId = await getContactId(room); + + const newRoom = { + ...(room.id && { _id: room.id }), + ...(typeof room.type !== 'undefined' && { t: room.type }), + ...(typeof room.createdAt !== 'undefined' && { ts: room.createdAt }), + ...(typeof room.messageCount !== 'undefined' && { msgs: room.messageCount || 0 }), + ...(typeof room.updatedAt !== 'undefined' && { _updatedAt: room.updatedAt }), + ...(room.displayName && { fname: room.displayName }), + ...(room.type !== 'd' && room.slugifiedName && { name: room.slugifiedName }), + ...(room.members && { members: room.members }), + ...(typeof room.isDefault !== 'undefined' && { default: room.isDefault }), + ...(typeof room.isReadOnly !== 'undefined' && { ro: room.isReadOnly }), + ...(typeof room.displaySystemMessages !== 'undefined' && { sysMes: room.displaySystemMessages }), + ...(u && { u }), + ...(v && { v }), + ...(departmentId && { departmentId }), + ...(servedBy && { servedBy }), + ...(closedBy && { closedBy }), + ...(room.userIds && { uids: room.userIds }), + ...(typeof room.isWaitingResponse !== 'undefined' && { waitingResponse: !!room.isWaitingResponse }), + ...(typeof room.isOpen !== 'undefined' && { open: !!room.isOpen }), + ...(room.closedAt && { closedAt: room.closedAt }), + ...(room.lastModifiedAt && { lm: room.lastModifiedAt }), + ...(room.customFields && { customFields: room.customFields }), + ...(room.livechatData && { livechatData: room.livechatData }), + ...(typeof room.isFederated !== 'undefined' && { federated: room.isFederated }), + ...(typeof room.federation !== 'undefined' && { federation: room.federation }), + ...(typeof room.parentRoom !== 'undefined' && { prid: room.parentRoom.id }), + ...(contactId && { contactId }), + ...(room._USERNAMES && { _USERNAMES: room._USERNAMES }), + ...(room.source && { + source: { + ...room.source, + }, + }), + }; + + if (!isPartial) { + Object.assign(newRoom, room._unmappedProperties_); + } + + return newRoom as unknown as Partial; +} + +/** + * Rocket.Chat `IRoom` <-> Apps-Engine room. Cross-converter dependent, so built via a factory closing + * over the orchestrator. `decode` mirrors `convertRoom` (resolves creator/visitor/contact/department/ + * closedBy/servedBy/responseBy/parentRoom through their converters, plus secure fields). `encode` + * mirrors the non-partial `convertAppRoom`; the class handles the `isPartial` variant. + */ +export function createRoomCodec(orch: IAppServerOrchestrator) { + return z.codec(z.custom(), z.custom(), { + decode: async (originalRoom): Promise => { + const map = { + id: '_id', + displayName: 'fname', + slugifiedName: 'name', + members: 'members', + userIds: 'uids', + messageCount: 'msgs', + createdAt: 'ts', + updatedAt: '_updatedAt', + closedAt: 'closedAt', + lastModifiedAt: 'lm', + customFields: 'customFields', + livechatData: 'livechatData', + isWaitingResponse: 'waitingResponse', + isOpen: 'open', + _USERNAMES: '_USERNAMES', + description: 'description', + source: 'source', + closer: 'closer', + teamId: 'teamId', + isTeamMain: 'teamMain', + isFederated: 'federated', + federation: 'federation', + isDefault: (room: RoomData) => { + const result = !!room.default; + delete room.default; + return result; + }, + isReadOnly: (room: RoomData) => { + const result = !!room.ro; + delete room.ro; + return result; + }, + displaySystemMessages: (room: RoomData) => { + const { sysMes } = room; + + if (typeof sysMes === 'undefined') { + return true; + } + + delete room.sysMes; + return sysMes; + }, + type: (room: RoomData) => { + const result = z.decode(RoomTypeCodec, room.t); + delete room.t; + return result; + }, + creator: async (room: RoomData) => { + const { u } = room; + + if (!u) { + return undefined; + } + + delete room.u; + + return orch.getConverters().get('users').convertById(u._id); + }, + visitor: (room: RoomData) => { + const { v } = room; + + if (!v) { + return undefined; + } + + return orch.getConverters().get('visitors').convertById(v._id); + }, + contact: (room: RoomData) => { + const { contactId } = room; + + if (!contactId) { + return undefined; + } + + return orch.getConverters().get('contacts').convertById(contactId); + }, + // Note: room.v is not just visitor, it also contains channel related visitor data + // so we need to pass this data to the converter + // So suppose you have a contact whom we're contacting using SMS via 2 phone no's, + // let's call X and Y. Then if the contact sends a message using X phone number, + // then room.v.phoneNo would be X and correspondingly we'll store the timestamp of + // the last message from this visitor from X phone no on room.v.lastMessageTs + visitorChannelInfo: (room: RoomData) => { + const { v } = room; + + if (!v) { + return undefined; + } + + const { lastMessageTs, phone } = v; + + return { + ...(phone && { phone }), + ...(lastMessageTs && { lastMessageTs }), + }; + }, + department: async (room: RoomData) => { + const { departmentId } = room; + + if (!departmentId) { + return undefined; + } + + delete room.departmentId; + + return orch.getConverters().get('departments').convertById(departmentId); + }, + closedBy: async (room: RoomData) => { + const { closedBy } = room; + + if (!closedBy) { + return undefined; + } + + delete room.closedBy; + if ((originalRoom as RoomData).closer === 'user') { + return orch.getConverters().get('users').convertById(closedBy._id); + } + + return orch.getConverters().get('visitors').convertById(closedBy._id); + }, + servedBy: async (room: RoomData) => { + const { servedBy } = room; + + if (!servedBy) { + return undefined; + } + + delete room.servedBy; + + return orch.getConverters().get('users').convertById(servedBy._id); + }, + responseBy: async (room: RoomData) => { + const { responseBy } = room; + + if (!responseBy) { + return undefined; + } + + delete room.responseBy; + + return orch.getConverters().get('users').convertById(responseBy._id); + }, + parentRoom: async (room: RoomData) => { + const { prid } = room; + + if (!prid) { + return undefined; + } + + delete room.prid; + + return orch.getConverters().get('rooms').convertById(prid); + }, + ...secureFieldsMapper((room: RoomData) => { + if (!room.abacAttributes) { + return undefined; + } + + const value = [ + { + permission: 'abac.read', + name: 'abacAttributes', + value: room.abacAttributes, + }, + ]; + + delete room.abacAttributes; + return value; + }), + }; + + return mappedDecodeAsync(originalRoom, map); + }, + encode: (room): Promise => appRoomToRocketChat(room, false) as unknown as Promise, + }); +} diff --git a/apps/meteor/app/apps/server/converters/codecs/settings.ts b/apps/meteor/app/apps/server/converters/codecs/settings.ts new file mode 100644 index 0000000000000..71bb1cec4017b --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/settings.ts @@ -0,0 +1,36 @@ +import type { IAppsSetting } from '@rocket.chat/apps'; +import type { ISetting } from '@rocket.chat/core-typings'; +import * as z from 'zod'; + +import { SettingTypeCodec } from './enums'; + +/** + * Rocket.Chat `ISetting` -> Apps-Engine `IAppsSetting`. + * + * `decode` reproduces `AppSettingsConverter.convertToApp` (id/date renames + `SettingType` mapping). + * The setting converter is intentionally one-directional, matching the legacy converter which had no + * `convertToRocketChat`: an Apps-Engine setting cannot be turned back into a valid `ISetting` (required + * fields such as `env`, `blocked` and `sorter` are not part of `IAppsSetting`), so `encode` is not + * supported and throws instead of emitting a lossy, invalid document. Endpoints are typed with + * `z.custom` so no runtime validation is added on the decode path. + */ +export const SettingCodec = z.codec(z.custom(), z.custom(), { + decode: (setting): IAppsSetting => + ({ + id: setting._id, + type: z.decode(SettingTypeCodec, setting.type), + packageValue: setting.packageValue, + values: setting.values, + value: setting.value, + public: setting.public, + hidden: setting.hidden, + group: setting.group, + i18nLabel: setting.i18nLabel, + i18nDescription: setting.i18nDescription, + createdAt: setting.ts, + updatedAt: setting._updatedAt, + }) as unknown as IAppsSetting, + encode: (): ISetting => { + throw new Error('SettingCodec: converting an Apps-Engine setting back to a Rocket.Chat setting is not supported'); + }, +}); diff --git a/apps/meteor/app/apps/server/converters/codecs/uploads.ts b/apps/meteor/app/apps/server/converters/codecs/uploads.ts new file mode 100644 index 0000000000000..7f92644be5ca2 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/uploads.ts @@ -0,0 +1,109 @@ +import type { IAppServerOrchestrator, IAppsUpload } from '@rocket.chat/apps'; +import type { IUpload } from '@rocket.chat/core-typings'; +import * as z from 'zod'; + +import { mappedDecodeAsync } from './mappedData'; +import { getURL } from '../../../../../server/lib/utils/getURL'; + +/** + * Rocket.Chat `IUpload` <-> Apps-Engine `IAppsUpload`. + * + * Cross-converter dependent, so it is built via a factory closing over the orchestrator. `decode` + * (async) mirrors the legacy `convertToApp`: a field rename plus room/user/visitor resolved through + * their converters, with an `_unmappedProperties_` bucket. `encode` mirrors `convertToRocketChat`. + */ +export function createUploadsCodec(orch: IAppServerOrchestrator) { + return z.codec(z.custom(), z.custom(), { + decode: async (upload): Promise => { + const map = { + // `url`/`path` are no longer persisted on the upload; derive them from the file id+name, + // matching the canonical /file-upload route. Declared before `id`/`name` so the source + // fields are still present on the cloned data when these run. + url: (upload: Record) => { + const relativePath = `/file-upload/${upload._id}/${encodeURIComponent(upload.name || '')}`; + delete upload.url; + return getURL(relativePath, { cdn: false, full: true }); + }, + path: (upload: Record) => { + const relativePath = `/file-upload/${upload._id}/${encodeURIComponent(upload.name || '')}`; + delete upload.path; + return relativePath; + }, + id: '_id', + name: 'name', + size: 'size', + type: 'type', + store: 'store', + description: 'description', + complete: 'complete', + uploading: 'uploading', + extension: 'extension', + progress: 'progress', + etag: 'etag', + token: 'token', + updatedAt: '_updatedAt', + uploadedAt: 'uploadedAt', + room: async (upload: Record) => { + const result = await orch + .getConverters() + .get('rooms') + .convertById(upload.rid as string); + delete upload.rid; + return result; + }, + user: async (upload: Record) => { + if (!upload.userId) { + return undefined; + } + + const result = await orch.getConverters().get('users').convertById(upload.userId); + delete upload.userId; + return result; + }, + visitor: async (upload: Record) => { + const { visitorToken } = upload; + if (!visitorToken) { + return undefined; + } + + const result = await orch.getConverters().get('visitors').convertByToken(visitorToken); + delete upload.visitorToken; + return result; + }, + }; + + return mappedDecodeAsync(upload, map); + }, + encode: (upload): IUpload => { + const { id: userId } = upload.user || {}; + const { token: visitorToken } = upload.visitor || {}; + const { id: rid } = upload.room || {}; + + const newUpload = { + _id: upload.id, + name: upload.name, + size: upload.size, + type: upload.type, + extension: upload.extension, + description: (upload as { description?: string }).description, + store: upload.store, + etag: upload.etag, + complete: upload.complete, + uploading: upload.uploading, + progress: upload.progress, + token: upload.token, + url: upload.url, + _updatedAt: upload.updatedAt, + uploadedAt: upload.uploadedAt, + rid, + userId, + visitorToken, + }; + + return Object.assign( + newUpload, + (upload as { _unmappedProperties_?: Record })._unmappedProperties_, + ) as unknown as IUpload; + }, + }); +} diff --git a/apps/meteor/app/apps/server/converters/codecs/users.ts b/apps/meteor/app/apps/server/converters/codecs/users.ts new file mode 100644 index 0000000000000..9e5c8e322fda8 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/users.ts @@ -0,0 +1,77 @@ +import type { IAppsUser } from '@rocket.chat/apps'; +import type { IUser } from '@rocket.chat/core-typings'; +import { removeEmpty } from '@rocket.chat/tools'; +import * as z from 'zod'; + +import { UserStatusConnectionCodec, UserTypeCodec } from './enums'; + +const VALID_STATUS_CONNECTIONS = new Set(['offline', 'online', 'away', 'busy']); + +/** + * Rocket.Chat `IUser` <-> Apps-Engine `IAppsUser`. + * + * Both directions are bespoke (no `_unmappedProperties_` bucket): `decode` mirrors `convertToApp` + * and `encode` mirrors `convertToRocketChat`. Enum fields go through the shared enum codecs. The + * contextual "invalid status" warning stays here (rather than in `UserStatusConnectionCodec`) + * because it needs the user's id/username. On the `encode` side `utcOffset` falls back to the legacy + * misspelled `utfOffset` property, so app users that only carry the historical typo still convert. + */ +export const UserCodec = z.codec(z.custom(), z.custom(), { + decode: (user): IAppsUser => { + const { statusConnection } = user; + if (typeof statusConnection !== 'undefined' && !VALID_STATUS_CONNECTIONS.has(statusConnection)) { + console.warn( + `The user ${user.username} (${user._id}) does not have a valid status (offline, online, away, or busy). It is currently: "${statusConnection}"`, + ); + } + + return { + id: user._id, + username: user.username, + emails: user.emails, + type: z.decode(UserTypeCodec, user.type), + isEnabled: user.active, + name: user.name, + roles: user.roles, + bio: user.bio, + status: user.status, + statusText: user.statusText, + statusConnection: z.decode(UserStatusConnectionCodec, statusConnection), + utcOffset: user.utcOffset, + createdAt: user.createdAt, + updatedAt: user._updatedAt, + lastLoginAt: user.lastLogin, + appId: (user as { appId?: string }).appId, + customFields: user.customFields, + isFederated: user.federated, + federation: user.federation, + sipExtension: user.freeSwitchExtension, + settings: { + preferences: { + ...(user?.settings?.preferences?.language && { language: user.settings.preferences.language }), + }, + }, + } as unknown as IAppsUser; + }, + encode: (user): IUser => + removeEmpty({ + _id: user.id, + username: user.username, + emails: user.emails, + type: z.encode(UserTypeCodec, user.type), + active: user.isEnabled, + name: user.name, + roles: user.roles, + bio: user.bio, + status: user.status, + statusConnection: z.encode(UserStatusConnectionCodec, user.statusConnection), + utcOffset: user.utcOffset ?? (user as { utfOffset?: number }).utfOffset, + createdAt: user.createdAt, + _updatedAt: user.updatedAt, + lastLogin: user.lastLoginAt, + appId: user.appId, + federated: user.isFederated, + federation: user.federation, + freeSwitchExtension: user.sipExtension, + }) as unknown as IUser, +}); diff --git a/apps/meteor/app/apps/server/converters/codecs/videoConferences.ts b/apps/meteor/app/apps/server/converters/codecs/videoConferences.ts new file mode 100644 index 0000000000000..069498248a5b1 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/videoConferences.ts @@ -0,0 +1,14 @@ +import type { AppsVideoConference } from '@rocket.chat/apps'; +import type { VideoConference } from '@rocket.chat/core-typings'; +import * as z from 'zod'; + +/** + * Rocket.Chat `VideoConference` <-> Apps-Engine `AppsVideoConference`. + * + * Both directions are a shallow pass-through clone, matching the legacy converter. Endpoints are + * typed with `z.custom` so no runtime validation is added yet. + */ +export const VideoConferenceCodec = z.codec(z.custom(), z.custom(), { + decode: (call): AppsVideoConference => ({ ...call }) as unknown as AppsVideoConference, + encode: (call): VideoConference => ({ ...call }) as unknown as VideoConference, +}); diff --git a/apps/meteor/app/apps/server/converters/codecs/visitors.ts b/apps/meteor/app/apps/server/converters/codecs/visitors.ts new file mode 100644 index 0000000000000..6130e296670a5 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/codecs/visitors.ts @@ -0,0 +1,49 @@ +import type { IAppsVisitor } from '@rocket.chat/apps'; +import type { ILivechatVisitor } from '@rocket.chat/core-typings'; +import * as z from 'zod'; + +import { mappedDecode } from './mappedData'; + +/** + * Rocket.Chat `ILivechatVisitor` <-> Apps-Engine `IAppsVisitor`. + * + * `decode` is a plain field-rename with an `_unmappedProperties_` bucket (mirrors the legacy + * `convertVisitor`). `encode` is bespoke: it mirrors `convertAppVisitor`, which defaults `status`, + * includes `visitorEmails`/`department`/`externalIds` only when truthy, deliberately does **not** + * write `_updatedAt`/`activity` back, and merges `_unmappedProperties_`. + */ +export const VisitorCodec = z.codec(z.custom(), z.custom(), { + decode: mappedDecode({ + id: '_id', + username: 'username', + name: 'name', + department: 'department', + updatedAt: '_updatedAt', + token: 'token', + phone: 'phone', + visitorEmails: 'visitorEmails', + livechatData: 'livechatData', + status: 'status', + activity: 'activity', + externalIds: 'externalIds', + }) as unknown as (visitor: ILivechatVisitor) => IAppsVisitor, + encode: (visitor): ILivechatVisitor => { + const newVisitor = { + _id: visitor.id, + username: visitor.username, + name: visitor.name, + token: visitor.token, + phone: visitor.phone, + livechatData: visitor.livechatData, + status: visitor.status || 'online', + ...(visitor.visitorEmails && { visitorEmails: visitor.visitorEmails }), + ...(visitor.department && { department: visitor.department }), + ...(visitor.externalIds && { externalIds: visitor.externalIds }), + }; + + return Object.assign( + newVisitor, + (visitor as { _unmappedProperties_?: Record })._unmappedProperties_, + ) as unknown as ILivechatVisitor; + }, +}); diff --git a/apps/meteor/app/apps/server/converters/contacts.ts b/apps/meteor/app/apps/server/converters/contacts.ts index fbe789360759d..d75833d097224 100644 --- a/apps/meteor/app/apps/server/converters/contacts.ts +++ b/apps/meteor/app/apps/server/converters/contacts.ts @@ -1,8 +1,9 @@ import type { IAppContactsConverter, IAppsLivechatContact } from '@rocket.chat/apps'; import type { ILivechatContact } from '@rocket.chat/core-typings'; import { LivechatContacts } from '@rocket.chat/models'; +import * as z from 'zod'; -import { transformMappedData } from './transformMappedData'; +import { ContactCodec } from './codecs/contacts'; export class AppContactsConverter implements IAppContactsConverter { async convertById(contactId: ILivechatContact['_id']): Promise { @@ -23,7 +24,7 @@ export class AppContactsConverter implements IAppContactsConverter { return; } - return structuredClone(contact); + return z.decodeAsync(ContactCodec, contact); } convertAppContact(contact: undefined | null): Promise; @@ -35,91 +36,6 @@ export class AppContactsConverter implements IAppContactsConverter { return; } - // Map every attribute individually to ensure there are no extra data coming from the app and leaking into anything else. - const map = { - _id: '_id', - _updatedAt: '_updatedAt', - name: 'name', - phones: { - from: 'phones', - list: true, - map: { - phoneNumber: 'phoneNumber', - }, - }, - emails: { - from: 'emails', - list: true, - map: { - address: 'address', - }, - }, - contactManager: 'contactManager', - unknown: 'unknown', - conflictingFields: { - from: 'conflictingFields', - list: true, - map: { - field: 'field', - value: 'value', - }, - }, - customFields: 'customFields', - channels: { - from: 'channels', - list: true, - map: { - name: 'name', - verified: 'verified', - visitor: { - from: 'visitor', - map: { - visitorId: 'visitorId', - source: { - from: 'source', - map: { - type: 'type', - id: 'id', - }, - }, - }, - }, - blocked: 'blocked', - field: 'field', - value: 'value', - verifiedAt: 'verifiedAt', - details: { - from: 'details', - map: { - type: 'type', - id: 'id', - alias: 'alias', - label: 'label', - sidebarIcon: 'sidebarIcon', - defaultIcon: 'defaultIcon', - destination: 'destination', - }, - }, - lastChat: { - from: 'lastChat', - map: { - _id: '_id', - ts: 'ts', - }, - }, - }, - }, - createdAt: 'createdAt', - lastChat: { - from: 'lastChat', - map: { - _id: '_id', - ts: 'ts', - }, - }, - importIds: 'importIds', - }; - - return transformMappedData(contact, map); + return z.encodeAsync(ContactCodec, contact); } } diff --git a/apps/meteor/app/apps/server/converters/departments.js b/apps/meteor/app/apps/server/converters/departments.js deleted file mode 100644 index 3fbfd07e9e99b..0000000000000 --- a/apps/meteor/app/apps/server/converters/departments.js +++ /dev/null @@ -1,67 +0,0 @@ -import { LivechatDepartment } from '@rocket.chat/models'; - -import { transformMappedData } from './transformMappedData'; - -export class AppDepartmentsConverter { - constructor(orch) { - this.orch = orch; - } - - async convertById(id) { - const department = await LivechatDepartment.findOneById(id); - - return this.convertDepartment(department); - } - - async convertDepartment(department) { - if (!department) { - return undefined; - } - - const map = { - id: '_id', - name: 'name', - email: 'email', - updatedAt: '_updatedAt', - enabled: 'enabled', - numberOfAgents: 'numAgents', - showOnOfflineForm: 'showOnOfflineForm', - description: 'description', - offlineMessageChannelName: 'offlineMessageChannelName', - requestTagBeforeClosingChat: 'requestTagBeforeClosingChat', - chatClosingTags: 'chatClosingTags', - abandonedRoomsCloseCustomMessage: 'abandonedRoomsCloseCustomMessage', - waitingQueueMessage: 'waitingQueueMessage', - departmentsAllowedToForward: 'departmentsAllowedToForward', - showOnRegistration: 'showOnRegistration', - }; - - return transformMappedData(department, map); - } - - convertAppDepartment(department) { - if (!department) { - return undefined; - } - - const newDepartment = { - _id: department.id, - name: department.name, - email: department.email, - _updatedAt: department.updatedAt, - enabled: department.enabled, - numAgents: department.numberOfAgents, - showOnOfflineForm: department.showOnOfflineForm, - showOnRegistration: department.showOnRegistration, - description: department.description, - offlineMessageChannelName: department.offlineMessageChannelName, - requestTagBeforeClosingChat: department.requestTagBeforeClosingChat, - chatClosingTags: department.chatClosingTags, - abandonedRoomsCloseCustomMessage: department.abandonedRoomsCloseCustomMessage, - waitingQueueMessage: department.waitingQueueMessage, - departmentsAllowedToForward: department.departmentsAllowedToForward, - }; - - return Object.assign(newDepartment, department._unmappedProperties_); - } -} diff --git a/apps/meteor/app/apps/server/converters/departments.ts b/apps/meteor/app/apps/server/converters/departments.ts new file mode 100644 index 0000000000000..3b2ba014a058f --- /dev/null +++ b/apps/meteor/app/apps/server/converters/departments.ts @@ -0,0 +1,46 @@ +import type { IAppDepartmentsConverter, IAppServerOrchestrator, IAppsDepartment } from '@rocket.chat/apps'; +import type { ILivechatDepartment } from '@rocket.chat/core-typings'; +import { LivechatDepartment } from '@rocket.chat/models'; +import * as z from 'zod'; + +import { DepartmentCodec } from './codecs'; + +export class AppDepartmentsConverter implements IAppDepartmentsConverter { + constructor(protected readonly orch: IAppServerOrchestrator) { + this.orch = orch; + } + + async convertById(id: ILivechatDepartment['_id']): Promise { + const department = await LivechatDepartment.findOneById(id); + + return this.convertDepartment(department); + } + + async convertDepartment(department: undefined | null): Promise; + + async convertDepartment(department: ILivechatDepartment): Promise; + + async convertDepartment(department: ILivechatDepartment | undefined | null): Promise; + + async convertDepartment(department: ILivechatDepartment | undefined | null): Promise { + if (!department) { + return undefined; + } + + return z.decode(DepartmentCodec, department); + } + + convertAppDepartment(department: undefined | null): undefined; + + convertAppDepartment(department: IAppsDepartment): ILivechatDepartment; + + convertAppDepartment(department: IAppsDepartment | undefined | null): ILivechatDepartment | undefined; + + convertAppDepartment(department: IAppsDepartment | undefined | null): ILivechatDepartment | undefined { + if (!department) { + return undefined; + } + + return z.encode(DepartmentCodec, department); + } +} diff --git a/apps/meteor/app/apps/server/converters/messages.js b/apps/meteor/app/apps/server/converters/messages.js deleted file mode 100644 index 332ab585d32e7..0000000000000 --- a/apps/meteor/app/apps/server/converters/messages.js +++ /dev/null @@ -1,341 +0,0 @@ -import { isMessageFromVisitor } from '@rocket.chat/core-typings'; -import { Messages, Rooms, Users } from '@rocket.chat/models'; -import { Random } from '@rocket.chat/random'; -import { removeEmpty } from '@rocket.chat/tools'; - -import { cachedFunction } from './cachedFunction'; -import { convertMessageFiles } from './convertMessageFiles'; -import { transformMappedData } from './transformMappedData'; - -export class AppMessagesConverter { - mem = new WeakMap(); - - constructor(orch) { - this.orch = orch; - } - - async convertById(msgId) { - const msg = await Messages.findOneById(msgId); - - return this.convertMessage(msg); - } - - async convertMessageRaw(msgObj) { - if (!msgObj) { - return undefined; - } - - const { attachments, ...message } = msgObj; - const getAttachments = async () => this._convertAttachmentsToApp(attachments, msgObj.file); - - const map = { - id: '_id', - threadId: 'tmid', - reactions: 'reactions', - parseUrls: 'parseUrls', - text: 'msg', - createdAt: 'ts', - updatedAt: '_updatedAt', - editedAt: 'editedAt', - emoji: 'emoji', - avatarUrl: 'avatar', - alias: 'alias', - file: 'file', - files: 'files', - customFields: 'customFields', - groupable: 'groupable', - token: 'token', - blocks: 'blocks', - roomId: 'rid', - editor: 'editedBy', - attachments: getAttachments, - sender: 'u', - threadMsgCount: 'tcount', - type: 't', - }; - - return transformMappedData(message, map); - } - - async convertMessage(msgObj, cacheObj = msgObj) { - if (!msgObj) { - return undefined; - } - - const cache = - this.mem.get(cacheObj) ?? - new Map([ - ['room', cachedFunction(this.orch.getConverters().get('rooms').convertById.bind(this.orch.getConverters().get('rooms')))], - [ - 'user.convertById', - cachedFunction(this.orch.getConverters().get('users').convertById.bind(this.orch.getConverters().get('users'))), - ], - [ - 'user.convertToApp', - cachedFunction(this.orch.getConverters().get('users').convertToApp.bind(this.orch.getConverters().get('users'))), - ], - ]); - - this.mem.set(cacheObj, cache); - - const { attachments, file: mainFile } = msgObj; - - const map = { - id: '_id', - threadId: 'tmid', - reactions: 'reactions', - parseUrls: 'parseUrls', - text: 'msg', - createdAt: 'ts', - updatedAt: '_updatedAt', - editedAt: 'editedAt', - emoji: 'emoji', - avatarUrl: 'avatar', - alias: 'alias', - file: 'file', - customFields: 'customFields', - groupable: 'groupable', - token: 'token', - blocks: 'blocks', - type: 't', - files: async (message) => convertMessageFiles(message.files, attachments), - room: async (message) => { - const result = await cache.get('room')(message.rid); - delete message.rid; - return result; - }, - editor: async (message) => { - const { editedBy } = message; - delete message.editedBy; - - if (!editedBy) { - return undefined; - } - - return cache.get('user.convertById')(editedBy._id); - }, - attachments: async (message) => { - const result = await this._convertAttachmentsToApp(message.attachments, mainFile); - delete message.attachments; - return result; - }, - sender: async (message) => { - if (!message.u || !message.u._id) { - return undefined; - } - - // When the message contains token, means the message is from the visitor(omnichannel) - const user = await (isMessageFromVisitor(msgObj) - ? cache.get('user.convertToApp')(message.u) - : cache.get('user.convertById')(message.u._id)); - - delete message.u; - - /** - * Old System Messages from visitor doesn't have the `token` field, to not return - * `sender` as undefined, so we need to add this fallback here. - */ - - return user || cache.get('user.convertToApp')(message.u); - }, - }; - - return transformMappedData(msgObj, map); - } - - async convertAppMessage(message, isPartial = false) { - if (!message) { - return undefined; - } - - let rid; - if (message.room?.id) { - const room = await Rooms.findOneById(message.room.id, { projection: { _id: 1 } }); - rid = room?._id; - } - - if (!rid && !isPartial) { - throw new Error('Invalid room provided on the message.'); - } - - let u; - if (message.sender?.id) { - const user = await Users.findOneById(message.sender.id); - - if (user) { - u = { - _id: user._id, - username: user.username, - name: user.name, - }; - } else { - u = { - _id: message.sender.id, - username: message.sender.username, - name: message.sender.name, - }; - } - } - - let editedBy; - if (message.editor) { - const editor = await Users.findOneById(message.editor.id); - editedBy = { - _id: editor._id, - username: editor.username, - }; - } - - const attachments = this._convertAppAttachments(message.attachments); - - let _id = message.id; - let ts = message.createdAt; - - if (!isPartial) { - if (!message.id) { - _id = Random.id(); - } - - if (!message.createdAt) { - ts = new Date(); - } - } - - const newMessage = { - _id, - ...('threadId' in message && { tmid: message.threadId }), - rid, - u, - msg: message.text, - ts, - _updatedAt: message.updatedAt, - ...(editedBy && { editedBy }), - ...('editedAt' in message && { editedAt: message.editedAt }), - ...('emoji' in message && { emoji: message.emoji }), - ...('avatarUrl' in message && { avatar: message.avatarUrl }), - ...('alias' in message && { alias: message.alias }), - ...('customFields' in message && { customFields: message.customFields }), - ...('groupable' in message && { groupable: message.groupable }), - ...(attachments && { attachments }), - ...('reactions' in message && { reactions: message.reactions }), - ...('parseUrls' in message && { parseUrls: message.parseUrls }), - ...('blocks' in message && { blocks: message.blocks }), - ...('token' in message && { token: message.token }), - }; - - if (isPartial) { - Object.entries(newMessage).forEach(([key, value]) => { - if (typeof value === 'undefined') { - delete newMessage[key]; - } - }); - } else { - Object.assign(newMessage, message._unmappedProperties_); - } - - return newMessage; - } - - _convertAppAttachments(attachments) { - if (typeof attachments === 'undefined' || !Array.isArray(attachments)) { - return undefined; - } - - return attachments.map((attachment) => - removeEmpty({ - collapsed: attachment.collapsed, - color: attachment.color, - text: attachment.text, - ts: attachment.timestamp ? attachment.timestamp.toJSON() : attachment.timestamp, - message_link: attachment.timestampLink, - thumb_url: attachment.thumbnailUrl, - author_name: attachment.author ? attachment.author.name : undefined, - author_link: attachment.author ? attachment.author.link : undefined, - author_icon: attachment.author ? attachment.author.icon : undefined, - title: attachment.title ? attachment.title.value : undefined, - title_link: attachment.title ? attachment.title.link : undefined, - title_link_download: attachment.title ? attachment.title.displayDownloadLink : undefined, - image_dimensions: attachment.imageDimensions, - image_preview: attachment.imagePreview, - image_url: attachment.imageUrl, - image_type: attachment.imageType, - image_size: attachment.imageSize, - audio_url: attachment.audioUrl, - audio_type: attachment.audioType, - audio_size: attachment.audioSize, - video_url: attachment.videoUrl, - video_type: attachment.videoType, - video_size: attachment.videoSize, - fields: attachment.fields, - button_alignment: attachment.actionButtonsAlignment, - actions: attachment.actions, - type: attachment.type, - description: attachment.description, - ...attachment._unmappedProperties_, - }), - ); - } - - async _convertAttachmentsToApp(attachments, mainFile) { - if (typeof attachments === 'undefined' || !Array.isArray(attachments)) { - return undefined; - } - - const map = { - collapsed: 'collapsed', - color: 'color', - text: 'text', - timestampLink: 'message_link', - thumbnailUrl: 'thumb_url', - imageDimensions: 'image_dimensions', - imagePreview: 'image_preview', - imageUrl: 'image_url', - imageType: 'image_type', - imageSize: 'image_size', - audioUrl: 'audio_url', - audioType: 'audio_type', - audioSize: 'audio_size', - videoUrl: 'video_url', - videoType: 'video_type', - videoSize: 'video_size', - fields: 'fields', - actionButtonsAlignment: 'button_alignment', - actions: 'actions', - type: 'type', - description: 'description', - author: (attachment) => { - const { author_name: name, author_link: link, author_icon: icon } = attachment; - - delete attachment.author_name; - delete attachment.author_link; - delete attachment.author_icon; - - return { name, link, icon }; - }, - title: (attachment) => { - const { title: value, title_link: link, title_link_download: displayDownloadLink } = attachment; - - delete attachment.title; - delete attachment.title_link; - delete attachment.title_link_download; - - return { value, link, displayDownloadLink }; - }, - timestamp: (attachment) => { - const result = new Date(attachment.ts); - delete attachment.ts; - return result; - }, - fileId: (attachment) => { - // If the attachment is missing the fileId, but there's only one file in the message, use that file's ID - if (!attachment.fileId && attachment.type === 'file' && mainFile?._id && attachments.length === 1) { - return mainFile._id; - } - - return attachment.fileId; - }, - }; - - return Promise.all(attachments.map(async (attachment) => transformMappedData(attachment, map))); - } -} diff --git a/apps/meteor/app/apps/server/converters/messages.ts b/apps/meteor/app/apps/server/converters/messages.ts new file mode 100644 index 0000000000000..ce1d5d7f09f6a --- /dev/null +++ b/apps/meteor/app/apps/server/converters/messages.ts @@ -0,0 +1,378 @@ +import type { IAppMessagesConverter, IAppServerOrchestrator, IAppsMessage, IAppsMesssageRaw } from '@rocket.chat/apps'; +import { isMessageFromVisitor } from '@rocket.chat/core-typings'; +import type { IMessage } from '@rocket.chat/core-typings'; +import { Messages, Rooms, Users } from '@rocket.chat/models'; +import { Random } from '@rocket.chat/random'; +import { removeEmpty } from '@rocket.chat/tools'; + +import { cachedFunction } from './cachedFunction'; +import { mappedDecodeAsync } from './codecs/mappedData'; +import { convertMessageFiles } from './convertMessageFiles'; + +// The stored message documents and the app-side payloads carry many optional/dynamic fields that are +// awkward to express against the base `IMessage`/`IAppsMessage` types. The legacy converter accessed +// them dynamically; until this converter is migrated to a codec we treat the transform inputs as +// loosely-typed records to preserve that behaviour verbatim. +type MessageData = Record; + +export class AppMessagesConverter implements IAppMessagesConverter { + private mem = new WeakMap>(); + + constructor(protected readonly orch: IAppServerOrchestrator) { + this.orch = orch; + } + + async convertById(msgId: IMessage['_id']): Promise { + const msg = await Messages.findOneById(msgId); + + return this.convertMessage(msg); + } + + convertMessageRaw(msgObj: IMessage): Promise; + + convertMessageRaw(msgObj: IMessage | undefined | null): Promise; + + async convertMessageRaw(msgObj: IMessage | undefined | null): Promise { + if (!msgObj) { + return undefined; + } + + const { attachments, ...message } = msgObj; + const getAttachments = async () => this._convertAttachmentsToApp(attachments, (msgObj as MessageData).file); + + const map = { + id: '_id', + threadId: 'tmid', + reactions: 'reactions', + parseUrls: 'parseUrls', + text: 'msg', + createdAt: 'ts', + updatedAt: '_updatedAt', + editedAt: 'editedAt', + emoji: 'emoji', + avatarUrl: 'avatar', + alias: 'alias', + file: 'file', + files: 'files', + customFields: 'customFields', + groupable: 'groupable', + token: 'token', + blocks: 'blocks', + roomId: 'rid', + editor: 'editedBy', + attachments: getAttachments, + sender: 'u', + threadMsgCount: 'tcount', + type: 't', + } as const; + + return mappedDecodeAsync(message, map); + } + + convertMessage(msgObj: undefined | null): Promise; + + convertMessage(msgObj: IMessage, cacheObj?: object): Promise; + + convertMessage(msgObj: IMessage | undefined | null, cacheObj?: object): Promise; + + async convertMessage( + msgObj: IMessage | undefined | null, + cacheObj: object | undefined = msgObj ?? undefined, + ): Promise { + if (!msgObj) { + return undefined; + } + + const cache = + this.mem.get(cacheObj as object) ?? + new Map([ + ['room', cachedFunction(this.orch.getConverters().get('rooms').convertById.bind(this.orch.getConverters().get('rooms')))], + [ + 'user.convertById', + cachedFunction(this.orch.getConverters().get('users').convertById.bind(this.orch.getConverters().get('users'))), + ], + [ + 'user.convertToApp', + cachedFunction(this.orch.getConverters().get('users').convertToApp.bind(this.orch.getConverters().get('users'))), + ], + ]); + + this.mem.set(cacheObj as object, cache); + + const { attachments, file: mainFile } = msgObj as MessageData; + + const map = { + id: '_id', + threadId: 'tmid', + reactions: 'reactions', + parseUrls: 'parseUrls', + text: 'msg', + createdAt: 'ts', + updatedAt: '_updatedAt', + editedAt: 'editedAt', + emoji: 'emoji', + avatarUrl: 'avatar', + alias: 'alias', + file: 'file', + customFields: 'customFields', + groupable: 'groupable', + token: 'token', + blocks: 'blocks', + type: 't', + files: async (message: MessageData) => convertMessageFiles(message.files, attachments), + room: async (message: MessageData) => { + const result = await cache.get('room')(message.rid); + delete message.rid; + return result; + }, + editor: async (message: MessageData) => { + const { editedBy } = message; + delete message.editedBy; + + if (!editedBy) { + return undefined; + } + + return cache.get('user.convertById')(editedBy._id); + }, + attachments: async (message: MessageData) => { + const result = await this._convertAttachmentsToApp(message.attachments, mainFile); + delete message.attachments; + return result; + }, + sender: async (message: MessageData) => { + if (!message.u?._id) { + return undefined; + } + + // Keep a reference to the original sender before it is deleted below, so the fallback still has it. + const sender = message.u; + + // When the message contains token, means the message is from the visitor(omnichannel) + const user = await (isMessageFromVisitor(msgObj) + ? cache.get('user.convertToApp')(sender) + : cache.get('user.convertById')(sender._id)); + + delete message.u; + + /** + * Old System Messages from visitor doesn't have the `token` field, to not return + * `sender` as undefined, so we need to add this fallback here. + */ + + return user || cache.get('user.convertToApp')(sender); + }, + } as const; + + return mappedDecodeAsync(msgObj, map); + } + + convertAppMessage(message: undefined | null): Promise; + + convertAppMessage(message: IAppsMessage): Promise; + + convertAppMessage(message: IAppsMessage, isPartial: boolean): Promise>; + + async convertAppMessage(message: any, isPartial = false): Promise | undefined> { + if (!message) { + return undefined; + } + + let rid; + if (message.room?.id) { + const room = await Rooms.findOneById(message.room.id, { projection: { _id: 1 } }); + rid = room?._id; + } + + if (!rid && !isPartial) { + throw new Error('Invalid room provided on the message.'); + } + + let u; + if (message.sender?.id) { + const user = await Users.findOneById(message.sender.id); + + if (user) { + u = { + _id: user._id, + username: user.username, + name: user.name, + }; + } else { + u = { + _id: message.sender.id, + username: message.sender.username, + name: message.sender.name, + }; + } + } + + let editedBy; + if (message.editor) { + const editor = await Users.findOneById(message.editor.id); + // Fall back to the editor data carried on the app payload when the user no longer exists, + // mirroring the sender handling above instead of dereferencing a possibly-null lookup. + editedBy = editor + ? { + _id: editor._id, + username: editor.username, + } + : { + _id: message.editor.id, + username: message.editor.username, + }; + } + + const attachments = this._convertAppAttachments(message.attachments); + + let _id = message.id; + let ts = message.createdAt; + + if (!isPartial) { + if (!message.id) { + _id = Random.id(); + } + + if (!message.createdAt) { + ts = new Date(); + } + } + + const newMessage: MessageData = { + _id, + ...('threadId' in message && { tmid: message.threadId }), + rid, + u, + msg: message.text, + ts, + _updatedAt: message.updatedAt, + ...(editedBy && { editedBy }), + ...('editedAt' in message && { editedAt: message.editedAt }), + ...('emoji' in message && { emoji: message.emoji }), + ...('avatarUrl' in message && { avatar: message.avatarUrl }), + ...('alias' in message && { alias: message.alias }), + ...('customFields' in message && { customFields: message.customFields }), + ...('groupable' in message && { groupable: message.groupable }), + ...(attachments && { attachments }), + ...('reactions' in message && { reactions: message.reactions }), + ...('parseUrls' in message && { parseUrls: message.parseUrls }), + ...('blocks' in message && { blocks: message.blocks }), + ...('token' in message && { token: message.token }), + }; + + if (isPartial) { + Object.entries(newMessage).forEach(([key, value]) => { + if (typeof value === 'undefined') { + delete newMessage[key]; + } + }); + } else { + Object.assign(newMessage, message._unmappedProperties_); + } + + return newMessage as unknown as Partial; + } + + _convertAppAttachments(attachments: any) { + if (typeof attachments === 'undefined' || !Array.isArray(attachments)) { + return undefined; + } + + return attachments.map((attachment) => + removeEmpty({ + collapsed: attachment.collapsed, + color: attachment.color, + text: attachment.text, + ts: attachment.timestamp ? attachment.timestamp.toJSON() : attachment.timestamp, + message_link: attachment.timestampLink, + thumb_url: attachment.thumbnailUrl, + author_name: attachment.author ? attachment.author.name : undefined, + author_link: attachment.author ? attachment.author.link : undefined, + author_icon: attachment.author ? attachment.author.icon : undefined, + title: attachment.title ? attachment.title.value : undefined, + title_link: attachment.title ? attachment.title.link : undefined, + title_link_download: attachment.title ? attachment.title.displayDownloadLink : undefined, + image_dimensions: attachment.imageDimensions, + image_preview: attachment.imagePreview, + image_url: attachment.imageUrl, + image_type: attachment.imageType, + image_size: attachment.imageSize, + audio_url: attachment.audioUrl, + audio_type: attachment.audioType, + audio_size: attachment.audioSize, + video_url: attachment.videoUrl, + video_type: attachment.videoType, + video_size: attachment.videoSize, + fields: attachment.fields, + button_alignment: attachment.actionButtonsAlignment, + actions: attachment.actions, + type: attachment.type, + description: attachment.description, + ...attachment._unmappedProperties_, + }), + ); + } + + async _convertAttachmentsToApp(attachments: any, mainFile: any) { + if (typeof attachments === 'undefined' || !Array.isArray(attachments)) { + return undefined; + } + + const map = { + collapsed: 'collapsed', + color: 'color', + text: 'text', + timestampLink: 'message_link', + thumbnailUrl: 'thumb_url', + imageDimensions: 'image_dimensions', + imagePreview: 'image_preview', + imageUrl: 'image_url', + imageType: 'image_type', + imageSize: 'image_size', + audioUrl: 'audio_url', + audioType: 'audio_type', + audioSize: 'audio_size', + videoUrl: 'video_url', + videoType: 'video_type', + videoSize: 'video_size', + fields: 'fields', + actionButtonsAlignment: 'button_alignment', + actions: 'actions', + type: 'type', + description: 'description', + author: (attachment: MessageData) => { + const { author_name: name, author_link: link, author_icon: icon } = attachment; + + delete attachment.author_name; + delete attachment.author_link; + delete attachment.author_icon; + + return { name, link, icon }; + }, + title: (attachment: MessageData) => { + const { title: value, title_link: link, title_link_download: displayDownloadLink } = attachment; + + delete attachment.title; + delete attachment.title_link; + delete attachment.title_link_download; + + return { value, link, displayDownloadLink }; + }, + timestamp: (attachment: MessageData) => { + const result = new Date(attachment.ts); + delete attachment.ts; + return result; + }, + fileId: (attachment: MessageData) => { + // If the attachment is missing the fileId, but there's only one file in the message, use that file's ID + if (!attachment.fileId && attachment.type === 'file' && mainFile?._id && attachments.length === 1) { + return mainFile._id; + } + + return attachment.fileId; + }, + } as const; + + return Promise.all(attachments.map(async (attachment) => mappedDecodeAsync(attachment, map))); + } +} diff --git a/apps/meteor/app/apps/server/converters/roles.ts b/apps/meteor/app/apps/server/converters/roles.ts index 10841a038c933..1e3fb92419f01 100644 --- a/apps/meteor/app/apps/server/converters/roles.ts +++ b/apps/meteor/app/apps/server/converters/roles.ts @@ -2,8 +2,9 @@ import type { IAppRolesConverter } from '@rocket.chat/apps'; import type { IRole as AppsEngineRole } from '@rocket.chat/apps-engine/definition/roles'; import type { IRole } from '@rocket.chat/core-typings'; import { Roles } from '@rocket.chat/models'; +import * as z from 'zod'; -import { transformMappedData } from './transformMappedData'; +import { RoleCodec } from './codecs'; export class AppRolesConverter implements IAppRolesConverter { async convertById(roleId: string): Promise { @@ -16,15 +17,6 @@ export class AppRolesConverter implements IAppRolesConverter { } async convertRole(role: IRole): Promise { - const map = { - id: '_id', - name: 'name', - description: 'description', - mandatory2fa: 'mandatory2fa', - protected: 'protected', - scope: 'scope', - } as const; - - return transformMappedData(role, map); + return z.decode(RoleCodec, role) as unknown as AppsEngineRole; } } diff --git a/apps/meteor/app/apps/server/converters/rooms.js b/apps/meteor/app/apps/server/converters/rooms.js deleted file mode 100644 index 38c4f25678e24..0000000000000 --- a/apps/meteor/app/apps/server/converters/rooms.js +++ /dev/null @@ -1,480 +0,0 @@ -import { secureFieldsMapper } from '@rocket.chat/apps/dist/lib/SecureFields'; -import { RoomType } from '@rocket.chat/apps-engine/definition/rooms'; -import { LivechatVisitors, Rooms, LivechatDepartment, Users, LivechatContacts } from '@rocket.chat/models'; - -import { transformMappedData } from './transformMappedData'; - -export class AppRoomsConverter { - constructor(orch) { - this.orch = orch; - } - - async convertById(roomId) { - const room = await Rooms.findOneById(roomId); - - return this.convertRoom(room); - } - - async convertByName(roomName) { - const room = await Rooms.findOneByName(roomName); - - return this.convertRoom(room); - } - - convertRoomRaw(room) { - if (!room) { - return undefined; - } - - const mapUserLookup = (user) => - user && { - _id: user._id ?? user.id, - ...(user.username && { username: user.username }), - ...(user.name && { name: user.name }), - }; - - const map = { - id: '_id', - displayName: 'fname', - slugifiedName: 'name', - members: 'members', - userIds: 'uids', - usernames: 'usernames', - messageCount: 'msgs', - createdAt: 'ts', - updatedAt: '_updatedAt', - closedAt: 'closedAt', - lastModifiedAt: 'lm', - customFields: 'customFields', - livechatData: 'livechatData', - isWaitingResponse: 'waitingResponse', - isOpen: 'open', - description: 'description', - source: 'source', - closer: 'closer', - teamId: 'teamId', - isTeamMain: 'teamMain', - isDefault: 'default', - isReadOnly: 'ro', - contactId: 'contactId', - departmentId: 'departmentId', - parentRoomId: 'prid', - isFederated: 'federated', - federation: 'federation', - visitor: (data) => { - const { v } = data; - if (!v) { - return undefined; - } - - delete data.v; - - const { _id: id, ...rest } = v; - - return { - id, - ...rest, - }; - }, - displaySystemMessages: (data) => { - const { sysMes } = data; - delete data.sysMes; - return typeof sysMes === 'undefined' ? true : sysMes; - }, - type: (data) => { - const result = this._convertTypeToApp(data.t); - delete data.t; - return result; - }, - creator: (data) => { - if (!data.u) { - return undefined; - } - const creator = mapUserLookup(data.u); - delete data.u; - return creator; - }, - closedBy: (data) => { - if (!data.closedBy) { - return undefined; - } - const { closedBy } = data; - delete data.closedBy; - return mapUserLookup(closedBy); - }, - servedBy: (data) => { - if (!data.servedBy) { - return undefined; - } - const { servedBy } = data; - delete data.servedBy; - return mapUserLookup(servedBy); - }, - responseBy: (data) => { - if (!data.responseBy) { - return undefined; - } - const { responseBy } = data; - delete data.responseBy; - return mapUserLookup(responseBy); - }, - }; - - return transformMappedData(room, map); - } - - async __getCreator(user) { - if (!user) { - return; - } - - const creator = await Users.findOneById(user, { projection: { _id: 1, username: 1, name: 1 } }); - if (!creator) { - return; - } - - return { - _id: creator._id, - username: creator.username, - name: creator.name, - }; - } - - async __getVisitor({ visitor: roomVisitor, visitorChannelInfo }) { - if (!roomVisitor) { - return; - } - - const visitor = await LivechatVisitors.findOneEnabledById(roomVisitor.id); - if (!visitor) { - return; - } - - const { lastMessageTs, phone } = visitorChannelInfo; - - return { - _id: visitor._id, - username: visitor.username, - token: visitor.token, - status: visitor.status || 'online', - activity: visitor.activity, - ...(lastMessageTs && { lastMessageTs }), - ...(phone && { phone }), - }; - } - - async __getUserIdAndUsername(userObj) { - if (!userObj?.id) { - return; - } - - const user = await Users.findOneById(userObj.id, { projection: { _id: 1, username: 1 } }); - if (!user) { - return; - } - - return { - _id: user._id, - username: user.username, - }; - } - - async __getRoomCloser(room, v) { - if (!room.closedBy) { - return; - } - - if (room.closer === 'user') { - const user = await Users.findOneById(room.closedBy.id, { projection: { _id: 1, username: 1 } }); - if (!user) { - return; - } - - return { - _id: user._id, - username: user.username, - }; - } - - if (room.closer === 'visitor' && v) { - return { - _id: v._id, - username: v.username, - }; - } - } - - // TODO do we really need this? - async __getContactId({ contact }) { - if (!contact?._id) { - return; - } - const contactFromDb = await LivechatContacts.findOneEnabledById(contact._id, { projection: { _id: 1 } }); - return contactFromDb?._id; - } - - // TODO do we really need this? - async __getDepartment({ department }) { - if (!department) { - return; - } - const dept = await LivechatDepartment.findOneById(department.id, { projection: { _id: 1 } }); - return dept?._id; - } - - async convertAppRoom(room, isPartial = false) { - if (!room) { - return undefined; - } - - const u = await this.__getCreator(room.creator?.id); - - const v = await this.__getVisitor(room); - - const departmentId = await this.__getDepartment(room); - - const servedBy = await this.__getUserIdAndUsername(room.servedBy); - - const closedBy = await this.__getRoomCloser(room, v); - - const contactId = await this.__getContactId(room); - - const newRoom = { - ...(room.id && { _id: room.id }), - ...(typeof room.type !== 'undefined' && { t: room.type }), - ...(typeof room.createdAt !== 'undefined' && { ts: room.createdAt }), - ...(typeof room.messageCount !== 'undefined' && { msgs: room.messageCount || 0 }), - ...(typeof room.updatedAt !== 'undefined' && { _updatedAt: room.updatedAt }), - ...(room.displayName && { fname: room.displayName }), - ...(room.type !== 'd' && room.slugifiedName && { name: room.slugifiedName }), - ...(room.members && { members: room.members }), - ...(typeof room.isDefault !== 'undefined' && { default: room.isDefault }), - ...(typeof room.isReadOnly !== 'undefined' && { ro: room.isReadOnly }), - ...(typeof room.displaySystemMessages !== 'undefined' && { sysMes: room.displaySystemMessages }), - ...(u && { u }), - ...(v && { v }), - ...(departmentId && { departmentId }), - ...(servedBy && { servedBy }), - ...(closedBy && { closedBy }), - ...(room.userIds && { uids: room.userIds }), - ...(typeof room.isWaitingResponse !== 'undefined' && { waitingResponse: !!room.isWaitingResponse }), - ...(typeof room.isOpen !== 'undefined' && { open: !!room.isOpen }), - ...(room.closedAt && { closedAt: room.closedAt }), - ...(room.lastModifiedAt && { lm: room.lastModifiedAt }), - ...(room.customFields && { customFields: room.customFields }), - ...(room.livechatData && { livechatData: room.livechatData }), - ...(typeof room.isFederated !== 'undefined' && { federated: room.isFederated }), - ...(typeof room.federation !== 'undefined' && { federation: room.federation }), - ...(typeof room.parentRoom !== 'undefined' && { prid: room.parentRoom.id }), - ...(contactId && { contactId }), - ...(room._USERNAMES && { _USERNAMES: room._USERNAMES }), - ...(room.source && { - source: { - ...room.source, - }, - }), - }; - - if (!isPartial) { - Object.assign(newRoom, room._unmappedProperties_); - } - - return newRoom; - } - - async convertRoom(originalRoom) { - if (!originalRoom) { - return undefined; - } - - const map = { - id: '_id', - displayName: 'fname', - slugifiedName: 'name', - members: 'members', - userIds: 'uids', - messageCount: 'msgs', - createdAt: 'ts', - updatedAt: '_updatedAt', - closedAt: 'closedAt', - lastModifiedAt: 'lm', - customFields: 'customFields', - livechatData: 'livechatData', - isWaitingResponse: 'waitingResponse', - isOpen: 'open', - _USERNAMES: '_USERNAMES', - description: 'description', - source: 'source', - closer: 'closer', - teamId: 'teamId', - isTeamMain: 'teamMain', - isFederated: 'federated', - federation: 'federation', - isDefault: (room) => { - const result = !!room.default; - delete room.default; - return result; - }, - isReadOnly: (room) => { - const result = !!room.ro; - delete room.ro; - return result; - }, - displaySystemMessages: (room) => { - const { sysMes } = room; - - if (typeof sysMes === 'undefined') { - return true; - } - - delete room.sysMes; - return sysMes; - }, - type: (room) => { - const result = this._convertTypeToApp(room.t); - delete room.t; - return result; - }, - creator: async (room) => { - const { u } = room; - - if (!u) { - return undefined; - } - - delete room.u; - - return this.orch.getConverters().get('users').convertById(u._id); - }, - visitor: (room) => { - const { v } = room; - - if (!v) { - return undefined; - } - - return this.orch.getConverters().get('visitors').convertById(v._id); - }, - contact: (room) => { - const { contactId } = room; - - if (!contactId) { - return undefined; - } - - return this.orch.getConverters().get('contacts').convertById(contactId); - }, - // Note: room.v is not just visitor, it also contains channel related visitor data - // so we need to pass this data to the converter - // So suppose you have a contact whom we're contacting using SMS via 2 phone no's, - // let's call X and Y. Then if the contact sends a message using X phone number, - // then room.v.phoneNo would be X and correspondingly we'll store the timestamp of - // the last message from this visitor from X phone no on room.v.lastMessageTs - visitorChannelInfo: (room) => { - const { v } = room; - - if (!v) { - return undefined; - } - - const { lastMessageTs, phone } = v; - - return { - ...(phone && { phone }), - ...(lastMessageTs && { lastMessageTs }), - }; - }, - department: async (room) => { - const { departmentId } = room; - - if (!departmentId) { - return undefined; - } - - delete room.departmentId; - - return this.orch.getConverters().get('departments').convertById(departmentId); - }, - closedBy: async (room) => { - const { closedBy } = room; - - if (!closedBy) { - return undefined; - } - - delete room.closedBy; - if (originalRoom.closer === 'user') { - return this.orch.getConverters().get('users').convertById(closedBy._id); - } - - return this.orch.getConverters().get('visitors').convertById(closedBy._id); - }, - servedBy: async (room) => { - const { servedBy } = room; - - if (!servedBy) { - return undefined; - } - - delete room.servedBy; - - return this.orch.getConverters().get('users').convertById(servedBy._id); - }, - responseBy: async (room) => { - const { responseBy } = room; - - if (!responseBy) { - return undefined; - } - - delete room.responseBy; - - return this.orch.getConverters().get('users').convertById(responseBy._id); - }, - parentRoom: async (room) => { - const { prid } = room; - - if (!prid) { - return undefined; - } - - delete room.prid; - - return this.orch.getConverters().get('rooms').convertById(prid); - }, - ...secureFieldsMapper((room) => { - if (!room.abacAttributes) { - return undefined; - } - - const value = [ - { - permission: 'abac.read', - name: 'abacAttributes', - value: room.abacAttributes, - }, - ]; - - delete room.abacAttributes; - return value; - }), - }; - - return transformMappedData(originalRoom, map); - } - - _convertTypeToApp(typeChar) { - switch (typeChar) { - case 'c': - return RoomType.CHANNEL; - case 'p': - return RoomType.PRIVATE_GROUP; - case 'd': - return RoomType.DIRECT_MESSAGE; - case 'l': - return RoomType.LIVE_CHAT; - default: - return typeChar; - } - } -} diff --git a/apps/meteor/app/apps/server/converters/rooms.ts b/apps/meteor/app/apps/server/converters/rooms.ts new file mode 100644 index 0000000000000..1fc4eeba3edc5 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/rooms.ts @@ -0,0 +1,73 @@ +import type { IAppRoomsConverter, IAppServerOrchestrator, IAppsRoom, IAppsLivechatRoom, IAppsRoomRaw } from '@rocket.chat/apps'; +import type { IRoom } from '@rocket.chat/core-typings'; +import { Rooms } from '@rocket.chat/models'; +import * as z from 'zod'; + +import { appRoomToRocketChat, createRoomCodec, decodeRoomRaw } from './codecs/rooms'; + +export class AppRoomsConverter implements IAppRoomsConverter { + private readonly codec: ReturnType; + + constructor(protected readonly orch: IAppServerOrchestrator) { + this.orch = orch; + this.codec = createRoomCodec(orch); + } + + async convertById(roomId: IRoom['_id']): Promise { + const room = await Rooms.findOneById(roomId); + + return this.convertRoom(room); + } + + async convertByName(roomName: IRoom['name']): Promise { + const room = await Rooms.findOneByName(roomName as string); + + return this.convertRoom(room); + } + + convertRoomRaw(room: IRoom): Promise; + + convertRoomRaw(room: IRoom | undefined | null): Promise; + + convertRoomRaw(room: IRoom | undefined | null): Promise { + if (!room) { + return Promise.resolve(undefined); + } + + return decodeRoomRaw(room); + } + + async convertAppRoom(room: undefined | null): Promise; + + async convertAppRoom(room: IAppsRoom): Promise; + + async convertAppRoom(room: IAppsRoom, isPartial: boolean): Promise>; + + async convertAppRoom(room: IAppsRoom | undefined | null, isPartial?: boolean): Promise | undefined>; + + async convertAppRoom(room: IAppsRoom | undefined | null, isPartial = false): Promise | undefined> { + if (!room) { + return undefined; + } + + if (isPartial) { + return appRoomToRocketChat(room, true); + } + + return z.encodeAsync(this.codec, room); + } + + convertRoom(originalRoom: undefined | null): Promise; + + convertRoom(originalRoom: IRoom): Promise; + + convertRoom(originalRoom: IRoom | undefined | null): Promise; + + convertRoom(originalRoom: IRoom | undefined | null): Promise { + if (!originalRoom) { + return Promise.resolve(undefined); + } + + return z.decodeAsync(this.codec, originalRoom); + } +} diff --git a/apps/meteor/app/apps/server/converters/settings.js b/apps/meteor/app/apps/server/converters/settings.js deleted file mode 100644 index 07b790cb7c592..0000000000000 --- a/apps/meteor/app/apps/server/converters/settings.js +++ /dev/null @@ -1,52 +0,0 @@ -import { SettingType } from '@rocket.chat/apps-engine/definition/settings'; -import { Settings } from '@rocket.chat/models'; - -export class AppSettingsConverter { - constructor(orch) { - this.orch = orch; - } - - async convertById(settingId) { - const setting = await Settings.findOneById(settingId); - - return this.convertToApp(setting); - } - - convertToApp(setting) { - return { - id: setting._id, - type: this._convertTypeToApp(setting.type), - packageValue: setting.packageValue, - values: setting.values, - value: setting.value, - public: setting.public, - hidden: setting.hidden, - group: setting.group, - i18nLabel: setting.i18nLabel, - i18nDescription: setting.i18nDescription, - createdAt: setting.ts, - updatedAt: setting._updatedAt, - }; - } - - _convertTypeToApp(type) { - switch (type) { - case 'boolean': - return SettingType.BOOLEAN; - case 'code': - return SettingType.CODE; - case 'color': - return SettingType.COLOR; - case 'font': - return SettingType.FONT; - case 'int': - return SettingType.NUMBER; - case 'select': - return SettingType.SELECT; - case 'string': - return SettingType.STRING; - default: - return type; - } - } -} diff --git a/apps/meteor/app/apps/server/converters/settings.ts b/apps/meteor/app/apps/server/converters/settings.ts new file mode 100644 index 0000000000000..a052d9e9e41c9 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/settings.ts @@ -0,0 +1,22 @@ +import type { IAppServerOrchestrator, IAppSettingsConverter, IAppsSetting } from '@rocket.chat/apps'; +import type { ISetting } from '@rocket.chat/core-typings'; +import { Settings } from '@rocket.chat/models'; +import * as z from 'zod'; + +import { SettingCodec } from './codecs'; + +export class AppSettingsConverter implements IAppSettingsConverter { + constructor(protected readonly orch: IAppServerOrchestrator) { + this.orch = orch; + } + + async convertById(settingId: ISetting['_id']): Promise { + const setting = await Settings.findOneById(settingId); + + return this.convertToApp(setting as ISetting); + } + + convertToApp(setting: ISetting): IAppsSetting { + return z.decode(SettingCodec, setting); + } +} diff --git a/apps/meteor/app/apps/server/converters/threads.ts b/apps/meteor/app/apps/server/converters/threads.ts index 376488f3ec3ca..c25f843ffc0ad 100644 --- a/apps/meteor/app/apps/server/converters/threads.ts +++ b/apps/meteor/app/apps/server/converters/threads.ts @@ -6,8 +6,8 @@ import type { IUser, IMessage } from '@rocket.chat/core-typings'; import { Messages } from '@rocket.chat/models'; import { cachedFunction } from './cachedFunction'; +import { mappedDecodeAsync, type AsyncFieldMap } from './codecs/mappedData'; import { convertMessageFiles } from './convertMessageFiles'; -import { transformMappedData } from './transformMappedData'; // eslint-disable-next-line @typescript-eslint/naming-convention interface Orchestrator { @@ -51,7 +51,7 @@ export class AppThreadsConverter implements IAppThreadsConverter { const replies = await Messages.find(query).toArray(); - const room = (await this.orch.getConverters().get('rooms').convertById(mainMessage.rid)) as IRoom | undefined; + const room = await this.orch.getConverters().get('rooms').convertById(mainMessage.rid); if (!room) { return []; @@ -120,7 +120,7 @@ export class AppThreadsConverter implements IAppThreadsConverter { user = await convertToApp(message.u as unknown as IUser); } - return user as IAppsUser; + return user; }, files: async (message: IMessage) => convertMessageFiles(message.files, attachments), } as const; @@ -131,7 +131,7 @@ export class AppThreadsConverter implements IAppThreadsConverter { reactions: msgObj.reactions as unknown as AppsEngineMessage['reactions'], } as IMessage & { reactions?: AppsEngineMessage['reactions'] }; - return transformMappedData(msgData, map); + return mappedDecodeAsync(msgData, map as unknown as AsyncFieldMap); } async _convertAttachmentsToApp( @@ -201,6 +201,8 @@ export class AppThreadsConverter implements IAppThreadsConverter { }, } as const; - return Promise.all(attachments.map(async (attachment) => transformMappedData(attachment, map))); + return Promise.all( + attachments.map(async (attachment) => mappedDecodeAsync(attachment, map as unknown as AsyncFieldMap)), + ) as unknown as Promise>; } } diff --git a/apps/meteor/app/apps/server/converters/transformMappedData.ts b/apps/meteor/app/apps/server/converters/transformMappedData.ts deleted file mode 100644 index 99b9d2d666e16..0000000000000 --- a/apps/meteor/app/apps/server/converters/transformMappedData.ts +++ /dev/null @@ -1,147 +0,0 @@ -/** - * Transforms a `data` source object to another object, - * essentially applying a to -> from mapping provided by - * `map`. It does not mutate the `data` object. - * - * It also inserts in the `transformedObject` a new property - * called `_unmappedProperties_` which contains properties from - * the original `data` that have not been mapped to its transformed - * counterpart. E.g.: - * - * ```javascript - * const data = { _id: 'abcde123456', size: 10 }; - * const map = Object.freeze({ id: '_id' }); - * - * transformMappedData(data, map); - * // { id: 'abcde123456', _unmappedProperties_: { size: 10 } } - * ``` - * - * In order to compute the unmapped properties, this function will - * ignore any property on `data` that has been named on the "from" part - * of the `map`, and will consider properties not mentioned as unmapped. - * - * You can also define the "from" part as a function, so you can derive a - * new value for your property from the original `data`. This function will - * receive a copy of the original `data` for it to calculate the value - * for its "to" field. Please note that in this case `transformMappedData` - * will not be able to determine the source field from your map, so it won't - * ignore any field you've used to derive your new value. For that, you're - * going to need to delete the value from the received parameter. E.g: - * - * ```javascript - * const data = { _id: 'abcde123456', size: 10 }; - * - * // It will look like the `size` property is not mapped - * const map = { - * id: '_id', - * newSize: (data) => data.size + 10 - * }; - * - * transformMappedData(data, map); - * // { id: 'abcde123456', newSize: 20, _unmappedProperties_: { size: 10 } } - * - * // You need to explicitly remove it from the original `data` - * const map = Object.freeze({ - * id: '_id', - * newSize: (data) => { - * const result = data.size + 10; - * delete data.size; - * return result; - * } - * }); - * - * transformMappedData(data, map); - * // { id: 'abcde123456', newSize: 20, _unmappedProperties_: {} } - * ``` - * - * @param Object data The data to be transformed - * @param Object map The map with transformations to be applied - * - * @returns Object The data after transformations have been applied - */ - -type MapFor = { - [p in string]: - | string - | ((data: DataType) => Promise) - | ((data: DataType) => unknown) - | { from: string; list: true } - | { from: string; map: MapFor; list?: boolean }; -}; - -type ResultFor, MapType extends MapFor> = { - -readonly [p in keyof MapType]: MapType[p] extends keyof DataType - ? DataType[MapType[p]] - : MapType[p] extends (...args: any[]) => any - ? Awaited> - : MapType[p] extends { from: infer KeyName; map?: Record; list?: boolean } - ? KeyName extends keyof DataType - ? MapType[p]['list'] extends true - ? DataType[KeyName] extends any[] - ? MapType[p]['map'] extends MapFor - ? ResultFor[] - : DataType[KeyName] - : DataType[KeyName][] - : DataType[KeyName] extends object - ? MapType[p]['map'] extends MapFor - ? ResultFor - : never - : never - : never - : never; -}; - -export const transformMappedData = async < - ResultType extends ResultFor, - DataType extends Record, - MapType extends MapFor, - UnmappedProperties extends { - [p in keyof DataType as Exclude]: DataType[p]; - }, ->( - data: DataType, - map: MapType, -): Promise => { - const originalData: DataType = structuredClone(data); - const transformedData: Record = {}; - - for (const [to, from] of Object.entries(map)) { - if (typeof from === 'function') { - const result = await from(originalData); - - if (typeof result !== 'undefined') { - transformedData[to] = result; - } - } else if (typeof from === 'string') { - if (typeof originalData[from] !== 'undefined') { - transformedData[to] = originalData[from]; - } - delete originalData[from]; - } else if (typeof from === 'object' && 'from' in from) { - const { from: fromName } = from; - - if (from.list) { - if (Array.isArray(originalData[fromName])) { - if ('map' in from && from.map) { - if (typeof originalData[fromName] === 'object') { - transformedData[to] = await Promise.all(originalData[fromName].map((item) => transformMappedData(item, from.map))); - } - } else { - transformedData[to] = [...originalData[fromName]]; - } - } else if (originalData[fromName] !== undefined && originalData[fromName] !== null) { - transformedData[to] = [originalData[fromName]]; - } - } else { - transformedData[to] = await transformMappedData(originalData[fromName], from.map); - } - - delete originalData[fromName]; - } - } - - return { - ...(transformedData as ResultType), - _unmappedProperties_: originalData as unknown as UnmappedProperties, - }; -}; diff --git a/apps/meteor/app/apps/server/converters/uploads.js b/apps/meteor/app/apps/server/converters/uploads.js deleted file mode 100644 index 60f85a8aa72f1..0000000000000 --- a/apps/meteor/app/apps/server/converters/uploads.js +++ /dev/null @@ -1,98 +0,0 @@ -import { Uploads } from '@rocket.chat/models'; - -import { transformMappedData } from './transformMappedData'; - -export class AppUploadsConverter { - constructor(orch) { - this.orch = orch; - } - - async convertById(id) { - const upload = await Uploads.findOneById(id); - - return this.convertToApp(upload); - } - - async convertToApp(upload) { - if (!upload) { - return undefined; - } - - const map = { - id: '_id', - name: 'name', - size: 'size', - type: 'type', - store: 'store', - description: 'description', - complete: 'complete', - uploading: 'uploading', - extension: 'extension', - progress: 'progress', - etag: 'etag', - path: 'path', - token: 'token', - url: 'url', - updatedAt: '_updatedAt', - uploadedAt: 'uploadedAt', - room: async (upload) => { - const result = await this.orch.getConverters().get('rooms').convertById(upload.rid); - delete upload.rid; - return result; - }, - user: async (upload) => { - if (!upload.userId) { - return undefined; - } - - const result = await this.orch.getConverters().get('users').convertById(upload.userId); - delete upload.userId; - return result; - }, - visitor: async (upload) => { - if (!upload.visitorToken) { - return undefined; - } - - const result = await this.orch.getConverters().get('visitors').convertByToken(upload.visitorToken); - delete upload.visitorToken; - return result; - }, - }; - - return transformMappedData(upload, map); - } - - convertToRocketChat(upload) { - if (!upload) { - return undefined; - } - - const { id: userId } = upload.user || {}; - const { token: visitorToken } = upload.visitor || {}; - const { id: rid } = upload.room; - - const newUpload = { - _id: upload.id, - name: upload.name, - size: upload.size, - type: upload.type, - extension: upload.extension, - description: upload.description, - store: upload.store, - etag: upload.etag, - complete: upload.complete, - uploading: upload.uploading, - progress: upload.progress, - token: upload.token, - url: upload.url, - _updatedAt: upload.updatedAt, - uploadedAt: upload.uploadedAt, - rid, - userId, - visitorToken, - }; - - return Object.assign(newUpload, upload._unmappedProperties_); - } -} diff --git a/apps/meteor/app/apps/server/converters/uploads.ts b/apps/meteor/app/apps/server/converters/uploads.ts new file mode 100644 index 0000000000000..8b62fe15092f7 --- /dev/null +++ b/apps/meteor/app/apps/server/converters/uploads.ts @@ -0,0 +1,49 @@ +import type { IAppServerOrchestrator, IAppUploadsConverter, IAppsUpload } from '@rocket.chat/apps'; +import type { IUpload } from '@rocket.chat/core-typings'; +import { Uploads } from '@rocket.chat/models'; +import * as z from 'zod'; + +import { createUploadsCodec } from './codecs/uploads'; + +export class AppUploadsConverter implements IAppUploadsConverter { + private readonly codec: ReturnType; + + constructor(protected readonly orch: IAppServerOrchestrator) { + this.orch = orch; + this.codec = createUploadsCodec(orch); + } + + async convertById(id: string): Promise { + const upload = await Uploads.findOneById(id); + + return this.convertToApp(upload); + } + + async convertToApp(upload: undefined | null): Promise; + + async convertToApp(upload: IUpload): Promise; + + async convertToApp(upload: IUpload | undefined | null): Promise; + + async convertToApp(upload: IUpload | undefined | null): Promise { + if (!upload) { + return undefined; + } + + return z.decodeAsync(this.codec, upload); + } + + convertToRocketChat(upload: undefined | null): undefined; + + convertToRocketChat(upload: IAppsUpload): IUpload; + + convertToRocketChat(upload: IAppsUpload | undefined | null): IUpload | undefined; + + convertToRocketChat(upload: IAppsUpload | undefined | null): IUpload | undefined { + if (!upload) { + return undefined; + } + + return z.encode(this.codec, upload); + } +} diff --git a/apps/meteor/app/apps/server/converters/users.js b/apps/meteor/app/apps/server/converters/users.js deleted file mode 100644 index 4bca06ab168ed..0000000000000 --- a/apps/meteor/app/apps/server/converters/users.js +++ /dev/null @@ -1,123 +0,0 @@ -import { UserStatusConnection, UserType } from '@rocket.chat/apps-engine/definition/users'; -import { Users } from '@rocket.chat/models'; -import { removeEmpty } from '@rocket.chat/tools'; - -export class AppUsersConverter { - constructor(orch) { - this.orch = orch; - } - - async convertById(userId) { - const user = await Users.findOneById(userId); - - return this.convertToApp(user); - } - - async convertByUsername(username) { - const user = await Users.findOneByUsername(username); - - return this.convertToApp(user); - } - - convertToApp(user) { - if (!user) { - return undefined; - } - - const type = this._convertUserTypeToEnum(user.type); - const statusConnection = this._convertStatusConnectionToEnum(user.username, user._id, user.statusConnection); - - return { - id: user._id, - username: user.username, - emails: user.emails, - type, - isEnabled: user.active, - name: user.name, - roles: user.roles, - bio: user.bio, - status: user.status, - statusText: user.statusText, - statusConnection, - utcOffset: user.utcOffset, - createdAt: user.createdAt, - updatedAt: user._updatedAt, - lastLoginAt: user.lastLogin, - appId: user.appId, - customFields: user.customFields, - isFederated: user.federated, - federation: user.federation, - sipExtension: user.freeSwitchExtension, - settings: { - preferences: { - ...(user?.settings?.preferences?.language && { language: user.settings.preferences.language }), - }, - }, - }; - } - - convertToRocketChat(user) { - if (!user) { - return undefined; - } - - return removeEmpty({ - _id: user.id, - username: user.username, - emails: user.emails, - type: user.type, - active: user.isEnabled, - name: user.name, - roles: user.roles, - bio: user.bio, - status: user.status, - statusConnection: user.statusConnection, - utcOffset: user.utfOffset, - createdAt: user.createdAt, - _updatedAt: user.updatedAt, - lastLogin: user.lastLoginAt, - appId: user.appId, - federated: user.isFederated, - federation: user.federation, - freeSwitchExtension: user.sipExtension, - }); - } - - _convertUserTypeToEnum(type) { - switch (type) { - case 'user': - return UserType.USER; - case 'bot': - return UserType.BOT; - case 'app': - return UserType.APP; - case '': - case undefined: - return UserType.UNKNOWN; - default: - console.warn(`A new user type has been added that the Apps don't know about? "${type}"`); - return type.toUpperCase(); - } - } - - _convertStatusConnectionToEnum(username, userId, status) { - switch (status) { - case 'offline': - return UserStatusConnection.OFFLINE; - case 'online': - return UserStatusConnection.ONLINE; - case 'away': - return UserStatusConnection.AWAY; - case 'busy': - return UserStatusConnection.BUSY; - case undefined: - // This is needed for Livechat guests and Rocket.Cat user. - return UserStatusConnection.UNDEFINED; - default: - console.warn( - `The user ${username} (${userId}) does not have a valid status (offline, online, away, or busy). It is currently: "${status}"`, - ); - return !status ? UserStatusConnection.OFFLINE : status.toUpperCase(); - } - } -} diff --git a/apps/meteor/app/apps/server/converters/users.ts b/apps/meteor/app/apps/server/converters/users.ts new file mode 100644 index 0000000000000..a76868f71970d --- /dev/null +++ b/apps/meteor/app/apps/server/converters/users.ts @@ -0,0 +1,56 @@ +import type { IAppServerOrchestrator, IAppUsersConverter, IAppsUser } from '@rocket.chat/apps'; +import type { IUser } from '@rocket.chat/core-typings'; +import { Users } from '@rocket.chat/models'; +import * as z from 'zod'; + +import { UserCodec } from './codecs'; + +export class AppUsersConverter implements IAppUsersConverter { + constructor(protected readonly orch: IAppServerOrchestrator) { + this.orch = orch; + } + + async convertById(userId: IUser['_id']): Promise { + const user = await Users.findOneById(userId); + + return this.convertToApp(user); + } + + async convertByUsername(username: IUser['username']): Promise { + if (!username) { + return undefined; + } + + const user = await Users.findOneByUsername(username); + + return this.convertToApp(user); + } + + convertToApp(user: undefined | null): undefined; + + convertToApp(user: IUser): IAppsUser; + + convertToApp(user: IUser | undefined | null): IAppsUser | undefined; + + convertToApp(user: IUser | undefined | null): IAppsUser | undefined { + if (!user) { + return undefined; + } + + return z.decode(UserCodec, user); + } + + convertToRocketChat(user: undefined | null): undefined; + + convertToRocketChat(user: IAppsUser): IUser; + + convertToRocketChat(user: IAppsUser | undefined | null): IUser | undefined; + + convertToRocketChat(user: IAppsUser | undefined | null): IUser | undefined { + if (!user) { + return undefined; + } + + return z.encode(UserCodec, user); + } +} diff --git a/apps/meteor/app/apps/server/converters/videoConferences.ts b/apps/meteor/app/apps/server/converters/videoConferences.ts index 7a9120bf8508a..d5adb399193de 100644 --- a/apps/meteor/app/apps/server/converters/videoConferences.ts +++ b/apps/meteor/app/apps/server/converters/videoConferences.ts @@ -1,6 +1,9 @@ import type { IAppVideoConferencesConverter, AppsVideoConference } from '@rocket.chat/apps'; import { VideoConf } from '@rocket.chat/core-services'; import type { VideoConference } from '@rocket.chat/core-typings'; +import * as z from 'zod'; + +import { VideoConferenceCodec } from './codecs'; export class AppVideoConferencesConverter implements IAppVideoConferencesConverter { async convertById(callId: string): Promise { @@ -20,14 +23,10 @@ export class AppVideoConferencesConverter implements IAppVideoConferencesConvert return; } - return { - ...call, - } as AppsVideoConference; + return z.decode(VideoConferenceCodec, call); } convertAppVideoConference(call: AppsVideoConference): VideoConference { - return { - ...call, - } as VideoConference; + return z.encode(VideoConferenceCodec, call); } } diff --git a/apps/meteor/app/apps/server/converters/visitors.js b/apps/meteor/app/apps/server/converters/visitors.js deleted file mode 100644 index 62d38bc88cc3b..0000000000000 --- a/apps/meteor/app/apps/server/converters/visitors.js +++ /dev/null @@ -1,66 +0,0 @@ -import { LivechatVisitors } from '@rocket.chat/models'; - -import { transformMappedData } from './transformMappedData'; - -// TODO: check if functions from this converter can be async -export class AppVisitorsConverter { - constructor(orch) { - this.orch = orch; - } - - async convertById(id) { - const visitor = await LivechatVisitors.findOneEnabledById(id); - - return this.convertVisitor(visitor); - } - - async convertByToken(token) { - const visitor = await LivechatVisitors.getVisitorByToken(token); - - return this.convertVisitor(visitor); - } - - async convertVisitor(visitor) { - if (!visitor) { - return undefined; - } - - const map = { - id: '_id', - username: 'username', - name: 'name', - department: 'department', - updatedAt: '_updatedAt', - token: 'token', - phone: 'phone', - visitorEmails: 'visitorEmails', - livechatData: 'livechatData', - status: 'status', - activity: 'activity', - externalIds: 'externalIds', - }; - - return transformMappedData(visitor, map); - } - - convertAppVisitor(visitor) { - if (!visitor) { - return undefined; - } - - const newVisitor = { - _id: visitor.id, - username: visitor.username, - name: visitor.name, - token: visitor.token, - phone: visitor.phone, - livechatData: visitor.livechatData, - status: visitor.status || 'online', - ...(visitor.visitorEmails && { visitorEmails: visitor.visitorEmails }), - ...(visitor.department && { department: visitor.department }), - ...(visitor.externalIds && { externalIds: visitor.externalIds }), - }; - - return Object.assign(newVisitor, visitor._unmappedProperties_); - } -} diff --git a/apps/meteor/app/apps/server/converters/visitors.ts b/apps/meteor/app/apps/server/converters/visitors.ts new file mode 100644 index 0000000000000..e721c3f02e94b --- /dev/null +++ b/apps/meteor/app/apps/server/converters/visitors.ts @@ -0,0 +1,53 @@ +import type { IAppServerOrchestrator, IAppVisitorsConverter, IAppsVisitor } from '@rocket.chat/apps'; +import type { ILivechatVisitor } from '@rocket.chat/core-typings'; +import { LivechatVisitors } from '@rocket.chat/models'; +import * as z from 'zod'; + +import { VisitorCodec } from './codecs'; + +// TODO: check if functions from this converter can be async +export class AppVisitorsConverter implements IAppVisitorsConverter { + constructor(protected readonly orch: IAppServerOrchestrator) { + this.orch = orch; + } + + async convertById(id: ILivechatVisitor['_id']): Promise { + const visitor = await LivechatVisitors.findOneEnabledById(id); + + return this.convertVisitor(visitor); + } + + async convertByToken(token: string): Promise { + const visitor = await LivechatVisitors.getVisitorByToken(token); + + return this.convertVisitor(visitor); + } + + async convertVisitor(visitor: undefined | null): Promise; + + async convertVisitor(visitor: ILivechatVisitor): Promise; + + async convertVisitor(visitor: ILivechatVisitor | undefined | null): Promise; + + async convertVisitor(visitor: ILivechatVisitor | undefined | null): Promise { + if (!visitor) { + return undefined; + } + + return z.decode(VisitorCodec, visitor); + } + + convertAppVisitor(visitor: undefined | null): undefined; + + convertAppVisitor(visitor: IAppsVisitor): ILivechatVisitor; + + convertAppVisitor(visitor: IAppsVisitor | undefined | null): ILivechatVisitor | undefined; + + convertAppVisitor(visitor: IAppsVisitor | undefined | null): ILivechatVisitor | undefined { + if (!visitor) { + return undefined; + } + + return z.encode(VisitorCodec, visitor); + } +} diff --git a/apps/meteor/app/assets/server/assets.ts b/apps/meteor/app/assets/server/assets.ts deleted file mode 100644 index c2008c6b8cbe6..0000000000000 --- a/apps/meteor/app/assets/server/assets.ts +++ /dev/null @@ -1,480 +0,0 @@ -import crypto from 'node:crypto'; -import type { ServerResponse, IncomingMessage } from 'node:http'; - -import type { IRocketChatAssets, IRocketChatAsset, ISetting } from '@rocket.chat/core-typings'; -import { Settings } from '@rocket.chat/models'; -import type { NextHandleFunction } from 'connect'; -import sizeOf from 'image-size'; -import { Meteor } from 'meteor/meteor'; -import { WebApp, WebAppInternals } from 'meteor/webapp'; -import sharp from 'sharp'; - -import { hasPermissionAsync } from '../../authorization/server/functions/hasPermission'; -import { RocketChatFile } from '../../file/server'; -import { notifyOnSettingChangedById } from '../../lib/server/lib/notifyListener'; -import { settings, settingsRegistry } from '../../settings/server'; -import { getExtension } from '../../utils/lib/mimeTypes'; -import { getURL } from '../../utils/server/getURL'; - -const RocketChatAssetsInstance = new RocketChatFile.GridFS({ - name: 'assets', -}); - -type IRocketChatAssetsConfig = Record }>; - -const assets: IRocketChatAssetsConfig = { - logo: { - label: 'logo (svg, png, jpg)', - defaultUrl: 'images/logo/logo.svg', - constraints: { - type: 'image', - extensions: ['svg', 'png', 'jpg', 'jpeg'], - }, - wizard: { - step: 3, - order: 2, - }, - }, - logo_dark: { - label: 'logo - dark theme (svg, png, jpg)', - defaultUrl: 'images/logo/logo_dark.svg', - constraints: { - type: 'image', - extensions: ['svg', 'png', 'jpg', 'jpeg'], - }, - }, - background: { - label: 'login background (svg, png, jpg)', - constraints: { - type: 'image', - extensions: ['svg', 'png', 'jpg', 'jpeg'], - }, - }, - background_dark: { - label: 'login background - dark theme (svg, png, jpg)', - constraints: { - type: 'image', - extensions: ['svg', 'png', 'jpg', 'jpeg'], - }, - }, - favicon_ico: { - label: 'favicon (ico)', - defaultUrl: 'favicon.ico', - constraints: { - type: 'image', - extensions: ['ico'], - }, - }, - favicon: { - label: 'favicon (svg)', - defaultUrl: 'images/logo/icon.svg', - constraints: { - type: 'image', - extensions: ['svg'], - }, - }, - favicon_16: { - label: 'favicon 16x16 (png)', - defaultUrl: 'images/logo/favicon-16x16.png', - constraints: { - type: 'image', - extensions: ['png'], - width: 16, - height: 16, - }, - }, - favicon_32: { - label: 'favicon 32x32 (png)', - defaultUrl: 'images/logo/favicon-32x32.png', - constraints: { - type: 'image', - extensions: ['png'], - width: 32, - height: 32, - }, - }, - favicon_192: { - label: 'android-chrome 192x192 (png)', - defaultUrl: 'images/logo/android-chrome-192x192.png', - constraints: { - type: 'image', - extensions: ['png'], - width: 192, - height: 192, - }, - }, - favicon_512: { - label: 'android-chrome 512x512 (png)', - defaultUrl: 'images/logo/android-chrome-512x512.png', - constraints: { - type: 'image', - extensions: ['png'], - width: 512, - height: 512, - }, - }, - touchicon_180: { - label: 'apple-touch-icon 180x180 (png)', - defaultUrl: 'images/logo/apple-touch-icon.png', - constraints: { - type: 'image', - extensions: ['png'], - width: 180, - height: 180, - }, - }, - touchicon_180_pre: { - label: 'apple-touch-icon-precomposed 180x180 (png)', - defaultUrl: 'images/logo/apple-touch-icon-precomposed.png', - constraints: { - type: 'image', - extensions: ['png'], - width: 180, - height: 180, - }, - }, - tile_70: { - label: 'mstile 70x70 (png)', - defaultUrl: 'images/logo/mstile-70x70.png', - constraints: { - type: 'image', - extensions: ['png'], - width: 70, - height: 70, - }, - }, - tile_144: { - label: 'mstile 144x144 (png)', - defaultUrl: 'images/logo/mstile-144x144.png', - constraints: { - type: 'image', - extensions: ['png'], - width: 144, - height: 144, - }, - }, - tile_150: { - label: 'mstile 150x150 (png)', - defaultUrl: 'images/logo/mstile-150x150.png', - constraints: { - type: 'image', - extensions: ['png'], - width: 150, - height: 150, - }, - }, - tile_310_square: { - label: 'mstile 310x310 (png)', - defaultUrl: 'images/logo/mstile-310x310.png', - constraints: { - type: 'image', - extensions: ['png'], - width: 310, - height: 310, - }, - }, - tile_310_wide: { - label: 'mstile 310x150 (png)', - defaultUrl: 'images/logo/mstile-310x150.png', - constraints: { - type: 'image', - extensions: ['png'], - width: 310, - height: 150, - }, - }, - safari_pinned: { - label: 'safari pinned tab (svg)', - defaultUrl: 'images/logo/safari-pinned-tab.svg', - constraints: { - type: 'image', - extensions: ['svg'], - }, - }, - livechat_widget_logo: { - label: 'widget logo (svg, png, jpg)', - constraints: { - type: 'image', - extensions: ['svg', 'png', 'jpg', 'jpeg'], - }, - settingOptions: { - section: 'Livechat', - group: 'Omnichannel', - invalidValue: { - defaultUrl: undefined, - }, - enableQuery: { _id: 'Livechat_enabled', value: true }, - enterprise: true, - modules: ['livechat-enterprise'], - sorter: 999 + 1, - }, - }, -}; - -function getAssetByKey(key: string) { - return assets[key as keyof IRocketChatAssets]; -} - -class RocketChatAssetsClass { - get assets(): IRocketChatAssets { - return assets; - } - - public async setAssetWithBuffer( - file: Buffer, - contentType: string, - asset: string, - ): Promise<{ - key: string; - value: IRocketChatAsset; - }> { - const assetInstance = getAssetByKey(asset); - if (!assetInstance) { - throw new Meteor.Error('error-invalid-asset', 'Invalid asset', { - function: 'RocketChat.Assets.setAsset', - }); - } - - const extension = getExtension(contentType); - if (assetInstance.constraints.extensions.includes(extension) === false) { - throw new Meteor.Error('error-invalid-file-type', `Invalid file type: ${contentType}`, { - function: 'RocketChat.Assets.setAsset', - }); - } - - if (assetInstance.constraints.width || assetInstance.constraints.height) { - const dimensions = sizeOf(file); - if (assetInstance.constraints.width && assetInstance.constraints.width !== dimensions.width) { - throw new Meteor.Error('error-invalid-file-width', 'Invalid file width', { - function: 'Invalid file width', - }); - } - if (assetInstance.constraints.height && assetInstance.constraints.height !== dimensions.height) { - throw new Meteor.Error('error-invalid-file-height'); - } - } - - const rs = RocketChatFile.bufferToStream(file); - await RocketChatAssetsInstance.deleteFile(asset); - - const ws = RocketChatAssetsInstance.createWriteStream(asset, contentType); - - return new Promise((resolve) => { - ws.on('end', () => { - return setTimeout(async () => { - const key = `Assets_${asset}`; - const value = { - url: `assets/${asset}.${extension}`, - defaultUrl: assetInstance.defaultUrl, - } as IRocketChatAsset; - - await RocketChatAssets.processAsset(key, value); - resolve({ - key, - value, - }); - }, 200); - }); - - rs.pipe(ws); - }); - } - - public async unsetAsset(asset: string) { - if (!getAssetByKey(asset)) { - throw new Meteor.Error('error-invalid-asset', 'Invalid asset', { - function: 'RocketChat.Assets.unsetAsset', - }); - } - - await RocketChatAssetsInstance.deleteFile(asset); - const key = `Assets_${asset}`; - const value = { - defaultUrl: getAssetByKey(asset).defaultUrl, - }; - - await RocketChatAssets.processAsset(key, value); - - return { - key, - value, - }; - } - - public refreshClients(): boolean { - return process.emit('message', { - refresh: 'client', - }); - } - - public async processAsset(settingKey: string, settingValue: any): Promise | undefined> { - if (settingKey.indexOf('Assets_') !== 0) { - return; - } - - const assetKey = settingKey.replace(/^Assets_/, ''); - const assetValue = getAssetByKey(assetKey); - - if (!assetValue) { - return; - } - - if (!settingValue?.url) { - assetValue.cache = undefined; - return; - } - - const file = await RocketChatAssetsInstance.getFile(assetKey); - if (!file) { - assetValue.cache = undefined; - return; - } - - const hash = crypto.createHash('sha1').update(file.buffer).digest('hex'); - const extension = settingValue.url.split('.').pop(); - - assetValue.cache = { - path: `assets/${assetKey}.${extension}`, - cacheable: false, - sourceMapUrl: undefined, - where: 'client', - type: 'asset', - content: file.buffer, - extension, - url: `/assets/${assetKey}.${extension}?${hash}`, - size: file.length, - uploadDate: file.uploadDate, - contentType: file.contentType, - hash, - }; - - return assetValue.cache; - } - - public getURL(assetName: string, options = { cdn: false, full: true }): string { - const asset = settings.get(assetName); - const url = asset.url || asset.defaultUrl; - - return getURL(url as string, options); - } -} - -export const RocketChatAssets = new RocketChatAssetsClass(); - -export async function addAssetToSetting(asset: string, value: IRocketChatAsset, options?: Partial): Promise { - const key = `Assets_${asset}`; - - await settingsRegistry.add( - key, - { - defaultUrl: value.defaultUrl, - }, - { - type: 'asset', - group: 'Assets', - fileConstraints: value.constraints, - i18nLabel: value.label, - asset, - public: true, - ...options, - }, - ); - - const currentValue = settings.get(key); - - if (currentValue && typeof currentValue === 'object' && currentValue.defaultUrl !== getAssetByKey(asset).defaultUrl) { - currentValue.defaultUrl = getAssetByKey(asset).defaultUrl; - - (await Settings.updateValueById(key, currentValue)).modifiedCount && void notifyOnSettingChangedById(key); - } -} - -void (async () => { - for (const key of Object.keys(assets)) { - const { wizard, settingOptions, ...value } = getAssetByKey(key); - await addAssetToSetting(key, value, { ...settingOptions, wizard }); - } -})(); - -Meteor.startup(() => { - setTimeout(() => { - process.emit('message', { - refresh: 'client', - }); - }, 200); -}); - -export const refreshClients = async (userId: string) => { - if (!userId) { - throw new Error('Invalid user'); - } - - const _hasPermission = await hasPermissionAsync(userId, 'manage-assets'); - if (!_hasPermission) { - throw new Error('Managing assets not allowed'); - } - - return RocketChatAssets.refreshClients(); -}; - -const listener = (req: IncomingMessage, res: ServerResponse, next: NextHandleFunction) => { - if (!req.url) { - return; - } - const params = { - asset: decodeURIComponent(req.url.replace(/^\//, '').replace(/\?.*$/, '')).replace(/\.[^.]*$/, ''), - }; - - const asset = getAssetByKey(params.asset); - const file = asset?.cache; - - const format = req.url.replace(/.*\.([a-z]+)(?:$|\?.*)/i, '$1'); - - if (asset && Array.isArray(asset.constraints.extensions) && !asset.constraints.extensions.includes(format)) { - res.writeHead(403); - res.end(); - return; - } - if (!file) { - const defaultUrl = asset?.defaultUrl; - if (defaultUrl) { - const assetUrl = format && ['png', 'svg'].includes(format) ? defaultUrl.replace(/(svg|png)$/, format) : defaultUrl; - req.url = `/${assetUrl}`; - WebAppInternals.staticFilesMiddleware((WebAppInternals as Record).staticFilesByArch, req, res, next); - } else { - res.writeHead(404); - res.end(); - } - - return; - } - - const reqModifiedHeader = req.headers['if-modified-since']; - if (reqModifiedHeader) { - if (reqModifiedHeader === file.uploadDate?.toUTCString()) { - res.setHeader('Last-Modified', reqModifiedHeader); - res.writeHead(304); - res.end(); - return; - } - } - - res.setHeader('Cache-Control', 'public, max-age=0'); - res.setHeader('Expires', '-1'); - - if (format && format !== file.extension && ['png', 'jpg', 'jpeg'].includes(format)) { - res.setHeader('Content-Type', `image/${format}`); - sharp(file.content) - .toFormat(format as any) - .pipe(res); - return; - } - - res.setHeader('Last-Modified', file.uploadDate?.toUTCString() || new Date().toUTCString()); - if (file.contentType) res.setHeader('Content-Type', file.contentType); - if (file.size) res.setHeader('Content-Length', file.size); - res.writeHead(200); - res.end(file.content); -}; - -WebApp.connectHandlers.use('/assets/', listener); diff --git a/apps/meteor/app/authentication/server/hooks/login.ts b/apps/meteor/app/authentication/server/hooks/login.ts deleted file mode 100644 index 191639e208dee..0000000000000 --- a/apps/meteor/app/authentication/server/hooks/login.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Accounts } from 'meteor/accounts-base'; - -import { callbacks } from '../../../../server/lib/callbacks'; -import { settings } from '../../../settings/server'; -import type { ILoginAttempt } from '../ILoginAttempt'; -import { logFailedLoginAttempts } from '../lib/logLoginAttempts'; -import { saveFailedLoginAttempts, saveSuccessfulLogin } from '../lib/restrictLoginAttempts'; - -const ignoredErrorTypes = ['totp-required', 'error-login-blocked-for-user']; - -Accounts.onLoginFailure(async (login: ILoginAttempt) => { - // do not save specific failed login attempts - if ( - settings.get('Block_Multiple_Failed_Logins_Enabled') && - login.error?.error && - !ignoredErrorTypes.includes(String(login.error.error)) - ) { - await saveFailedLoginAttempts(login); - } - - logFailedLoginAttempts(login); -}); - -callbacks.add('afterValidateLogin', (login: ILoginAttempt) => { - if (!settings.get('Block_Multiple_Failed_Logins_Enabled')) { - return; - } - - return saveSuccessfulLogin(login); -}); diff --git a/apps/meteor/app/authentication/server/index.ts b/apps/meteor/app/authentication/server/index.ts deleted file mode 100644 index 5ff4af4eef118..0000000000000 --- a/apps/meteor/app/authentication/server/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import './hooks/login'; -import './startup'; diff --git a/apps/meteor/app/authentication/server/startup/index.js b/apps/meteor/app/authentication/server/startup/index.js deleted file mode 100644 index 0d3e12e7c6e49..0000000000000 --- a/apps/meteor/app/authentication/server/startup/index.js +++ /dev/null @@ -1,532 +0,0 @@ -import { Apps, AppEvents } from '@rocket.chat/apps'; -import { User } from '@rocket.chat/core-services'; -import { Roles, Settings, Users } from '@rocket.chat/models'; -import { escapeRegExp, escapeHTML } from '@rocket.chat/string-helpers'; -import { getLoginExpirationInDays, removeEmpty } from '@rocket.chat/tools'; -import { Accounts } from 'meteor/accounts-base'; -import { Match } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; -import _ from 'underscore'; - -import { parseCSV } from '../../../../lib/utils/parseCSV'; -import { safeHtmlDots } from '../../../../lib/utils/safeHtmlDots'; -import { callbacks } from '../../../../server/lib/callbacks'; -import { beforeCreateUserCallback } from '../../../../server/lib/callbacks/beforeCreateUserCallback'; -import { getClientAddress } from '../../../../server/lib/getClientAddress'; -import { getMaxLoginTokens } from '../../../../server/lib/getMaxLoginTokens'; -import { i18n } from '../../../../server/lib/i18n'; -import { addUserRolesAsync } from '../../../../server/lib/roles/addUserRoles'; -import { getNewUserRoles } from '../../../../server/services/user/lib/getNewUserRoles'; -import { getAvatarSuggestionForUser } from '../../../lib/server/functions/getAvatarSuggestionForUser'; -import { joinDefaultChannels } from '../../../lib/server/functions/joinDefaultChannels'; -import { setAvatarFromServiceWithValidation } from '../../../lib/server/functions/setUserAvatar'; -import { notifyOnSettingChangedById } from '../../../lib/server/lib/notifyListener'; -import * as Mailer from '../../../mailer/server/api'; -import { settings } from '../../../settings/server'; -import { getBaseUserFields } from '../../../utils/server/functions/getBaseUserFields'; -import { isValidAttemptByUser, isValidLoginAttemptByIp } from '../lib/restrictLoginAttempts'; - -Accounts.config({ - forbidClientAccountCreation: true, -}); -/** - * Accounts calls `_initServerPublications` and holds the `_defaultPublishFields`, without Object.assign its not possible - * to extend the projection - * - * the idea is to send all required fields to the client during login - * we tried `defaultFieldsSelector` , but it changes all Meteor.userAsync projections which is undesirable - * - * - * we are removing the status here because meteor send 'offline' - */ -Object.assign(Accounts._defaultPublishFields.projection, (({ status, ...rest }) => rest)(getBaseUserFields(true))); - -// Override Meteor's _expireTokens to ensure the correct login expiration is used. -// If loginExpirationInDays is not set (e.g., startup was disrupted before settings watcher fired), -// read the setting directly from MongoDB before proceeding with token cleanup. -// This prevents tokens from being incorrectly deleted using Meteor's 90-day default. -const { _expireTokens } = Accounts; -Accounts._expireTokens = async function (oldestValidDate, userId) { - if (!Accounts._options.loginExpirationInDays) { - const loginExpiration = await Settings.getValueById('Accounts_LoginExpiration'); - Accounts._options.loginExpirationInDays = getLoginExpirationInDays(loginExpiration); - } - return _expireTokens.call(Accounts, oldestValidDate, userId); -}; - -Meteor.startup(() => { - settings.watchMultiple(['Accounts_LoginExpiration', 'Site_Name', 'From_Email'], () => { - Accounts._options.loginExpirationInDays = getLoginExpirationInDays(settings.get('Accounts_LoginExpiration')); - - Accounts.emailTemplates.siteName = settings.get('Site_Name'); - - Accounts.emailTemplates.from = `${settings.get('Site_Name')} <${settings.get('From_Email')}>`; - }); -}); - -Accounts.emailTemplates.userToActivate = { - subject() { - const subject = i18n.t('Accounts_Admin_Email_Approval_Needed_Subject_Default'); - const siteName = settings.get('Site_Name'); - - return `[${siteName}] ${subject}`; - }, - - html(options = {}) { - const email = options.reason - ? 'Accounts_Admin_Email_Approval_Needed_With_Reason_Default' - : 'Accounts_Admin_Email_Approval_Needed_Default'; - - return Mailer.replace(i18n.t(email), { - name: escapeHTML(options.name), - email: escapeHTML(options.email), - reason: escapeHTML(options.reason), - }); - }, -}; - -Accounts.emailTemplates.userActivated = { - subject({ active, username }) { - const activated = username ? 'Activated' : 'Approved'; - const action = active ? activated : 'Deactivated'; - const subject = `Accounts_Email_${action}_Subject`; - const siteName = settings.get('Site_Name'); - - return `[${siteName}] ${i18n.t(subject)}`; - }, - - html({ active, name, username }) { - const activated = username ? 'Activated' : 'Approved'; - const action = active ? activated : 'Deactivated'; - - return Mailer.replace(i18n.t(`Accounts_Email_${action}`), { - name: escapeHTML(name), - }); - }, -}; - -let verifyEmailTemplate = ''; -let enrollAccountTemplate = ''; -let resetPasswordTemplate = ''; -Meteor.startup(() => { - Mailer.getTemplateWrapped('Verification_Email', (value) => { - verifyEmailTemplate = value; - }); - Mailer.getTemplateWrapped('Accounts_Enrollment_Email', (value) => { - enrollAccountTemplate = value; - }); - Mailer.getTemplateWrapped('Forgot_Password_Email', (value) => { - resetPasswordTemplate = value; - }); -}); - -Accounts.emailTemplates.verifyEmail.html = function (userModel, url) { - const name = safeHtmlDots(userModel.name); - - return Mailer.replace(verifyEmailTemplate, { Verification_Url: url, name }); -}; - -Accounts.emailTemplates.verifyEmail.subject = function () { - const subject = settings.get('Verification_Email_Subject'); - return Mailer.replace(subject || ''); -}; - -Accounts.urls.resetPassword = function (token) { - return Meteor.absoluteUrl(`reset-password/${token}`); -}; - -Accounts.emailTemplates.resetPassword.subject = function (userModel) { - return Mailer.replace(settings.get('Forgot_Password_Email_Subject') || '', { - name: userModel.name, - }); -}; - -Accounts.emailTemplates.resetPassword.html = function (userModel, url) { - return Mailer.replacekey( - Mailer.replace(resetPasswordTemplate, { - name: userModel.name, - }), - 'Forgot_Password_Url', - url, - ); -}; - -Accounts.emailTemplates.enrollAccount.subject = function (user) { - const subject = settings.get('Accounts_Enrollment_Email_Subject'); - return Mailer.replace(subject, user); -}; - -Accounts.emailTemplates.enrollAccount.html = function (user = {} /* , url*/) { - return Mailer.replace(enrollAccountTemplate, { - name: escapeHTML(user.name), - email: user.emails && user.emails[0] && escapeHTML(user.emails[0].address), - }); -}; - -const getLinkedInName = ({ firstName, lastName }) => { - const { preferredLocale, localized: firstNameLocalized } = firstName; - const { localized: lastNameLocalized } = lastName; - - // LinkedIn new format - if (preferredLocale && firstNameLocalized && preferredLocale.language && preferredLocale.country) { - const locale = `${preferredLocale.language}_${preferredLocale.country}`; - - if (firstNameLocalized[locale] && lastNameLocalized[locale]) { - return `${firstNameLocalized[locale]} ${lastNameLocalized[locale]}`; - } - if (firstNameLocalized[locale]) { - return firstNameLocalized[locale]; - } - } - - // LinkedIn old format - if (!lastName) { - return firstName; - } - return `${firstName} ${lastName}`; -}; - -const validateEmailDomain = (user) => { - if (user.type === 'visitor') { - return true; - } - - let domainWhiteList = settings.get('Accounts_AllowedDomainsList'); - if (_.isEmpty(domainWhiteList?.trim())) { - return true; - } - - domainWhiteList = domainWhiteList.split(',').map((domain) => domain.trim()); - - if (user.emails && user.emails.length > 0) { - const email = user.emails[0].address; - const inWhiteList = domainWhiteList.some((domain) => email.match(`@${escapeRegExp(domain)}$`)); - - if (!inWhiteList) { - throw new Meteor.Error('error-invalid-domain'); - } - } - - return true; -}; - -const onCreateUserAsync = async function (options, user = {}) { - if (!options.skipBeforeCreateUserCallback) { - await beforeCreateUserCallback.run(options, user); - } - user.status = 'offline'; - - user.active = user.active !== undefined ? user.active : !settings.get('Accounts_ManuallyApproveNewUsers'); - if (settings.get('Accounts_ManuallyApproveNewUsers') && !user.active) { - user.inactiveReason = 'pending_approval'; - } - - if (!user.name) { - if (options.profile) { - if (options.profile.name) { - user.name = options.profile.name; - } else if (options.profile.firstName) { - // LinkedIn format - user.name = getLinkedInName(options.profile); - } - } - } - - if (user.services) { - const verified = settings.get('Accounts_Verify_Email_For_External_Accounts'); - - for (const service of Object.values(user.services)) { - const suggestedName = service.name || service.username; - if (!user.name && suggestedName) { - user.name = suggestedName; - } - - if (!user.emails && service.email) { - user.emails = [ - { - address: service.email, - verified, - }, - ]; - } - } - } - - if (!options.skipAdminEmail && !user.active) { - const destinations = []; - const usersInRole = await Roles.findUsersInRole('admin'); - await usersInRole.forEach((adminUser) => { - if (Array.isArray(adminUser.emails)) { - adminUser.emails.forEach((email) => { - destinations.push(`${adminUser.name}<${email.address}>`); - }); - } - }); - - const email = { - to: destinations, - from: settings.get('From_Email'), - subject: Accounts.emailTemplates.userToActivate.subject(), - html: Accounts.emailTemplates.userToActivate.html({ - ...options, - name: options.name || options.profile?.name, - email: options.email || user.emails[0].address, - }), - }; - - await Mailer.send(email); - } - - if (!options.skipOnCreateUserCallback) { - await callbacks.run('onCreateUser', options, user); - } - - if (!options.skipEmailValidation && !validateEmailDomain(user)) { - throw new Meteor.Error(403, 'User validation failed'); - } - - return removeEmpty(user); -}; - -Accounts.onCreateUser(function (...args) { - // Depends on meteor support for Async - return onCreateUserAsync.call(this, ...args); -}); - -const { insertUserDoc } = Accounts; - -Accounts.insertUserDoc = async function (options, user) { - const globalRoles = new Set(); - - if (Match.test(options.globalRoles, [String]) && options.globalRoles.length > 0) { - options.globalRoles.map((role) => globalRoles.add(role)); - } - - if (Match.test(user.globalRoles, [String]) && user.globalRoles.length > 0) { - user.globalRoles.map((role) => globalRoles.add(role)); - } - - delete user.globalRoles; - - // for some reason, the name is not being set in the user object but is being set in the options object - if (options.name && typeof options.name === 'string') { - user.name = options.name; - } - - if (user.services && !user.services.password && !options.skipAuthServiceDefaultRoles) { - const defaultAuthServiceRoles = parseCSV(settings.get('Accounts_Registration_AuthenticationServices_Default_Roles') || ''); - - if (defaultAuthServiceRoles.length > 0) { - defaultAuthServiceRoles.map((role) => globalRoles.add(role)); - } - } - - const arrayGlobalRoles = [...globalRoles]; - const roles = options.skipNewUserRolesSetting ? arrayGlobalRoles : getNewUserRoles(arrayGlobalRoles); - - if (!user.type) { - user.type = 'user'; - } - - if ( - settings.get('Accounts_TwoFactorAuthentication_Enabled') && - settings.get('Accounts_TwoFactorAuthentication_By_Email_Enabled') && - settings.get('Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In') - ) { - user.services = user.services || {}; - user.services.email2fa = { - enabled: true, - changedAt: new Date(), - }; - } - - // Make sure that the user has the field 'roles' - if (!user.roles) { - user.roles = []; - } - - const _id = await insertUserDoc.call(Accounts, options, user); - - user = await Users.findOne({ - _id, - }); - - /** - * if settings shows setup wizard to be pending - * and no admin's been found, - * and existing role list doesn't include admin - * create this user admin. - * count this as the completion of setup wizard step 1. - */ - if (!options.skipAdminCheck) { - const hasAdmin = await Users.findOneByRolesAndType('admin', 'user', { projection: { _id: 1 } }); - if (!roles.includes('admin') && !hasAdmin) { - roles.push('admin'); - if (settings.get('Show_Setup_Wizard') === 'pending') { - // TODO: audit - (await Settings.updateValueById('Show_Setup_Wizard', 'in_progress')).modifiedCount && - void notifyOnSettingChangedById('Show_Setup_Wizard'); - } - } - } - - await addUserRolesAsync(_id, roles); - - // Make user's roles to be present on callback - user = await Users.findOneById(_id, { projection: { username: 1, type: 1, roles: 1 } }); - - if (user.username) { - if (options.joinDefaultChannels !== false) { - await joinDefaultChannels(_id, options.joinDefaultChannelsSilenced); - } - - if (!options.skipAfterCreateUserCallback && user.type !== 'visitor') { - setImmediate(() => { - return callbacks.run('afterCreateUser', user); - }); - } - if (!options.skipDefaultAvatar && settings.get('Accounts_SetDefaultAvatar') === true) { - const avatarSuggestions = await getAvatarSuggestionForUser(user); - for (const service of Object.keys(avatarSuggestions)) { - const avatarData = avatarSuggestions[service]; - if (service !== 'gravatar') { - await setAvatarFromServiceWithValidation(_id, avatarData.blob, '', service); - break; - } - } - } - } - - if (!options.skipAppsEngineEvent) { - // `post` triggered events don't need to wait for the promise to resolve - Apps.self?.triggerEvent(AppEvents.IPostUserCreated, { user, performedBy: options.performedBy }).catch((e) => { - Apps.self?.getRocketChatLogger().error({ msg: 'Error while executing post user created event', err: e }); - }); - } - - return _id; -}; - -const validateLoginAttemptAsync = async function (login) { - login = await callbacks.run('beforeValidateLogin', login); - - if (!(await isValidLoginAttemptByIp(getClientAddress(login.connection)))) { - throw new Meteor.Error('error-login-blocked-for-ip', 'Login has been temporarily blocked For IP', { - function: 'Accounts.validateLoginAttempt', - }); - } - - if (!(await isValidAttemptByUser(login))) { - throw new Meteor.Error('error-login-blocked-for-user', 'Login has been temporarily blocked For User', { - function: 'Accounts.validateLoginAttempt', - }); - } - - if (login.allowed !== true) { - return login.allowed; - } - - if (login.user.type === 'visitor') { - return true; - } - - if (login.user.type === 'app') { - throw new Meteor.Error('error-app-user-is-not-allowed-to-login', 'App user is not allowed to login', { - function: 'Accounts.validateLoginAttempt', - }); - } - - if (!!login.user.active !== true) { - throw new Meteor.Error('error-user-is-not-activated', 'User is not activated', { - function: 'Accounts.validateLoginAttempt', - }); - } - - if (!login.user.roles || !Array.isArray(login.user.roles)) { - throw new Meteor.Error('error-user-has-no-roles', 'User has no roles', { - function: 'Accounts.validateLoginAttempt', - }); - } - - if (login.user.roles.includes('admin') === false && login.type === 'password' && settings.get('Accounts_EmailVerification') === true) { - const validEmail = login.user.emails.filter((email) => email.verified === true); - if (validEmail.length === 0) { - throw new Meteor.Error('error-invalid-email', 'Invalid email __email__'); - } - } - - login = await callbacks.run('onValidateLogin', login); - - await Users.updateLastLoginById(login.user._id); - setImmediate(() => { - return callbacks.run('afterValidateLogin', login); - }); - - /** - * Trigger the event only when the - * user does login in Rocket.chat - */ - if (login.type !== 'resume') { - // App IPostUserLoggedIn event hook - await Apps.self?.triggerEvent(AppEvents.IPostUserLoggedIn, login.user); - } - - return true; -}; - -Accounts.validateLoginAttempt(function (...args) { - // Depends on meteor support for Async - return validateLoginAttemptAsync.call(this, ...args); -}); - -Accounts.validateNewUser((user) => { - if (user.type === 'visitor') { - return true; - } - - if ( - settings.get('Accounts_Registration_AuthenticationServices_Enabled') === false && - settings.get('LDAP_Enable') === false && - !(user.services && user.services.password) - ) { - throw new Meteor.Error('registration-disabled-authentication-services', 'User registration is disabled for authentication services'); - } - - return true; -}); - -Accounts.validateNewUser((user) => { - if (user.type === 'visitor') { - return true; - } - - let domainWhiteList = settings.get('Accounts_AllowedDomainsList'); - if (_.isEmpty(domainWhiteList?.trim())) { - return true; - } - - domainWhiteList = domainWhiteList.split(',').map((domain) => domain.trim()); - - if (user.emails && user.emails.length > 0) { - const email = user.emails[0].address; - const inWhiteList = domainWhiteList.some((domain) => email.match(`@${escapeRegExp(domain)}$`)); - - if (inWhiteList === false) { - throw new Meteor.Error('error-invalid-domain'); - } - } - - return true; -}); - -Accounts.onLogin(async ({ user }) => { - if (!user || !user.services || !user.services.resume || !user.services.resume.loginTokens || !user._id) { - return; - } - - if (user.services.resume.loginTokens.length < getMaxLoginTokens()) { - return; - } - - await User.ensureLoginTokensLimit(user._id); -}); diff --git a/apps/meteor/app/authorization/server/functions/hasPermission.ts b/apps/meteor/app/authorization/server/functions/hasPermission.ts deleted file mode 100644 index 12cdfcd35bd77..0000000000000 --- a/apps/meteor/app/authorization/server/functions/hasPermission.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Authorization } from '@rocket.chat/core-services'; -import type { IUser, IPermission, IRoom } from '@rocket.chat/core-typings'; - -export const hasAllPermissionAsync = async ( - userId: IUser['_id'], - permissions: IPermission['_id'][], - scope?: IRoom['_id'], -): Promise => Authorization.hasAllPermission(userId, permissions, scope); -export const hasPermissionAsync = async (userId: IUser['_id'], permissionId: IPermission['_id'], scope?: IRoom['_id']): Promise => - Authorization.hasPermission(userId, permissionId, scope); -export const hasAtLeastOnePermissionAsync = async ( - userId: IUser['_id'], - permissions: IPermission['_id'][], - scope?: IRoom['_id'], -): Promise => Authorization.hasAtLeastOnePermission(userId, permissions, scope); diff --git a/apps/meteor/app/authorization/server/index.ts b/apps/meteor/app/authorization/server/index.ts deleted file mode 100644 index c74062e774b41..0000000000000 --- a/apps/meteor/app/authorization/server/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { roomAccessAttributes, canAccessRoomAsync } from './functions/canAccessRoom'; -import { getRoles } from './functions/getRoles'; -import { getUsersInRole } from './functions/getUsersInRole'; -import { subscriptionHasRole } from './functions/hasRole'; -import './methods/addPermissionToRole'; -import './methods/addUserToRole'; -import './methods/removeRoleFromPermission'; -import './streamer/permissions'; - -export { getRoles, getUsersInRole, subscriptionHasRole, canAccessRoomAsync, roomAccessAttributes }; diff --git a/apps/meteor/app/authorization/server/methods/addPermissionToRole.ts b/apps/meteor/app/authorization/server/methods/addPermissionToRole.ts deleted file mode 100644 index 3f5f7bfc1a263..0000000000000 --- a/apps/meteor/app/authorization/server/methods/addPermissionToRole.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { License } from '@rocket.chat/core-services'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Permissions } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { notifyOnPermissionChangedById } from '../../../lib/server/lib/notifyListener'; -import { CONSTANTS, AuthorizationUtils } from '../../lib'; -import { hasPermissionAsync } from '../functions/hasPermission'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - 'authorization:addPermissionToRole'(permissionId: string, role: string): void; - } -} - -Meteor.methods({ - async 'authorization:addPermissionToRole'(permissionId, role) { - if (role === 'guest' && !AuthorizationUtils.hasRestrictionsToRole(role) && (await License.hasValidLicense())) { - AuthorizationUtils.addRolePermissionWhiteList(role, await License.getGuestPermissions()); - } - - if (AuthorizationUtils.isPermissionRestrictedForRole(permissionId, role)) { - throw new Meteor.Error('error-action-not-allowed', 'Permission is restricted', { - method: 'authorization:addPermissionToRole', - action: 'Adding_permission', - }); - } - - const uid = Meteor.userId(); - const permission = await Permissions.findOneById(permissionId); - - if (!permission) { - throw new Meteor.Error('error-invalid-permission', 'Permission does not exist', { - method: 'authorization:addPermissionToRole', - action: 'Adding_permission', - }); - } - - if ( - !uid || - !(await hasPermissionAsync(uid, 'access-permissions')) || - (permission.level === CONSTANTS.SETTINGS_LEVEL && !(await hasPermissionAsync(uid, 'access-setting-permissions'))) - ) { - throw new Meteor.Error('error-action-not-allowed', 'Adding permission is not allowed', { - method: 'authorization:addPermissionToRole', - action: 'Adding_permission', - }); - } - - // for setting-based-permissions, authorize the group access as well - if (permission.groupPermissionId) { - await Permissions.addRole(permission.groupPermissionId, role); - void notifyOnPermissionChangedById(permission.groupPermissionId); - } - - await Permissions.addRole(permission._id, role); - - void notifyOnPermissionChangedById(permission._id); - }, -}); diff --git a/apps/meteor/app/authorization/server/methods/removeRoleFromPermission.ts b/apps/meteor/app/authorization/server/methods/removeRoleFromPermission.ts deleted file mode 100644 index 68ca11ef9fb5f..0000000000000 --- a/apps/meteor/app/authorization/server/methods/removeRoleFromPermission.ts +++ /dev/null @@ -1,48 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Permissions } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { notifyOnPermissionChangedById } from '../../../lib/server/lib/notifyListener'; -import { CONSTANTS } from '../../lib'; -import { hasPermissionAsync } from '../functions/hasPermission'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - 'authorization:removeRoleFromPermission'(permissionId: string, role: string): void; - } -} - -Meteor.methods({ - async 'authorization:removeRoleFromPermission'(permissionId, role) { - const uid = Meteor.userId(); - const permission = await Permissions.findOneById(permissionId); - - if (!permission) { - throw new Meteor.Error('error-permission-not-found', 'Permission not found', { - method: 'authorization:removeRoleFromPermission', - }); - } - - if ( - !uid || - !(await hasPermissionAsync(uid, 'access-permissions')) || - (permission.level === CONSTANTS.SETTINGS_LEVEL && !(await hasPermissionAsync(uid, 'access-setting-permissions'))) - ) { - throw new Meteor.Error('error-action-not-allowed', 'Removing permission is not allowed', { - method: 'authorization:removeRoleFromPermission', - action: 'Removing_permission', - }); - } - - // for setting based permissions, revoke the group permission once all setting permissions - // related to this group have been removed - if (permission.groupPermissionId) { - await Permissions.removeRole(permission.groupPermissionId, role); - void notifyOnPermissionChangedById(permission.groupPermissionId); - } - - await Permissions.removeRole(permission._id, role); - void notifyOnPermissionChangedById(permission._id); - }, -}); diff --git a/apps/meteor/app/autotranslate/server/autotranslate.ts b/apps/meteor/app/autotranslate/server/autotranslate.ts deleted file mode 100644 index 2f91e02463d58..0000000000000 --- a/apps/meteor/app/autotranslate/server/autotranslate.ts +++ /dev/null @@ -1,400 +0,0 @@ -import type { - IMessage, - IRoom, - MessageAttachment, - IProviderMetadata, - ISupportedLanguage, - ITranslationResult, -} from '@rocket.chat/core-typings'; -import { Logger } from '@rocket.chat/logger'; -import { Messages, Subscriptions } from '@rocket.chat/models'; -import { escapeHTML } from '@rocket.chat/string-helpers'; -import { isTruthy } from '@rocket.chat/tools'; -import { Meteor } from 'meteor/meteor'; -import _ from 'underscore'; - -import { callbacks } from '../../../server/lib/callbacks'; -import { notifyOnMessageChange } from '../../lib/server/lib/notifyListener'; -import { Markdown } from '../../markdown/server'; -import { settings } from '../../settings/server'; - -const translationLogger = new Logger('AutoTranslate'); - -const Providers = Symbol('Providers'); -const Provider = Symbol('Provider'); - -/** - * This class allows translation providers to - * register,load and also returns the active provider. - */ -export class TranslationProviderRegistry { - static [Providers]: { [k: string]: AutoTranslate } = {}; - - static enabled = false; - - static [Provider]: string | null = null; - - /** - * Registers the translation provider into the registry. - * @param {*} provider - */ - static registerProvider(provider: AutoTranslate): void { - // get provider information - const metadata = provider._getProviderMetadata(); - if (!metadata) { - translationLogger.error('Provider metadata is not defined'); - return; - } - - TranslationProviderRegistry[Providers][metadata.name] = provider; - } - - /** - * Return the active Translation provider - */ - static getActiveProvider(): AutoTranslate | null { - if (!TranslationProviderRegistry.enabled) { - return null; - } - const provider = TranslationProviderRegistry[Provider]; - if (!provider) { - return null; - } - - return TranslationProviderRegistry[Providers][provider]; - } - - static async getSupportedLanguages(target: string): Promise { - return TranslationProviderRegistry.enabled ? TranslationProviderRegistry.getActiveProvider()?.getSupportedLanguages(target) : undefined; - } - - static async translateMessage(message: IMessage, room: IRoom, targetLanguage?: string): Promise { - if (!TranslationProviderRegistry.enabled) { - return null; - } - - const provider = TranslationProviderRegistry.getActiveProvider(); - if (!provider) { - return null; - } - - return provider.translateMessage(message, { room, targetLanguage }); - } - - static getProviders(): AutoTranslate[] { - return Object.values(TranslationProviderRegistry[Providers]); - } - - static setCurrentProvider(provider: string): void { - if (provider === TranslationProviderRegistry[Provider]) { - return; - } - - TranslationProviderRegistry[Provider] = provider; - - TranslationProviderRegistry.registerCallbacks(); - } - - static setEnable(enabled: boolean): void { - TranslationProviderRegistry.enabled = enabled; - - TranslationProviderRegistry.registerCallbacks(); - } - - static registerCallbacks(): void { - if (!TranslationProviderRegistry.enabled) { - callbacks.remove('afterSaveMessage', 'autotranslate'); - return; - } - - const provider = TranslationProviderRegistry.getActiveProvider(); - if (!provider) { - return; - } - - callbacks.add( - 'afterSaveMessage', - (message, { room }) => provider.translateMessage(message, { room }), - callbacks.priority.MEDIUM, - 'autotranslate', - ); - } -} - -/** - * Generic auto translate base implementation. - * This class provides generic parts of implementation for - * tokenization, detokenization, call back register and unregister. - * @abstract - * @class - */ -export abstract class AutoTranslate { - name: string; - - languages: string[]; - - supportedLanguages: { - [language: string]: ISupportedLanguage[]; - }; - - /** - * Encapsulate the api key and provider settings. - * @constructor - */ - constructor() { - this.name = ''; - this.languages = []; - this.supportedLanguages = {}; - } - - /** - * Extracts non-translatable parts of a message - * @param {object} message - * @return {object} message - */ - tokenize(message: IMessage): IMessage { - if (!message.tokens || !Array.isArray(message.tokens)) { - message.tokens = []; - } - message = this.tokenizeEmojis(message); - message = this.tokenizeCode(message); - message = this.tokenizeURLs(message); - message = this.tokenizeMentions(message); - return message; - } - - tokenizeEmojis(message: IMessage): IMessage { - let count = message.tokens?.length || 0; - message.msg = message.msg.replace(/:[+\w\d]+:/g, (match) => { - const token = `{${count++}}`; - message.tokens?.push({ - token, - text: match, - }); - return token; - }); - - return message; - } - - tokenizeURLs(message: IMessage): IMessage { - let count = message.tokens?.length || 0; - - const schemes = 'http,https'; - - // Support ![alt text](http://image url) and [text](http://link) - message.msg = message.msg.replace( - new RegExp(`(!?\\[)([^\\]]+)(\\]\\((?:${schemes}):\\/\\/[^\\)]+\\))`, 'gm'), - (_match, pre, text, post) => { - const pretoken = `{${count++}}`; - message.tokens?.push({ - token: pretoken, - text: pre, - }); - - const posttoken = `{${count++}}`; - message.tokens?.push({ - token: posttoken, - text: post, - }); - - return pretoken + text + posttoken; - }, - ); - - // Support - message.msg = message.msg.replace( - new RegExp(`((?:<|<)(?:${schemes}):\\/\\/[^\\|]+\\|)(.+?)(?=>|>)((?:>|>))`, 'gm'), - (_match, pre, text, post) => { - const pretoken = `{${count++}}`; - message.tokens?.push({ - token: pretoken, - text: pre, - }); - - const posttoken = `{${count++}}`; - message.tokens?.push({ - token: posttoken, - text: post, - }); - - return pretoken + text + posttoken; - }, - ); - - return message; - } - - tokenizeCode(message: IMessage): IMessage { - let count = message.tokens?.length || 0; - message.html = message.msg; - message = Markdown.parseMessageNotEscaped(message); - - // Some parsers (e. g. Marked) wrap the complete message in a

- this is unnecessary and should be ignored with respect to translations - const regexWrappedParagraph = new RegExp('^\\s*

|

\\s*$', 'gm'); - message.msg = message.msg.replace(regexWrappedParagraph, ''); - - for (const [tokenIndex, value] of message.tokens?.entries() ?? []) { - const { token } = value; - if (token.indexOf('notranslate') === -1) { - const newToken = `{${count++}}`; - message.msg = message.msg.replace(token, newToken); - message.tokens ? (message.tokens[tokenIndex].token = newToken) : undefined; - } - } - - return message; - } - - tokenizeMentions(message: IMessage): IMessage { - let count = message.tokens?.length || 0; - - if (message.mentions && message.mentions.length > 0) { - message.mentions.forEach((mention) => { - message.msg = message.msg.replace(new RegExp(`(@${mention.username})`, 'gm'), (match) => { - const token = `{${count++}}`; - message.tokens?.push({ - token, - text: match, - }); - return token; - }); - }); - } - - if (message.channels && message.channels.length > 0) { - message.channels.forEach((channel) => { - message.msg = message.msg.replace(new RegExp(`(#${channel.name})`, 'gm'), (match) => { - const token = `{${count++}}`; - message.tokens?.push({ - token, - text: match, - }); - return token; - }); - }); - } - - return message; - } - - deTokenize(message: IMessage): string { - if (message.tokens && message.tokens?.length > 0) { - for (const { token, text, noHtml } of message.tokens) { - message.msg = message.msg.replace(token, () => noHtml || text); - } - } - return message.msg; - } - - /** - * Triggers the translation of the prepared (tokenized) message - * and persists the result - * @public - * @param {object} message - * @param {object} room - * @param {object} targetLanguage - * @returns {object} unmodified message object. - */ - async translateMessage(message: IMessage, { room, targetLanguage }: { room: IRoom; targetLanguage?: string }): Promise { - let targetLanguages: string[]; - if (targetLanguage) { - targetLanguages = [targetLanguage]; - } else { - targetLanguages = (await Subscriptions.getAutoTranslateLanguagesByRoomAndNotUser(room._id, message.u?._id)).filter(isTruthy); - } - if (message.msg) { - setImmediate(async () => { - let targetMessage = Object.assign({}, message); - targetMessage.html = escapeHTML(String(targetMessage.msg)); - targetMessage = this.tokenize(targetMessage); - - const translations = await this._translateMessage(targetMessage, targetLanguages); - if (!_.isEmpty(translations)) { - await Messages.addTranslations(message._id, translations, TranslationProviderRegistry[Provider] || ''); - this.notifyTranslatedMessage(message._id); - } - }); - } - - if (message.attachments && message.attachments.length > 0) { - setImmediate(async () => { - for (const [index, attachment] of message.attachments?.entries() ?? []) { - if (attachment.description || attachment.text) { - // Removes the initial link `[ ](quoterl)` from quote message before translation - const translatedText = attachment?.text?.replace(/\[(.*?)\]\(.*?\)/g, '$1') || attachment?.text; - const attachmentMessage = { ...attachment, text: translatedText }; - const translations = await this._translateAttachmentDescriptions(attachmentMessage, targetLanguages); - - if (!_.isEmpty(translations)) { - await Messages.addAttachmentTranslations(message._id, String(index), translations); - this.notifyTranslatedMessage(message._id); - } - } - } - }); - } - return Messages.findOneById(message._id); - } - - private notifyTranslatedMessage(messageId: string): void { - void notifyOnMessageChange({ - id: messageId, - }); - } - - /** - * Returns metadata information about the service provider which is used by - * the generic implementation - * @abstract - * @protected - * @returns { name, displayName, settings } - }; - */ - abstract _getProviderMetadata(): IProviderMetadata; - - /** - * Provides the possible languages _from_ which a message can be translated into a target language - * @abstract - * @protected - * @param {string} target - the language into which shall be translated - * @returns [{ language, name }] - */ - abstract getSupportedLanguages(target: string): Promise; - - /** - * Performs the actual translation of a message, - * usually by sending a REST API call to the service provider. - * @abstract - * @protected - * @param {object} message - * @param {object} targetLanguages - * @return {object} - */ - abstract _translateMessage(message: IMessage, targetLanguages: string[]): Promise; - - /** - * Performs the actual translation of an attachment (precisely its description), - * usually by sending a REST API call to the service provider. - * @abstract - * @param {object} attachment - * @param {object} targetLanguages - * @returns {object} translated messages for each target language - */ - abstract _translateAttachmentDescriptions(attachment: MessageAttachment, targetLanguages: string[]): Promise; -} - -Meteor.startup(() => { - /** Register the active service provider on the 'AfterSaveMessage' callback. - * So the registered provider will be invoked when a message is saved. - * All the other inactive service provider must be deactivated. - */ - settings.watch('AutoTranslate_ServiceProvider', (providerName) => { - TranslationProviderRegistry.setCurrentProvider(providerName); - }); - - // Get Auto Translate Active flag - settings.watch('AutoTranslate_Enabled', (value) => { - TranslationProviderRegistry.setEnable(value); - }); -}); diff --git a/apps/meteor/app/autotranslate/server/functions/getSupportedLanguages.ts b/apps/meteor/app/autotranslate/server/functions/getSupportedLanguages.ts deleted file mode 100644 index f5331d6fff697..0000000000000 --- a/apps/meteor/app/autotranslate/server/functions/getSupportedLanguages.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Meteor } from 'meteor/meteor'; - -import { TranslationProviderRegistry } from '..'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { settings } from '../../../settings/server'; - -export const getSupportedLanguages = async (userId: string, targetLanguage: string) => { - if (!settings.get('AutoTranslate_Enabled')) { - throw new Meteor.Error('error-autotranslate-disabled', 'Auto-Translate is disabled'); - } - - if (!(await hasPermissionAsync(userId, 'auto-translate'))) { - throw new Meteor.Error('error-action-not-allowed', 'Auto-Translate is not allowed', { - method: 'autoTranslate.getSupportedLanguages', - }); - } - - return TranslationProviderRegistry.getSupportedLanguages(targetLanguage); -}; diff --git a/apps/meteor/app/autotranslate/server/functions/saveSettings.ts b/apps/meteor/app/autotranslate/server/functions/saveSettings.ts deleted file mode 100644 index 7c38560622a38..0000000000000 --- a/apps/meteor/app/autotranslate/server/functions/saveSettings.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { Subscriptions, Rooms } from '@rocket.chat/models'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { notifyOnSubscriptionChangedById } from '../../../lib/server/lib/notifyListener'; - -export const saveAutoTranslateSettings = async ( - userId: string, - rid: string, - field: string, - value: string, - options: { defaultLanguage: string }, -) => { - if (!(await hasPermissionAsync(userId, 'auto-translate'))) { - throw new Meteor.Error('error-action-not-allowed', 'Auto-Translate is not allowed', { - method: 'autoTranslate.saveSettings', - }); - } - - check(rid, String); - check(field, String); - check(value, String); - - if (['autoTranslate', 'autoTranslateLanguage'].indexOf(field) === -1) { - throw new Meteor.Error('error-invalid-settings', 'Invalid settings field', { - method: 'saveAutoTranslateSettings', - }); - } - - const subscription = await Subscriptions.findOneByRoomIdAndUserId(rid, userId); - if (!subscription) { - throw new Meteor.Error('error-invalid-subscription', 'Invalid subscription', { - method: 'saveAutoTranslateSettings', - }); - } - - let shouldNotifySubscriptionChanged = false; - - switch (field) { - case 'autoTranslate': - const room = await Rooms.findE2ERoomById(rid, { projection: { _id: 1 } }); - if (room && value === '1') { - throw new Meteor.Error('error-e2e-enabled', 'Enabling auto-translation in E2E encrypted rooms is not allowed', { - method: 'saveAutoTranslateSettings', - }); - } - - const updateAutoTranslateResponse = await Subscriptions.updateAutoTranslateById(subscription._id, value === '1'); - if (updateAutoTranslateResponse.modifiedCount) { - shouldNotifySubscriptionChanged = true; - } - - if (!subscription.autoTranslateLanguage && options.defaultLanguage) { - const updateAutoTranslateLanguageResponse = await Subscriptions.updateAutoTranslateLanguageById( - subscription._id, - options.defaultLanguage, - ); - if (updateAutoTranslateLanguageResponse.modifiedCount) { - shouldNotifySubscriptionChanged = true; - } - } - - break; - case 'autoTranslateLanguage': - const updateAutoTranslateLanguage = await Subscriptions.updateAutoTranslateLanguageById(subscription._id, value); - if (updateAutoTranslateLanguage.modifiedCount) { - shouldNotifySubscriptionChanged = true; - } - break; - } - - if (shouldNotifySubscriptionChanged) { - void notifyOnSubscriptionChangedById(subscription._id); - } - - return true; -}; diff --git a/apps/meteor/app/autotranslate/server/functions/translateMessage.ts b/apps/meteor/app/autotranslate/server/functions/translateMessage.ts deleted file mode 100644 index 8c0545369dcca..0000000000000 --- a/apps/meteor/app/autotranslate/server/functions/translateMessage.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { IMessage } from '@rocket.chat/core-typings'; -import { Rooms } from '@rocket.chat/models'; - -import { TranslationProviderRegistry } from '..'; - -export const translateMessage = async (targetLanguage?: string, message?: IMessage) => { - if (!TranslationProviderRegistry.enabled) { - return; - } - if (!message?.rid) { - return; - } - - const room = await Rooms.findOneById(message?.rid); - let translatedMessage; - - if (message && room) { - translatedMessage = await TranslationProviderRegistry.translateMessage(message, room, targetLanguage); - } - - if (!translatedMessage) { - return; - } - - return translatedMessage; -}; diff --git a/apps/meteor/app/autotranslate/server/index.ts b/apps/meteor/app/autotranslate/server/index.ts deleted file mode 100644 index e98a30265b12d..0000000000000 --- a/apps/meteor/app/autotranslate/server/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * This file contains the exported members of the package shall be re-used. - * @module AutoTranslate, TranslationProviderRegistry - */ - -import { TranslationProviderRegistry } from './autotranslate'; -import './permissions'; -import './methods/getSupportedLanguages'; -import './methods/saveSettings'; -import './methods/translateMessage'; -import './googleTranslate'; -import './deeplTranslate'; -import './libreTranslate'; -import './msTranslate'; -import './methods/getProviderUiMetadata'; - -export { TranslationProviderRegistry }; diff --git a/apps/meteor/app/autotranslate/server/methods/getSupportedLanguages.ts b/apps/meteor/app/autotranslate/server/methods/getSupportedLanguages.ts deleted file mode 100644 index 2e853057336a0..0000000000000 --- a/apps/meteor/app/autotranslate/server/methods/getSupportedLanguages.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { ISupportedLanguage } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { DDPRateLimiter } from 'meteor/ddp-rate-limiter'; -import { Meteor } from 'meteor/meteor'; - -import { getSupportedLanguages } from '../functions/getSupportedLanguages'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - 'autoTranslate.getSupportedLanguages'(targetLanguage: string): ISupportedLanguage[] | undefined; - } -} - -Meteor.methods({ - async 'autoTranslate.getSupportedLanguages'(targetLanguage) { - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'getSupportedLanguages', - }); - } - - return getSupportedLanguages(userId, targetLanguage); - }, -}); - -DDPRateLimiter.addRule( - { - type: 'method', - name: 'autoTranslate.getSupportedLanguages', - userId(/* userId*/) { - return true; - }, - }, - 5, - 60000, -); diff --git a/apps/meteor/app/autotranslate/server/methods/saveSettings.ts b/apps/meteor/app/autotranslate/server/methods/saveSettings.ts deleted file mode 100644 index fa5badb0e1af5..0000000000000 --- a/apps/meteor/app/autotranslate/server/methods/saveSettings.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Meteor } from 'meteor/meteor'; - -import { methodDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; -import { saveAutoTranslateSettings } from '../functions/saveSettings'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - 'autoTranslate.saveSettings'(rid: string, field: string, value: string, options: { defaultLanguage: string }): boolean; - } -} - -Meteor.methods({ - async 'autoTranslate.saveSettings'(rid, field, value, options) { - methodDeprecationLogger.method('autoTranslate.saveSettings', '9.0.0', '/v1/autotranslate.saveSettings'); - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'saveAutoTranslateSettings', - }); - } - - return saveAutoTranslateSettings(userId, rid, field, value, options); - }, -}); diff --git a/apps/meteor/app/autotranslate/server/methods/translateMessage.ts b/apps/meteor/app/autotranslate/server/methods/translateMessage.ts deleted file mode 100644 index 673f8dcf153e7..0000000000000 --- a/apps/meteor/app/autotranslate/server/methods/translateMessage.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { IMessage } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Messages, Rooms } from '@rocket.chat/models'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { canAccessRoomAsync } from '../../../authorization/server'; -import { translateMessage } from '../functions/translateMessage'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - 'autoTranslate.translateMessage'(message: IMessage | undefined, targetLanguage: string): Promise; - } -} - -Meteor.methods({ - async 'autoTranslate.translateMessage'(message, targetLanguage) { - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'autoTranslate.translateMessage', - }); - } - check(message?._id, String); - check(targetLanguage, String); - const msg = await Messages.findOneById(message._id); - if (!msg) { - throw new Meteor.Error('error-message-not-found', 'Message not found'); - } - const room = await Rooms.findOneById(msg.rid); - if (!room || !(await canAccessRoomAsync(room, { _id: userId }))) { - throw new Meteor.Error('error-not-allowed', 'Not allowed'); - } - return translateMessage(targetLanguage, msg); - }, -}); diff --git a/apps/meteor/app/bot-helpers/server/index.ts b/apps/meteor/app/bot-helpers/server/index.ts deleted file mode 100644 index 6db9cc24c6b4b..0000000000000 --- a/apps/meteor/app/bot-helpers/server/index.ts +++ /dev/null @@ -1,214 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { UserStatus } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Rooms, Users } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; -import type { Filter, FindCursor } from 'mongodb'; - -import { removeUserFromRoomMethod } from '../../../server/methods/removeUserFromRoom'; -import { hasRoleAsync } from '../../authorization/server/functions/hasRole'; -import { addUserToRole } from '../../authorization/server/methods/addUserToRole'; -import { removeUserFromRole } from '../../authorization/server/methods/removeUserFromRole'; -import { addUsersToRoomMethod } from '../../lib/server/methods/addUsersToRoom'; -import { settings } from '../../settings/server'; - -/** - * BotHelpers helps bots - * "private" properties use meteor collection cursors, so they stay reactive - * "public" properties use getters to fetch and filter collections as array - */ -class BotHelpers { - private queries: { - online: Filter; - users: Filter; - }; - - private userFields: Record; - - private _allUsers: FindCursor; - - private _onlineUsers: FindCursor; - - constructor() { - this.queries = { - online: { status: { $ne: UserStatus.OFFLINE } }, - users: { roles: { $not: { $all: ['bot'] } } }, - }; - } - - // setup collection cursors with array of fields from setting - setupCursors(fieldsSetting: string | string[]) { - this.userFields = {}; - if (typeof fieldsSetting === 'string') { - fieldsSetting = fieldsSetting.split(','); - } - fieldsSetting.forEach((n) => { - this.userFields[n.trim()] = 1; - }); - this._allUsers = Users.find(this.queries.users, { projection: this.userFields }); - this._onlineUsers = Users.find({ $and: [this.queries.users, this.queries.online] }, { projection: this.userFields }); - } - - // request methods or props as arguments to Meteor.call - async request(prop: keyof this, ...params: unknown[]): Promise { - const p = this[prop]; - - if (typeof p === 'undefined') { - return null; - } - if (typeof p === 'function') { - return p(...params); - } - - return p; - } - - async addUserToRole(userName: string, roleId: string, userId: string): Promise { - await addUserToRole(userId, roleId, userName); - } - - async removeUserFromRole(userName: string, roleId: string, userId: string): Promise { - await removeUserFromRole(userId, roleId, userName); - } - - async addUserToRoom(userName: string, room: string): Promise { - const foundRoom = await Rooms.findOneByIdOrName(room); - - if (!foundRoom) { - throw new Meteor.Error('invalid-channel'); - } - - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'addUserToRoom' }); - } - await addUsersToRoomMethod(userId, { - rid: foundRoom._id, - users: [userName], - }); - } - - async removeUserFromRoom(userName: string, room: string) { - const foundRoom = await Rooms.findOneByIdOrName(room); - - if (!foundRoom) { - throw new Meteor.Error('invalid-channel'); - } - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user'); - } - await removeUserFromRoomMethod(userId, { rid: foundRoom._id, username: userName }); - } - - // generic error whenever property access insufficient to fill request - requestError() { - throw new Meteor.Error('error-not-allowed', 'Bot request not allowed', { - method: 'botRequest', - action: 'bot_request', - }); - } - - // "public" properties accessed by getters - // allUsers / onlineUsers return whichever properties are enabled by settings - get allUsers() { - if (!Object.keys(this.userFields).length) { - this.requestError(); - return false; - } - return this._allUsers.toArray(); - } - - get onlineUsers() { - if (!Object.keys(this.userFields).length) { - this.requestError(); - return false; - } - return this._onlineUsers.toArray(); - } - - get allUsernames() { - return (async () => { - if (!this.userFields.hasOwnProperty('username')) { - this.requestError(); - return false; - } - return (await this._allUsers.toArray()).map((user) => user.username); - })(); - } - - get onlineUsernames() { - return (async () => { - if (!this.userFields.hasOwnProperty('username')) { - this.requestError(); - return false; - } - return (await this._onlineUsers.toArray()).map((user) => user.username); - })(); - } - - get allNames() { - return (async () => { - if (!this.userFields.hasOwnProperty('name')) { - this.requestError(); - return false; - } - return (await this._allUsers.toArray()).map((user) => user.name); - })(); - } - - get onlineNames() { - return (async () => { - if (!this.userFields.hasOwnProperty('name')) { - this.requestError(); - return false; - } - return (await this._onlineUsers.toArray()).map((user) => user.name); - })(); - } - - get allIDs() { - return (async () => { - if (!this.userFields.hasOwnProperty('_id') || !this.userFields.hasOwnProperty('username')) { - this.requestError(); - return false; - } - return (await this._allUsers.toArray()).map((user) => ({ id: user._id, name: user.username })); - })(); - } - - get onlineIDs() { - return (async () => { - if (!this.userFields.hasOwnProperty('_id') || !this.userFields.hasOwnProperty('username')) { - this.requestError(); - return false; - } - return (await this._onlineUsers.toArray()).map((user) => ({ id: user._id, name: user.username })); - })(); - } -} - -// add class to meteor methods -const botHelpers = new BotHelpers(); - -// init cursors with fields setting and update on setting change -settings.watch('BotHelpers_userFields', (value) => { - botHelpers.setupCursors(value); -}); - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - botRequest: (prop: keyof BotHelpers, ...params: unknown[]) => Promise; - } -} - -Meteor.methods({ - async botRequest(...args) { - const userID = Meteor.userId(); - if (userID && (await hasRoleAsync(userID, 'bot'))) { - return botHelpers.request(...args, userID); - } - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'botRequest' }); - }, -}); diff --git a/apps/meteor/app/channel-settings/server/index.ts b/apps/meteor/app/channel-settings/server/index.ts deleted file mode 100644 index 39242cef11109..0000000000000 --- a/apps/meteor/app/channel-settings/server/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import './methods/saveRoomSettings'; - -export { saveRoomTopic } from './functions/saveRoomTopic'; -export { saveRoomName } from './functions/saveRoomName'; diff --git a/apps/meteor/app/cloud/server/functions/getOAuthAuthorizationUrl.ts b/apps/meteor/app/cloud/server/functions/getOAuthAuthorizationUrl.ts deleted file mode 100644 index d787fd16cf653..0000000000000 --- a/apps/meteor/app/cloud/server/functions/getOAuthAuthorizationUrl.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Settings } from '@rocket.chat/models'; -import { Random } from '@rocket.chat/random'; - -import { updateAuditedBySystem } from '../../../../server/settings/lib/auditedSettingUpdates'; -import { notifyOnSettingChangedById } from '../../../lib/server/lib/notifyListener'; -import { settings } from '../../../settings/server'; -import { userScopes } from '../oauthScopes'; -import { getRedirectUri } from './getRedirectUri'; - -export async function getOAuthAuthorizationUrl() { - const state = Random.id(); - - await updateAuditedBySystem({ - reason: 'getOAuthAuthorizationUrl', - })(Settings.updateValueById, 'Cloud_Workspace_Registration_State', state); - - void notifyOnSettingChangedById('Cloud_Workspace_Registration_State'); - - const cloudUrl = settings.get('Cloud_Url'); - const clientId = settings.get('Cloud_Workspace_Client_Id'); - const redirectUri = getRedirectUri(); - - const scope = userScopes.join(' '); - - return `${cloudUrl}/authorize?response_type=code&client_id=${clientId}&redirect_uri=${redirectUri}&scope=${scope}&state=${state}`; -} diff --git a/apps/meteor/app/cloud/server/functions/getRedirectUri.ts b/apps/meteor/app/cloud/server/functions/getRedirectUri.ts deleted file mode 100644 index ceb8448e2d8a2..0000000000000 --- a/apps/meteor/app/cloud/server/functions/getRedirectUri.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { settings } from '../../../settings/server'; - -export function getRedirectUri() { - return `${settings.get('Site_Url')}/admin/cloud/oauth-callback`.replace(/\/\/admin+/g, '/admin'); -} diff --git a/apps/meteor/app/cloud/server/functions/syncWorkspace/index.ts b/apps/meteor/app/cloud/server/functions/syncWorkspace/index.ts deleted file mode 100644 index 2ae63939e9d93..0000000000000 --- a/apps/meteor/app/cloud/server/functions/syncWorkspace/index.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { CloudWorkspaceRegistrationError } from '../../../../../lib/errors/CloudWorkspaceRegistrationError'; -import { SystemLogger } from '../../../../../server/lib/logger/system'; -import { CloudWorkspaceAccessTokenEmptyError, CloudWorkspaceAccessTokenError, isAbortError } from '../getWorkspaceAccessToken'; -import { announcementSync } from './announcementSync'; -import { legacySyncWorkspace } from './legacySyncWorkspace'; -import { syncCloudData } from './syncCloudData'; -import { getCachedSupportedVersionsToken } from '../supportedVersionsToken/supportedVersionsToken'; - -/** - * Syncs the workspace with the cloud - * @returns {Promise} - * @throws {Error} - If there is an unexpected error during sync like a network error - */ -export async function syncWorkspace() { - try { - await announcementSync(); - await syncCloudData(); - } catch (err) { - switch (true) { - case err instanceof CloudWorkspaceRegistrationError: - case err instanceof CloudWorkspaceAccessTokenError: { - // There is no access token, so we can't sync - SystemLogger.info('Workspace does not have a valid access token, sync aborted'); - break; - } - default: { - if (!(err instanceof CloudWorkspaceAccessTokenEmptyError) && !isAbortError(err)) { - SystemLogger.error({ msg: 'Error during workspace sync', err }); - } - SystemLogger.info({ - msg: 'Falling back to legacy sync', - function: 'syncCloudData', - }); - try { - await legacySyncWorkspace(); - } catch (err) { - switch (true) { - case err instanceof CloudWorkspaceRegistrationError: - case err instanceof CloudWorkspaceAccessTokenError: { - // There is no access token, so we can't sync - break; - } - default: { - if (!(err instanceof CloudWorkspaceAccessTokenEmptyError) && !isAbortError(err)) { - SystemLogger.error({ msg: 'Error during fallback workspace sync', err }); - } - throw err; - } - } - } - } - } - } finally { - await getCachedSupportedVersionsToken.reset(); - } -} diff --git a/apps/meteor/app/cloud/server/index.ts b/apps/meteor/app/cloud/server/index.ts deleted file mode 100644 index 78485ccab1fa7..0000000000000 --- a/apps/meteor/app/cloud/server/index.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { cronJobs } from '@rocket.chat/cron'; -import { Meteor } from 'meteor/meteor'; - -import { connectWorkspace } from './functions/connectWorkspace'; -import { CloudWorkspaceAccessTokenEmptyError, getWorkspaceAccessToken } from './functions/getWorkspaceAccessToken'; -import { getWorkspaceAccessTokenWithScope } from './functions/getWorkspaceAccessTokenWithScope'; -import { retrieveRegistrationStatus } from './functions/retrieveRegistrationStatus'; -import { syncWorkspace } from './functions/syncWorkspace'; -import { SystemLogger } from '../../../server/lib/logger/system'; -import './methods'; - -const licenseCronName = 'Cloud Workspace Sync'; - -Meteor.startup(async () => { - const { workspaceRegistered } = await retrieveRegistrationStatus(); - - if (process.env.REG_TOKEN && process.env.REG_TOKEN !== '' && !workspaceRegistered) { - try { - SystemLogger.info('REG_TOKEN Provided. Attempting to register'); - - if (!(await connectWorkspace(process.env.REG_TOKEN))) { - throw new Error("Couldn't register with token. Please make sure token is valid or hasn't already been used"); - } - - SystemLogger.info('Successfully registered with token provided by REG_TOKEN!'); - } catch (err: any) { - SystemLogger.error({ msg: 'An error occurred registering with token.', err }); - } - } - - setImmediate(async () => { - try { - await syncWorkspace(); - } catch (err: any) { - if (err instanceof CloudWorkspaceAccessTokenEmptyError) { - return; - } - if (err.type && err.type === 'AbortError') { - return; - } - SystemLogger.error({ msg: 'An error occurred syncing workspace.', err }); - } - }); - const minute = Math.floor(Math.random() * 60); - await cronJobs.add(licenseCronName, `${minute} */12 * * *`, async () => { - try { - await syncWorkspace(); - } catch (err: any) { - if (err instanceof CloudWorkspaceAccessTokenEmptyError) { - return; - } - if (err.type && err.type === 'AbortError') { - return; - } - SystemLogger.error({ msg: 'An error occurred syncing workspace.', err }); - } - }); -}); - -export { getWorkspaceAccessToken, getWorkspaceAccessTokenWithScope }; diff --git a/apps/meteor/app/cloud/server/methods.ts b/apps/meteor/app/cloud/server/methods.ts deleted file mode 100644 index ef6e6b34927ea..0000000000000 --- a/apps/meteor/app/cloud/server/methods.ts +++ /dev/null @@ -1,208 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { buildWorkspaceRegistrationData } from './functions/buildRegistrationData'; -import { checkUserHasCloudLogin } from './functions/checkUserHasCloudLogin'; -import { connectWorkspace } from './functions/connectWorkspace'; -import { finishOAuthAuthorization } from './functions/finishOAuthAuthorization'; -import { getOAuthAuthorizationUrl } from './functions/getOAuthAuthorizationUrl'; -import { retrieveRegistrationStatus } from './functions/retrieveRegistrationStatus'; -import { startRegisterWorkspace } from './functions/startRegisterWorkspace'; -import { syncWorkspace } from './functions/syncWorkspace'; -import { userLogout } from './functions/userLogout'; -import { hasPermissionAsync } from '../../authorization/server/functions/hasPermission'; -import { methodDeprecationLogger } from '../../lib/server/lib/deprecationWarningLogger'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - 'cloud:checkRegisterStatus': () => { - workspaceRegistered: boolean; - workspaceId: string; - uniqueId: string; - token: string; - email: string; - }; - 'cloud:getWorkspaceRegisterData': () => string; - 'cloud:registerWorkspace': () => boolean; - 'cloud:syncWorkspace': () => boolean; - 'cloud:connectWorkspace': (token: string) => boolean | Error; - 'cloud:getOAuthAuthorizationUrl': () => string; - 'cloud:finishOAuthAuthorization': (code: string, state: string) => boolean; - 'cloud:checkUserLoggedIn': () => boolean; - 'cloud:logout': () => Promise; - } -} - -Meteor.methods({ - /** - * @deprecated this method is deprecated and will be removed soon. - * Prefer using cloud.registrationStatus rest api. - */ - async 'cloud:checkRegisterStatus'() { - methodDeprecationLogger.method('cloud:checkRegisterStatus', '9.0.0', '/v1/cloud.registrationStatus'); - const uid = Meteor.userId(); - - if (!uid) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'cloud:checkRegisterStatus', - }); - } - - if (!(await hasPermissionAsync(uid, 'manage-cloud'))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { - method: 'cloud:checkRegisterStatus', - }); - } - - return retrieveRegistrationStatus(); - }, - async 'cloud:getWorkspaceRegisterData'() { - const uid = Meteor.userId(); - - if (!uid) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'cloud:getWorkspaceRegisterData', - }); - } - - if (!(await hasPermissionAsync(uid, 'manage-cloud'))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { - method: 'cloud:getWorkspaceRegisterData', - }); - } - - return Buffer.from(JSON.stringify(await buildWorkspaceRegistrationData(undefined))).toString('base64'); - }, - async 'cloud:registerWorkspace'() { - const uid = Meteor.userId(); - - if (!uid) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'cloud:registerWorkspace', - }); - } - - if (!(await hasPermissionAsync(uid, 'manage-cloud'))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { - method: 'cloud:registerWorkspace', - }); - } - - return startRegisterWorkspace(); - }, - async 'cloud:syncWorkspace'() { - const uid = Meteor.userId(); - - if (!uid) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'cloud:syncWorkspace', - }); - } - - if (!(await hasPermissionAsync(uid, 'manage-cloud'))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { - method: 'cloud:syncWorkspace', - }); - } - - await syncWorkspace(); - - return true; - }, - async 'cloud:connectWorkspace'(token) { - check(token, String); - - const uid = Meteor.userId(); - - if (!uid) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'cloud:connectWorkspace', - }); - } - - if (!(await hasPermissionAsync(uid, 'manage-cloud'))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { - method: 'cloud:connectWorkspace', - }); - } - - if (!token) { - throw new Meteor.Error('error-invalid-payload', 'Token is required.', { - method: 'cloud:connectWorkspace', - }); - } - - return connectWorkspace(token); - }, - // Currently unused but will link local account to Rocket.Chat Cloud account. - async 'cloud:getOAuthAuthorizationUrl'() { - const uid = Meteor.userId(); - if (!uid) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'cloud:getOAuthAuthorizationUrl', - }); - } - - if (!(await hasPermissionAsync(uid, 'manage-cloud'))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { - method: 'cloud:getOAuthAuthorizationUrl', - }); - } - - return getOAuthAuthorizationUrl(); - }, - async 'cloud:finishOAuthAuthorization'(code, state) { - check(code, String); - check(state, String); - - const uid = Meteor.userId(); - - if (!uid) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'cloud:finishOAuthAuthorization', - }); - } - - if (!(await hasPermissionAsync(uid, 'manage-cloud'))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { - method: 'cloud:finishOAuthAuthorization', - }); - } - - return finishOAuthAuthorization(code, state); - }, - async 'cloud:checkUserLoggedIn'() { - const uid = Meteor.userId(); - if (!uid) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'cloud:checkUserLoggedIn', - }); - } - - if (!(await hasPermissionAsync(uid, 'manage-cloud'))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { - method: 'cloud:checkUserLoggedIn', - }); - } - - return checkUserHasCloudLogin(uid); - }, - async 'cloud:logout'() { - const uid = Meteor.userId(); - if (!uid) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'cloud:logout', - }); - } - - if (!(await hasPermissionAsync(uid, 'manage-cloud'))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { - method: 'cloud:logout', - }); - } - - return userLogout(uid); - }, -}); diff --git a/apps/meteor/app/cors/server/cors.ts b/apps/meteor/app/cors/server/cors.ts deleted file mode 100644 index 9464762d57d04..0000000000000 --- a/apps/meteor/app/cors/server/cors.ts +++ /dev/null @@ -1,182 +0,0 @@ -import type http from 'node:http'; -import type { UrlWithParsedQuery } from 'node:url'; -import url from 'node:url'; - -import { Logger } from '@rocket.chat/logger'; -import { Meteor } from 'meteor/meteor'; -import type { StaticFiles } from 'meteor/webapp'; -import { WebApp, WebAppInternals } from 'meteor/webapp'; - -import { getWebAppHash } from '../../../server/configuration/configureBoilerplate'; -import { settings } from '../../settings/server'; - -// Taken from 'connect' types -type NextFunction = (err?: any) => void; - -const logger = new Logger('CORS'); - -declare module 'meteor/webapp' { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace WebApp { - function setInlineScriptsAllowed(allowed: boolean): Promise; - } -} - -let templatePromise: Promise | void; -export async function setInlineScriptsAllowed(allowed: boolean): Promise { - templatePromise = WebAppInternals.setInlineScriptsAllowed(allowed); -} - -WebApp.rawConnectHandlers.use(async (_req: http.IncomingMessage, res: http.ServerResponse, next: NextFunction) => { - if (templatePromise) { - await templatePromise; - templatePromise = void 0; - } - - // XSS Protection for old browsers (IE) - res.setHeader('X-XSS-Protection', '1'); - - // X-Content-Type-Options header to prevent MIME Sniffing - res.setHeader('X-Content-Type-Options', 'nosniff'); - - if (settings.get('Iframe_Restrict_Access')) { - res.setHeader('X-Frame-Options', settings.get('Iframe_X_Frame_Options')); - } - - if (settings.get('Enable_CSP')) { - // eslint-disable-next-line @typescript-eslint/naming-convention - const cdn_prefixes = [ - settings.get('CDN_PREFIX'), - settings.get('CDN_PREFIX_ALL') ? null : settings.get('CDN_JSCSS_PREFIX'), - 'https://cdn.zapier.com', - ] - .filter(Boolean) - .join(' '); - - const inlineHashes = [ - // Hash for `window.close()`, required by the CAS login popup. - "'sha256-jqxtvDkBbRAl9Hpqv68WdNOieepg8tJSYu1xIy7zT34='", - // Hash for /apps/meteor/packages/rocketchat-livechat/assets/demo.html:25 - "'sha256-aui5xYk3Lu1dQcnsPlNZI+qDTdfzdUv3fzsw80VLJgw='", - ] - .filter(Boolean) - .join(' '); - const external = [ - settings.get('Accounts_OAuth_Apple') && 'https://appleid.cdn-apple.com', - settings.get('PiwikAnalytics_enabled') && settings.get('PiwikAnalytics_url'), - settings.get('GoogleAnalytics_enabled') && 'https://www.google-analytics.com', - 'https://zapier.com', - ...settings - .get('Extra_CSP_Domains') - .split(/[ \n\,]/gim) - .filter((e) => Boolean(e.trim())), - ] - .filter(Boolean) - .join(' '); - res.setHeader( - 'Content-Security-Policy', - [ - `default-src 'self' ${cdn_prefixes}`, - 'connect-src *', - `font-src 'self' ${cdn_prefixes} data:`, - 'frame-src *', - 'img-src * data: blob:', - 'media-src * data:', - `script-src 'self' 'unsafe-eval' ${inlineHashes} ${cdn_prefixes} ${external}`, - `style-src 'self' 'unsafe-inline' ${cdn_prefixes}`, - ].join('; '), - ); - } - - return next(); -}); - -const _staticFilesMiddleware = WebAppInternals.staticFilesMiddleware; -declare module 'meteor/webapp' { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace WebApp { - function categorizeRequest( - req: http.IncomingMessage, - ): { arch: string; path: string; url: UrlWithParsedQuery } & Record; - } -} - -let cachingVersion = ''; -export function setCachingVersion(value: string): void { - cachingVersion = value.trim(); -} - -// @ts-expect-error - accessing internal property of webapp -WebAppInternals.staticFilesMiddleware = function ( - staticFiles: StaticFiles, - req: http.IncomingMessage & { cookies: Record }, - res: http.ServerResponse & { cookie: (cookie: string, value: string) => void }, - next: NextFunction, -) { - res.setHeader('Access-Control-Allow-Origin', '*'); - const { arch, path, url } = WebApp.categorizeRequest(req); - - if (cachingVersion && req.cookies.cache_version !== cachingVersion) { - res.cookie('cache_version', cachingVersion); - res.setHeader('Clear-Site-Data', '"cache"'); - } - - // Prevent meteor_runtime_config.js to load from a different expected hash possibly causing - // a cache of the file for the wrong hash and start a client loop due to the mismatch - // of the hashes of ui versions which would be checked against a websocket response - if (path === '/meteor_runtime_config.js') { - const hash = getWebAppHash(arch); - - if (!hash || hash !== url.query.hash) { - res.writeHead(404); - return res.end(); - } - - res.setHeader('Cache-Control', 'public, max-age=3600'); - } - - return _staticFilesMiddleware(staticFiles, req, res, next); -}; - -const oldHttpServerListeners = WebApp.httpServer.listeners('request').slice(0); - -WebApp.httpServer.removeAllListeners('request'); - -WebApp.httpServer.addListener('request', (req, res, ...args) => { - const next = () => { - for (const oldListener of oldHttpServerListeners) { - oldListener.apply(WebApp.httpServer, [req, res, ...args]); - } - }; - - if (settings.get('Force_SSL') !== true) { - next(); - return; - } - - const remoteAddress = req.connection.remoteAddress || req.socket.remoteAddress || ''; - const localhostRegexp = /^\s*(127\.0\.0\.1|::1)\s*$/; - const localhostTest = function (x: string) { - return localhostRegexp.test(x); - }; - - const isLocal = - localhostRegexp.test(remoteAddress) && - (!req.headers['x-forwarded-for'] || (req.headers['x-forwarded-for'] as string).split(',').every(localhostTest)); - // @ts-expect-error - `pair` is valid, but doesnt exists on types - const isSsl = req.connection.pair || (req.headers['x-forwarded-proto'] && req.headers['x-forwarded-proto'].indexOf('https') !== -1); - - logger.debug({ msg: 'CORS request info', url: req.url, remoteAddress, isLocal, isSsl, headers: req.headers }); - - if (!isLocal && !isSsl) { - let host = req.headers.host || url.parse(Meteor.absoluteUrl()).hostname || ''; - host = host.replace(/:\d+$/, ''); - res.writeHead(302, { - Location: `https://${host}${req.url}`, - }); - res.end(); - return; - } - - return next(); -}); diff --git a/apps/meteor/app/cors/server/index.ts b/apps/meteor/app/cors/server/index.ts deleted file mode 100644 index e91bda0591a52..0000000000000 --- a/apps/meteor/app/cors/server/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import './cors'; -import { Meteor } from 'meteor/meteor'; - -import { settings } from '../../settings/server'; - -Meteor.startup(() => { - settings.watch('Force_SSL', (value) => { - Meteor.absoluteUrl.defaultOptions.secure = Boolean(value); - }); -}); diff --git a/apps/meteor/app/crowd/server/crowd.ts b/apps/meteor/app/crowd/server/crowd.ts deleted file mode 100644 index 6039aaceb09de..0000000000000 --- a/apps/meteor/app/crowd/server/crowd.ts +++ /dev/null @@ -1,424 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { cronJobs } from '@rocket.chat/cron'; -import { Users } from '@rocket.chat/models'; -import { SHA256 } from '@rocket.chat/sha256'; -import AtlassianCrowd from 'atlassian-crowd-patched'; -import { Accounts } from 'meteor/accounts-base'; -import { Meteor } from 'meteor/meteor'; - -import { logger } from './logger'; -import { crowdIntervalValuesToCronMap } from '../../../server/settings/crowd'; -import { deleteUser } from '../../lib/server/functions/deleteUser'; -import { setRealName } from '../../lib/server/functions/setRealName'; -import { setUserActiveStatus } from '../../lib/server/functions/setUserActiveStatus'; -import { notifyOnUserChange, notifyOnUserChangeById, notifyOnUserChangeAsync } from '../../lib/server/lib/notifyListener'; -import { settings } from '../../settings/server'; - -type CrowdUser = Pick & { crowd: Record; crowd_username: string }; - -function fallbackDefaultAccountSystem(bind: typeof Accounts, username: string | Record, password: string) { - if (typeof username === 'string') { - if (username.indexOf('@') === -1) { - username = { username }; - } else { - username = { email: username }; - } - } - - logger.info({ msg: 'Fallback to default account system', username }); - - const loginRequest = { - user: username, - password: { - digest: SHA256(password), - algorithm: 'sha-256', - }, - }; - - return Accounts._runLoginHandlers(bind, loginRequest); -} - -export class CROWD { - private crowdClient: any; - - private options: { - crowd: { - base: string; - }; - application: { - name: string; - password: string; - }; - rejectUnauthorized: boolean; - }; - - constructor() { - let url = settings.get('CROWD_URL'); - - this.options = { - crowd: { - base: !/\/$/.test(url) ? (url += '/') : url, - }, - application: { - name: settings.get('CROWD_APP_USERNAME'), - password: settings.get('CROWD_APP_PASSWORD'), - }, - rejectUnauthorized: settings.get('CROWD_Reject_Unauthorized'), - }; - - this.crowdClient = new AtlassianCrowd(this.options); - } - - async checkConnection(): Promise { - return new Promise((resolve, reject) => - this.crowdClient.ping((err: any) => { - if (err) { - reject(err); - } - resolve(); - }), - ); - } - - async fetchCrowdUser(crowdUsername: string): Promise> { - return new Promise((resolve, reject) => - this.crowdClient.user.find(crowdUsername, (err: any, userResponse: Record) => { - if (err) { - reject(err); - } - resolve({ - displayname: userResponse['display-name'], - username: userResponse.name, - email: userResponse.email, - active: userResponse.active, - crowd_username: crowdUsername, - }); - }), - ); - } - - async searchForCrowdUserByMail(email?: string): Promise | undefined> { - return new Promise((resolve) => - this.crowdClient.search('user', `email=" ${email} "`, (err: any, response: Record) => { - if (err) { - resolve(undefined); - } - resolve(response); - }), - ); - } - - async authenticate(username: string, password: string): Promise | undefined> { - if (!username || !password) { - logger.error('No username or password'); - return; - } - const projection = { username: 1, crowd_username: 1, crowd: 1 }; - logger.info('Extracting crowd_username'); - let user = null; - let crowdUsername = username; - - if (username.indexOf('@') !== -1) { - const email = username; - - user = await Users.findOne({ 'emails.address': email }, { projection }); - if (user) { - crowdUsername = user.crowd_username; - } else { - logger.debug({ msg: 'Could not find a user by email', username }); - } - } - - if (user == null) { - user = await Users.findOne({ username }, { projection }); - if (user) { - crowdUsername = user.crowd_username; - } else { - logger.debug('Could not find a user by username'); - } - } - - if (user == null) { - user = await Users.findOne({ crowd_username: username }, { projection }); - if (user) { - crowdUsername = user.crowd_username; - } else { - logger.debug({ msg: 'Could not find a user with by crowd_username', username }); - } - } - - if (user && !crowdUsername) { - logger.debug('Local user found, redirecting to fallback login'); - return { - crowd: false, - }; - } - - if (!user && crowdUsername) { - logger.debug('New user. User is not synced yet.'); - } - logger.debug({ msg: 'Going to crowd', crowdUsername }); - - return new Promise((resolve, reject) => - this.crowdClient.user.authenticate(crowdUsername, password, async (err: any, res: Record) => { - if (err) { - reject(err); - } - const user = res; - try { - const crowdUser: Record = await this.fetchCrowdUser(crowdUsername); - if (user && settings.get('CROWD_Allow_Custom_Username') === true) { - crowdUser.username = user.name; - } - - if (user) { - crowdUser._id = user._id; - } - crowdUser.password = password; - - resolve(crowdUser); - } catch (err) { - reject(err); - } - }), - ); - } - - async syncDataToUser(crowdUser: Record, id: string) { - const user = { - username: this.cleanUsername(crowdUser.username), - crowd_username: crowdUser.crowd_username, - emails: [ - { - address: crowdUser.email, - verified: settings.get('Accounts_Verify_Email_For_External_Accounts'), - }, - ], - crowd: true, - }; - - if (crowdUser.password) { - await Accounts.setPasswordAsync(id, crowdUser.password, { - logout: false, - }); - - await Users.unsetRequirePasswordChange(id); - } - - if (crowdUser.displayname) { - await setRealName(id, crowdUser.displayname); - } - - await Users.updateOne( - { _id: id }, - { - $set: user, - }, - ); - - void notifyOnUserChange({ - clientAction: 'updated', - id, - diff: { - ...user, - ...(crowdUser.displayname && { name: crowdUser.displayname }), - }, - }); - - await setUserActiveStatus(id, crowdUser.active); - } - - async sync() { - // if crowd is disabled bail out - if (settings.get('CROWD_Enable') !== true) { - return; - } - - const users = - ((await Users.findCrowdUsers().toArray()) as unknown as (IUser & { crowd: Record; crowd_username: string })[]) || []; - - logger.info('Sync started...'); - - for (const user of users) { - let crowdUsername = user.hasOwnProperty('crowd_username') ? user.crowd_username : user.username; - logger.info({ msg: 'Syncing user', crowdUsername }); - if (!crowdUsername) { - logger.warn({ msg: 'User has no crowd_username', username: user.username }); - continue; - } - - let crowdUser = null; - - try { - crowdUser = await this.fetchCrowdUser(crowdUsername); - } catch (err) { - logger.debug({ msg: 'Error while syncing user from CROWD', err }); - logger.error({ msg: 'Could not sync user with username', crowd_username: crowdUsername }); - - const email = user.emails?.[0].address; - logger.info({ msg: 'Attempting to find user by email', email }); - - const response = await this.searchForCrowdUserByMail(email); - if (!response || response.users.length === 0) { - logger.warn({ msg: 'Could not find user in CROWD with username or email', crowd_username: crowdUsername, email }); - if (settings.get('CROWD_Remove_Orphaned_Users') === true) { - logger.info({ msg: 'Removing user', crowd_username: crowdUsername }); - setImmediate(async () => { - await deleteUser(user._id); - logger.info({ msg: 'User removed', crowd_username: crowdUsername }); - }); - } - return; - } - crowdUsername = response.users[0].name; - logger.info({ msg: 'User found by email. Syncing user', crowd_username: crowdUsername }); - if (!crowdUsername) { - logger.warn({ msg: 'User has no crowd_username', username: user.username }); - continue; - } - - crowdUser = await this.fetchCrowdUser(crowdUsername); - } - - if (settings.get('CROWD_Allow_Custom_Username') === true) { - crowdUser.username = user.username; - } - - await this.syncDataToUser(crowdUser, user._id); - } - } - - cleanUsername(username: string) { - if (settings.get('CROWD_Clean_Usernames') === true) { - return username.split('@')[0]; - } - return username; - } - - async updateUserCollection(crowdUser: Record) { - const username = crowdUser.crowd_username || crowdUser.username; - const mail = crowdUser.email; - - // If id is not provided, user is linked by crowd_username or email address - const userQuery = { - ...(crowdUser._id && { _id: crowdUser._id }), - ...(!crowdUser._id && { - $or: [{ crowd_username: username }, { 'emails.address': mail }], - }), - }; - - // find our existing user if they exist - const user = await Users.findOne(userQuery); - - if (user) { - const stampedToken = Accounts._generateStampedLoginToken(); - - await Users.updateOne( - { _id: user._id }, - { - $push: { - 'services.resume.loginTokens': Accounts._hashStampedToken(stampedToken), - }, - }, - ); - - // TODO this can be optmized so places that care about loginTokens being removed are invoked directly - // instead of having to listen to every watch.users event - void notifyOnUserChangeAsync(async () => { - const userTokens = await Users.findOneById(crowdUser._id, { projection: { 'services.resume.loginTokens': 1 } }); - if (!userTokens) { - return; - } - - return { - clientAction: 'updated', - id: crowdUser._id, - diff: { 'services.resume.loginTokens': userTokens.services?.resume?.loginTokens }, - }; - }); - - await this.syncDataToUser(crowdUser, user._id); - - return { - userId: user._id, - token: stampedToken.token, - }; - } - - // Attempt to create the new user - try { - crowdUser._id = await Accounts.createUserAsync(crowdUser); - - void notifyOnUserChangeById({ clientAction: 'inserted', id: crowdUser._id }); - - // sync the user data - await this.syncDataToUser(crowdUser, crowdUser._id); - - return { - userId: crowdUser._id, - }; - } catch (err) { - logger.error({ msg: 'Error creating new crowd user.', err }); - } - } -} - -Accounts.registerLoginHandler('crowd', async function (this: typeof Accounts, loginRequest) { - if (!loginRequest.crowd) { - return undefined; - } - - logger.info({ msg: 'Init CROWD login', username: loginRequest.username }); - - if (settings.get('CROWD_Enable') !== true) { - return fallbackDefaultAccountSystem(this, loginRequest.username, loginRequest.crowdPassword); - } - - try { - const crowd = new CROWD(); - const user = await crowd.authenticate(loginRequest.username, loginRequest.crowdPassword); - - if (user?.crowd === false) { - logger.debug({ msg: 'User is not a valid crowd user, falling back', username: loginRequest.username }); - return fallbackDefaultAccountSystem(this, loginRequest.username, loginRequest.crowdPassword); - } - - if (!user) { - logger.debug({ msg: 'User is not allowed to access Rocket.Chat', username: loginRequest.username }); - return new Meteor.Error('not-authorized', 'User is not authorized by crowd'); - } - - const result = await crowd.updateUserCollection(user); - - return result; - } catch (err: any) { - logger.error({ msg: 'Crowd user not authenticated due to an error', err }); - - throw new Meteor.Error('user-not-found', err.message); - } -}); - -const jobName = 'CROWD_Sync'; - -Meteor.startup(() => { - settings.watchMultiple(['CROWD_Sync_User_Data', 'CROWD_Sync_Interval'], async function addCronJobDebounced([data, interval]) { - if (data !== true) { - logger.info('Disabling CROWD Background Sync'); - if (await cronJobs.has(jobName)) { - await cronJobs.remove(jobName); - } - return; - } - const crowd = new CROWD(); - if (interval) { - if (await cronJobs.has(jobName)) { - await cronJobs.remove(jobName); - } - - logger.info('Enabling CROWD Background Sync'); - const cronInterval = crowdIntervalValuesToCronMap[String(interval)]; - - await cronJobs.add(jobName, cronInterval, () => crowd.sync()); - } - }); -}); diff --git a/apps/meteor/app/crowd/server/index.ts b/apps/meteor/app/crowd/server/index.ts deleted file mode 100644 index a90aba7f9556c..0000000000000 --- a/apps/meteor/app/crowd/server/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import './crowd'; -import './methods'; diff --git a/apps/meteor/app/crowd/server/methods.ts b/apps/meteor/app/crowd/server/methods.ts deleted file mode 100644 index c659afc4fbf36..0000000000000 --- a/apps/meteor/app/crowd/server/methods.ts +++ /dev/null @@ -1,81 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import type { TranslationKey } from '@rocket.chat/ui-contexts'; -import { Meteor } from 'meteor/meteor'; - -import { CROWD } from './crowd'; -import { logger } from './logger'; -import { hasPermissionAsync } from '../../authorization/server/functions/hasPermission'; -import { settings } from '../../settings/server'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - crowd_test_connection(): { message: TranslationKey; params: string[] }; - crowd_sync_users(): { message: string; params: string[] }; - } -} - -Meteor.methods({ - async crowd_test_connection() { - const user = await Meteor.userAsync(); - if (!user) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'crowd_test_connection', - }); - } - - if (!(await hasPermissionAsync(user._id, 'test-admin-options'))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { - method: 'crowd_test_connection', - }); - } - - if (settings.get('CROWD_Enable') !== true) { - throw new Meteor.Error('crowd_disabled'); - } - - try { - const crowd = new CROWD(); - await crowd.checkConnection(); - - return { - message: 'Crowd_Connection_successful' as const, - params: [], - }; - } catch (err) { - logger.error({ - msg: 'Invalid crowd connection details, check the url and application username/password and make sure this server is allowed to speak to crowd', - err, - }); - throw new Meteor.Error('Invalid connection details', '', { method: 'crowd_test_connection' }); - } - }, - async crowd_sync_users() { - const user = await Meteor.userAsync(); - if (settings.get('CROWD_Enable') !== true) { - throw new Meteor.Error('crowd_disabled'); - } - - if (!user || !(await hasPermissionAsync(user._id, 'sync-auth-services-users'))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { - method: 'crowd_sync_users', - }); - } - - try { - const crowd = new CROWD(); - const startTime = Date.now(); - await crowd.sync(); - const stopTime = Date.now(); - const actual = Math.ceil((stopTime - startTime) / 1000); - - return { - message: `User data synced in ${actual} seconds`, - params: [], - }; - } catch (err) { - logger.error({ msg: 'Error syncing user data. ', err }); - throw new Meteor.Error('Error syncing user data', '', { method: 'crowd_sync_users' }); - } - }, -}); diff --git a/apps/meteor/app/custom-oauth/.gitignore b/apps/meteor/app/custom-oauth/.gitignore deleted file mode 100644 index 677a6fc26373d..0000000000000 --- a/apps/meteor/app/custom-oauth/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.build* diff --git a/apps/meteor/app/custom-sounds/server/index.ts b/apps/meteor/app/custom-sounds/server/index.ts deleted file mode 100644 index 6a14ccff15656..0000000000000 --- a/apps/meteor/app/custom-sounds/server/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import './startup/custom-sounds'; -import './methods/deleteCustomSound'; -import './methods/insertOrUpdateSound'; -import './methods/listCustomSounds'; -import './methods/uploadCustomSound'; diff --git a/apps/meteor/app/custom-sounds/server/lib/insertOrUpdateSound.ts b/apps/meteor/app/custom-sounds/server/lib/insertOrUpdateSound.ts deleted file mode 100644 index 856852106eba6..0000000000000 --- a/apps/meteor/app/custom-sounds/server/lib/insertOrUpdateSound.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import { CustomSounds } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import type { ICustomSoundData } from '../methods/insertOrUpdateSound'; -import { RocketChatFileCustomSoundsInstance } from '../startup/custom-sounds'; - -export const insertOrUpdateSound = async (soundData: ICustomSoundData): Promise => { - // silently strip colon; this allows for uploading :soundname: as soundname - soundData.name = (soundData.name || '').replace(/:/g, ''); - - if (!soundData.name.trim()) { - throw new Meteor.Error('error-the-field-is-required', 'The field Name is required', { - method: 'insertOrUpdateSound', - field: 'Name', - }); - } - - // allow all characters except colon, whitespace, comma, >, <, &, ", ', /, \, (, ) - // more practical than allowing specific sets of characters; also allows foreign languages - const nameValidation = /[\s,:><&"'\/\\\(\)]/; - - if (nameValidation.test(soundData.name)) { - throw new Meteor.Error('error-input-is-not-a-valid-field', `${soundData.name} is not a valid name`, { - method: 'insertOrUpdateSound', - input: soundData.name, - field: 'Name', - }); - } - - const matchingResults = await CustomSounds.findByName(soundData.name, soundData._id).toArray(); - - if (matchingResults.length > 0) { - throw new Meteor.Error('Custom_Sound_Error_Name_Already_In_Use', 'The custom sound name is already in use', { - method: 'insertOrUpdateSound', - }); - } - - if (!soundData._id) { - return ( - await CustomSounds.create({ - name: soundData.name, - extension: soundData.extension, - }) - ).insertedId; - } - - if (soundData.newFile) { - await RocketChatFileCustomSoundsInstance.deleteFile(`${soundData._id}.${soundData.previousExtension}`); - } - - if (soundData.name !== soundData.previousName || soundData.extension !== soundData.previousExtension) { - await CustomSounds.updateById(soundData._id, { name: soundData.name, extension: soundData.extension }); - const updatedSound = await CustomSounds.findOneById(soundData._id); - if (updatedSound) { - void api.broadcast('notify.updateCustomSound', { soundData: updatedSound }); - } - } - - return soundData._id; -}; diff --git a/apps/meteor/app/custom-sounds/server/lib/uploadCustomSound.ts b/apps/meteor/app/custom-sounds/server/lib/uploadCustomSound.ts deleted file mode 100644 index 926b5a2fed540..0000000000000 --- a/apps/meteor/app/custom-sounds/server/lib/uploadCustomSound.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { RequiredField } from '@rocket.chat/core-typings'; -import { CustomSounds } from '@rocket.chat/models'; - -import { RocketChatFile } from '../../../file/server'; -import type { ICustomSoundData } from '../methods/insertOrUpdateSound'; -import { RocketChatFileCustomSoundsInstance } from '../startup/custom-sounds'; - -export const uploadCustomSound = async ( - buffer: Buffer, - contentType: string, - soundData: RequiredField, -): Promise => { - const rs = RocketChatFile.bufferToStream(buffer); - - if (soundData.previousExtension) { - await RocketChatFileCustomSoundsInstance.deleteFile(`${soundData._id}.${soundData.previousExtension}`); - } - - return new Promise((resolve, reject) => { - const ws = RocketChatFileCustomSoundsInstance.createWriteStream(`${soundData._id}.${soundData.extension}`, contentType); - - ws.on('error', (err: Error) => { - reject(err); - }); - - rs.on('error', (err: Error) => { - ws.destroy(); - reject(err); - }); - - ws.on('end', () => { - setTimeout(async () => { - const sound = await CustomSounds.findOneById(soundData._id); - if (sound) { - void api.broadcast('notify.updateCustomSound', { soundData: sound }); - } - }, 500); - resolve(); - }); - - rs.pipe(ws); - }); -}; diff --git a/apps/meteor/app/custom-sounds/server/methods/deleteCustomSound.ts b/apps/meteor/app/custom-sounds/server/methods/deleteCustomSound.ts deleted file mode 100644 index 5b122fa5e116f..0000000000000 --- a/apps/meteor/app/custom-sounds/server/methods/deleteCustomSound.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { ICustomSound } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { methodDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; -import { deleteCustomSound } from '../lib/deleteCustomSound'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - deleteCustomSound(_id: ICustomSound['_id']): Promise; - } -} - -Meteor.methods({ - async deleteCustomSound(_id) { - methodDeprecationLogger.method('deleteCustomSound', '9.0.0', '/v1/custom-sounds.delete'); - if (!this.userId || !(await hasPermissionAsync(this.userId, 'manage-sounds'))) { - throw new Meteor.Error('not_authorized'); - } - check(_id, String); - await deleteCustomSound(_id); - return true; - }, -}); diff --git a/apps/meteor/app/custom-sounds/server/methods/insertOrUpdateSound.ts b/apps/meteor/app/custom-sounds/server/methods/insertOrUpdateSound.ts deleted file mode 100644 index a2881ad13ef2d..0000000000000 --- a/apps/meteor/app/custom-sounds/server/methods/insertOrUpdateSound.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { methodDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; -import { insertOrUpdateSound } from '../lib/insertOrUpdateSound'; - -export type ICustomSoundData = { - _id?: string; - name: string; - extension: string; - previousName?: string; - previousSound?: { - extension?: string; - }; - previousExtension?: string; - newFile?: boolean; - random?: number; -}; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - insertOrUpdateSound(soundData: ICustomSoundData): Promise; - } -} - -Meteor.methods({ - async insertOrUpdateSound(soundData) { - methodDeprecationLogger.method('insertOrUpdateSound', '9.0.0', ['/v1/custom-sounds.create', '/v1/custom-sounds.update']); - if (!this.userId || !(await hasPermissionAsync(this.userId, 'manage-sounds'))) { - throw new Meteor.Error('not_authorized'); - } - if (soundData._id) { - check(soundData._id, String); - } - return insertOrUpdateSound(soundData); - }, -}); diff --git a/apps/meteor/app/custom-sounds/server/methods/uploadCustomSound.ts b/apps/meteor/app/custom-sounds/server/methods/uploadCustomSound.ts deleted file mode 100644 index e979d66110ba9..0000000000000 --- a/apps/meteor/app/custom-sounds/server/methods/uploadCustomSound.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { RequiredField } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Meteor } from 'meteor/meteor'; - -import type { ICustomSoundData } from './insertOrUpdateSound'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { methodDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; -import { uploadCustomSound } from '../lib/uploadCustomSound'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - uploadCustomSound(binaryContent: string, contentType: string, soundData: RequiredField): void; - } -} - -Meteor.methods({ - async uploadCustomSound(binaryContent, contentType, soundData) { - methodDeprecationLogger.method('uploadCustomSound', '9.0.0', ['/v1/custom-sounds.create', '/v1/custom-sounds.update']); - if (!this.userId || !(await hasPermissionAsync(this.userId, 'manage-sounds'))) { - throw new Meteor.Error('not_authorized'); - } - const buffer = Buffer.from(binaryContent, 'binary'); - await uploadCustomSound(buffer, contentType, soundData); - }, -}); diff --git a/apps/meteor/app/discussion/server/index.ts b/apps/meteor/app/discussion/server/index.ts deleted file mode 100644 index 6235f5c5b1a4f..0000000000000 --- a/apps/meteor/app/discussion/server/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import './permissions'; - -import './hooks/propagateDiscussionMetadata'; - -// Methods -import './methods/createDiscussion'; diff --git a/apps/meteor/app/dolphin/server/lib.ts b/apps/meteor/app/dolphin/server/lib.ts deleted file mode 100644 index 826a277b81e4e..0000000000000 --- a/apps/meteor/app/dolphin/server/lib.ts +++ /dev/null @@ -1,54 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { Meteor } from 'meteor/meteor'; -import { ServiceConfiguration } from 'meteor/service-configuration'; - -import { callbacks } from '../../../server/lib/callbacks'; -import { beforeCreateUserCallback } from '../../../server/lib/callbacks/beforeCreateUserCallback'; -import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; -import { settings } from '../../settings/server'; - -const config = { - serverURL: '', - authorizePath: '/m/oauth2/auth/', - tokenPath: '/m/oauth2/token/', - identityPath: '/m/oauth2/api/me/', - scope: 'basic', - addAutopublishFields: { - forLoggedInUser: ['services.dolphin'], - forOtherUsers: ['services.dolphin.name'], - }, - accessTokenParam: 'access_token', -}; - -const Dolphin = new CustomOAuth('dolphin', config); - -function DolphinOnCreateUser(options: any, user?: IUser) { - // TODO: callbacks Fix this - if (user?.services?.dolphin?.NickName) { - user.username = user.services.dolphin.NickName; - } - return options; -} - -Meteor.startup(async () => { - settings.watch('Accounts_OAuth_Dolphin_URL', (value) => { - config.serverURL = value; - return Dolphin.configure(config); - }); - - if (settings.get('Accounts_OAuth_Dolphin_URL')) { - const data = { - buttonLabelText: settings.get('Accounts_OAuth_Dolphin_button_label_text'), - buttonColor: settings.get('Accounts_OAuth_Dolphin_button_color'), - buttonLabelColor: settings.get('Accounts_OAuth_Dolphin_button_label_color'), - clientId: settings.get('Accounts_OAuth_Dolphin_id'), - secret: settings.get('Accounts_OAuth_Dolphin_secret'), - serverURL: settings.get('Accounts_OAuth_Dolphin_URL'), - loginStyle: settings.get('Accounts_OAuth_Dolphin_login_style'), - }; - - await ServiceConfiguration.configurations.upsertAsync({ service: 'dolphin' }, { $set: data }); - } - - beforeCreateUserCallback.add(DolphinOnCreateUser, callbacks.priority.HIGH, 'dolphin'); -}); diff --git a/apps/meteor/app/drupal/server/index.ts b/apps/meteor/app/drupal/server/index.ts deleted file mode 100644 index cf327e4971bb2..0000000000000 --- a/apps/meteor/app/drupal/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './lib'; diff --git a/apps/meteor/app/drupal/server/lib.ts b/apps/meteor/app/drupal/server/lib.ts deleted file mode 100644 index d137551fb8377..0000000000000 --- a/apps/meteor/app/drupal/server/lib.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { OauthConfig } from '@rocket.chat/core-typings'; -import { Meteor } from 'meteor/meteor'; - -import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; -import { settings } from '../../settings/server'; - -// Drupal Server CallBack URL needs to be http(s)://{rocketchat.server}[:port]/_oauth/drupal -// In RocketChat -> Administration the URL needs to be http(s)://{drupal.server}/ - -const config: OauthConfig = { - serverURL: '', - identityPath: '/oauth2/UserInfo', - authorizePath: '/oauth2/authorize', - tokenPath: '/oauth2/token', - scope: 'openid email profile offline_access', - tokenSentVia: 'payload', - usernameField: 'preferred_username', - mergeUsers: true, - addAutopublishFields: { - forLoggedInUser: ['services.drupal'], - forOtherUsers: ['services.drupal.name'], - }, - accessTokenParam: 'access_token', -}; - -const Drupal = new CustomOAuth('drupal', config); - -Meteor.startup(() => { - settings.watch('API_Drupal_URL', (value) => { - config.serverURL = value; - Drupal.configure(config); - }); -}); diff --git a/apps/meteor/app/e2e/server/beforeCreateRoom.ts b/apps/meteor/app/e2e/server/beforeCreateRoom.ts deleted file mode 100644 index cb04d0def049d..0000000000000 --- a/apps/meteor/app/e2e/server/beforeCreateRoom.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { prepareCreateRoomCallback } from '../../../server/lib/callbacks/beforeCreateRoomCallback'; -import { settings } from '../../settings/server'; - -prepareCreateRoomCallback.add(({ type, extraData }) => { - if ( - settings.get('E2E_Enable') && - ((type === 'd' && settings.get('E2E_Enabled_Default_DirectRooms')) || - (type === 'p' && settings.get('E2E_Enabled_Default_PrivateRooms'))) - ) { - extraData.encrypted = extraData.encrypted ?? true; - } -}); diff --git a/apps/meteor/app/e2e/server/index.ts b/apps/meteor/app/e2e/server/index.ts deleted file mode 100644 index 8c8c59488fd79..0000000000000 --- a/apps/meteor/app/e2e/server/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { api } from '@rocket.chat/core-services'; - -import { callbacks } from '../../../server/lib/callbacks'; - -import './beforeCreateRoom'; -import './methods/setUserPublicAndPrivateKeys'; -import './methods/getUsersOfRoomWithoutKey'; -import './methods/updateGroupKey'; -import './methods/setRoomKeyID'; -import './methods/fetchMyKeys'; -import './methods/resetOwnE2EKey'; -import './methods/requestSubscriptionKeys'; - -callbacks.add( - 'afterJoinRoom', - (_user, room) => { - void api.broadcast('notify.e2e.keyRequest', room._id, room.e2eKeyId); - }, - callbacks.priority.MEDIUM, - 'e2e', -); diff --git a/apps/meteor/app/e2e/server/methods/setRoomKeyID.ts b/apps/meteor/app/e2e/server/methods/setRoomKeyID.ts deleted file mode 100644 index a9b4ae5dda49e..0000000000000 --- a/apps/meteor/app/e2e/server/methods/setRoomKeyID.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { IRoom } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Rooms } from '@rocket.chat/models'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { canAccessRoomIdAsync } from '../../../authorization/server/functions/canAccessRoom'; -import { notifyOnRoomChangedById } from '../../../lib/server/lib/notifyListener'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - 'e2e.setRoomKeyID'(rid: IRoom['_id'], keyID: string): void; - } -} - -export const setRoomKeyIDMethod = async (userId: string, rid: IRoom['_id'], keyID: string): Promise => { - if (!(await canAccessRoomIdAsync(rid, userId))) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'e2e.setRoomKeyID' }); - } - - const room = await Rooms.findOneById>(rid, { projection: { e2eKeyId: 1 } }); - - if (!room) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'e2e.setRoomKeyID' }); - } - - if (room.e2eKeyId) { - throw new Meteor.Error('error-room-e2e-key-already-exists', 'E2E Key ID already exists', { - method: 'e2e.setRoomKeyID', - }); - } - - await Rooms.setE2eKeyId(room._id, keyID); - - void notifyOnRoomChangedById(room._id); -}; - -Meteor.methods({ - async 'e2e.setRoomKeyID'(rid, keyID) { - check(rid, String); - check(keyID, String); - - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'e2e.setRoomKeyID' }); - } - - if (!rid) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'e2e.setRoomKeyID' }); - } - - await setRoomKeyIDMethod(userId, rid, keyID); - }, -}); diff --git a/apps/meteor/app/emoji-custom/server/index.ts b/apps/meteor/app/emoji-custom/server/index.ts deleted file mode 100644 index 3ec2051f8fffb..0000000000000 --- a/apps/meteor/app/emoji-custom/server/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import './startup/emoji-custom'; -import './methods/deleteEmojiCustom'; -import './methods/insertOrUpdateEmoji'; -import './methods/uploadEmojiCustom'; diff --git a/apps/meteor/app/emoji-custom/server/lib/insertOrUpdateEmoji.ts b/apps/meteor/app/emoji-custom/server/lib/insertOrUpdateEmoji.ts deleted file mode 100644 index 0158c1d5fc3f6..0000000000000 --- a/apps/meteor/app/emoji-custom/server/lib/insertOrUpdateEmoji.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import { EmojiCustom } from '@rocket.chat/models'; -import limax from 'limax'; -import { Meteor } from 'meteor/meteor'; - -import { trim } from '../../../../lib/utils/stringUtils'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { RocketChatFileEmojiCustomInstance } from '../startup/emoji-custom'; - -export type EmojiData = { - _id?: string; - name: string; - aliases?: string; - extension: string; - previousName?: string; - previousExtension?: string; - newFile?: boolean; -}; - -type EmojiDataWithParsedAliases = Omit & { _id: string; aliases: string[] }; - -export async function insertOrUpdateEmoji(userId: string | null, emojiData: EmojiData): Promise { - if (!userId || !(await hasPermissionAsync(userId, 'manage-emoji'))) { - throw new Meteor.Error('not_authorized'); - } - - if (!trim(emojiData.name)) { - throw new Meteor.Error('error-the-field-is-required', 'The field Name is required', { - method: 'insertOrUpdateEmoji', - field: 'Name', - }); - } - - emojiData.name = limax(emojiData.name, { replacement: '_' }); - - // allow all characters except colon, whitespace, comma, >, <, &, ", ', /, \, (, ) - // more practical than allowing specific sets of characters; also allows foreign languages - const nameValidation = /[\s,:><&"'\/\\\(\)]/; - const aliasValidation = /[:><&\|"'\/\\\(\)]/; - - // silently strip colon; this allows for uploading :emojiname: as emojiname - emojiData.name = emojiData.name.replace(/:/g, ''); - emojiData.aliases = emojiData.aliases?.replace(/:/g, ''); - - if (nameValidation.test(emojiData.name)) { - throw new Meteor.Error('error-input-is-not-a-valid-field', `${emojiData.name} is not a valid name`, { - method: 'insertOrUpdateEmoji', - input: emojiData.name, - field: 'Name', - }); - } - - let aliases: string[] = []; - if (emojiData.aliases) { - if (aliasValidation.test(emojiData.aliases)) { - throw new Meteor.Error('error-input-is-not-a-valid-field', `${emojiData.aliases} is not a valid alias set`, { - method: 'insertOrUpdateEmoji', - input: emojiData.aliases, - field: 'Alias_Set', - }); - } - aliases = emojiData.aliases - .split(/\s*,\s*/) - .filter(Boolean) - .map((alias) => limax(alias, { replacement: '_' })) - .filter((alias) => alias !== emojiData.name); - } - - emojiData.extension = emojiData.extension === 'svg+xml' ? 'png' : emojiData.extension; - - let matchingResults = []; - - if (emojiData._id) { - matchingResults = await EmojiCustom.findByNameOrAliasExceptID(emojiData.name, emojiData._id).toArray(); - for (const alias of aliases) { - matchingResults = matchingResults.concat(await EmojiCustom.findByNameOrAliasExceptID(alias, emojiData._id).toArray()); - } - } else { - matchingResults = await EmojiCustom.findByNameOrAlias(emojiData.name).toArray(); - for (const alias of aliases) { - matchingResults = matchingResults.concat(await EmojiCustom.findByNameOrAlias(alias).toArray()); - } - } - - if (matchingResults.length > 0) { - throw new Meteor.Error('Custom_Emoji_Error_Name_Or_Alias_Already_In_Use', 'The custom emoji or one of its aliases is already in use', { - method: 'insertOrUpdateEmoji', - }); - } - - if (typeof emojiData.extension === 'undefined') { - throw new Meteor.Error('error-the-field-is-required', 'The custom emoji file is required', { - method: 'insertOrUpdateEmoji', - }); - } - - if (!emojiData._id) { - // insert emoji - const createEmoji = { - name: emojiData.name, - aliases, - extension: emojiData.extension, - }; - - const _id = (await EmojiCustom.create(createEmoji)).insertedId; - - void api.broadcast('emoji.updateCustom', createEmoji); - - return { ...emojiData, ...createEmoji, _id }; - } - - // update emoji - if (emojiData.newFile) { - await RocketChatFileEmojiCustomInstance.deleteFile(encodeURIComponent(`${emojiData.name}.${emojiData.extension}`)); - await RocketChatFileEmojiCustomInstance.deleteFile(encodeURIComponent(`${emojiData.name}.${emojiData.previousExtension}`)); - await RocketChatFileEmojiCustomInstance.deleteFile(encodeURIComponent(`${emojiData.previousName}.${emojiData.extension}`)); - await RocketChatFileEmojiCustomInstance.deleteFile(encodeURIComponent(`${emojiData.previousName}.${emojiData.previousExtension}`)); - - await EmojiCustom.setExtension(emojiData._id, emojiData.extension); - } else if (emojiData.name !== emojiData.previousName) { - const rs = await RocketChatFileEmojiCustomInstance.getFileWithReadStream( - encodeURIComponent(`${emojiData.previousName}.${emojiData.previousExtension}`), - ); - - if (rs) { - await RocketChatFileEmojiCustomInstance.deleteFile(encodeURIComponent(`${emojiData.name}.${emojiData.extension}`)); - const ws = RocketChatFileEmojiCustomInstance.createWriteStream( - encodeURIComponent(`${emojiData.name}.${emojiData.previousExtension}`), - rs.contentType, - ); - ws.on('end', () => - RocketChatFileEmojiCustomInstance.deleteFile(encodeURIComponent(`${emojiData.previousName}.${emojiData.previousExtension}`)), - ); - rs.readStream.pipe(ws); - } - } - - if (emojiData.name !== emojiData.previousName) { - await EmojiCustom.setName(emojiData._id, emojiData.name); - } - - if (emojiData.aliases) { - await EmojiCustom.setAliases(emojiData._id, aliases); - } else { - await EmojiCustom.setAliases(emojiData._id, []); - } - - void api.broadcast('emoji.updateCustom', { ...emojiData, aliases }); - - return { ...emojiData, aliases } as EmojiDataWithParsedAliases; -} diff --git a/apps/meteor/app/emoji-custom/server/lib/uploadEmojiCustom.ts b/apps/meteor/app/emoji-custom/server/lib/uploadEmojiCustom.ts deleted file mode 100644 index cfa887c4a4415..0000000000000 --- a/apps/meteor/app/emoji-custom/server/lib/uploadEmojiCustom.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { api, Media } from '@rocket.chat/core-services'; -import { EmojiCustom } from '@rocket.chat/models'; -import { Random } from '@rocket.chat/random'; -import limax from 'limax'; -import { Meteor } from 'meteor/meteor'; -import sharp from 'sharp'; - -import type { EmojiData } from './insertOrUpdateEmoji'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { RocketChatFile } from '../../../file/server'; -import { RocketChatFileEmojiCustomInstance } from '../startup/emoji-custom'; - -const getFile = async (file: Buffer, extension: string) => { - if (extension !== 'svg+xml') { - return file; - } - - return sharp(file).png().toBuffer(); -}; - -export type EmojiDataWithAliases = Omit & { aliases?: string | string[] }; - -export async function uploadEmojiCustom( - userId: string | null, - binaryContent: string, - contentType: string, - emojiData: EmojiDataWithAliases, -) { - return uploadEmojiCustomWithBuffer(userId, Buffer.from(binaryContent, 'binary'), contentType, emojiData); -} - -export async function uploadEmojiCustomWithBuffer( - userId: string | null, - buffer: Buffer, - contentType: string, - emojiData: EmojiDataWithAliases, -): Promise { - // technically, since this method doesnt have any datatype validations, users can - // upload videos as emojis. The FE won't play them, but they will waste space for sure. - if (!userId || !(await hasPermissionAsync(userId, 'manage-emoji'))) { - throw new Meteor.Error('not_authorized'); - } - - if (!Array.isArray(emojiData.aliases)) { - // delete aliases for notification purposes. here, it is a string or undefined rather than an array - delete emojiData.aliases; - } - - emojiData.name = limax(emojiData.name, { replacement: '_' }); - - const file = await getFile(buffer, emojiData.extension); - emojiData.extension = emojiData.extension === 'svg+xml' ? 'png' : emojiData.extension; - - let fileBuffer; - // sharp doesn't support these formats without imagemagick or libvips installed - // so they will be stored as they are :( - if (['gif', 'x-icon', 'bmp', 'webm'].includes(emojiData.extension)) { - fileBuffer = file; - } else { - // This is to support the idea of having "sticker-like" emojis - const { data: resizedEmojiBuffer } = await Media.resizeFromBuffer(file, 512, 512, true, false, false, 'inside'); - fileBuffer = resizedEmojiBuffer; - } - - const rs = RocketChatFile.bufferToStream(fileBuffer); - await RocketChatFileEmojiCustomInstance.deleteFile(encodeURIComponent(`${emojiData.name}.${emojiData.extension}`)); - - return new Promise((resolve) => { - const ws = RocketChatFileEmojiCustomInstance.createWriteStream( - encodeURIComponent(`${emojiData.name}.${emojiData.extension}`), - contentType, - ); - ws.on('end', async () => { - const etag = Random.hexString(6); - await EmojiCustom.setETagByName(emojiData.name, etag); - setTimeout(() => api.broadcast('emoji.updateCustom', { ...emojiData, etag }), 500); - resolve(); - }); - - rs.pipe(ws); - }); -} diff --git a/apps/meteor/app/emoji-custom/server/methods/insertOrUpdateEmoji.ts b/apps/meteor/app/emoji-custom/server/methods/insertOrUpdateEmoji.ts deleted file mode 100644 index ed3bc693bac05..0000000000000 --- a/apps/meteor/app/emoji-custom/server/methods/insertOrUpdateEmoji.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Meteor } from 'meteor/meteor'; - -import { methodDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; -import { insertOrUpdateEmoji } from '../lib/insertOrUpdateEmoji'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - insertOrUpdateEmoji(emojiData: { - _id?: string; - name: string; - aliases: string; - extension: string; - previousName?: string; - previousExtension?: string; - newFile?: boolean; - }): string | boolean; - } -} - -Meteor.methods({ - async insertOrUpdateEmoji(emojiData) { - methodDeprecationLogger.method('insertOrUpdateEmoji', '9.0.0', ['/v1/emoji-custom.create', '/v1/emoji-custom.update']); - const emoji = await insertOrUpdateEmoji(this.userId, emojiData); - - if (!emojiData._id) { - return emoji._id; - } - - return !!emoji; - }, -}); diff --git a/apps/meteor/app/emoji-custom/server/methods/uploadEmojiCustom.ts b/apps/meteor/app/emoji-custom/server/methods/uploadEmojiCustom.ts deleted file mode 100644 index 91e6ed8270265..0000000000000 --- a/apps/meteor/app/emoji-custom/server/methods/uploadEmojiCustom.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Meteor } from 'meteor/meteor'; - -import { methodDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; -import { uploadEmojiCustom } from '../lib/uploadEmojiCustom'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - uploadEmojiCustom( - binaryContent: string, - contentType: string, - emojiData: { - name: string; - aliases?: string; - extension: string; - }, - ): void; - } -} - -Meteor.methods({ - async uploadEmojiCustom(binaryContent, contentType, emojiData) { - methodDeprecationLogger.method('uploadEmojiCustom', '9.0.0', '/v1/emoji-custom.create'); - await uploadEmojiCustom(this.userId, binaryContent, contentType, emojiData); - }, -}); diff --git a/apps/meteor/app/emoji-emojione/.gitignore b/apps/meteor/app/emoji-emojione/.gitignore deleted file mode 100644 index b458e2b7222cd..0000000000000 --- a/apps/meteor/app/emoji-emojione/.gitignore +++ /dev/null @@ -1 +0,0 @@ -emoji.json diff --git a/apps/meteor/app/emoji-emojione/README.md b/apps/meteor/app/emoji-emojione/README.md deleted file mode 100644 index d16237b6fc085..0000000000000 --- a/apps/meteor/app/emoji-emojione/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Updating emojione - -## Generate new category map variable for emojipicker -Run -``` -node --experimental-modules generateEmojiIndex.mjs -``` - -## Generate new percentage sprite -Clone the repository https://github.com/Ranks/emojione/ and replace the file `assets/sprites/emojione.sprites.mustache` with the content -of [emojione.sprites.mustache](emojione.sprites.mustache), then run at `emojione` folder: - -``` -grunt sprite -sass --sourcemap=none assets/sprites/emojione.sprites.scss sprites.css -``` - -And replace the file `sprites.css` at Rocket.Chat's `/packages/rocketchat-emoji-emojione/sprites.css`. diff --git a/apps/meteor/app/emoji-emojione/client/activity-sprites.css b/apps/meteor/app/emoji-emojione/client/activity-sprites.css deleted file mode 100644 index 9af3e23b46d7a..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/activity-sprites.css +++ /dev/null @@ -1,2177 +0,0 @@ -/* stylelint-disable */ - -.emojione-activity { - background-image: url('/packages/emojione/activity-sprites.png'); - - &._26bd { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 0%; - } - - &._1f3c8 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 5.882352941176471%; - } - - &._26be { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 5.882352941176471%; - } - - &._1f94e { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 0%; - } - - &._1f3be { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 5.882352941176471%; - } - - &._1f3d0 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 11.764705882352942%; - } - - &._1f3c9 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 11.764705882352942%; - } - - &._1f3b1 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 11.764705882352942%; - } - - &._1f3d3 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 0%; - } - - &._1f3f8 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 5.882352941176471%; - } - - &._1f945 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 11.764705882352942%; - } - - &._1f3d2 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 17.647058823529413%; - } - - &._1f3d1 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 17.647058823529413%; - } - - &._1f3cf { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 17.647058823529413%; - } - - &._1f94d { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 17.647058823529413%; - } - - &._26f3 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 0%; - } - - &._1f94f { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 5.882352941176471%; - } - - &._1f3f9 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 11.764705882352942%; - } - - &._1f3a3 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 17.647058823529413%; - } - - &._1f94a { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 23.529411764705884%; - } - - &._1f94b { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 23.529411764705884%; - } - - &._1f3bd { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 23.529411764705884%; - } - - &._1f6f9 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 23.529411764705884%; - } - - &._26f8 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 23.529411764705884%; - } - - &._1f94c { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 0%; - } - - &._1f6f7 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 5.882352941176471%; - } - - &._1f3bf { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 11.764705882352942%; - } - - &._26f7 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 17.647058823529413%; - } - - &._1f3c2 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 23.529411764705884%; - } - - &._1f3cb { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 29.41176470588235%; - } - - &._1f3cb-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 29.41176470588235%; - } - - &._1f3cb-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 35.294117647058826%; - } - - &._1f93c { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 23.529411764705884%; - } - - &._1f93c-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 29.41176470588235%; - } - - &._1f93c-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 35.294117647058826%; - } - - &._1f938 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 41.1764705882353%; - } - - &._1f938-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 41.1764705882353%; - } - - &._1f938-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 23.529411764705884%; - } - - &._26f9 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 47.05882352941177%; - } - - &._26f9-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 47.05882352941177%; - } - - &._26f9-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 29.41176470588235%; - } - - &._1f93a { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 52.94117647058823%; - } - - &._1f93e { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 52.94117647058823%; - } - - &._1f93e-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 52.94117647058823%; - } - - &._1f93e-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 29.41176470588235%; - } - - &._1f3cc { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 58.8235294117647%; - } - - &._1f3cc-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 58.8235294117647%; - } - - &._1f3cc-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 11.764705882352942%; - } - - &._1f3c7 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 47.05882352941177%; - } - - &._1f9d8 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 64.70588235294117%; - } - - &._1f9d8-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 64.70588235294117%; - } - - &._1f9d8-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 17.647058823529413%; - } - - &._1f3c4 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 52.94117647058823%; - } - - &._1f3c4-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 70.58823529411765%; - } - - &._1f3c0 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 70.58823529411765%; - } - - &._1f3c4-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 70.58823529411765%; - } - - &._1f3ca { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 11.764705882352942%; - } - - &._1f3ca-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 47.05882352941177%; - } - - &._1f3ca-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 76.47058823529412%; - } - - &._1f93d { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 76.47058823529412%; - } - - &._1f93d-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 76.47058823529412%; - } - - &._1f93d-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 29.41176470588235%; - } - - &._1f6a3 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 64.70588235294117%; - } - - &._1f6a3-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 82.3529411764706%; - } - - &._1f6a3-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 82.3529411764706%; - } - - &._1f9d7 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 0%; - } - - &._1f9d7-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 35.294117647058826%; - } - - &._1f9d7-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 70.58823529411765%; - } - - &._1f6b5 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 88.23529411764706%; - } - - &._1f6b5-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 88.23529411764706%; - } - - &._1f6b5-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 88.23529411764706%; - } - - &._1f6b4 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 29.41176470588235%; - } - - &._1f6b4-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 64.70588235294117%; - } - - &._1f6b4-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 94.11764705882354%; - } - - &._1f3c6 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 94.11764705882354%; - } - - &._1f947 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 94.11764705882354%; - } - - &._1f948 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 94.11764705882354%; - } - - &._1f949 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 94.11764705882354%; - } - - &._1f3c5 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 94.11764705882354%; - } - - &._1f396 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 94.11764705882354%; - } - - &._1f3f5 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 94.11764705882354%; - } - - &._1f397 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 94.11764705882354%; - } - - &._1f3ab { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 94.11764705882354%; - } - - &._1f39f { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 94.11764705882354%; - } - - &._1f3aa { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 0%; - } - - &._1f939 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 5.882352941176471%; - } - - &._1f939-2640 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 41.1764705882353%; - } - - &._1f939-2642 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 76.47058823529412%; - } - - &._1f3ad { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 100%; - } - - &._1f3a8 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 100%; - } - - &._1f3ac { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 100%; - } - - &._1f3a4 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 100%; - } - - &._1f3a7 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 100%; - } - - &._1f3bc { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 100%; - } - - &._1f3b9 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 100%; - } - - &._1f941 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 100%; - } - - &._1f3b7 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 100%; - } - - &._1f3ba { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 100%; - } - - &._1f3b8 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 100%; - } - - &._1f3bb { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 100%; - } - - &._1f3b2 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 100%; - } - - &._1f3af { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 100%; - } - - &._1f3b3 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 100%; - } - - &._1f3ae { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 100%; - } - - &._1f3b0 { - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 100% 0%; - } - -} - - -.emojione-diversity._1f3c4-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 0%; -} - -.emojione-diversity._1f3c2-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 29.41176470588235%; -} - -.emojione-diversity._1f3c2-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 29.41176470588235%; -} - -.emojione-diversity._1f3c2-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 29.41176470588235%; -} - -.emojione-diversity._1f3c2-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 29.41176470588235%; -} - -.emojione-diversity._1f3c2-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 29.41176470588235%; -} - -.emojione-diversity._1f3cb-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 0%; -} - -.emojione-diversity._1f3cb-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 5.882352941176471%; -} - -.emojione-diversity._1f3cb-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 11.764705882352942%; -} - -.emojione-diversity._1f3cb-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 17.647058823529413%; -} - -.emojione-diversity._1f3cb-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 23.529411764705884%; -} - -.emojione-diversity._1f3cb-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 35.294117647058826%; -} - -.emojione-diversity._1f3cb-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 35.294117647058826%; -} - -.emojione-diversity._1f3cb-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 35.294117647058826%; -} - -.emojione-diversity._1f3cb-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 35.294117647058826%; -} - -.emojione-diversity._1f3cb-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 35.294117647058826%; -} - -.emojione-diversity._1f3cb-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 35.294117647058826%; -} - -.emojione-diversity._1f3cb-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 0%; -} - -.emojione-diversity._1f3cb-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 5.882352941176471%; -} - -.emojione-diversity._1f3cb-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 11.764705882352942%; -} - -.emojione-diversity._1f3cb-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 17.647058823529413%; -} - -.emojione-diversity._1f938-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 41.1764705882353%; -} - -.emojione-diversity._1f938-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 41.1764705882353%; -} - -.emojione-diversity._1f938-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 41.1764705882353%; -} - -.emojione-diversity._1f938-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 41.1764705882353%; -} - -.emojione-diversity._1f938-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 41.1764705882353%; -} - -.emojione-diversity._1f938-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 41.1764705882353%; -} - -.emojione-diversity._1f938-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 0%; -} - -.emojione-diversity._1f938-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 5.882352941176471%; -} - -.emojione-diversity._1f938-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 11.764705882352942%; -} - -.emojione-diversity._1f938-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 17.647058823529413%; -} - -.emojione-diversity._1f938-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 29.41176470588235%; -} - -.emojione-diversity._1f938-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 35.294117647058826%; -} - -.emojione-diversity._1f938-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 41.1764705882353%; -} - -.emojione-diversity._1f938-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 47.05882352941177%; -} - -.emojione-diversity._1f938-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 47.05882352941177%; -} - -.emojione-diversity._26f9-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 47.05882352941177%; -} - -.emojione-diversity._26f9-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 47.05882352941177%; -} - -.emojione-diversity._26f9-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 47.05882352941177%; -} - -.emojione-diversity._26f9-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 47.05882352941177%; -} - -.emojione-diversity._26f9-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 47.05882352941177%; -} - -.emojione-diversity._26f9-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 0%; -} - -.emojione-diversity._26f9-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 5.882352941176471%; -} - -.emojione-diversity._26f9-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 11.764705882352942%; -} - -.emojione-diversity._26f9-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 17.647058823529413%; -} - -.emojione-diversity._26f9-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 23.529411764705884%; -} - -.emojione-diversity._26f9-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 35.294117647058826%; -} - -.emojione-diversity._26f9-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 41.1764705882353%; -} - -.emojione-diversity._26f9-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 47.05882352941177%; -} - -.emojione-diversity._26f9-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 52.94117647058823%; -} - -.emojione-diversity._26f9-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 52.94117647058823%; -} - -.emojione-diversity._1f93e-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 52.94117647058823%; -} - -.emojione-diversity._1f93e-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 52.94117647058823%; -} - -.emojione-diversity._1f93e-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 52.94117647058823%; -} - -.emojione-diversity._1f93e-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 52.94117647058823%; -} - -.emojione-diversity._1f93e-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 52.94117647058823%; -} - -.emojione-diversity._1f93e-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 0%; -} - -.emojione-diversity._1f93e-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 5.882352941176471%; -} - -.emojione-diversity._1f93e-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 11.764705882352942%; -} - -.emojione-diversity._1f93e-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 17.647058823529413%; -} - -.emojione-diversity._1f93e-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 23.529411764705884%; -} - -.emojione-diversity._1f93e-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 35.294117647058826%; -} - -.emojione-diversity._1f93e-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 41.1764705882353%; -} - -.emojione-diversity._1f93e-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 47.05882352941177%; -} - -.emojione-diversity._1f93e-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 52.94117647058823%; -} - -.emojione-diversity._1f93e-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 58.8235294117647%; -} - -.emojione-diversity._1f3cc-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 58.8235294117647%; -} - -.emojione-diversity._1f3cc-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 58.8235294117647%; -} - -.emojione-diversity._1f3cc-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 58.8235294117647%; -} - -.emojione-diversity._1f3cc-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 58.8235294117647%; -} - -.emojione-diversity._1f3cc-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 58.8235294117647%; -} - -.emojione-diversity._1f3cc-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 58.8235294117647%; -} - -.emojione-diversity._1f3cc-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 58.8235294117647%; -} - -.emojione-diversity._1f3cc-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 58.8235294117647%; -} - -.emojione-diversity._1f3cc-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 0%; -} - -.emojione-diversity._1f3cc-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 5.882352941176471%; -} - -.emojione-diversity._1f3cc-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 17.647058823529413%; -} - -.emojione-diversity._1f3cc-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 23.529411764705884%; -} - -.emojione-diversity._1f3cc-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 29.41176470588235%; -} - -.emojione-diversity._1f3cc-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 35.294117647058826%; -} - -.emojione-diversity._1f3cc-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 41.1764705882353%; -} - -.emojione-diversity._1f3c7-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 52.94117647058823%; -} - -.emojione-diversity._1f3c7-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 58.8235294117647%; -} - -.emojione-diversity._1f3c7-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 64.70588235294117%; -} - -.emojione-diversity._1f3c7-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 64.70588235294117%; -} - -.emojione-diversity._1f3c7-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 64.70588235294117%; -} - -.emojione-diversity._1f9d8-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 64.70588235294117%; -} - -.emojione-diversity._1f9d8-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 64.70588235294117%; -} - -.emojione-diversity._1f9d8-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 64.70588235294117%; -} - -.emojione-diversity._1f9d8-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 64.70588235294117%; -} - -.emojione-diversity._1f9d8-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 64.70588235294117%; -} - -.emojione-diversity._1f9d8-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 64.70588235294117%; -} - -.emojione-diversity._1f9d8-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 64.70588235294117%; -} - -.emojione-diversity._1f9d8-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 0%; -} - -.emojione-diversity._1f9d8-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 5.882352941176471%; -} - -.emojione-diversity._1f9d8-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 11.764705882352942%; -} - -.emojione-diversity._1f9d8-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 23.529411764705884%; -} - -.emojione-diversity._1f9d8-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 29.41176470588235%; -} - -.emojione-diversity._1f9d8-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 35.294117647058826%; -} - -.emojione-diversity._1f9d8-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 41.1764705882353%; -} - -.emojione-diversity._1f9d8-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 47.05882352941177%; -} - -.emojione-diversity._1f3c4-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 58.8235294117647%; -} - -.emojione-diversity._1f3c4-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 64.70588235294117%; -} - -.emojione-diversity._1f3c4-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 70.58823529411765%; -} - -.emojione-diversity._1f3c4-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 70.58823529411765%; -} - -.emojione-diversity._1f3c4-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 70.58823529411765%; -} - -.emojione-diversity._1f3c4-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 70.58823529411765%; -} - -.emojione-diversity._1f3c4-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 70.58823529411765%; -} - -.emojione-diversity._1f3c4-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 70.58823529411765%; -} - -.emojione-diversity._1f3c4-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 70.58823529411765%; -} - -.emojione-diversity._1f3c4-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 70.58823529411765%; -} - -.emojione-diversity._1f3c4-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 70.58823529411765%; -} - -.emojione-diversity._1f3c4-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 70.58823529411765%; -} - -.emojione-diversity._1f3c4-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 0%; -} - -.emojione-diversity._1f3c4-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 5.882352941176471%; -} - -.emojione-diversity._1f3ca-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 17.647058823529413%; -} - -.emojione-diversity._1f3ca-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 23.529411764705884%; -} - -.emojione-diversity._1f3ca-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 29.41176470588235%; -} - -.emojione-diversity._1f3ca-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 35.294117647058826%; -} - -.emojione-diversity._1f3ca-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 41.1764705882353%; -} - -.emojione-diversity._1f3ca-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 52.94117647058823%; -} - -.emojione-diversity._1f3ca-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 58.8235294117647%; -} - -.emojione-diversity._1f3ca-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 64.70588235294117%; -} - -.emojione-diversity._1f3ca-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 70.58823529411765%; -} - -.emojione-diversity._1f3ca-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 76.47058823529412%; -} - -.emojione-diversity._1f3ca-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 76.47058823529412%; -} - -.emojione-diversity._1f3ca-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 76.47058823529412%; -} - -.emojione-diversity._1f3ca-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 76.47058823529412%; -} - -.emojione-diversity._1f3ca-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 76.47058823529412%; -} - -.emojione-diversity._1f3ca-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 76.47058823529412%; -} - -.emojione-diversity._1f93d-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 76.47058823529412%; -} - -.emojione-diversity._1f93d-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 50% 76.47058823529412%; -} - -.emojione-diversity._1f93d-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 76.47058823529412%; -} - -.emojione-diversity._1f93d-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 76.47058823529412%; -} - -.emojione-diversity._1f93d-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 76.47058823529412%; -} - -.emojione-diversity._1f93d-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 0%; -} - -.emojione-diversity._1f93d-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 5.882352941176471%; -} - -.emojione-diversity._1f93d-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 11.764705882352942%; -} - -.emojione-diversity._1f93d-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 17.647058823529413%; -} - -.emojione-diversity._1f93d-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 23.529411764705884%; -} - -.emojione-diversity._1f93d-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 35.294117647058826%; -} - -.emojione-diversity._1f93d-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 41.1764705882353%; -} - -.emojione-diversity._1f93d-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 47.05882352941177%; -} - -.emojione-diversity._1f93d-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 52.94117647058823%; -} - -.emojione-diversity._1f93d-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 58.8235294117647%; -} - -.emojione-diversity._1f6a3-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 70.58823529411765%; -} - -.emojione-diversity._1f6a3-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 76.47058823529412%; -} - -.emojione-diversity._1f6a3-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 82.3529411764706%; -} - -.emojione-diversity._1f6a3-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 82.3529411764706%; -} - -.emojione-diversity._1f9d7-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 5.882352941176471%; -} - -.emojione-diversity._1f9d7-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 11.764705882352942%; -} - -.emojione-diversity._1f9d7-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 17.647058823529413%; -} - -.emojione-diversity._1f9d7-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 23.529411764705884%; -} - -.emojione-diversity._1f9d7-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 29.41176470588235%; -} - -.emojione-diversity._1f9d7-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 41.1764705882353%; -} - -.emojione-diversity._1f9d7-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 47.05882352941177%; -} - -.emojione-diversity._1f9d7-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 52.94117647058823%; -} - -.emojione-diversity._1f9d7-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 58.8235294117647%; -} - -.emojione-diversity._1f9d7-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 64.70588235294117%; -} - -.emojione-diversity._1f9d7-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 76.47058823529412%; -} - -.emojione-diversity._1f9d7-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 83.33333333333333% 82.3529411764706%; -} - -.emojione-diversity._1f9d7-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 88.23529411764706%; -} - -.emojione-diversity._1f9d7-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 88.23529411764706%; -} - -.emojione-diversity._1f9d7-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 88.23529411764706%; -} - -.emojione-diversity._1f6b5-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 88.23529411764706%; -} - -.emojione-diversity._1f6b5-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 88.23529411764706%; -} - -.emojione-diversity._1f6b5-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 88.23529411764706%; -} - -.emojione-diversity._1f6b5-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 38.888888888888886% 88.23529411764706%; -} - -.emojione-diversity._1f6b5-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 44.44444444444444% 88.23529411764706%; -} - -.emojione-diversity._1f6b5-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 55.55555555555556% 88.23529411764706%; -} - -.emojione-diversity._1f6b5-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 61.111111111111114% 88.23529411764706%; -} - -.emojione-diversity._1f6b5-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 66.66666666666667% 88.23529411764706%; -} - -.emojione-diversity._1f6b5-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 72.22222222222223% 88.23529411764706%; -} - -.emojione-diversity._1f6b5-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 77.77777777777777% 88.23529411764706%; -} - -.emojione-diversity._1f6b5-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 0%; -} - -.emojione-diversity._1f6b5-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 5.882352941176471%; -} - -.emojione-diversity._1f6b5-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 11.764705882352942%; -} - -.emojione-diversity._1f6b5-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 17.647058823529413%; -} - -.emojione-diversity._1f6b5-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 23.529411764705884%; -} - -.emojione-diversity._1f6b4-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 35.294117647058826%; -} - -.emojione-diversity._1f6b4-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 41.1764705882353%; -} - -.emojione-diversity._1f6b4-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 47.05882352941177%; -} - -.emojione-diversity._1f6b4-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 52.94117647058823%; -} - -.emojione-diversity._1f6b4-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 58.8235294117647%; -} - -.emojione-diversity._1f6b4-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 70.58823529411765%; -} - -.emojione-diversity._1f6b4-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 76.47058823529412%; -} - -.emojione-diversity._1f6b4-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 82.3529411764706%; -} - -.emojione-diversity._1f6b4-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 88.88888888888889% 88.23529411764706%; -} - -.emojione-diversity._1f6b4-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 94.11764705882354%; -} - -.emojione-diversity._1f6b4-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 11.11111111111111% 94.11764705882354%; -} - -.emojione-diversity._1f6b4-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 16.666666666666668% 94.11764705882354%; -} - -.emojione-diversity._1f6b4-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 22.22222222222222% 94.11764705882354%; -} - -.emojione-diversity._1f6b4-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 27.77777777777778% 94.11764705882354%; -} - -.emojione-diversity._1f6b4-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 33.333333333333336% 94.11764705882354%; -} - -.emojione-diversity._1f939-1f3fb { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 11.764705882352942%; -} - -.emojione-diversity._1f939-1f3fc { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 17.647058823529413%; -} - -.emojione-diversity._1f939-1f3fd { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 23.529411764705884%; -} - -.emojione-diversity._1f939-1f3fe { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 29.41176470588235%; -} - -.emojione-diversity._1f939-1f3ff { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 35.294117647058826%; -} - -.emojione-diversity._1f939-1f3fb-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 47.05882352941177%; -} - -.emojione-diversity._1f939-1f3fc-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 52.94117647058823%; -} - -.emojione-diversity._1f939-1f3fd-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 58.8235294117647%; -} - -.emojione-diversity._1f939-1f3fe-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 64.70588235294117%; -} - -.emojione-diversity._1f939-1f3ff-2640 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 70.58823529411765%; -} - -.emojione-diversity._1f939-1f3fb-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 82.3529411764706%; -} - -.emojione-diversity._1f939-1f3fc-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 88.23529411764706%; -} - -.emojione-diversity._1f939-1f3fd-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 94.44444444444444% 94.11764705882354%; -} - -.emojione-diversity._1f939-1f3fe-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 0% 100%; -} - -.emojione-diversity._1f939-1f3ff-2642 { - background-image: url('/packages/emojione/activity-sprites.png'); - background-repeat: no-repeat; - background-size: 1900% 1800%; - background-position: 5.555555555555555% 100%; -} diff --git a/apps/meteor/app/emoji-emojione/client/emojione-sprites.css b/apps/meteor/app/emoji-emojione/client/emojione-sprites.css deleted file mode 100644 index eb6d29ef768c9..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/emojione-sprites.css +++ /dev/null @@ -1,30 +0,0 @@ -@import './symbols-sprites.css'; -@import './activity-sprites.css'; -@import './objects-sprites.css'; -@import './nature-sprites.css'; -@import './food-sprites.css'; -@import './people-sprites.css'; -@import './regional-sprites.css'; -@import './travel-sprites.css'; -@import './flags-sprites.css'; -@import './modifier-sprites.css'; - -.emojione { - position: relative; - - display: inline-block; - overflow: hidden; - - width: 1.375rem; - height: 1.375rem; - margin: 0 0.15em; - - vertical-align: middle; - white-space: nowrap; - text-indent: 100%; - - font-size: inherit; - line-height: normal; - image-rendering: -webkit-optimize-contrast; - image-rendering: optimizeQuality; -} diff --git a/apps/meteor/app/emoji-emojione/client/flags-sprites.css b/apps/meteor/app/emoji-emojione/client/flags-sprites.css deleted file mode 100644 index 63a716591b2dc..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/flags-sprites.css +++ /dev/null @@ -1,1615 +0,0 @@ -/* stylelint-disable */ - -.emojione-flags { - background-image: url('/packages/emojione/flags-sprites.png'); - - &._1f1f1-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 0%; - } - - &._1f3f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 0%; - } - - &._1f3c1 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 6.666666666666667%; - } - - &._1f6a9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 6.666666666666667%; - } - - &._1f3f3-1f308 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 0%; - } - - &._1f3f4-2620 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 6.666666666666667%; - } - - &._1f1e6-1f1eb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 13.333333333333334%; - } - - &._1f1e6-1f1fd { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 13.333333333333334%; - } - - &._1f1e6-1f1f1 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 13.333333333333334%; - } - - &._1f1e9-1f1ff { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 0%; - } - - &._1f1e6-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 6.666666666666667%; - } - - &._1f1e6-1f1e9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 13.333333333333334%; - } - - &._1f1e6-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 20%; - } - - &._1f1e6-1f1ee { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 20%; - } - - &._1f1e6-1f1f6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 20%; - } - - &._1f1e6-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 20%; - } - - &._1f1e6-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 0%; - } - - &._1f1e6-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 6.666666666666667%; - } - - &._1f1e6-1f1fc { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 13.333333333333334%; - } - - &._1f1e6-1f1fa { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 20%; - } - - &._1f1e6-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 26.666666666666668%; - } - - &._1f1e6-1f1ff { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 26.666666666666668%; - } - - &._1f1e7-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 26.666666666666668%; - } - - &._1f1e7-1f1ed { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 26.666666666666668%; - } - - &._1f1e7-1f1e9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 26.666666666666668%; - } - - &._1f1e7-1f1e7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 0%; - } - - &._1f1e7-1f1fe { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 6.666666666666667%; - } - - &._1f1e7-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 13.333333333333334%; - } - - &._1f1e7-1f1ff { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 20%; - } - - &._1f1e7-1f1ef { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 26.666666666666668%; - } - - &._1f1e7-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 33.333333333333336%; - } - - &._1f1e7-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 33.333333333333336%; - } - - &._1f1e7-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 33.333333333333336%; - } - - &._1f1e7-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 33.333333333333336%; - } - - &._1f1e7-1f1fc { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 33.333333333333336%; - } - - &._1f1e7-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 33.333333333333336%; - } - - &._1f1ee-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 0%; - } - - &._1f1fb-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 6.666666666666667%; - } - - &._1f1e7-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 13.333333333333334%; - } - - &._1f1e7-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 20%; - } - - &._1f1e7-1f1eb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 26.666666666666668%; - } - - &._1f1e7-1f1ee { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 33.333333333333336%; - } - - &._1f1f0-1f1ed { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 40%; - } - - &._1f1e8-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 40%; - } - - &._1f1e8-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 40%; - } - - &._1f1ee-1f1e8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 40%; - } - - &._1f1e8-1f1fb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 40%; - } - - &._1f1e7-1f1f6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 40%; - } - - &._1f1f0-1f1fe { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 40%; - } - - &._1f1e8-1f1eb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 0%; - } - - &._1f1f9-1f1e9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 6.666666666666667%; - } - - &._1f1e8-1f1f1 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 13.333333333333334%; - } - - &._1f1e8-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 20%; - } - - &._1f1e8-1f1fd { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 26.666666666666668%; - } - - &._1f1e8-1f1e8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 33.333333333333336%; - } - - &._1f1e8-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 40%; - } - - &._1f1f0-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 46.666666666666664%; - } - - &._1f1e8-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 46.666666666666664%; - } - - &._1f1e8-1f1e9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 46.666666666666664%; - } - - &._1f1e8-1f1f0 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 46.666666666666664%; - } - - &._1f1e8-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 46.666666666666664%; - } - - &._1f1e8-1f1ee { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 46.666666666666664%; - } - - &._1f1ed-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 46.666666666666664%; - } - - &._1f1e8-1f1fa { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 46.666666666666664%; - } - - &._1f1e8-1f1fc { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 0%; - } - - &._1f1e8-1f1fe { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 6.666666666666667%; - } - - &._1f1e8-1f1ff { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 13.333333333333334%; - } - - &._1f1e9-1f1f0 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 20%; - } - - &._1f1e9-1f1ef { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 26.666666666666668%; - } - - &._1f1e9-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 33.333333333333336%; - } - - &._1f1e9-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 40%; - } - - &._1f1ea-1f1e8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 46.666666666666664%; - } - - &._1f1ea-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 53.333333333333336%; - } - - &._1f1f8-1f1fb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 53.333333333333336%; - } - - &._1f1ec-1f1f6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 53.333333333333336%; - } - - &._1f1ea-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 53.333333333333336%; - } - - &._1f1ea-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 53.333333333333336%; - } - - &._1f1ea-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 53.333333333333336%; - } - - &._1f1ea-1f1fa { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 53.333333333333336%; - } - - &._1f1eb-1f1f0 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 53.333333333333336%; - } - - &._1f1eb-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 53.333333333333336%; - } - - &._1f1eb-1f1ef { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 0%; - } - - &._1f1eb-1f1ee { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 6.666666666666667%; - } - - &._1f1eb-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 13.333333333333334%; - } - - &._1f1ec-1f1eb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 20%; - } - - &._1f1f5-1f1eb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 26.666666666666668%; - } - - &._1f1f9-1f1eb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 33.333333333333336%; - } - - &._1f1ec-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 40%; - } - - &._1f1ec-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 46.666666666666664%; - } - - &._1f1ec-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 53.333333333333336%; - } - - &._1f1e9-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 60%; - } - - &._1f1ec-1f1ed { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 60%; - } - - &._1f1ec-1f1ee { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 60%; - } - - &._1f1ec-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 60%; - } - - &._1f1ec-1f1f1 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 60%; - } - - &._1f1ec-1f1e9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 60%; - } - - &._1f1ec-1f1f5 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 60%; - } - - &._1f1ec-1f1fa { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 60%; - } - - &._1f1ec-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 60%; - } - - &._1f1ec-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 60%; - } - - &._1f1ec-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 0%; - } - - &._1f1ec-1f1fc { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 6.666666666666667%; - } - - &._1f1ec-1f1fe { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 13.333333333333334%; - } - - &._1f1ed-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 20%; - } - - &._1f1ed-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 26.666666666666668%; - } - - &._1f1ed-1f1f0 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 33.333333333333336%; - } - - &._1f1ed-1f1fa { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 40%; - } - - &._1f1ee-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 46.666666666666664%; - } - - &._1f1ee-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 53.333333333333336%; - } - - &._1f1ee-1f1e9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 60%; - } - - &._1f1ee-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 66.66666666666667%; - } - - &._1f1ee-1f1f6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 66.66666666666667%; - } - - &._1f1ee-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 66.66666666666667%; - } - - &._1f1ee-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 66.66666666666667%; - } - - &._1f1ee-1f1f1 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 66.66666666666667%; - } - - &._1f1ee-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 66.66666666666667%; - } - - &._1f1ef-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 66.66666666666667%; - } - - &._1f1ef-1f1f5 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 66.66666666666667%; - } - - &._1f38c { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 66.66666666666667%; - } - - &._1f1ef-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 66.66666666666667%; - } - - &._1f1ef-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 66.66666666666667%; - } - - &._1f1f0-1f1ff { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 0%; - } - - &._1f1f0-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 6.666666666666667%; - } - - &._1f1f0-1f1ee { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 13.333333333333334%; - } - - &._1f1fd-1f1f0 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 20%; - } - - &._1f1f0-1f1fc { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 26.666666666666668%; - } - - &._1f1f0-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 33.333333333333336%; - } - - &._1f1f1-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 40%; - } - - &._1f1f1-1f1fb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 46.666666666666664%; - } - - &._1f1f1-1f1e7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 53.333333333333336%; - } - - &._1f1f1-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 60%; - } - - &._1f1f1-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 66.66666666666667%; - } - - &._1f1f1-1f1fe { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 73.33333333333333%; - } - - &._1f1f1-1f1ee { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 73.33333333333333%; - } - - &._1f3f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 73.33333333333333%; - } - - &._1f1f1-1f1fa { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 73.33333333333333%; - } - - &._1f1f2-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 73.33333333333333%; - } - - &._1f1f2-1f1f0 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 73.33333333333333%; - } - - &._1f1f2-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 73.33333333333333%; - } - - &._1f1f2-1f1fc { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 73.33333333333333%; - } - - &._1f1f2-1f1fe { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 73.33333333333333%; - } - - &._1f1f2-1f1fb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 73.33333333333333%; - } - - &._1f1f2-1f1f1 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 73.33333333333333%; - } - - &._1f1f2-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 73.33333333333333%; - } - - &._1f1f2-1f1ed { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 0%; - } - - &._1f1f2-1f1f6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 6.666666666666667%; - } - - &._1f1f2-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 13.333333333333334%; - } - - &._1f1f2-1f1fa { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 20%; - } - - &._1f1fe-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 26.666666666666668%; - } - - &._1f1f2-1f1fd { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 33.333333333333336%; - } - - &._1f1eb-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 40%; - } - - &._1f1f2-1f1e9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 46.666666666666664%; - } - - &._1f1f2-1f1e8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 53.333333333333336%; - } - - &._1f1f2-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 60%; - } - - &._1f1f2-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 66.66666666666667%; - } - - &._1f1f2-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 73.33333333333333%; - } - - &._1f1f2-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 80%; - } - - &._1f1f2-1f1ff { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 80%; - } - - &._1f1f2-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 80%; - } - - &._1f1f3-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 80%; - } - - &._1f1f3-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 80%; - } - - &._1f1f3-1f1f5 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 80%; - } - - &._1f1f3-1f1f1 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 80%; - } - - &._1f1f3-1f1e8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 80%; - } - - &._1f1f3-1f1ff { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 80%; - } - - &._1f1f3-1f1ee { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 80%; - } - - &._1f1f3-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 80%; - } - - &._1f1f3-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 80%; - } - - &._1f1f3-1f1fa { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 80%; - } - - &._1f1f3-1f1eb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 0%; - } - - &._1f1f0-1f1f5 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 6.666666666666667%; - } - - &._1f1f2-1f1f5 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 13.333333333333334%; - } - - &._1f1f3-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 20%; - } - - &._1f1f4-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 26.666666666666668%; - } - - &._1f1f5-1f1f0 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 33.333333333333336%; - } - - &._1f1f5-1f1fc { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 40%; - } - - &._1f1f5-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 46.666666666666664%; - } - - &._1f1f5-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 53.333333333333336%; - } - - &._1f1f5-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 60%; - } - - &._1f1f5-1f1fe { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 66.66666666666667%; - } - - &._1f1f5-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 73.33333333333333%; - } - - &._1f1f5-1f1ed { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 80%; - } - - &._1f1f5-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 86.66666666666667%; - } - - &._1f1f5-1f1f1 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 86.66666666666667%; - } - - &._1f1f5-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 86.66666666666667%; - } - - &._1f1f5-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 86.66666666666667%; - } - - &._1f1f6-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 86.66666666666667%; - } - - &._1f1f7-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 86.66666666666667%; - } - - &._1f1f7-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 86.66666666666667%; - } - - &._1f1f7-1f1fa { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 86.66666666666667%; - } - - &._1f1f7-1f1fc { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 86.66666666666667%; - } - - &._1f1fc-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 86.66666666666667%; - } - - &._1f1f8-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 86.66666666666667%; - } - - &._1f1f8-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 86.66666666666667%; - } - - &._1f1f8-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 86.66666666666667%; - } - - &._1f1f8-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 86.66666666666667%; - } - - &._1f1f7-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 0%; - } - - &._1f1f8-1f1e8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 6.666666666666667%; - } - - &._1f1f8-1f1f1 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 13.333333333333334%; - } - - &._1f1f8-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 20%; - } - - &._1f1f8-1f1fd { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 26.666666666666668%; - } - - &._1f1f8-1f1f0 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 33.333333333333336%; - } - - &._1f1f8-1f1ee { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 40%; - } - - &._1f1ec-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 46.666666666666664%; - } - - &._1f1f8-1f1e7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 53.333333333333336%; - } - - &._1f1f8-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 60%; - } - - &._1f1ff-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 66.66666666666667%; - } - - &._1f1f0-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 73.33333333333333%; - } - - &._1f1f8-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 80%; - } - - &._1f1ea-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 86.66666666666667%; - } - - &._1f1f1-1f1f0 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 93.33333333333333%; - } - - &._1f1e7-1f1f1 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 93.33333333333333%; - } - - &._1f1f8-1f1ed { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 93.33333333333333%; - } - - &._1f1f0-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 93.33333333333333%; - } - - &._1f1f1-1f1e8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 93.33333333333333%; - } - - &._1f1f5-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 93.33333333333333%; - } - - &._1f1fb-1f1e8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 93.33333333333333%; - } - - &._1f1f8-1f1e9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 93.33333333333333%; - } - - &._1f1f8-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 93.33333333333333%; - } - - &._1f1f8-1f1ff { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 93.33333333333333%; - } - - &._1f1f8-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 93.33333333333333%; - } - - &._1f1e8-1f1ed { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 93.33333333333333%; - } - - &._1f1f8-1f1fe { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 93.33333333333333%; - } - - &._1f1f9-1f1fc { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 93.33333333333333%; - } - - &._1f1f9-1f1ef { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 93.33333333333333%; - } - - &._1f1f9-1f1ff { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 0%; - } - - &._1f1f9-1f1ed { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 6.666666666666667%; - } - - &._1f1f9-1f1f1 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 13.333333333333334%; - } - - &._1f1f9-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 20%; - } - - &._1f1f9-1f1f0 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 26.666666666666668%; - } - - &._1f1f9-1f1f4 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 33.333333333333336%; - } - - &._1f1f9-1f1f9 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 40%; - } - - &._1f1f9-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 46.666666666666664%; - } - - &._1f1f9-1f1f7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 53.333333333333336%; - } - - &._1f1f9-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 60%; - } - - &._1f1f9-1f1e8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 66.66666666666667%; - } - - &._1f1fb-1f1ee { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 73.33333333333333%; - } - - &._1f1f9-1f1fb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 80%; - } - - &._1f1fa-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 86.66666666666667%; - } - - &._1f1fa-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 93.33333333333333%; - } - - &._1f1e6-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 0% 100%; - } - - &._1f1ec-1f1e7 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 6.25% 100%; - } - - &._1f3f4-e0067-e0062-e0065-e006e-e0067-e007f { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 12.5% 100%; - } - - &._1f3f4-e0067-e0062-e0073-e0063-e0074-e007f { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 18.75% 100%; - } - - &._1f3f4-e0067-e0062-e0077-e006c-e0073-e007f { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 25% 100%; - } - - &._1f1fa-1f1f8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 31.25% 100%; - } - - &._1f1fa-1f1fe { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 37.5% 100%; - } - - &._1f1fa-1f1ff { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 43.75% 100%; - } - - &._1f1fb-1f1fa { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 50% 100%; - } - - &._1f1fb-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 56.25% 100%; - } - - &._1f1fb-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 62.5% 100%; - } - - &._1f1fb-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 68.75% 100%; - } - - &._1f1fc-1f1eb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 75% 100%; - } - - &._1f1ea-1f1ed { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 81.25% 100%; - } - - &._1f1fe-1f1ea { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 87.5% 100%; - } - - &._1f1ff-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 93.75% 100%; - } - - &._1f1ff-1f1fc { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 0%; - } - - &._1f1e6-1f1e8 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 6.666666666666667%; - } - - &._1f1e7-1f1fb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 13.333333333333334%; - } - - &._1f1e8-1f1f5 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 20%; - } - - &._1f1ea-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 26.666666666666668%; - } - - &._1f1e9-1f1ec { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 33.333333333333336%; - } - - &._1f1ed-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 40%; - } - - &._1f1f2-1f1eb { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 46.666666666666664%; - } - - &._1f1f8-1f1ef { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 53.333333333333336%; - } - - &._1f1f9-1f1e6 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 60%; - } - - &._1f1fa-1f1f2 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 66.66666666666667%; - } - - &._1f1fa-1f1f3 { - background-repeat: no-repeat; - background-size: 1700% 1600%; - background-position: 100% 73.33333333333333%; - } - -} - diff --git a/apps/meteor/app/emoji-emojione/client/food-sprites.css b/apps/meteor/app/emoji-emojione/client/food-sprites.css deleted file mode 100644 index 078e4d9cdb20f..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/food-sprites.css +++ /dev/null @@ -1,637 +0,0 @@ -/* stylelint-disable */ - -.emojione-food { - background-image: url('/packages/emojione/food-sprites.png'); - - &._1f35d { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 0% 0%; - } - - &._2615 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 10% 0%; - } - - &._1f34e { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 0% 11.11111111111111%; - } - - &._1f350 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 10% 11.11111111111111%; - } - - &._1f34a { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 20% 0%; - } - - &._1f34b { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 20% 11.11111111111111%; - } - - &._1f34c { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 0% 22.22222222222222%; - } - - &._1f349 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 10% 22.22222222222222%; - } - - &._1f347 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 20% 22.22222222222222%; - } - - &._1f353 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 30% 0%; - } - - &._1f348 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 30% 11.11111111111111%; - } - - &._1f352 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 30% 22.22222222222222%; - } - - &._1f351 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 0% 33.333333333333336%; - } - - &._1f96d { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 10% 33.333333333333336%; - } - - &._1f34d { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 20% 33.333333333333336%; - } - - &._1f965 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 30% 33.333333333333336%; - } - - &._1f95d { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 40% 0%; - } - - &._1f345 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 40% 11.11111111111111%; - } - - &._1f346 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 40% 22.22222222222222%; - } - - &._1f951 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 40% 33.333333333333336%; - } - - &._1f966 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 0% 44.44444444444444%; - } - - &._1f96c { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 10% 44.44444444444444%; - } - - &._1f952 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 20% 44.44444444444444%; - } - - &._1f336 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 30% 44.44444444444444%; - } - - &._1f33d { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 40% 44.44444444444444%; - } - - &._1f955 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 50% 0%; - } - - &._1f954 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 50% 11.11111111111111%; - } - - &._1f360 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 50% 22.22222222222222%; - } - - &._1f950 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 50% 33.333333333333336%; - } - - &._1f35e { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 50% 44.44444444444444%; - } - - &._1f956 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 0% 55.55555555555556%; - } - - &._1f968 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 10% 55.55555555555556%; - } - - &._1f96f { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 20% 55.55555555555556%; - } - - &._1f9c0 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 30% 55.55555555555556%; - } - - &._1f95a { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 40% 55.55555555555556%; - } - - &._1f373 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 50% 55.55555555555556%; - } - - &._1f95e { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 60% 0%; - } - - &._1f953 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 60% 11.11111111111111%; - } - - &._1f969 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 60% 22.22222222222222%; - } - - &._1f357 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 60% 33.333333333333336%; - } - - &._1f356 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 60% 44.44444444444444%; - } - - &._1f32d { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 60% 55.55555555555556%; - } - - &._1f354 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 0% 66.66666666666667%; - } - - &._1f35f { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 10% 66.66666666666667%; - } - - &._1f355 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 20% 66.66666666666667%; - } - - &._1f96a { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 30% 66.66666666666667%; - } - - &._1f959 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 40% 66.66666666666667%; - } - - &._1f32e { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 50% 66.66666666666667%; - } - - &._1f32f { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 60% 66.66666666666667%; - } - - &._1f957 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 70% 0%; - } - - &._1f958 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 70% 11.11111111111111%; - } - - &._1f96b { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 70% 22.22222222222222%; - } - - &._1f34f { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 70% 33.333333333333336%; - } - - &._1f35c { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 70% 44.44444444444444%; - } - - &._1f372 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 70% 55.55555555555556%; - } - - &._1f35b { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 70% 66.66666666666667%; - } - - &._1f363 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 0% 77.77777777777777%; - } - - &._1f371 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 10% 77.77777777777777%; - } - - &._1f364 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 20% 77.77777777777777%; - } - - &._1f359 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 30% 77.77777777777777%; - } - - &._1f35a { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 40% 77.77777777777777%; - } - - &._1f358 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 50% 77.77777777777777%; - } - - &._1f365 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 60% 77.77777777777777%; - } - - &._1f960 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 70% 77.77777777777777%; - } - - &._1f362 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 80% 0%; - } - - &._1f361 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 80% 11.11111111111111%; - } - - &._1f367 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 80% 22.22222222222222%; - } - - &._1f368 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 80% 33.333333333333336%; - } - - &._1f366 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 80% 44.44444444444444%; - } - - &._1f967 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 80% 55.55555555555556%; - } - - &._1f370 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 80% 66.66666666666667%; - } - - &._1f382 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 80% 77.77777777777777%; - } - - &._1f96e { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 0% 88.88888888888889%; - } - - &._1f9c1 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 10% 88.88888888888889%; - } - - &._1f36e { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 20% 88.88888888888889%; - } - - &._1f36d { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 30% 88.88888888888889%; - } - - &._1f36c { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 40% 88.88888888888889%; - } - - &._1f36b { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 50% 88.88888888888889%; - } - - &._1f37f { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 60% 88.88888888888889%; - } - - &._1f9c2 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 70% 88.88888888888889%; - } - - &._1f369 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 80% 88.88888888888889%; - } - - &._1f95f { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 90% 0%; - } - - &._1f36a { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 90% 11.11111111111111%; - } - - &._1f330 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 90% 22.22222222222222%; - } - - &._1f95c { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 90% 33.333333333333336%; - } - - &._1f36f { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 90% 44.44444444444444%; - } - - &._1f95b { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 90% 55.55555555555556%; - } - - &._1f37c { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 90% 66.66666666666667%; - } - - &._1f375 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 90% 77.77777777777777%; - } - - &._1f964 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 90% 88.88888888888889%; - } - - &._1f376 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 0% 100%; - } - - &._1f37a { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 10% 100%; - } - - &._1f37b { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 20% 100%; - } - - &._1f942 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 30% 100%; - } - - &._1f377 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 40% 100%; - } - - &._1f943 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 50% 100%; - } - - &._1f378 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 60% 100%; - } - - &._1f379 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 70% 100%; - } - - &._1f37e { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 80% 100%; - } - - &._1f944 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 90% 100%; - } - - &._1f374 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 100% 0%; - } - - &._1f37d { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 100% 11.11111111111111%; - } - - &._1f963 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 100% 22.22222222222222%; - } - - &._1f961 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 100% 33.333333333333336%; - } - - &._1f962 { - background-repeat: no-repeat; - background-size: 1100% 1000%; - background-position: 100% 44.44444444444444%; - } - -} - diff --git a/apps/meteor/app/emoji-emojione/client/index.ts b/apps/meteor/app/emoji-emojione/client/index.ts deleted file mode 100644 index 2e84171259c48..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './emojione-sprites.css'; diff --git a/apps/meteor/app/emoji-emojione/client/modifier-sprites.css b/apps/meteor/app/emoji-emojione/client/modifier-sprites.css deleted file mode 100644 index 087b9c2bcfa7b..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/modifier-sprites.css +++ /dev/null @@ -1,42 +0,0 @@ -/* stylelint-disable */ - -.emojione-modifier { - background-image: url('/packages/emojione/modifier-sprites.png'); - -} - - -.emojione-diversity._1f3fb { - background-image: url('/packages/emojione/modifier-sprites.png'); - background-repeat: no-repeat; - background-size: 300% 200%; - background-position: 0% 0%; -} - -.emojione-diversity._1f3fc { - background-image: url('/packages/emojione/modifier-sprites.png'); - background-repeat: no-repeat; - background-size: 300% 200%; - background-position: 50% 0%; -} - -.emojione-diversity._1f3fd { - background-image: url('/packages/emojione/modifier-sprites.png'); - background-repeat: no-repeat; - background-size: 300% 200%; - background-position: 0% 100%; -} - -.emojione-diversity._1f3fe { - background-image: url('/packages/emojione/modifier-sprites.png'); - background-repeat: no-repeat; - background-size: 300% 200%; - background-position: 50% 100%; -} - -.emojione-diversity._1f3ff { - background-image: url('/packages/emojione/modifier-sprites.png'); - background-repeat: no-repeat; - background-size: 300% 200%; - background-position: 100% 0%; -} diff --git a/apps/meteor/app/emoji-emojione/client/nature-sprites.css b/apps/meteor/app/emoji-emojione/client/nature-sprites.css deleted file mode 100644 index e9ee1c97290af..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/nature-sprites.css +++ /dev/null @@ -1,1069 +0,0 @@ -/* stylelint-disable */ - -.emojione-nature { - background-image: url('/packages/emojione/nature-sprites.png'); - - &._1f42b { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 0%; - } - - &._2600 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 0%; - } - - &._2602 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 8.333333333333334%; - } - - &._2603 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 8.333333333333334%; - } - - &._2604 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 0%; - } - - &._2614 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 8.333333333333334%; - } - - &._2618 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 16.666666666666668%; - } - - &._2728 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 16.666666666666668%; - } - - &._2744 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 16.666666666666668%; - } - - &._1f436 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 0%; - } - - &._1f431 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 8.333333333333334%; - } - - &._1f42d { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 16.666666666666668%; - } - - &._1f439 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 25%; - } - - &._1f430 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 25%; - } - - &._1f98a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 25%; - } - - &._1f99d { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 25%; - } - - &._1f43b { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 0%; - } - - &._1f43c { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 8.333333333333334%; - } - - &._1f998 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 16.666666666666668%; - } - - &._1f9a1 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 25%; - } - - &._1f428 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 33.333333333333336%; - } - - &._1f42f { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 33.333333333333336%; - } - - &._1f981 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 33.333333333333336%; - } - - &._1f42e { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 33.333333333333336%; - } - - &._1f437 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 33.333333333333336%; - } - - &._1f43d { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 0%; - } - - &._1f438 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 8.333333333333334%; - } - - &._1f435 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 16.666666666666668%; - } - - &._1f648 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 25%; - } - - &._1f649 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 33.333333333333336%; - } - - &._1f64a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 41.666666666666664%; - } - - &._1f412 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 41.666666666666664%; - } - - &._1f414 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 41.666666666666664%; - } - - &._1f427 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 41.666666666666664%; - } - - &._1f426 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 41.666666666666664%; - } - - &._1f424 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 41.666666666666664%; - } - - &._1f423 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 0%; - } - - &._1f425 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 8.333333333333334%; - } - - &._1f986 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 16.666666666666668%; - } - - &._1f9a2 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 25%; - } - - &._1f985 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 33.333333333333336%; - } - - &._1f989 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 41.666666666666664%; - } - - &._1f99c { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 50%; - } - - &._1f99a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 50%; - } - - &._1f987 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 50%; - } - - &._1f43a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 50%; - } - - &._1f417 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 50%; - } - - &._1f434 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 50%; - } - - &._1f984 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 50%; - } - - &._1f41d { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 0%; - } - - &._1f41b { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 8.333333333333334%; - } - - &._1f98b { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 16.666666666666668%; - } - - &._1f40c { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 25%; - } - - &._1f41a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 33.333333333333336%; - } - - &._1f41e { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 41.666666666666664%; - } - - &._1f41c { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 50%; - } - - &._1f997 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 58.333333333333336%; - } - - &._1f577 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 58.333333333333336%; - } - - &._1f578 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 58.333333333333336%; - } - - &._1f982 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 58.333333333333336%; - } - - &._1f99f { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 58.333333333333336%; - } - - &._1f9a0 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 58.333333333333336%; - } - - &._1f422 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 58.333333333333336%; - } - - &._1f40d { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 58.333333333333336%; - } - - &._1f98e { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 0%; - } - - &._1f996 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 8.333333333333334%; - } - - &._1f995 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 16.666666666666668%; - } - - &._1f419 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 25%; - } - - &._1f991 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 33.333333333333336%; - } - - &._1f990 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 41.666666666666664%; - } - - &._1f980 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 50%; - } - - &._1f99e { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 58.333333333333336%; - } - - &._1f421 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 66.66666666666667%; - } - - &._1f420 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 66.66666666666667%; - } - - &._1f41f { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 66.66666666666667%; - } - - &._1f42c { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 66.66666666666667%; - } - - &._1f433 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 66.66666666666667%; - } - - &._1f40b { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 66.66666666666667%; - } - - &._1f988 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 66.66666666666667%; - } - - &._1f40a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 66.66666666666667%; - } - - &._1f405 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 66.66666666666667%; - } - - &._1f406 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 0%; - } - - &._1f993 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 8.333333333333334%; - } - - &._1f98d { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 16.666666666666668%; - } - - &._1f418 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 25%; - } - - &._1f98f { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 33.333333333333336%; - } - - &._1f99b { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 41.666666666666664%; - } - - &._1f42a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 50%; - } - - &._2601 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 58.333333333333336%; - } - - &._1f992 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 66.66666666666667%; - } - - &._1f999 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 75%; - } - - &._1f403 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 75%; - } - - &._1f402 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 75%; - } - - &._1f404 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 75%; - } - - &._1f40e { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 75%; - } - - &._1f416 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 75%; - } - - &._1f40f { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 75%; - } - - &._1f411 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 75%; - } - - &._1f410 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 75%; - } - - &._1f98c { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 75%; - } - - &._1f415 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 0%; - } - - &._1f429 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 8.333333333333334%; - } - - &._1f408 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 16.666666666666668%; - } - - &._1f413 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 25%; - } - - &._1f983 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 33.333333333333336%; - } - - &._1f54a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 41.666666666666664%; - } - - &._1f407 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 50%; - } - - &._1f401 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 58.333333333333336%; - } - - &._1f400 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 66.66666666666667%; - } - - &._1f43f { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 75%; - } - - &._1f994 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 83.33333333333333%; - } - - &._1f43e { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 83.33333333333333%; - } - - &._1f409 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 83.33333333333333%; - } - - &._1f432 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 83.33333333333333%; - } - - &._1f335 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 83.33333333333333%; - } - - &._1f384 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 83.33333333333333%; - } - - &._1f332 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 83.33333333333333%; - } - - &._1f333 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 83.33333333333333%; - } - - &._1f334 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 83.33333333333333%; - } - - &._1f331 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 83.33333333333333%; - } - - &._1f33f { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 83.33333333333333%; - } - - &._1f340 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 0%; - } - - &._1f38d { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 8.333333333333334%; - } - - &._1f38b { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 16.666666666666668%; - } - - &._1f343 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 25%; - } - - &._1f342 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 33.333333333333336%; - } - - &._1f341 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 41.666666666666664%; - } - - &._1f344 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 50%; - } - - &._1f33e { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 58.333333333333336%; - } - - &._1f490 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 66.66666666666667%; - } - - &._1f337 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 75%; - } - - &._1f339 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 83.33333333333333%; - } - - &._1f940 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 91.66666666666667%; - } - - &._1f33a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 91.66666666666667%; - } - - &._1f338 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 91.66666666666667%; - } - - &._1f33c { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 91.66666666666667%; - } - - &._1f33b { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 91.66666666666667%; - } - - &._1f31e { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 91.66666666666667%; - } - - &._1f31d { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 91.66666666666667%; - } - - &._1f31b { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 91.66666666666667%; - } - - &._1f31c { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 91.66666666666667%; - } - - &._1f31a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 91.66666666666667%; - } - - &._1f315 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 91.66666666666667%; - } - - &._1f316 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 91.66666666666667%; - } - - &._1f317 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 0%; - } - - &._1f318 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 8.333333333333334%; - } - - &._1f311 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 16.666666666666668%; - } - - &._1f312 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 25%; - } - - &._1f313 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 33.333333333333336%; - } - - &._1f314 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 41.666666666666664%; - } - - &._1f319 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 50%; - } - - &._1f30e { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 58.333333333333336%; - } - - &._1f30d { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 66.66666666666667%; - } - - &._1f30f { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 75%; - } - - &._1f4ab { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 83.33333333333333%; - } - - &._2b50 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 91.66666666666667%; - } - - &._1f31f { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 0% 100%; - } - - &._26a1 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 7.6923076923076925% 100%; - } - - &._1f4a5 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 15.384615384615385% 100%; - } - - &._1f525 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 23.076923076923077% 100%; - } - - &._1f32a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 30.76923076923077% 100%; - } - - &._1f308 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 38.46153846153846% 100%; - } - - &._1f324 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 46.15384615384615% 100%; - } - - &._26c5 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 53.84615384615385% 100%; - } - - &._1f325 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 61.53846153846154% 100%; - } - - &._1f326 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 69.23076923076923% 100%; - } - - &._1f327 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 76.92307692307692% 100%; - } - - &._26c8 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 84.61538461538461% 100%; - } - - &._1f329 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 92.3076923076923% 100%; - } - - &._1f328 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 100% 0%; - } - - &._26c4 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 100% 8.333333333333334%; - } - - &._1f32c { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 100% 16.666666666666668%; - } - - &._1f4a8 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 100% 25%; - } - - &._1f4a7 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 100% 33.333333333333336%; - } - - &._1f4a6 { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 100% 41.666666666666664%; - } - - &._1f30a { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 100% 50%; - } - - &._1f32b { - background-repeat: no-repeat; - background-size: 1400% 1300%; - background-position: 100% 58.333333333333336%; - } - -} - diff --git a/apps/meteor/app/emoji-emojione/client/objects-sprites.css b/apps/meteor/app/emoji-emojione/client/objects-sprites.css deleted file mode 100644 index 1f9551c860017..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/objects-sprites.css +++ /dev/null @@ -1,1259 +0,0 @@ -/* stylelint-disable */ - -.emojione-objects { - background-image: url('/packages/emojione/objects-sprites.png'); - - &._2328 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 0%; - } - - &._2694 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 7.6923076923076925%; - } - - &._2696 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 7.6923076923076925%; - } - - &._2697 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 0%; - } - - &._2699 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 7.6923076923076925%; - } - - &._2702 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 15.384615384615385%; - } - - &._2709 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 15.384615384615385%; - } - - &._2712 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 15.384615384615385%; - } - - &._231a { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 0%; - } - - &._1f4f1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 7.6923076923076925%; - } - - &._1f4f2 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 15.384615384615385%; - } - - &._1f4bb { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 23.076923076923077%; - } - - &._1f5a5 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 23.076923076923077%; - } - - &._1f5a8 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 23.076923076923077%; - } - - &._1f5b1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 23.076923076923077%; - } - - &._1f5b2 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 0%; - } - - &._1f579 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 7.6923076923076925%; - } - - &._265f { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 15.384615384615385%; - } - - &._1f9e9 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 23.076923076923077%; - } - - &._1f5dc { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 30.76923076923077%; - } - - &._1f4bd { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 30.76923076923077%; - } - - &._1f4be { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 30.76923076923077%; - } - - &._1f4bf { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 30.76923076923077%; - } - - &._1f4c0 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 30.76923076923077%; - } - - &._1f4fc { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 0%; - } - - &._1f4f7 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 7.6923076923076925%; - } - - &._1f4f8 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 15.384615384615385%; - } - - &._1f4f9 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 23.076923076923077%; - } - - &._1f3a5 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 30.76923076923077%; - } - - &._1f4fd { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 38.46153846153846%; - } - - &._1f39e { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 38.46153846153846%; - } - - &._1f4de { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 38.46153846153846%; - } - - &._260e { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 38.46153846153846%; - } - - &._1f4df { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 38.46153846153846%; - } - - &._1f4e0 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 38.46153846153846%; - } - - &._1f4fa { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 0%; - } - - &._1f4fb { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 7.6923076923076925%; - } - - &._1f399 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 15.384615384615385%; - } - - &._1f39a { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 23.076923076923077%; - } - - &._1f39b { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 30.76923076923077%; - } - - &._23f1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 38.46153846153846%; - } - - &._23f2 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 46.15384615384615%; - } - - &._23f0 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 46.15384615384615%; - } - - &._1f570 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 46.15384615384615%; - } - - &._231b { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 46.15384615384615%; - } - - &._23f3 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 46.15384615384615%; - } - - &._1f4e1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 46.15384615384615%; - } - - &._1f9ed { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 46.15384615384615%; - } - - &._1f50b { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 0%; - } - - &._1f50c { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 7.6923076923076925%; - } - - &._1f9f2 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 15.384615384615385%; - } - - &._1f4a1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 23.076923076923077%; - } - - &._1f526 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 30.76923076923077%; - } - - &._1f56f { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 38.46153846153846%; - } - - &._1f9ef { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 46.15384615384615%; - } - - &._1f5d1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 53.84615384615385%; - } - - &._1f6e2 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 53.84615384615385%; - } - - &._1f4b8 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 53.84615384615385%; - } - - &._1f4b5 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 53.84615384615385%; - } - - &._1f4b4 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 53.84615384615385%; - } - - &._1f4b6 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 53.84615384615385%; - } - - &._1f4b7 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 53.84615384615385%; - } - - &._1f4b0 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 53.84615384615385%; - } - - &._1f4b3 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 0%; - } - - &._1f48e { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 7.6923076923076925%; - } - - &._1f9ff { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 15.384615384615385%; - } - - &._1f9f1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 23.076923076923077%; - } - - &._1f9f0 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 30.76923076923077%; - } - - &._1f527 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 38.46153846153846%; - } - - &._1f528 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 46.15384615384615%; - } - - &._1f6e0 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 53.84615384615385%; - } - - &._26cf { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 61.53846153846154%; - } - - &._1f529 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 61.53846153846154%; - } - - &._26d3 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 61.53846153846154%; - } - - &._1f52b { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 61.53846153846154%; - } - - &._1f4a3 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 61.53846153846154%; - } - - &._1f52a { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 61.53846153846154%; - } - - &._1f5e1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 61.53846153846154%; - } - - &._1f6e1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 61.53846153846154%; - } - - &._1f6ac { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 61.53846153846154%; - } - - &._26b0 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 0%; - } - - &._26b1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 7.6923076923076925%; - } - - &._1f3fa { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 15.384615384615385%; - } - - &._1f52e { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 23.076923076923077%; - } - - &._1f4ff { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 30.76923076923077%; - } - - &._1f488 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 38.46153846153846%; - } - - &._1f9ea { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 46.15384615384615%; - } - - &._1f9eb { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 53.84615384615385%; - } - - &._1f9ec { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 61.53846153846154%; - } - - &._1f9ee { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 69.23076923076923%; - } - - &._1f52d { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 69.23076923076923%; - } - - &._1f52c { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 69.23076923076923%; - } - - &._1f573 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 69.23076923076923%; - } - - &._1f48a { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 69.23076923076923%; - } - - &._1f489 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 69.23076923076923%; - } - - &._1f321 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 69.23076923076923%; - } - - &._1f6bd { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 69.23076923076923%; - } - - &._1f6b0 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 69.23076923076923%; - } - - &._1f6bf { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 69.23076923076923%; - } - - &._1f6c1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 0%; - } - - &._1f6c0 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 7.6923076923076925%; - } - - &._2692 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 23.076923076923077%; - } - - &._1f9f9 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 53.84615384615385%; - } - - &._1f9fa { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 61.53846153846154%; - } - - &._1f9fb { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 69.23076923076923%; - } - - &._1f9fc { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 76.92307692307692%; - } - - &._1f9fd { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 76.92307692307692%; - } - - &._1f9f4 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 76.92307692307692%; - } - - &._1f9f5 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 76.92307692307692%; - } - - &._1f9f6 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 76.92307692307692%; - } - - &._1f6ce { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 76.92307692307692%; - } - - &._1f511 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 76.92307692307692%; - } - - &._1f5dd { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 76.92307692307692%; - } - - &._1f6aa { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 76.92307692307692%; - } - - &._1f6cb { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 76.92307692307692%; - } - - &._1f6cf { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 76.92307692307692%; - } - - &._1f6cc { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 0%; - } - - &._1f9f8 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 46.15384615384615%; - } - - &._1f5bc { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 53.84615384615385%; - } - - &._1f6cd { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 61.53846153846154%; - } - - &._1f6d2 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 69.23076923076923%; - } - - &._1f381 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 76.92307692307692%; - } - - &._1f388 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 84.61538461538461%; - } - - &._1f38f { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 84.61538461538461%; - } - - &._1f380 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 84.61538461538461%; - } - - &._1f38a { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 84.61538461538461%; - } - - &._1f389 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 84.61538461538461%; - } - - &._1f38e { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 84.61538461538461%; - } - - &._1f3ee { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 84.61538461538461%; - } - - &._1f390 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 84.61538461538461%; - } - - &._1f9e7 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 84.61538461538461%; - } - - &._1f4e9 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 84.61538461538461%; - } - - &._1f4e8 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 84.61538461538461%; - } - - &._1f4e7 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 84.61538461538461%; - } - - &._1f48c { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 0%; - } - - &._1f4e5 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 7.6923076923076925%; - } - - &._1f4e4 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 15.384615384615385%; - } - - &._1f4e6 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 23.076923076923077%; - } - - &._1f3f7 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 30.76923076923077%; - } - - &._1f4ea { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 38.46153846153846%; - } - - &._1f4eb { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 46.15384615384615%; - } - - &._1f4ec { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 53.84615384615385%; - } - - &._1f4ed { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 61.53846153846154%; - } - - &._1f4ee { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 69.23076923076923%; - } - - &._1f4ef { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 76.92307692307692%; - } - - &._1f4dc { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 84.61538461538461%; - } - - &._1f4c3 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 92.3076923076923%; - } - - &._1f4c4 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 92.3076923076923%; - } - - &._1f9fe { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 92.3076923076923%; - } - - &._1f4d1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 92.3076923076923%; - } - - &._1f4ca { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 92.3076923076923%; - } - - &._1f4c8 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 92.3076923076923%; - } - - &._1f4c9 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 92.3076923076923%; - } - - &._1f5d2 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 92.3076923076923%; - } - - &._1f5d3 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 92.3076923076923%; - } - - &._1f4c6 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 92.3076923076923%; - } - - &._1f4c5 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 92.3076923076923%; - } - - &._1f4c7 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 92.3076923076923%; - } - - &._1f5c3 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 92.3076923076923%; - } - - &._1f5f3 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 0%; - } - - &._1f5c4 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 7.6923076923076925%; - } - - &._1f4cb { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 15.384615384615385%; - } - - &._1f4c1 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 23.076923076923077%; - } - - &._1f4c2 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 30.76923076923077%; - } - - &._1f5c2 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 38.46153846153846%; - } - - &._1f5de { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 46.15384615384615%; - } - - &._1f4f0 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 53.84615384615385%; - } - - &._1f4d3 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 61.53846153846154%; - } - - &._1f4d4 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 69.23076923076923%; - } - - &._1f4d2 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 76.92307692307692%; - } - - &._1f4d5 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 84.61538461538461%; - } - - &._1f4d7 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 92.3076923076923%; - } - - &._1f4d8 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 100%; - } - - &._1f4d9 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 7.142857142857143% 100%; - } - - &._1f4da { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 14.285714285714286% 100%; - } - - &._1f4d6 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 21.428571428571427% 100%; - } - - &._1f516 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 28.571428571428573% 100%; - } - - &._1f517 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 35.714285714285715% 100%; - } - - &._1f4ce { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 42.857142857142854% 100%; - } - - &._1f587 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 50% 100%; - } - - &._1f4d0 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 57.142857142857146% 100%; - } - - &._1f4cf { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 64.28571428571429% 100%; - } - - &._1f9f7 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 100%; - } - - &._1f4cc { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 100%; - } - - &._1f4cd { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 85.71428571428571% 100%; - } - - &._1f58a { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 92.85714285714286% 100%; - } - - &._1f58b { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 100% 0%; - } - - &._1f58c { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 100% 7.6923076923076925%; - } - - &._1f58d { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 100% 15.384615384615385%; - } - - &._1f4dd { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 100% 23.076923076923077%; - } - - &._270f { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 100% 30.76923076923077%; - } - - &._1f50d { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 100% 38.46153846153846%; - } - - &._1f50e { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 100% 46.15384615384615%; - } - - &._1f50f { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 100% 53.84615384615385%; - } - - &._1f510 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 100% 61.53846153846154%; - } - - &._1f512 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 100% 69.23076923076923%; - } - - &._1f513 { - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 100% 76.92307692307692%; - } - -} - - -.emojione-diversity._1f6c0-1f3fc { - background-image: url('/packages/emojione/objects-sprites.png'); - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 0% 0%; -} - -.emojione-diversity._1f6c0-1f3fb { - background-image: url('/packages/emojione/objects-sprites.png'); - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 15.384615384615385%; -} - -.emojione-diversity._1f6c0-1f3fd { - background-image: url('/packages/emojione/objects-sprites.png'); - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 30.76923076923077%; -} - -.emojione-diversity._1f6c0-1f3fe { - background-image: url('/packages/emojione/objects-sprites.png'); - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 38.46153846153846%; -} - -.emojione-diversity._1f6c0-1f3ff { - background-image: url('/packages/emojione/objects-sprites.png'); - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 71.42857142857143% 46.15384615384615%; -} - -.emojione-diversity._1f6cc-1f3fb { - background-image: url('/packages/emojione/objects-sprites.png'); - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 7.6923076923076925%; -} - -.emojione-diversity._1f6cc-1f3fc { - background-image: url('/packages/emojione/objects-sprites.png'); - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 15.384615384615385%; -} - -.emojione-diversity._1f6cc-1f3fd { - background-image: url('/packages/emojione/objects-sprites.png'); - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 23.076923076923077%; -} - -.emojione-diversity._1f6cc-1f3fe { - background-image: url('/packages/emojione/objects-sprites.png'); - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 30.76923076923077%; -} - -.emojione-diversity._1f6cc-1f3ff { - background-image: url('/packages/emojione/objects-sprites.png'); - background-repeat: no-repeat; - background-size: 1500% 1400%; - background-position: 78.57142857142857% 38.46153846153846%; -} diff --git a/apps/meteor/app/emoji-emojione/client/people-sprites.css b/apps/meteor/app/emoji-emojione/client/people-sprites.css deleted file mode 100644 index 9e48a9516369a..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/people-sprites.css +++ /dev/null @@ -1,8729 +0,0 @@ -/* stylelint-disable */ - -.emojione-people { - background-image: url('/packages/emojione/people-sprites.png'); - - &._2620 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 0%; - } - - &._1f600 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 2.857142857142857%; - } - - &._1f603 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 2.857142857142857%; - } - - &._1f604 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 0%; - } - - &._1f601 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 2.857142857142857%; - } - - &._1f606 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 5.714285714285714%; - } - - &._1f605 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 5.714285714285714%; - } - - &._1f602 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 5.714285714285714%; - } - - &._1f923 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 0%; - } - - &._263a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 2.857142857142857%; - } - - &._1f60a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 5.714285714285714%; - } - - &._1f607 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 8.571428571428571%; - } - - &._1f642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 8.571428571428571%; - } - - &._1f643 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 8.571428571428571%; - } - - &._1f609 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 8.571428571428571%; - } - - &._1f60c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 0%; - } - - &._1f60d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 2.857142857142857%; - } - - &._1f618 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 5.714285714285714%; - } - - &._1f970 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 8.571428571428571%; - } - - &._1f617 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 11.428571428571429%; - } - - &._1f619 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 11.428571428571429%; - } - - &._1f61a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 11.428571428571429%; - } - - &._1f60b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 11.428571428571429%; - } - - &._1f61b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 11.428571428571429%; - } - - &._1f61d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 0%; - } - - &._1f61c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 2.857142857142857%; - } - - &._1f92a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 5.714285714285714%; - } - - &._1f928 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 8.571428571428571%; - } - - &._1f9d0 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 11.428571428571429%; - } - - &._1f913 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 14.285714285714286%; - } - - &._1f60e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 14.285714285714286%; - } - - &._1f929 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 14.285714285714286%; - } - - &._1f973 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 14.285714285714286%; - } - - &._1f60f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 14.285714285714286%; - } - - &._1f612 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 14.285714285714286%; - } - - &._1f61e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 0%; - } - - &._1f614 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 2.857142857142857%; - } - - &._1f61f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 5.714285714285714%; - } - - &._1f615 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 8.571428571428571%; - } - - &._1f641 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 11.428571428571429%; - } - - &._1f623 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 14.285714285714286%; - } - - &._1f616 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 17.142857142857142%; - } - - &._1f62b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 17.142857142857142%; - } - - &._1f629 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 17.142857142857142%; - } - - &._1f622 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 17.142857142857142%; - } - - &._1f62d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 17.142857142857142%; - } - - &._1f624 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 17.142857142857142%; - } - - &._1f620 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 17.142857142857142%; - } - - &._1f621 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 0%; - } - - &._1f92c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 2.857142857142857%; - } - - &._1f92f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 5.714285714285714%; - } - - &._1f633 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 8.571428571428571%; - } - - &._1f631 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 11.428571428571429%; - } - - &._1f628 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 14.285714285714286%; - } - - &._1f630 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 17.142857142857142%; - } - - &._1f975 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 20%; - } - - &._1f976 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 20%; - } - - &._1f97a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 20%; - } - - &._1f625 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 20%; - } - - &._1f613 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 20%; - } - - &._1f917 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 20%; - } - - &._1f914 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 20%; - } - - &._1f92d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 20%; - } - - &._1f92b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 0%; - } - - &._1f925 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 2.857142857142857%; - } - - &._1f636 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 5.714285714285714%; - } - - &._1f610 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 8.571428571428571%; - } - - &._1f611 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 11.428571428571429%; - } - - &._1f62c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 14.285714285714286%; - } - - &._1f644 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 17.142857142857142%; - } - - &._1f62f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 20%; - } - - &._1f626 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 22.857142857142858%; - } - - &._1f627 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 22.857142857142858%; - } - - &._1f62e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 22.857142857142858%; - } - - &._1f632 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 22.857142857142858%; - } - - &._1f634 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 22.857142857142858%; - } - - &._1f924 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 22.857142857142858%; - } - - &._1f62a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 22.857142857142858%; - } - - &._1f635 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 22.857142857142858%; - } - - &._1f910 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 22.857142857142858%; - } - - &._1f974 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 0%; - } - - &._1f922 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 2.857142857142857%; - } - - &._1f92e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 5.714285714285714%; - } - - &._1f927 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 8.571428571428571%; - } - - &._1f637 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 11.428571428571429%; - } - - &._1f912 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 14.285714285714286%; - } - - &._1f915 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 17.142857142857142%; - } - - &._1f911 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 20%; - } - - &._1f920 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 22.857142857142858%; - } - - &._1f608 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 25.714285714285715%; - } - - &._1f47f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 25.714285714285715%; - } - - &._1f479 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 25.714285714285715%; - } - - &._1f47a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 25.714285714285715%; - } - - &._1f921 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 25.714285714285715%; - } - - &._1f4a9 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 25.714285714285715%; - } - - &._1f47b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 25.714285714285715%; - } - - &._1f480 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 25.714285714285715%; - } - - &._1f47d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 25.714285714285715%; - } - - &._1f47e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 25.714285714285715%; - } - - &._1f916 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 0%; - } - - &._1f383 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 2.857142857142857%; - } - - &._1f63a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 5.714285714285714%; - } - - &._1f638 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 8.571428571428571%; - } - - &._1f639 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 11.428571428571429%; - } - - &._1f63b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 14.285714285714286%; - } - - &._1f63c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 17.142857142857142%; - } - - &._1f63d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 20%; - } - - &._1f640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 22.857142857142858%; - } - - &._1f63f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 25.714285714285715%; - } - - &._1f63e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 28.571428571428573%; - } - - &._1f932 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 28.571428571428573%; - } - - &._1f450 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 28.571428571428573%; - } - - &._1f64c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 5.714285714285714%; - } - - &._1f44f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 22.857142857142858%; - } - - &._1f91d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 31.428571428571427%; - } - - &._1f44d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 31.428571428571427%; - } - - &._1f44e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 31.428571428571427%; - } - - &._1f44a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 11.428571428571429%; - } - - &._270a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 28.571428571428573%; - } - - &._1f91b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 34.285714285714285%; - } - - &._1f91c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 34.285714285714285%; - } - - &._1f91e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 8.571428571428571%; - } - - &._270c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 25.714285714285715%; - } - - &._1f91f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 37.142857142857146%; - } - - &._1f918 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 37.142857142857146%; - } - - &._1f44c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 0%; - } - - &._1f448 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 17.142857142857142%; - } - - &._1f449 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 34.285714285714285%; - } - - &._1f446 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 40%; - } - - &._1f447 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 40%; - } - - &._261d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 2.857142857142857%; - } - - &._270b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 20%; - } - - &._1f91a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 37.142857142857146%; - } - - &._1f590 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 42.857142857142854%; - } - - &._1f596 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 42.857142857142854%; - } - - &._1f44b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 0%; - } - - &._1f919 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 17.142857142857142%; - } - - &._1f4aa { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 34.285714285714285%; - } - - &._1f9b5 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 45.714285714285715%; - } - - &._1f9b6 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 45.714285714285715%; - } - - &._1f595 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 45.714285714285715%; - } - - &._270d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 8.571428571428571%; - } - - &._1f64f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 25.714285714285715%; - } - - &._1f48d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 42.857142857142854%; - } - - &._1f484 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 45.714285714285715%; - } - - &._1f48b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 48.57142857142857%; - } - - &._1f444 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 48.57142857142857%; - } - - &._1f445 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 48.57142857142857%; - } - - &._1f442 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 48.57142857142857%; - } - - &._1f443 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 48.57142857142857%; - } - - &._1f463 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 48.57142857142857%; - } - - &._1f441 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 48.57142857142857%; - } - - &._1f440 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 48.57142857142857%; - } - - &._1f9e0 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 0%; - } - - &._1f9b4 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 2.857142857142857%; - } - - &._1f9b7 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 5.714285714285714%; - } - - &._1f5e3 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 8.571428571428571%; - } - - &._1f464 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 11.428571428571429%; - } - - &._1f465 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 14.285714285714286%; - } - - &._1f476 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 17.142857142857142%; - } - - &._1f467 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 34.285714285714285%; - } - - &._1f9d2 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 51.42857142857143%; - } - - &._1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 51.42857142857143%; - } - - &._1f469 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 51.42857142857143%; - } - - &._1f9d1 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 51.42857142857143%; - } - - &._1f468 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 14.285714285714286%; - } - - &._1f471 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 31.428571428571427%; - } - - &._1f471-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 48.57142857142857%; - } - - &._1f471-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 54.285714285714285%; - } - - &._1f469-1f9b0 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 54.285714285714285%; - } - - &._1f468-1f9b0 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 54.285714285714285%; - } - - &._1f469-1f9b1 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 5.714285714285714%; - } - - &._1f468-1f9b1 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 22.857142857142858%; - } - - &._1f469-1f9b3 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 40%; - } - - &._1f468-1f9b3 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 57.142857142857146%; - } - - &._1f469-1f9b2 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 57.142857142857146%; - } - - &._1f468-1f9b2 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 57.142857142857146%; - } - - &._1f9d4 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 57.142857142857146%; - } - - &._1f475 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 8.571428571428571%; - } - - &._1f9d3 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 25.714285714285715%; - } - - &._1f474 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 42.857142857142854%; - } - - &._1f472 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 60%; - } - - &._1f473 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 60%; - } - - &._1f473-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 60%; - } - - &._1f473-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 60%; - } - - &._1f9d5 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 5.714285714285714%; - } - - &._1f46e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 22.857142857142858%; - } - - &._1f46e-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 40%; - } - - &._1f46e-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 57.142857142857146%; - } - - &._1f477 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 62.857142857142854%; - } - - &._1f477-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 62.857142857142854%; - } - - &._1f477-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 62.857142857142854%; - } - - &._1f482 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 62.857142857142854%; - } - - &._1f482-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 14.285714285714286%; - } - - &._1f482-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 31.428571428571427%; - } - - &._1f575 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 48.57142857142857%; - } - - &._1f575-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 65.71428571428571%; - } - - &._1f575-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 65.71428571428571%; - } - - &._1f469-2695 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 65.71428571428571%; - } - - &._1f468-2695 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 65.71428571428571%; - } - - &._1f469-1f33e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 0%; - } - - &._1f468-1f33e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 17.142857142857142%; - } - - &._1f469-1f373 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 34.285714285714285%; - } - - &._1f468-1f373 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 51.42857142857143%; - } - - &._1f469-1f393 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 68.57142857142857%; - } - - &._1f468-1f393 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 68.57142857142857%; - } - - &._1f469-1f3a4 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 68.57142857142857%; - } - - &._1f468-1f3a4 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 68.57142857142857%; - } - - &._2639 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 68.57142857142857%; - } - - &._1f469-1f3eb { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 68.57142857142857%; - } - - &._1f468-1f3eb { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 14.285714285714286%; - } - - &._1f469-1f3ed { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 31.428571428571427%; - } - - &._1f468-1f3ed { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 48.57142857142857%; - } - - &._1f469-1f4bb { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 65.71428571428571%; - } - - &._1f468-1f4bb { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 71.42857142857143%; - } - - &._1f469-1f4bc { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 71.42857142857143%; - } - - &._1f468-1f4bc { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 71.42857142857143%; - } - - &._1f469-1f527 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 71.42857142857143%; - } - - &._1f468-1f527 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 5.714285714285714%; - } - - &._1f469-1f52c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 22.857142857142858%; - } - - &._1f468-1f52c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 40%; - } - - &._1f469-1f3a8 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 57.142857142857146%; - } - - &._1f468-1f3a8 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 74.28571428571429%; - } - - &._1f469-1f692 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 74.28571428571429%; - } - - &._1f468-1f692 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 74.28571428571429%; - } - - &._1f469-2708 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 74.28571428571429%; - } - - &._1f468-2708 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 74.28571428571429%; - } - - &._1f469-1f680 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 8.571428571428571%; - } - - &._1f468-1f680 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 25.714285714285715%; - } - - &._1f469-2696 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 42.857142857142854%; - } - - &._1f468-2696 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 60%; - } - - &._1f470 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 77.14285714285714%; - } - - &._1f935 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 77.14285714285714%; - } - - &._1f478 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 77.14285714285714%; - } - - &._1f934 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 77.14285714285714%; - } - - &._1f936 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 77.14285714285714%; - } - - &._1f385 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 5.714285714285714%; - } - - &._1f9b8 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 22.857142857142858%; - } - - &._1f9b8-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 40%; - } - - &._1f9b8-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 57.142857142857146%; - } - - &._1f9b9 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 74.28571428571429%; - } - - &._1f9b9-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 80%; - } - - &._1f9b9-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 80%; - } - - &._1f9d9 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 80%; - } - - &._1f9d9-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 80%; - } - - &._1f9d9-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 80%; - } - - &._1f9dd { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 14.285714285714286%; - } - - &._1f9dd-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 31.428571428571427%; - } - - &._1f9dd-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 48.57142857142857%; - } - - &._1f9db { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 65.71428571428571%; - } - - &._1f9db-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 82.85714285714286%; - } - - &._1f9db-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 82.85714285714286%; - } - - &._1f9df { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 82.85714285714286%; - } - - &._1f9df-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 82.85714285714286%; - } - - &._1f9df-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 82.85714285714286%; - } - - &._1f9de { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 82.85714285714286%; - } - - &._1f9de-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 82.85714285714286%; - } - - &._1f9de-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 82.85714285714286%; - } - - &._1f9dc { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 82.85714285714286%; - } - - &._1f9dc-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 82.85714285714286%; - } - - &._1f9dc-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 0%; - } - - &._1f9da { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 17.142857142857142%; - } - - &._1f9da-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 34.285714285714285%; - } - - &._1f9da-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 51.42857142857143%; - } - - &._1f47c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 68.57142857142857%; - } - - &._1f930 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 85.71428571428571%; - } - - &._1f931 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 85.71428571428571%; - } - - &._1f647 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 85.71428571428571%; - } - - &._1f647-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 85.71428571428571%; - } - - &._1f647-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 85.71428571428571%; - } - - &._1f481 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 85.71428571428571%; - } - - &._1f481-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 14.285714285714286%; - } - - &._1f481-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 31.428571428571427%; - } - - &._1f645 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 48.57142857142857%; - } - - &._1f645-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 65.71428571428571%; - } - - &._1f645-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 82.85714285714286%; - } - - &._1f646 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 88.57142857142857%; - } - - &._1f646-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 88.57142857142857%; - } - - &._1f646-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 88.57142857142857%; - } - - &._1f64b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 88.57142857142857%; - } - - &._1f64b-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 88.57142857142857%; - } - - &._1f64b-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 5.714285714285714%; - } - - &._1f926 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 22.857142857142858%; - } - - &._1f926-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 40%; - } - - &._1f926-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 57.142857142857146%; - } - - &._1f937 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 74.28571428571429%; - } - - &._1f937-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 91.42857142857143%; - } - - &._1f937-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 91.42857142857143%; - } - - &._1f64e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 91.42857142857143%; - } - - &._1f64e-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 91.42857142857143%; - } - - &._1f64e-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 91.42857142857143%; - } - - &._1f64d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 91.42857142857143%; - } - - &._1f64d-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 8.571428571428571%; - } - - &._1f64d-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 25.714285714285715%; - } - - &._1f487 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 42.857142857142854%; - } - - &._1f487-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 60%; - } - - &._1f487-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 77.14285714285714%; - } - - &._1f486 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 94.28571428571429%; - } - - &._1f486-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 94.28571428571429%; - } - - &._1f486-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 94.28571428571429%; - } - - &._1f9d6 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 94.28571428571429%; - } - - &._1f9d6-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 94.28571428571429%; - } - - &._1f9d6-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 94.28571428571429%; - } - - &._1f485 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 5.714285714285714%; - } - - &._1f933 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 22.857142857142858%; - } - - &._1f483 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 40%; - } - - &._1f57a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 57.142857142857146%; - } - - &._1f46f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 74.28571428571429%; - } - - &._1f46f-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 77.14285714285714%; - } - - &._1f46f-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 80%; - } - - &._1f574 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 82.85714285714286%; - } - - &._1f6b6 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 97.14285714285714%; - } - - &._1f6b6-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 97.14285714285714%; - } - - &._1f6b6-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 97.14285714285714%; - } - - &._1f3c3 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 97.14285714285714%; - } - - &._1f3c3-2640 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 97.14285714285714%; - } - - &._1f3c3-2642 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 97.14285714285714%; - } - - &._1f46b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 5.714285714285714%; - } - - &._1f46d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 8.571428571428571%; - } - - &._1f46c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 11.428571428571429%; - } - - &._1f491 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 14.285714285714286%; - } - - &._1f469-2764-1f468 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 17.142857142857142%; - } - - &._1f469-2764-1f469 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 20%; - } - - &._1f468-2764-1f468 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 22.857142857142858%; - } - - &._1f48f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 25.714285714285715%; - } - - &._1f469-2764-1f48b-1f468 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 28.571428571428573%; - } - - &._1f469-2764-1f48b-1f469 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 31.428571428571427%; - } - - &._1f468-2764-1f48b-1f468 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 34.285714285714285%; - } - - &._1f46a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 37.142857142857146%; - } - - &._1f468-1f469-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 40%; - } - - &._1f468-1f469-1f467 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 42.857142857142854%; - } - - &._1f468-1f469-1f467-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 45.714285714285715%; - } - - &._1f468-1f469-1f466-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 48.57142857142857%; - } - - &._1f468-1f469-1f467-1f467 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 51.42857142857143%; - } - - &._1f469-1f469-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 54.285714285714285%; - } - - &._1f469-1f469-1f467 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 57.142857142857146%; - } - - &._1f469-1f469-1f467-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 60%; - } - - &._1f469-1f469-1f466-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 62.857142857142854%; - } - - &._1f469-1f469-1f467-1f467 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 65.71428571428571%; - } - - &._1f468-1f468-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 68.57142857142857%; - } - - &._1f468-1f468-1f467 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 71.42857142857143%; - } - - &._1f468-1f468-1f467-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 74.28571428571429%; - } - - &._1f468-1f468-1f466-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 77.14285714285714%; - } - - &._1f468-1f468-1f467-1f467 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 80%; - } - - &._1f469-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 82.85714285714286%; - } - - &._1f469-1f467 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 85.71428571428571%; - } - - &._1f469-1f467-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 88.57142857142857%; - } - - &._1f469-1f466-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 91.42857142857143%; - } - - &._1f469-1f467-1f467 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 94.28571428571429%; - } - - &._1f468-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 97.14285714285714%; - } - - &._1f468-1f467 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 100%; - } - - &._1f468-1f467-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 100%; - } - - &._1f468-1f466-1f466 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 100%; - } - - &._1f468-1f467-1f467 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 100%; - } - - &._1f9e5 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 100%; - } - - &._1f45a { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 100%; - } - - &._1f455 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 100%; - } - - &._1f456 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 100%; - } - - &._1f454 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 100%; - } - - &._1f457 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 100%; - } - - &._1f459 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 100%; - } - - &._1f458 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 100%; - } - - &._1f97c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 100%; - } - - &._1f460 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 100%; - } - - &._1f461 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 100%; - } - - &._1f462 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 100%; - } - - &._1f45e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 100%; - } - - &._1f45f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 100%; - } - - &._1f97e { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 100%; - } - - &._1f97f { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 100%; - } - - &._1f9e6 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 100%; - } - - &._1f9e4 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 100%; - } - - &._1f9e3 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 100%; - } - - &._1f3a9 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 100%; - } - - &._1f9e2 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 100%; - } - - &._1f452 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 100%; - } - - &._1f393 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 100%; - } - - &._26d1 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 100%; - } - - &._1f451 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 100%; - } - - &._1f45d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 100%; - } - - &._1f45b { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 100%; - } - - &._1f45c { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 100%; - } - - &._1f4bc { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 100%; - } - - &._1f392 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 100%; - } - - &._1f453 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 100%; - } - - &._1f576 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 100%; - } - - &._1f97d { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 100% 0%; - } - - &._1f302 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 100% 2.857142857142857%; - } - - &._1f9b0 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 100% 5.714285714285714%; - } - - &._1f9b1 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 100% 8.571428571428571%; - } - - &._1f9b3 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 100% 11.428571428571429%; - } - - &._1f9b2 { - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 100% 14.285714285714286%; - } - -} - - -.emojione-diversity._1f468-1f3fb-1f3a4 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 0%; -} - -.emojione-diversity._1f932-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 28.571428571428573%; -} - -.emojione-diversity._1f932-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 28.571428571428573%; -} - -.emojione-diversity._1f932-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 28.571428571428573%; -} - -.emojione-diversity._1f932-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 28.571428571428573%; -} - -.emojione-diversity._1f932-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 28.571428571428573%; -} - -.emojione-diversity._1f450-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 28.571428571428573%; -} - -.emojione-diversity._1f450-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 28.571428571428573%; -} - -.emojione-diversity._1f450-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 28.571428571428573%; -} - -.emojione-diversity._1f450-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 0%; -} - -.emojione-diversity._1f450-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 2.857142857142857%; -} - -.emojione-diversity._1f64c-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 8.571428571428571%; -} - -.emojione-diversity._1f64c-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 11.428571428571429%; -} - -.emojione-diversity._1f64c-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 14.285714285714286%; -} - -.emojione-diversity._1f64c-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 17.142857142857142%; -} - -.emojione-diversity._1f64c-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 20%; -} - -.emojione-diversity._1f44f-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 25.714285714285715%; -} - -.emojione-diversity._1f44f-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 28.571428571428573%; -} - -.emojione-diversity._1f44f-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 31.428571428571427%; -} - -.emojione-diversity._1f44f-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 31.428571428571427%; -} - -.emojione-diversity._1f44f-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 31.428571428571427%; -} - -.emojione-diversity._1f44d-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 31.428571428571427%; -} - -.emojione-diversity._1f44d-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 31.428571428571427%; -} - -.emojione-diversity._1f44d-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 31.428571428571427%; -} - -.emojione-diversity._1f44d-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 31.428571428571427%; -} - -.emojione-diversity._1f44d-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 31.428571428571427%; -} - -.emojione-diversity._1f44e-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 31.428571428571427%; -} - -.emojione-diversity._1f44e-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 0%; -} - -.emojione-diversity._1f44e-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 2.857142857142857%; -} - -.emojione-diversity._1f44e-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 5.714285714285714%; -} - -.emojione-diversity._1f44e-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 8.571428571428571%; -} - -.emojione-diversity._1f44a-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 14.285714285714286%; -} - -.emojione-diversity._1f44a-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 17.142857142857142%; -} - -.emojione-diversity._1f44a-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 20%; -} - -.emojione-diversity._1f44a-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 22.857142857142858%; -} - -.emojione-diversity._1f44a-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 25.714285714285715%; -} - -.emojione-diversity._270a-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 31.428571428571427%; -} - -.emojione-diversity._270a-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 34.285714285714285%; -} - -.emojione-diversity._270a-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 34.285714285714285%; -} - -.emojione-diversity._270a-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 34.285714285714285%; -} - -.emojione-diversity._270a-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 34.285714285714285%; -} - -.emojione-diversity._1f91b-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 34.285714285714285%; -} - -.emojione-diversity._1f91b-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 34.285714285714285%; -} - -.emojione-diversity._1f91b-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 34.285714285714285%; -} - -.emojione-diversity._1f91b-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 34.285714285714285%; -} - -.emojione-diversity._1f91b-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 34.285714285714285%; -} - -.emojione-diversity._1f91c-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 34.285714285714285%; -} - -.emojione-diversity._1f91c-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 34.285714285714285%; -} - -.emojione-diversity._1f91c-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 0%; -} - -.emojione-diversity._1f91c-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 2.857142857142857%; -} - -.emojione-diversity._1f91c-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 5.714285714285714%; -} - -.emojione-diversity._1f91e-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 11.428571428571429%; -} - -.emojione-diversity._1f91e-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 14.285714285714286%; -} - -.emojione-diversity._1f91e-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 17.142857142857142%; -} - -.emojione-diversity._1f91e-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 20%; -} - -.emojione-diversity._1f91e-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 22.857142857142858%; -} - -.emojione-diversity._270c-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 28.571428571428573%; -} - -.emojione-diversity._270c-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 31.428571428571427%; -} - -.emojione-diversity._270c-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 34.285714285714285%; -} - -.emojione-diversity._270c-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 37.142857142857146%; -} - -.emojione-diversity._270c-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 37.142857142857146%; -} - -.emojione-diversity._1f91f-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 37.142857142857146%; -} - -.emojione-diversity._1f91f-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 37.142857142857146%; -} - -.emojione-diversity._1f91f-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 37.142857142857146%; -} - -.emojione-diversity._1f91f-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 37.142857142857146%; -} - -.emojione-diversity._1f91f-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 37.142857142857146%; -} - -.emojione-diversity._1f918-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 37.142857142857146%; -} - -.emojione-diversity._1f918-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 37.142857142857146%; -} - -.emojione-diversity._1f918-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 37.142857142857146%; -} - -.emojione-diversity._1f918-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 37.142857142857146%; -} - -.emojione-diversity._1f918-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 37.142857142857146%; -} - -.emojione-diversity._1f44c-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 2.857142857142857%; -} - -.emojione-diversity._1f44c-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 5.714285714285714%; -} - -.emojione-diversity._1f44c-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 8.571428571428571%; -} - -.emojione-diversity._1f44c-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 11.428571428571429%; -} - -.emojione-diversity._1f44c-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 14.285714285714286%; -} - -.emojione-diversity._1f448-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 20%; -} - -.emojione-diversity._1f448-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 22.857142857142858%; -} - -.emojione-diversity._1f448-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 25.714285714285715%; -} - -.emojione-diversity._1f448-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 28.571428571428573%; -} - -.emojione-diversity._1f448-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 31.428571428571427%; -} - -.emojione-diversity._1f449-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 37.142857142857146%; -} - -.emojione-diversity._1f449-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 40%; -} - -.emojione-diversity._1f449-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 40%; -} - -.emojione-diversity._1f449-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 40%; -} - -.emojione-diversity._1f449-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 40%; -} - -.emojione-diversity._1f446-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 40%; -} - -.emojione-diversity._1f446-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 40%; -} - -.emojione-diversity._1f446-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 40%; -} - -.emojione-diversity._1f446-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 40%; -} - -.emojione-diversity._1f446-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 40%; -} - -.emojione-diversity._1f447-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 40%; -} - -.emojione-diversity._1f447-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 40%; -} - -.emojione-diversity._1f447-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 40%; -} - -.emojione-diversity._1f447-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 40%; -} - -.emojione-diversity._1f447-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 0%; -} - -.emojione-diversity._261d-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 5.714285714285714%; -} - -.emojione-diversity._261d-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 8.571428571428571%; -} - -.emojione-diversity._261d-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 11.428571428571429%; -} - -.emojione-diversity._261d-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 14.285714285714286%; -} - -.emojione-diversity._261d-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 17.142857142857142%; -} - -.emojione-diversity._270b-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 22.857142857142858%; -} - -.emojione-diversity._270b-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 25.714285714285715%; -} - -.emojione-diversity._270b-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 28.571428571428573%; -} - -.emojione-diversity._270b-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 31.428571428571427%; -} - -.emojione-diversity._270b-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 34.285714285714285%; -} - -.emojione-diversity._1f91a-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 40%; -} - -.emojione-diversity._1f91a-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 42.857142857142854%; -} - -.emojione-diversity._1f91a-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 42.857142857142854%; -} - -.emojione-diversity._1f91a-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 42.857142857142854%; -} - -.emojione-diversity._1f91a-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 42.857142857142854%; -} - -.emojione-diversity._1f590-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 42.857142857142854%; -} - -.emojione-diversity._1f590-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 42.857142857142854%; -} - -.emojione-diversity._1f590-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 42.857142857142854%; -} - -.emojione-diversity._1f590-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 42.857142857142854%; -} - -.emojione-diversity._1f590-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 42.857142857142854%; -} - -.emojione-diversity._1f596-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 42.857142857142854%; -} - -.emojione-diversity._1f596-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 42.857142857142854%; -} - -.emojione-diversity._1f596-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 42.857142857142854%; -} - -.emojione-diversity._1f596-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 42.857142857142854%; -} - -.emojione-diversity._1f596-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 42.857142857142854%; -} - -.emojione-diversity._1f44b-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 2.857142857142857%; -} - -.emojione-diversity._1f44b-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 5.714285714285714%; -} - -.emojione-diversity._1f44b-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 8.571428571428571%; -} - -.emojione-diversity._1f44b-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 11.428571428571429%; -} - -.emojione-diversity._1f44b-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 14.285714285714286%; -} - -.emojione-diversity._1f919-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 20%; -} - -.emojione-diversity._1f919-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 22.857142857142858%; -} - -.emojione-diversity._1f919-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 25.714285714285715%; -} - -.emojione-diversity._1f919-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 28.571428571428573%; -} - -.emojione-diversity._1f919-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 31.428571428571427%; -} - -.emojione-diversity._1f4aa-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 37.142857142857146%; -} - -.emojione-diversity._1f4aa-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 40%; -} - -.emojione-diversity._1f4aa-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 42.857142857142854%; -} - -.emojione-diversity._1f4aa-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 45.714285714285715%; -} - -.emojione-diversity._1f4aa-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 45.714285714285715%; -} - -.emojione-diversity._1f9b5-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 45.714285714285715%; -} - -.emojione-diversity._1f9b5-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 45.714285714285715%; -} - -.emojione-diversity._1f9b5-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 45.714285714285715%; -} - -.emojione-diversity._1f9b5-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 45.714285714285715%; -} - -.emojione-diversity._1f9b5-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 45.714285714285715%; -} - -.emojione-diversity._1f9b6-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 45.714285714285715%; -} - -.emojione-diversity._1f9b6-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 45.714285714285715%; -} - -.emojione-diversity._1f9b6-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 45.714285714285715%; -} - -.emojione-diversity._1f9b6-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 45.714285714285715%; -} - -.emojione-diversity._1f9b6-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 45.714285714285715%; -} - -.emojione-diversity._1f595-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 45.714285714285715%; -} - -.emojione-diversity._1f595-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 45.714285714285715%; -} - -.emojione-diversity._1f595-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 0%; -} - -.emojione-diversity._1f595-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 2.857142857142857%; -} - -.emojione-diversity._1f595-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 5.714285714285714%; -} - -.emojione-diversity._270d-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 11.428571428571429%; -} - -.emojione-diversity._270d-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 14.285714285714286%; -} - -.emojione-diversity._270d-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 17.142857142857142%; -} - -.emojione-diversity._270d-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 20%; -} - -.emojione-diversity._270d-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 22.857142857142858%; -} - -.emojione-diversity._1f64f-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 28.571428571428573%; -} - -.emojione-diversity._1f64f-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 31.428571428571427%; -} - -.emojione-diversity._1f64f-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 34.285714285714285%; -} - -.emojione-diversity._1f64f-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 37.142857142857146%; -} - -.emojione-diversity._1f64f-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 40%; -} - -.emojione-diversity._1f442-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 48.57142857142857%; -} - -.emojione-diversity._1f442-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 48.57142857142857%; -} - -.emojione-diversity._1f442-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 48.57142857142857%; -} - -.emojione-diversity._1f442-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 48.57142857142857%; -} - -.emojione-diversity._1f442-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 48.57142857142857%; -} - -.emojione-diversity._1f443-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 48.57142857142857%; -} - -.emojione-diversity._1f443-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 48.57142857142857%; -} - -.emojione-diversity._1f443-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 48.57142857142857%; -} - -.emojione-diversity._1f443-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 48.57142857142857%; -} - -.emojione-diversity._1f443-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 48.57142857142857%; -} - -.emojione-diversity._1f476-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 20%; -} - -.emojione-diversity._1f476-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 22.857142857142858%; -} - -.emojione-diversity._1f476-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 25.714285714285715%; -} - -.emojione-diversity._1f476-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 28.571428571428573%; -} - -.emojione-diversity._1f476-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 31.428571428571427%; -} - -.emojione-diversity._1f467-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 37.142857142857146%; -} - -.emojione-diversity._1f467-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 40%; -} - -.emojione-diversity._1f467-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 42.857142857142854%; -} - -.emojione-diversity._1f467-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 45.714285714285715%; -} - -.emojione-diversity._1f467-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 48.57142857142857%; -} - -.emojione-diversity._1f9d2-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 51.42857142857143%; -} - -.emojione-diversity._1f9d2-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 51.42857142857143%; -} - -.emojione-diversity._1f9d2-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 51.42857142857143%; -} - -.emojione-diversity._1f9d2-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 51.42857142857143%; -} - -.emojione-diversity._1f9d2-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 51.42857142857143%; -} - -.emojione-diversity._1f466-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 51.42857142857143%; -} - -.emojione-diversity._1f466-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 51.42857142857143%; -} - -.emojione-diversity._1f466-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 51.42857142857143%; -} - -.emojione-diversity._1f466-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 51.42857142857143%; -} - -.emojione-diversity._1f466-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 51.42857142857143%; -} - -.emojione-diversity._1f469-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 51.42857142857143%; -} - -.emojione-diversity._1f469-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 51.42857142857143%; -} - -.emojione-diversity._1f469-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 51.42857142857143%; -} - -.emojione-diversity._1f469-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 51.42857142857143%; -} - -.emojione-diversity._1f469-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 51.42857142857143%; -} - -.emojione-diversity._1f9d1-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 0%; -} - -.emojione-diversity._1f9d1-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 2.857142857142857%; -} - -.emojione-diversity._1f9d1-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 5.714285714285714%; -} - -.emojione-diversity._1f9d1-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 8.571428571428571%; -} - -.emojione-diversity._1f9d1-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 11.428571428571429%; -} - -.emojione-diversity._1f468-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 17.142857142857142%; -} - -.emojione-diversity._1f468-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 20%; -} - -.emojione-diversity._1f468-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 22.857142857142858%; -} - -.emojione-diversity._1f468-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 25.714285714285715%; -} - -.emojione-diversity._1f468-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 28.571428571428573%; -} - -.emojione-diversity._1f471-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 34.285714285714285%; -} - -.emojione-diversity._1f471-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 37.142857142857146%; -} - -.emojione-diversity._1f471-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 40%; -} - -.emojione-diversity._1f471-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 42.857142857142854%; -} - -.emojione-diversity._1f471-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 45.714285714285715%; -} - -.emojione-diversity._1f471-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 51.42857142857143%; -} - -.emojione-diversity._1f471-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 54.285714285714285%; -} - -.emojione-diversity._1f471-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 54.285714285714285%; -} - -.emojione-diversity._1f471-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 54.285714285714285%; -} - -.emojione-diversity._1f471-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 54.285714285714285%; -} - -.emojione-diversity._1f471-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 54.285714285714285%; -} - -.emojione-diversity._1f471-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 54.285714285714285%; -} - -.emojione-diversity._1f471-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 54.285714285714285%; -} - -.emojione-diversity._1f471-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 54.285714285714285%; -} - -.emojione-diversity._1f471-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 54.285714285714285%; -} - -.emojione-diversity._1f469-1f3fb-1f9b0 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 54.285714285714285%; -} - -.emojione-diversity._1f469-1f3fc-1f9b0 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 54.285714285714285%; -} - -.emojione-diversity._1f469-1f3fd-1f9b0 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 54.285714285714285%; -} - -.emojione-diversity._1f469-1f3fe-1f9b0 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 54.285714285714285%; -} - -.emojione-diversity._1f469-1f3ff-1f9b0 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 54.285714285714285%; -} - -.emojione-diversity._1f468-1f3fb-1f9b0 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 54.285714285714285%; -} - -.emojione-diversity._1f468-1f3fc-1f9b0 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 54.285714285714285%; -} - -.emojione-diversity._1f468-1f3fd-1f9b0 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 54.285714285714285%; -} - -.emojione-diversity._1f468-1f3fe-1f9b0 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 0%; -} - -.emojione-diversity._1f468-1f3ff-1f9b0 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 2.857142857142857%; -} - -.emojione-diversity._1f469-1f3fb-1f9b1 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 8.571428571428571%; -} - -.emojione-diversity._1f469-1f3fc-1f9b1 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 11.428571428571429%; -} - -.emojione-diversity._1f469-1f3fd-1f9b1 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 14.285714285714286%; -} - -.emojione-diversity._1f469-1f3fe-1f9b1 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 17.142857142857142%; -} - -.emojione-diversity._1f469-1f3ff-1f9b1 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 20%; -} - -.emojione-diversity._1f468-1f3fb-1f9b1 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 25.714285714285715%; -} - -.emojione-diversity._1f468-1f3fc-1f9b1 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 28.571428571428573%; -} - -.emojione-diversity._1f468-1f3fd-1f9b1 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 31.428571428571427%; -} - -.emojione-diversity._1f468-1f3fe-1f9b1 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 34.285714285714285%; -} - -.emojione-diversity._1f468-1f3ff-1f9b1 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 37.142857142857146%; -} - -.emojione-diversity._1f469-1f3fb-1f9b3 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 42.857142857142854%; -} - -.emojione-diversity._1f469-1f3fc-1f9b3 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 45.714285714285715%; -} - -.emojione-diversity._1f469-1f3fd-1f9b3 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 48.57142857142857%; -} - -.emojione-diversity._1f469-1f3fe-1f9b3 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 51.42857142857143%; -} - -.emojione-diversity._1f469-1f3ff-1f9b3 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 54.285714285714285%; -} - -.emojione-diversity._1f468-1f3fb-1f9b3 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3fc-1f9b3 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3fd-1f9b3 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3fe-1f9b3 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3ff-1f9b3 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 57.142857142857146%; -} - -.emojione-diversity._1f469-1f3fb-1f9b2 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 57.142857142857146%; -} - -.emojione-diversity._1f469-1f3fc-1f9b2 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 57.142857142857146%; -} - -.emojione-diversity._1f469-1f3fd-1f9b2 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 57.142857142857146%; -} - -.emojione-diversity._1f469-1f3fe-1f9b2 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 57.142857142857146%; -} - -.emojione-diversity._1f469-1f3ff-1f9b2 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3fb-1f9b2 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3fc-1f9b2 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3fd-1f9b2 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3fe-1f9b2 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3ff-1f9b2 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 57.142857142857146%; -} - -.emojione-diversity._1f9d4-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 57.142857142857146%; -} - -.emojione-diversity._1f9d4-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 57.142857142857146%; -} - -.emojione-diversity._1f9d4-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 0%; -} - -.emojione-diversity._1f9d4-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 2.857142857142857%; -} - -.emojione-diversity._1f9d4-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 5.714285714285714%; -} - -.emojione-diversity._1f475-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 11.428571428571429%; -} - -.emojione-diversity._1f475-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 14.285714285714286%; -} - -.emojione-diversity._1f475-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 17.142857142857142%; -} - -.emojione-diversity._1f475-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 20%; -} - -.emojione-diversity._1f475-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 22.857142857142858%; -} - -.emojione-diversity._1f9d3-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 28.571428571428573%; -} - -.emojione-diversity._1f9d3-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 31.428571428571427%; -} - -.emojione-diversity._1f9d3-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 34.285714285714285%; -} - -.emojione-diversity._1f9d3-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 37.142857142857146%; -} - -.emojione-diversity._1f9d3-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 40%; -} - -.emojione-diversity._1f474-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 45.714285714285715%; -} - -.emojione-diversity._1f474-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 48.57142857142857%; -} - -.emojione-diversity._1f474-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 51.42857142857143%; -} - -.emojione-diversity._1f474-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 54.285714285714285%; -} - -.emojione-diversity._1f474-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 57.142857142857146%; -} - -.emojione-diversity._1f472-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 60%; -} - -.emojione-diversity._1f472-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 60%; -} - -.emojione-diversity._1f472-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 60%; -} - -.emojione-diversity._1f472-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 60%; -} - -.emojione-diversity._1f472-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 60%; -} - -.emojione-diversity._1f473-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 60%; -} - -.emojione-diversity._1f473-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 60%; -} - -.emojione-diversity._1f473-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 60%; -} - -.emojione-diversity._1f473-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 60%; -} - -.emojione-diversity._1f473-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 60%; -} - -.emojione-diversity._1f473-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 60%; -} - -.emojione-diversity._1f473-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 60%; -} - -.emojione-diversity._1f473-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 60%; -} - -.emojione-diversity._1f473-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 60%; -} - -.emojione-diversity._1f473-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 60%; -} - -.emojione-diversity._1f473-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 60%; -} - -.emojione-diversity._1f473-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 60%; -} - -.emojione-diversity._1f473-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 60%; -} - -.emojione-diversity._1f473-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 0%; -} - -.emojione-diversity._1f473-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 2.857142857142857%; -} - -.emojione-diversity._1f9d5-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 8.571428571428571%; -} - -.emojione-diversity._1f9d5-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 11.428571428571429%; -} - -.emojione-diversity._1f9d5-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 14.285714285714286%; -} - -.emojione-diversity._1f9d5-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 17.142857142857142%; -} - -.emojione-diversity._1f9d5-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 20%; -} - -.emojione-diversity._1f46e-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 25.714285714285715%; -} - -.emojione-diversity._1f46e-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 28.571428571428573%; -} - -.emojione-diversity._1f46e-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 31.428571428571427%; -} - -.emojione-diversity._1f46e-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 34.285714285714285%; -} - -.emojione-diversity._1f46e-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 37.142857142857146%; -} - -.emojione-diversity._1f46e-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 42.857142857142854%; -} - -.emojione-diversity._1f46e-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 45.714285714285715%; -} - -.emojione-diversity._1f46e-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 48.57142857142857%; -} - -.emojione-diversity._1f46e-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 51.42857142857143%; -} - -.emojione-diversity._1f46e-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 54.285714285714285%; -} - -.emojione-diversity._1f46e-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 60%; -} - -.emojione-diversity._1f46e-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 62.857142857142854%; -} - -.emojione-diversity._1f46e-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 62.857142857142854%; -} - -.emojione-diversity._1f46e-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 62.857142857142854%; -} - -.emojione-diversity._1f46e-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 62.857142857142854%; -} - -.emojione-diversity._1f477-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 62.857142857142854%; -} - -.emojione-diversity._1f482-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 0%; -} - -.emojione-diversity._1f482-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 2.857142857142857%; -} - -.emojione-diversity._1f482-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 5.714285714285714%; -} - -.emojione-diversity._1f482-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 8.571428571428571%; -} - -.emojione-diversity._1f482-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 11.428571428571429%; -} - -.emojione-diversity._1f482-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 17.142857142857142%; -} - -.emojione-diversity._1f482-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 20%; -} - -.emojione-diversity._1f482-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 22.857142857142858%; -} - -.emojione-diversity._1f482-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 25.714285714285715%; -} - -.emojione-diversity._1f482-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 28.571428571428573%; -} - -.emojione-diversity._1f482-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 34.285714285714285%; -} - -.emojione-diversity._1f482-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 37.142857142857146%; -} - -.emojione-diversity._1f482-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 40%; -} - -.emojione-diversity._1f482-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 42.857142857142854%; -} - -.emojione-diversity._1f482-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 45.714285714285715%; -} - -.emojione-diversity._1f575-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 51.42857142857143%; -} - -.emojione-diversity._1f575-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 54.285714285714285%; -} - -.emojione-diversity._1f575-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 57.142857142857146%; -} - -.emojione-diversity._1f575-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 60%; -} - -.emojione-diversity._1f575-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 62.857142857142854%; -} - -.emojione-diversity._1f575-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 65.71428571428571%; -} - -.emojione-diversity._1f575-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 65.71428571428571%; -} - -.emojione-diversity._1f575-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 65.71428571428571%; -} - -.emojione-diversity._1f575-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 65.71428571428571%; -} - -.emojione-diversity._1f575-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 65.71428571428571%; -} - -.emojione-diversity._1f575-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 65.71428571428571%; -} - -.emojione-diversity._1f575-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 65.71428571428571%; -} - -.emojione-diversity._1f575-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 65.71428571428571%; -} - -.emojione-diversity._1f575-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 65.71428571428571%; -} - -.emojione-diversity._1f575-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 65.71428571428571%; -} - -.emojione-diversity._1f469-1f3fb-2695 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 65.71428571428571%; -} - -.emojione-diversity._1f469-1f3fc-2695 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 65.71428571428571%; -} - -.emojione-diversity._1f469-1f3fd-2695 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 65.71428571428571%; -} - -.emojione-diversity._1f469-1f3fe-2695 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 65.71428571428571%; -} - -.emojione-diversity._1f469-1f3ff-2695 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 65.71428571428571%; -} - -.emojione-diversity._1f468-1f3fb-2695 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 65.71428571428571%; -} - -.emojione-diversity._1f468-1f3fc-2695 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 65.71428571428571%; -} - -.emojione-diversity._1f468-1f3fd-2695 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 65.71428571428571%; -} - -.emojione-diversity._1f468-1f3fe-2695 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 65.71428571428571%; -} - -.emojione-diversity._1f468-1f3ff-2695 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 65.71428571428571%; -} - -.emojione-diversity._1f469-1f3fb-1f33e { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 2.857142857142857%; -} - -.emojione-diversity._1f469-1f3fc-1f33e { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 5.714285714285714%; -} - -.emojione-diversity._1f469-1f3fd-1f33e { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 8.571428571428571%; -} - -.emojione-diversity._1f469-1f3fe-1f33e { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 11.428571428571429%; -} - -.emojione-diversity._1f469-1f3ff-1f33e { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 14.285714285714286%; -} - -.emojione-diversity._1f468-1f3fb-1f33e { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 20%; -} - -.emojione-diversity._1f468-1f3fc-1f33e { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 22.857142857142858%; -} - -.emojione-diversity._1f468-1f3fd-1f33e { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 25.714285714285715%; -} - -.emojione-diversity._1f468-1f3fe-1f33e { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 28.571428571428573%; -} - -.emojione-diversity._1f468-1f3ff-1f33e { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 31.428571428571427%; -} - -.emojione-diversity._1f469-1f3fb-1f373 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 37.142857142857146%; -} - -.emojione-diversity._1f469-1f3fc-1f373 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 40%; -} - -.emojione-diversity._1f469-1f3fd-1f373 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 42.857142857142854%; -} - -.emojione-diversity._1f469-1f3fe-1f373 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 45.714285714285715%; -} - -.emojione-diversity._1f469-1f3ff-1f373 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 48.57142857142857%; -} - -.emojione-diversity._1f468-1f3fb-1f373 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 54.285714285714285%; -} - -.emojione-diversity._1f468-1f3fc-1f373 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3fd-1f373 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 60%; -} - -.emojione-diversity._1f468-1f3fe-1f373 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 62.857142857142854%; -} - -.emojione-diversity._1f468-1f3ff-1f373 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 65.71428571428571%; -} - -.emojione-diversity._1f469-1f3fb-1f393 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3fc-1f393 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3fd-1f393 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3fe-1f393 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3ff-1f393 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 68.57142857142857%; -} - -.emojione-diversity._1f468-1f3fb-1f393 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 68.57142857142857%; -} - -.emojione-diversity._1f468-1f3fc-1f393 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 68.57142857142857%; -} - -.emojione-diversity._1f468-1f3fd-1f393 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 68.57142857142857%; -} - -.emojione-diversity._1f468-1f3fe-1f393 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 68.57142857142857%; -} - -.emojione-diversity._1f468-1f3ff-1f393 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3fb-1f3a4 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3fc-1f3a4 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3fd-1f3a4 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3fe-1f3a4 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3ff-1f3a4 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 68.57142857142857%; -} - -.emojione-diversity._1f468-1f3fc-1f3a4 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 68.57142857142857%; -} - -.emojione-diversity._1f468-1f3fd-1f3a4 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 68.57142857142857%; -} - -.emojione-diversity._1f468-1f3fe-1f3a4 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 68.57142857142857%; -} - -.emojione-diversity._1f468-1f3ff-1f3a4 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3fb-1f3eb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 0%; -} - -.emojione-diversity._1f469-1f3fc-1f3eb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 2.857142857142857%; -} - -.emojione-diversity._1f469-1f3fd-1f3eb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 5.714285714285714%; -} - -.emojione-diversity._1f469-1f3fe-1f3eb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 8.571428571428571%; -} - -.emojione-diversity._1f469-1f3ff-1f3eb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 11.428571428571429%; -} - -.emojione-diversity._1f468-1f3fb-1f3eb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 17.142857142857142%; -} - -.emojione-diversity._1f468-1f3fc-1f3eb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 20%; -} - -.emojione-diversity._1f468-1f3fd-1f3eb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 22.857142857142858%; -} - -.emojione-diversity._1f468-1f3fe-1f3eb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 25.714285714285715%; -} - -.emojione-diversity._1f468-1f3ff-1f3eb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 28.571428571428573%; -} - -.emojione-diversity._1f469-1f3fb-1f3ed { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 34.285714285714285%; -} - -.emojione-diversity._1f469-1f3fc-1f3ed { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 37.142857142857146%; -} - -.emojione-diversity._1f469-1f3fd-1f3ed { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 40%; -} - -.emojione-diversity._1f469-1f3fe-1f3ed { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 42.857142857142854%; -} - -.emojione-diversity._1f469-1f3ff-1f3ed { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 45.714285714285715%; -} - -.emojione-diversity._1f468-1f3fb-1f3ed { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 51.42857142857143%; -} - -.emojione-diversity._1f468-1f3fc-1f3ed { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 54.285714285714285%; -} - -.emojione-diversity._1f468-1f3fd-1f3ed { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3fe-1f3ed { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 60%; -} - -.emojione-diversity._1f468-1f3ff-1f3ed { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 62.857142857142854%; -} - -.emojione-diversity._1f469-1f3fb-1f4bb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3fc-1f4bb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3fd-1f4bb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3fe-1f4bb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3ff-1f4bb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3fb-1f4bb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3fc-1f4bb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3fd-1f4bb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3fe-1f4bb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3ff-1f4bb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3fb-1f4bc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3fc-1f4bc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3fd-1f4bc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3fe-1f4bc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3ff-1f4bc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3fb-1f4bc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3fc-1f4bc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3fd-1f4bc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3fe-1f4bc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3ff-1f4bc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3fb-1f527 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3fc-1f527 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3fd-1f527 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 71.42857142857143%; -} - -.emojione-diversity._1f469-1f3fe-1f527 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 0%; -} - -.emojione-diversity._1f469-1f3ff-1f527 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 2.857142857142857%; -} - -.emojione-diversity._1f468-1f3fb-1f527 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 8.571428571428571%; -} - -.emojione-diversity._1f468-1f3fc-1f527 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 11.428571428571429%; -} - -.emojione-diversity._1f468-1f3fd-1f527 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 14.285714285714286%; -} - -.emojione-diversity._1f468-1f3fe-1f527 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 17.142857142857142%; -} - -.emojione-diversity._1f468-1f3ff-1f527 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 20%; -} - -.emojione-diversity._1f469-1f3fb-1f52c { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 25.714285714285715%; -} - -.emojione-diversity._1f469-1f3fc-1f52c { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 28.571428571428573%; -} - -.emojione-diversity._1f469-1f3fd-1f52c { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 31.428571428571427%; -} - -.emojione-diversity._1f469-1f3fe-1f52c { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 34.285714285714285%; -} - -.emojione-diversity._1f469-1f3ff-1f52c { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 37.142857142857146%; -} - -.emojione-diversity._1f468-1f3fb-1f52c { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 42.857142857142854%; -} - -.emojione-diversity._1f468-1f3fc-1f52c { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 45.714285714285715%; -} - -.emojione-diversity._1f468-1f3fd-1f52c { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 48.57142857142857%; -} - -.emojione-diversity._1f468-1f3fe-1f52c { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 51.42857142857143%; -} - -.emojione-diversity._1f468-1f3ff-1f52c { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 54.285714285714285%; -} - -.emojione-diversity._1f469-1f3fb-1f3a8 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 60%; -} - -.emojione-diversity._1f469-1f3fc-1f3a8 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 62.857142857142854%; -} - -.emojione-diversity._1f469-1f3fd-1f3a8 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 65.71428571428571%; -} - -.emojione-diversity._1f469-1f3fe-1f3a8 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 68.57142857142857%; -} - -.emojione-diversity._1f469-1f3ff-1f3a8 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3fb-1f3a8 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3fc-1f3a8 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3fd-1f3a8 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3fe-1f3a8 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3ff-1f3a8 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 74.28571428571429%; -} - -.emojione-diversity._1f469-1f3fb-1f692 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 74.28571428571429%; -} - -.emojione-diversity._1f469-1f3fc-1f692 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 74.28571428571429%; -} - -.emojione-diversity._1f469-1f3fd-1f692 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 74.28571428571429%; -} - -.emojione-diversity._1f469-1f3fe-1f692 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 74.28571428571429%; -} - -.emojione-diversity._1f469-1f3ff-1f692 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3fb-1f692 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3fc-1f692 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3fd-1f692 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3fe-1f692 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3ff-1f692 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 74.28571428571429%; -} - -.emojione-diversity._1f469-1f3fb-2708 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 74.28571428571429%; -} - -.emojione-diversity._1f469-1f3fc-2708 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 74.28571428571429%; -} - -.emojione-diversity._1f469-1f3fd-2708 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 74.28571428571429%; -} - -.emojione-diversity._1f469-1f3fe-2708 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 74.28571428571429%; -} - -.emojione-diversity._1f469-1f3ff-2708 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3fb-2708 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3fc-2708 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 74.28571428571429%; -} - -.emojione-diversity._1f468-1f3fd-2708 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 0%; -} - -.emojione-diversity._1f468-1f3fe-2708 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 2.857142857142857%; -} - -.emojione-diversity._1f468-1f3ff-2708 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 5.714285714285714%; -} - -.emojione-diversity._1f469-1f3fb-1f680 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 11.428571428571429%; -} - -.emojione-diversity._1f469-1f3fc-1f680 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 14.285714285714286%; -} - -.emojione-diversity._1f469-1f3fd-1f680 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 17.142857142857142%; -} - -.emojione-diversity._1f469-1f3fe-1f680 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 20%; -} - -.emojione-diversity._1f469-1f3ff-1f680 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 22.857142857142858%; -} - -.emojione-diversity._1f468-1f3fb-1f680 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 28.571428571428573%; -} - -.emojione-diversity._1f468-1f3fc-1f680 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 31.428571428571427%; -} - -.emojione-diversity._1f468-1f3fd-1f680 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 34.285714285714285%; -} - -.emojione-diversity._1f468-1f3fe-1f680 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 37.142857142857146%; -} - -.emojione-diversity._1f468-1f3ff-1f680 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 40%; -} - -.emojione-diversity._1f469-1f3fb-2696 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 45.714285714285715%; -} - -.emojione-diversity._1f469-1f3fc-2696 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 48.57142857142857%; -} - -.emojione-diversity._1f469-1f3fd-2696 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 51.42857142857143%; -} - -.emojione-diversity._1f469-1f3fe-2696 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 54.285714285714285%; -} - -.emojione-diversity._1f469-1f3ff-2696 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 57.142857142857146%; -} - -.emojione-diversity._1f468-1f3fb-2696 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 62.857142857142854%; -} - -.emojione-diversity._1f468-1f3fc-2696 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 65.71428571428571%; -} - -.emojione-diversity._1f468-1f3fd-2696 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 68.57142857142857%; -} - -.emojione-diversity._1f468-1f3fe-2696 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 71.42857142857143%; -} - -.emojione-diversity._1f468-1f3ff-2696 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 74.28571428571429%; -} - -.emojione-diversity._1f470-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 77.14285714285714%; -} - -.emojione-diversity._1f470-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 77.14285714285714%; -} - -.emojione-diversity._1f470-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 77.14285714285714%; -} - -.emojione-diversity._1f470-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 77.14285714285714%; -} - -.emojione-diversity._1f470-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 77.14285714285714%; -} - -.emojione-diversity._1f935-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 77.14285714285714%; -} - -.emojione-diversity._1f935-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 77.14285714285714%; -} - -.emojione-diversity._1f935-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 77.14285714285714%; -} - -.emojione-diversity._1f935-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 77.14285714285714%; -} - -.emojione-diversity._1f935-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 77.14285714285714%; -} - -.emojione-diversity._1f478-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 77.14285714285714%; -} - -.emojione-diversity._1f478-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 77.14285714285714%; -} - -.emojione-diversity._1f478-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 77.14285714285714%; -} - -.emojione-diversity._1f478-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 77.14285714285714%; -} - -.emojione-diversity._1f478-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 77.14285714285714%; -} - -.emojione-diversity._1f934-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 77.14285714285714%; -} - -.emojione-diversity._1f934-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 77.14285714285714%; -} - -.emojione-diversity._1f934-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 77.14285714285714%; -} - -.emojione-diversity._1f934-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 77.14285714285714%; -} - -.emojione-diversity._1f934-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 77.14285714285714%; -} - -.emojione-diversity._1f936-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 77.14285714285714%; -} - -.emojione-diversity._1f936-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 77.14285714285714%; -} - -.emojione-diversity._1f936-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 77.14285714285714%; -} - -.emojione-diversity._1f936-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 0%; -} - -.emojione-diversity._1f936-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 2.857142857142857%; -} - -.emojione-diversity._1f385-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 8.571428571428571%; -} - -.emojione-diversity._1f385-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 11.428571428571429%; -} - -.emojione-diversity._1f385-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 14.285714285714286%; -} - -.emojione-diversity._1f385-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 17.142857142857142%; -} - -.emojione-diversity._1f385-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 20%; -} - -.emojione-diversity._1f9b8-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 25.714285714285715%; -} - -.emojione-diversity._1f9b8-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 28.571428571428573%; -} - -.emojione-diversity._1f9b8-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 31.428571428571427%; -} - -.emojione-diversity._1f9b8-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 34.285714285714285%; -} - -.emojione-diversity._1f9b8-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 37.142857142857146%; -} - -.emojione-diversity._1f9b8-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 42.857142857142854%; -} - -.emojione-diversity._1f9b8-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 45.714285714285715%; -} - -.emojione-diversity._1f9b8-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 48.57142857142857%; -} - -.emojione-diversity._1f9b8-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 51.42857142857143%; -} - -.emojione-diversity._1f9b8-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 54.285714285714285%; -} - -.emojione-diversity._1f9b8-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 60%; -} - -.emojione-diversity._1f9b8-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 62.857142857142854%; -} - -.emojione-diversity._1f9b8-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 65.71428571428571%; -} - -.emojione-diversity._1f9b8-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 68.57142857142857%; -} - -.emojione-diversity._1f9b8-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 71.42857142857143%; -} - -.emojione-diversity._1f9b9-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 77.14285714285714%; -} - -.emojione-diversity._1f9b9-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 80%; -} - -.emojione-diversity._1f9b9-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 80%; -} - -.emojione-diversity._1f9b9-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 80%; -} - -.emojione-diversity._1f9b9-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 80%; -} - -.emojione-diversity._1f9b9-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 80%; -} - -.emojione-diversity._1f9b9-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 80%; -} - -.emojione-diversity._1f9b9-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 80%; -} - -.emojione-diversity._1f9b9-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 80%; -} - -.emojione-diversity._1f9b9-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 80%; -} - -.emojione-diversity._1f9b9-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 80%; -} - -.emojione-diversity._1f9b9-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 80%; -} - -.emojione-diversity._1f9b9-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 80%; -} - -.emojione-diversity._1f9b9-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 80%; -} - -.emojione-diversity._1f9b9-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 80%; -} - -.emojione-diversity._1f9d9-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 80%; -} - -.emojione-diversity._1f9d9-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 80%; -} - -.emojione-diversity._1f9d9-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 80%; -} - -.emojione-diversity._1f9d9-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 80%; -} - -.emojione-diversity._1f9d9-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 80%; -} - -.emojione-diversity._1f9d9-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 80%; -} - -.emojione-diversity._1f9d9-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 80%; -} - -.emojione-diversity._1f9d9-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 80%; -} - -.emojione-diversity._1f9d9-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 80%; -} - -.emojione-diversity._1f9d9-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 80%; -} - -.emojione-diversity._1f9d9-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 0%; -} - -.emojione-diversity._1f9d9-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 2.857142857142857%; -} - -.emojione-diversity._1f9d9-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 5.714285714285714%; -} - -.emojione-diversity._1f9d9-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 8.571428571428571%; -} - -.emojione-diversity._1f9d9-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 11.428571428571429%; -} - -.emojione-diversity._1f9dd-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 17.142857142857142%; -} - -.emojione-diversity._1f9dd-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 20%; -} - -.emojione-diversity._1f9dd-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 22.857142857142858%; -} - -.emojione-diversity._1f9dd-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 25.714285714285715%; -} - -.emojione-diversity._1f9dd-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 28.571428571428573%; -} - -.emojione-diversity._1f9dd-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 34.285714285714285%; -} - -.emojione-diversity._1f9dd-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 37.142857142857146%; -} - -.emojione-diversity._1f9dd-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 40%; -} - -.emojione-diversity._1f9dd-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 42.857142857142854%; -} - -.emojione-diversity._1f9dd-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 45.714285714285715%; -} - -.emojione-diversity._1f9dd-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 51.42857142857143%; -} - -.emojione-diversity._1f9dd-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 54.285714285714285%; -} - -.emojione-diversity._1f9dd-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 57.142857142857146%; -} - -.emojione-diversity._1f9dd-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 60%; -} - -.emojione-diversity._1f9dd-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 62.857142857142854%; -} - -.emojione-diversity._1f9db-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 68.57142857142857%; -} - -.emojione-diversity._1f9db-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 71.42857142857143%; -} - -.emojione-diversity._1f9db-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 74.28571428571429%; -} - -.emojione-diversity._1f9db-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 77.14285714285714%; -} - -.emojione-diversity._1f9db-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 80%; -} - -.emojione-diversity._1f9db-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 82.85714285714286%; -} - -.emojione-diversity._1f9db-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 82.85714285714286%; -} - -.emojione-diversity._1f9db-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 82.85714285714286%; -} - -.emojione-diversity._1f9db-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 82.85714285714286%; -} - -.emojione-diversity._1f9db-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 82.85714285714286%; -} - -.emojione-diversity._1f9db-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 82.85714285714286%; -} - -.emojione-diversity._1f9db-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 82.85714285714286%; -} - -.emojione-diversity._1f9db-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 82.85714285714286%; -} - -.emojione-diversity._1f9db-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 82.85714285714286%; -} - -.emojione-diversity._1f9db-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 82.85714285714286%; -} - -.emojione-diversity._1f9dc-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 82.85714285714286%; -} - -.emojione-diversity._1f9dc-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 82.85714285714286%; -} - -.emojione-diversity._1f9dc-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 82.85714285714286%; -} - -.emojione-diversity._1f9dc-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 82.85714285714286%; -} - -.emojione-diversity._1f9dc-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 82.85714285714286%; -} - -.emojione-diversity._1f9dc-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 82.85714285714286%; -} - -.emojione-diversity._1f9dc-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 82.85714285714286%; -} - -.emojione-diversity._1f9dc-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 82.85714285714286%; -} - -.emojione-diversity._1f9dc-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 82.85714285714286%; -} - -.emojione-diversity._1f9dc-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 82.85714285714286%; -} - -.emojione-diversity._1f9dc-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 2.857142857142857%; -} - -.emojione-diversity._1f9dc-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 5.714285714285714%; -} - -.emojione-diversity._1f9dc-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 8.571428571428571%; -} - -.emojione-diversity._1f9dc-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 11.428571428571429%; -} - -.emojione-diversity._1f9dc-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 14.285714285714286%; -} - -.emojione-diversity._1f9da-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 20%; -} - -.emojione-diversity._1f9da-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 22.857142857142858%; -} - -.emojione-diversity._1f9da-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 25.714285714285715%; -} - -.emojione-diversity._1f9da-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 28.571428571428573%; -} - -.emojione-diversity._1f9da-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 31.428571428571427%; -} - -.emojione-diversity._1f9da-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 37.142857142857146%; -} - -.emojione-diversity._1f9da-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 40%; -} - -.emojione-diversity._1f9da-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 42.857142857142854%; -} - -.emojione-diversity._1f9da-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 45.714285714285715%; -} - -.emojione-diversity._1f9da-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 48.57142857142857%; -} - -.emojione-diversity._1f9da-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 54.285714285714285%; -} - -.emojione-diversity._1f9da-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 57.142857142857146%; -} - -.emojione-diversity._1f9da-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 60%; -} - -.emojione-diversity._1f9da-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 62.857142857142854%; -} - -.emojione-diversity._1f9da-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 65.71428571428571%; -} - -.emojione-diversity._1f47c-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 71.42857142857143%; -} - -.emojione-diversity._1f47c-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 74.28571428571429%; -} - -.emojione-diversity._1f47c-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 77.14285714285714%; -} - -.emojione-diversity._1f47c-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 80%; -} - -.emojione-diversity._1f47c-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 82.85714285714286%; -} - -.emojione-diversity._1f930-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 85.71428571428571%; -} - -.emojione-diversity._1f930-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 85.71428571428571%; -} - -.emojione-diversity._1f930-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 85.71428571428571%; -} - -.emojione-diversity._1f930-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 85.71428571428571%; -} - -.emojione-diversity._1f930-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 85.71428571428571%; -} - -.emojione-diversity._1f931-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 85.71428571428571%; -} - -.emojione-diversity._1f931-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 85.71428571428571%; -} - -.emojione-diversity._1f931-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 85.71428571428571%; -} - -.emojione-diversity._1f931-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 85.71428571428571%; -} - -.emojione-diversity._1f931-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 85.71428571428571%; -} - -.emojione-diversity._1f647-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 85.71428571428571%; -} - -.emojione-diversity._1f481-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 0%; -} - -.emojione-diversity._1f481-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 2.857142857142857%; -} - -.emojione-diversity._1f481-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 5.714285714285714%; -} - -.emojione-diversity._1f481-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 8.571428571428571%; -} - -.emojione-diversity._1f481-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 11.428571428571429%; -} - -.emojione-diversity._1f481-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 17.142857142857142%; -} - -.emojione-diversity._1f481-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 20%; -} - -.emojione-diversity._1f481-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 22.857142857142858%; -} - -.emojione-diversity._1f481-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 25.714285714285715%; -} - -.emojione-diversity._1f481-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 28.571428571428573%; -} - -.emojione-diversity._1f481-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 34.285714285714285%; -} - -.emojione-diversity._1f481-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 37.142857142857146%; -} - -.emojione-diversity._1f481-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 40%; -} - -.emojione-diversity._1f481-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 42.857142857142854%; -} - -.emojione-diversity._1f481-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 45.714285714285715%; -} - -.emojione-diversity._1f645-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 51.42857142857143%; -} - -.emojione-diversity._1f645-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 54.285714285714285%; -} - -.emojione-diversity._1f645-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 57.142857142857146%; -} - -.emojione-diversity._1f645-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 60%; -} - -.emojione-diversity._1f645-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 62.857142857142854%; -} - -.emojione-diversity._1f645-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 68.57142857142857%; -} - -.emojione-diversity._1f645-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 71.42857142857143%; -} - -.emojione-diversity._1f645-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 74.28571428571429%; -} - -.emojione-diversity._1f645-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 77.14285714285714%; -} - -.emojione-diversity._1f645-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 80%; -} - -.emojione-diversity._1f645-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 85.71428571428571%; -} - -.emojione-diversity._1f645-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 88.57142857142857%; -} - -.emojione-diversity._1f645-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 88.57142857142857%; -} - -.emojione-diversity._1f645-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 88.57142857142857%; -} - -.emojione-diversity._1f645-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 88.57142857142857%; -} - -.emojione-diversity._1f646-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 88.57142857142857%; -} - -.emojione-diversity._1f64b-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 88.57142857142857%; -} - -.emojione-diversity._1f64b-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 88.57142857142857%; -} - -.emojione-diversity._1f64b-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 88.57142857142857%; -} - -.emojione-diversity._1f64b-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 88.57142857142857%; -} - -.emojione-diversity._1f64b-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 88.57142857142857%; -} - -.emojione-diversity._1f64b-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 88.57142857142857%; -} - -.emojione-diversity._1f64b-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 88.57142857142857%; -} - -.emojione-diversity._1f64b-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 88.57142857142857%; -} - -.emojione-diversity._1f64b-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 0%; -} - -.emojione-diversity._1f64b-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 2.857142857142857%; -} - -.emojione-diversity._1f64b-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 8.571428571428571%; -} - -.emojione-diversity._1f64b-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 11.428571428571429%; -} - -.emojione-diversity._1f64b-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 14.285714285714286%; -} - -.emojione-diversity._1f64b-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 17.142857142857142%; -} - -.emojione-diversity._1f64b-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 20%; -} - -.emojione-diversity._1f926-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 25.714285714285715%; -} - -.emojione-diversity._1f926-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 28.571428571428573%; -} - -.emojione-diversity._1f926-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 31.428571428571427%; -} - -.emojione-diversity._1f926-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 34.285714285714285%; -} - -.emojione-diversity._1f926-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 37.142857142857146%; -} - -.emojione-diversity._1f926-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 42.857142857142854%; -} - -.emojione-diversity._1f926-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 45.714285714285715%; -} - -.emojione-diversity._1f926-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 48.57142857142857%; -} - -.emojione-diversity._1f926-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 51.42857142857143%; -} - -.emojione-diversity._1f926-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 54.285714285714285%; -} - -.emojione-diversity._1f926-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 60%; -} - -.emojione-diversity._1f926-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 62.857142857142854%; -} - -.emojione-diversity._1f926-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 65.71428571428571%; -} - -.emojione-diversity._1f926-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 68.57142857142857%; -} - -.emojione-diversity._1f926-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 71.42857142857143%; -} - -.emojione-diversity._1f937-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 77.14285714285714%; -} - -.emojione-diversity._1f937-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 80%; -} - -.emojione-diversity._1f937-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 82.85714285714286%; -} - -.emojione-diversity._1f937-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 85.71428571428571%; -} - -.emojione-diversity._1f937-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 88.57142857142857%; -} - -.emojione-diversity._1f937-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 91.42857142857143%; -} - -.emojione-diversity._1f937-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 91.42857142857143%; -} - -.emojione-diversity._1f937-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 91.42857142857143%; -} - -.emojione-diversity._1f937-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 91.42857142857143%; -} - -.emojione-diversity._1f937-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 91.42857142857143%; -} - -.emojione-diversity._1f937-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 91.42857142857143%; -} - -.emojione-diversity._1f937-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 91.42857142857143%; -} - -.emojione-diversity._1f937-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 91.42857142857143%; -} - -.emojione-diversity._1f937-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 91.42857142857143%; -} - -.emojione-diversity._1f937-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 91.42857142857143%; -} - -.emojione-diversity._1f64e-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 91.42857142857143%; -} - -.emojione-diversity._1f64d-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 91.42857142857143%; -} - -.emojione-diversity._1f64d-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 91.42857142857143%; -} - -.emojione-diversity._1f64d-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 0%; -} - -.emojione-diversity._1f64d-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 2.857142857142857%; -} - -.emojione-diversity._1f64d-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 5.714285714285714%; -} - -.emojione-diversity._1f64d-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 11.428571428571429%; -} - -.emojione-diversity._1f64d-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 14.285714285714286%; -} - -.emojione-diversity._1f64d-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 17.142857142857142%; -} - -.emojione-diversity._1f64d-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 20%; -} - -.emojione-diversity._1f64d-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 22.857142857142858%; -} - -.emojione-diversity._1f64d-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 28.571428571428573%; -} - -.emojione-diversity._1f64d-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 31.428571428571427%; -} - -.emojione-diversity._1f64d-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 34.285714285714285%; -} - -.emojione-diversity._1f64d-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 37.142857142857146%; -} - -.emojione-diversity._1f64d-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 40%; -} - -.emojione-diversity._1f487-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 45.714285714285715%; -} - -.emojione-diversity._1f487-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 48.57142857142857%; -} - -.emojione-diversity._1f487-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 51.42857142857143%; -} - -.emojione-diversity._1f487-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 54.285714285714285%; -} - -.emojione-diversity._1f487-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 57.142857142857146%; -} - -.emojione-diversity._1f487-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 62.857142857142854%; -} - -.emojione-diversity._1f487-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 65.71428571428571%; -} - -.emojione-diversity._1f487-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 68.57142857142857%; -} - -.emojione-diversity._1f487-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 71.42857142857143%; -} - -.emojione-diversity._1f487-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 74.28571428571429%; -} - -.emojione-diversity._1f487-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 80%; -} - -.emojione-diversity._1f487-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 82.85714285714286%; -} - -.emojione-diversity._1f487-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 85.71428571428571%; -} - -.emojione-diversity._1f487-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 88.57142857142857%; -} - -.emojione-diversity._1f487-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 91.42857142857143%; -} - -.emojione-diversity._1f486-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 2.7777777777777777% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 19.444444444444443% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 36.111111111111114% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 94.28571428571429%; -} - -.emojione-diversity._1f486-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 52.77777777777778% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 69.44444444444444% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 86.11111111111111% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 94.28571428571429%; -} - -.emojione-diversity._1f9d6-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 0%; -} - -.emojione-diversity._1f9d6-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 2.857142857142857%; -} - -.emojione-diversity._1f485-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 8.571428571428571%; -} - -.emojione-diversity._1f485-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 11.428571428571429%; -} - -.emojione-diversity._1f485-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 14.285714285714286%; -} - -.emojione-diversity._1f485-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 17.142857142857142%; -} - -.emojione-diversity._1f485-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 20%; -} - -.emojione-diversity._1f933-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 25.714285714285715%; -} - -.emojione-diversity._1f933-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 28.571428571428573%; -} - -.emojione-diversity._1f933-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 31.428571428571427%; -} - -.emojione-diversity._1f933-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 34.285714285714285%; -} - -.emojione-diversity._1f933-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 37.142857142857146%; -} - -.emojione-diversity._1f483-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 42.857142857142854%; -} - -.emojione-diversity._1f483-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 45.714285714285715%; -} - -.emojione-diversity._1f483-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 48.57142857142857%; -} - -.emojione-diversity._1f483-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 51.42857142857143%; -} - -.emojione-diversity._1f483-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 54.285714285714285%; -} - -.emojione-diversity._1f57a-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 60%; -} - -.emojione-diversity._1f57a-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 62.857142857142854%; -} - -.emojione-diversity._1f57a-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 65.71428571428571%; -} - -.emojione-diversity._1f57a-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 68.57142857142857%; -} - -.emojione-diversity._1f57a-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 71.42857142857143%; -} - -.emojione-diversity._1f574-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 85.71428571428571%; -} - -.emojione-diversity._1f574-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 88.57142857142857%; -} - -.emojione-diversity._1f574-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 91.42857142857143%; -} - -.emojione-diversity._1f574-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 94.28571428571429%; -} - -.emojione-diversity._1f574-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 0% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 5.555555555555555% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 8.333333333333334% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 11.11111111111111% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 13.88888888888889% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 16.666666666666668% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 22.22222222222222% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 25% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 27.77777777777778% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 30.555555555555557% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 33.333333333333336% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 38.888888888888886% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 41.666666666666664% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 44.44444444444444% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 47.22222222222222% 97.14285714285714%; -} - -.emojione-diversity._1f6b6-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 50% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fb { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 55.55555555555556% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fc { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 58.333333333333336% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fd { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 61.111111111111114% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fe { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 63.888888888888886% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3ff { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 66.66666666666667% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fb-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 72.22222222222223% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fc-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 75% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fd-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 77.77777777777777% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fe-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 80.55555555555556% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3ff-2640 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 83.33333333333333% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fb-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 88.88888888888889% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fc-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 91.66666666666667% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fd-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 94.44444444444444% 97.14285714285714%; -} - -.emojione-diversity._1f3c3-1f3fe-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 0%; -} - -.emojione-diversity._1f3c3-1f3ff-2642 { - background-image: url('/packages/emojione/people-sprites.png'); - background-repeat: no-repeat; - background-size: 3700% 3600%; - background-position: 97.22222222222223% 2.857142857142857%; -} diff --git a/apps/meteor/app/emoji-emojione/client/regional-sprites.css b/apps/meteor/app/emoji-emojione/client/regional-sprites.css deleted file mode 100644 index c9666b0cf7ace..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/regional-sprites.css +++ /dev/null @@ -1,163 +0,0 @@ -/* stylelint-disable */ - -.emojione-regional { - background-image: url('/packages/emojione/regional-sprites.png'); - - &._1f1f2 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 0% 0%; - } - - &._1f1ff { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 20% 0%; - } - - &._1f1fd { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 0% 25%; - } - - &._1f1fc { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 20% 25%; - } - - &._1f1fb { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 40% 0%; - } - - &._1f1fa { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 40% 25%; - } - - &._1f1f9 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 0% 50%; - } - - &._1f1f8 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 20% 50%; - } - - &._1f1f7 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 40% 50%; - } - - &._1f1f6 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 60% 0%; - } - - &._1f1f5 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 60% 25%; - } - - &._1f1f4 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 60% 50%; - } - - &._1f1f3 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 0% 75%; - } - - &._1f1fe { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 20% 75%; - } - - &._1f1f1 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 40% 75%; - } - - &._1f1f0 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 60% 75%; - } - - &._1f1ef { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 80% 0%; - } - - &._1f1ee { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 80% 25%; - } - - &._1f1ed { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 80% 50%; - } - - &._1f1ec { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 80% 75%; - } - - &._1f1eb { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 0% 100%; - } - - &._1f1ea { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 20% 100%; - } - - &._1f1e9 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 40% 100%; - } - - &._1f1e8 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 60% 100%; - } - - &._1f1e7 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 80% 100%; - } - - &._1f1e6 { - background-repeat: no-repeat; - background-size: 600% 500%; - background-position: 100% 0%; - } - -} - diff --git a/apps/meteor/app/emoji-emojione/client/symbols-sprites.css b/apps/meteor/app/emoji-emojione/client/symbols-sprites.css deleted file mode 100644 index 0910d13a88e18..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/symbols-sprites.css +++ /dev/null @@ -1,1747 +0,0 @@ -/* stylelint-disable */ - -.emojione-symbols { - background-image: url('/packages/emojione/symbols-sprites.png'); - - &._1f6c5 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 0%; - } - - &._2049 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 0%; - } - - &._2139 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 6.25%; - } - - &._2194 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 6.25%; - } - - &._2195 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 0%; - } - - &._2196 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 6.25%; - } - - &._2197 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 12.5%; - } - - &._2198 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 12.5%; - } - - &._2199 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 12.5%; - } - - &._2611 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 0%; - } - - &._2622 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 6.25%; - } - - &._2623 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 12.5%; - } - - &._2626 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 18.75%; - } - - &._2638 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 18.75%; - } - - &._2640 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 18.75%; - } - - &._2642 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 18.75%; - } - - &._2648 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 0%; - } - - &._2649 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 6.25%; - } - - &._2650 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 12.5%; - } - - &._2651 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 18.75%; - } - - &._2652 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 25%; - } - - &._2653 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 25%; - } - - &._2660 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 25%; - } - - &._2663 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 25%; - } - - &._2665 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 25%; - } - - &._2666 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 0%; - } - - &._2668 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 6.25%; - } - - &._2695 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 12.5%; - } - - &._2705 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 18.75%; - } - - &._2714 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 25%; - } - - &._2716 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 31.25%; - } - - &._2721 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 31.25%; - } - - &._2733 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 31.25%; - } - - &._2734 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 31.25%; - } - - &._2747 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 31.25%; - } - - &._2753 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 31.25%; - } - - &._2754 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 0%; - } - - &._2755 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 6.25%; - } - - &._2757 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 12.5%; - } - - &._2763 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 18.75%; - } - - &._2764 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 25%; - } - - &._2795 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 31.25%; - } - - &._2796 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 37.5%; - } - - &._2797 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 37.5%; - } - - &._2934 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 37.5%; - } - - &._2935 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 37.5%; - } - - &._3030 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 37.5%; - } - - &._3297 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 37.5%; - } - - &._3299 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 37.5%; - } - - &._1f9e1 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 0%; - } - - &._1f49b { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 6.25%; - } - - &._1f49a { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 12.5%; - } - - &._1f499 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 18.75%; - } - - &._1f49c { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 25%; - } - - &._1f5a4 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 31.25%; - } - - &._1f494 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 37.5%; - } - - &._1f495 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 43.75%; - } - - &._1f49e { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 43.75%; - } - - &._1f493 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 43.75%; - } - - &._1f497 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 43.75%; - } - - &._1f496 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 43.75%; - } - - &._1f498 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 43.75%; - } - - &._1f49d { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 43.75%; - } - - &._1f49f { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 43.75%; - } - - &._262e { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 0%; - } - - &._271d { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 6.25%; - } - - &._262a { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 12.5%; - } - - &._1f549 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 18.75%; - } - - &._1f52f { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 25%; - } - - &._1f54e { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 31.25%; - } - - &._262f { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 37.5%; - } - - &._1f6d0 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 43.75%; - } - - &._26ce { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 50%; - } - - &._264a { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 50%; - } - - &._264b { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 50%; - } - - &._264c { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 50%; - } - - &._264d { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 50%; - } - - &._264e { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 50%; - } - - &._264f { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 50%; - } - - &._1f194 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 50%; - } - - &._269b { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 50%; - } - - &._267e { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 0%; - } - - &._1f251 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 6.25%; - } - - &._1f4f4 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 12.5%; - } - - &._1f4f3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 18.75%; - } - - &._1f236 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 25%; - } - - &._1f21a { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 31.25%; - } - - &._1f238 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 37.5%; - } - - &._1f23a { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 43.75%; - } - - &._1f237 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 50%; - } - - &._1f19a { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 56.25%; - } - - &._1f4ae { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 56.25%; - } - - &._1f250 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 56.25%; - } - - &._1f234 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 56.25%; - } - - &._1f235 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 56.25%; - } - - &._1f239 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 56.25%; - } - - &._1f232 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 56.25%; - } - - &._1f170 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 56.25%; - } - - &._1f171 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 56.25%; - } - - &._1f18e { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 56.25%; - } - - &._1f191 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 0%; - } - - &._1f17e { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 6.25%; - } - - &._1f198 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 12.5%; - } - - &._274c { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 18.75%; - } - - &._2b55 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 25%; - } - - &._1f6d1 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 31.25%; - } - - &._26d4 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 37.5%; - } - - &._1f4db { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 43.75%; - } - - &._1f6ab { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 50%; - } - - &._1f4af { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 56.25%; - } - - &._1f4a2 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 62.5%; - } - - &._1f6b7 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 62.5%; - } - - &._1f6af { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 62.5%; - } - - &._1f6b3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 62.5%; - } - - &._1f6b1 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 62.5%; - } - - &._1f51e { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 62.5%; - } - - &._1f4f5 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 62.5%; - } - - &._1f6ad { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 62.5%; - } - - &._203c { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 62.5%; - } - - &._1f505 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 62.5%; - } - - &._1f506 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 62.5%; - } - - &._303d { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 0%; - } - - &._26a0 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 6.25%; - } - - &._1f6b8 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 12.5%; - } - - &._1f531 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 18.75%; - } - - &._269c { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 25%; - } - - &._1f530 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 31.25%; - } - - &._267b { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 37.5%; - } - - &._1f22f { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 43.75%; - } - - &._1f4b9 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 50%; - } - - &._274e { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 56.25%; - } - - &._1f310 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 62.5%; - } - - &._1f4a0 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 68.75%; - } - - &._24c2 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 68.75%; - } - - &._1f300 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 68.75%; - } - - &._1f4a4 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 68.75%; - } - - &._1f3e7 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 68.75%; - } - - &._1f6be { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 68.75%; - } - - &._267f { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 68.75%; - } - - &._1f17f { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 68.75%; - } - - &._1f233 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 68.75%; - } - - &._1f202 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 68.75%; - } - - &._1f6c2 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 68.75%; - } - - &._1f6c3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 68.75%; - } - - &._1f6c4 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 0%; - } - - &._2122 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 6.25%; - } - - &._1f6b9 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 12.5%; - } - - &._1f6ba { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 18.75%; - } - - &._1f6bc { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 25%; - } - - &._1f6bb { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 31.25%; - } - - &._1f6ae { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 37.5%; - } - - &._1f3a6 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 43.75%; - } - - &._1f4f6 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 50%; - } - - &._1f201 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 56.25%; - } - - &._1f523 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 62.5%; - } - - &._1f524 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 68.75%; - } - - &._1f521 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 75%; - } - - &._1f520 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 75%; - } - - &._1f196 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 75%; - } - - &._1f197 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 75%; - } - - &._1f199 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 75%; - } - - &._1f192 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 75%; - } - - &._1f195 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 75%; - } - - &._1f193 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 75%; - } - - &._0030-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 75%; - } - - &._0031-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 75%; - } - - &._0032-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 75%; - } - - &._0033-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 75%; - } - - &._0034-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 75%; - } - - &._0035-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 0%; - } - - &._0036-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 6.25%; - } - - &._0037-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 12.5%; - } - - &._0038-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 18.75%; - } - - &._0039-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 25%; - } - - &._1f51f { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 31.25%; - } - - &._1f522 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 37.5%; - } - - &._0023-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 43.75%; - } - - &._002a-20e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 50%; - } - - &._23cf { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 56.25%; - } - - &._25b6 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 62.5%; - } - - &._23f8 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 68.75%; - } - - &._23ef { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 75%; - } - - &._23f9 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 81.25%; - } - - &._23fa { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 81.25%; - } - - &._23ed { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 81.25%; - } - - &._23ee { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 81.25%; - } - - &._23e9 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 81.25%; - } - - &._23ea { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 81.25%; - } - - &._23eb { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 81.25%; - } - - &._23ec { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 81.25%; - } - - &._25c0 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 81.25%; - } - - &._1f53c { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 81.25%; - } - - &._1f53d { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 81.25%; - } - - &._27a1 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 81.25%; - } - - &._2b05 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 81.25%; - } - - &._2b06 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 81.25%; - } - - &._2b07 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 0%; - } - - &._21aa { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 6.25%; - } - - &._21a9 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 12.5%; - } - - &._1f500 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 18.75%; - } - - &._1f501 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 25%; - } - - &._1f502 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 31.25%; - } - - &._1f504 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 37.5%; - } - - &._1f503 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 43.75%; - } - - &._1f3b5 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 50%; - } - - &._1f3b6 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 56.25%; - } - - &._1f4b2 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 62.5%; - } - - &._1f4b1 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 68.75%; - } - - &._00a9 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 75%; - } - - &._00ae { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 81.25%; - } - - &._27b0 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 87.5%; - } - - &._27bf { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 87.5%; - } - - &._1f51a { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 87.5%; - } - - &._1f519 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 87.5%; - } - - &._1f51b { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 87.5%; - } - - &._1f51d { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 87.5%; - } - - &._1f51c { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 87.5%; - } - - &._1f518 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 87.5%; - } - - &._26aa { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 87.5%; - } - - &._26ab { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 87.5%; - } - - &._1f534 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 87.5%; - } - - &._1f535 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 87.5%; - } - - &._1f53a { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 87.5%; - } - - &._1f53b { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 87.5%; - } - - &._1f538 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 87.5%; - } - - &._1f539 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 0%; - } - - &._1f536 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 6.25%; - } - - &._1f537 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 12.5%; - } - - &._1f533 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 18.75%; - } - - &._1f532 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 25%; - } - - &._25aa { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 31.25%; - } - - &._25ab { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 37.5%; - } - - &._25fe { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 43.75%; - } - - &._25fd { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 50%; - } - - &._25fc { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 56.25%; - } - - &._25fb { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 62.5%; - } - - &._2b1b { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 68.75%; - } - - &._2b1c { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 75%; - } - - &._1f508 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 81.25%; - } - - &._1f507 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 87.5%; - } - - &._1f509 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 93.75%; - } - - &._1f50a { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 93.75%; - } - - &._1f514 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 93.75%; - } - - &._1f515 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 93.75%; - } - - &._1f4e3 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 93.75%; - } - - &._1f4e2 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 93.75%; - } - - &._1f5e8 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 93.75%; - } - - &._1f441-1f5e8 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 93.75%; - } - - &._1f4ac { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 93.75%; - } - - &._1f4ad { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 93.75%; - } - - &._1f5ef { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 93.75%; - } - - &._1f0cf { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 93.75%; - } - - &._1f3b4 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 93.75%; - } - - &._1f004 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 93.75%; - } - - &._1f550 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 93.75%; - } - - &._1f551 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 93.75%; - } - - &._1f552 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 0%; - } - - &._1f553 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 6.25%; - } - - &._1f554 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 12.5%; - } - - &._1f555 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 18.75%; - } - - &._1f556 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 25%; - } - - &._1f557 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 31.25%; - } - - &._1f558 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 37.5%; - } - - &._1f559 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 43.75%; - } - - &._1f55a { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 50%; - } - - &._1f55b { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 56.25%; - } - - &._1f55c { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 62.5%; - } - - &._1f55d { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 68.75%; - } - - &._1f55e { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 75%; - } - - &._1f55f { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 81.25%; - } - - &._1f560 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 87.5%; - } - - &._1f561 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 93.75%; - } - - &._1f562 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 0% 100%; - } - - &._1f563 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 5.882352941176471% 100%; - } - - &._1f564 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 11.764705882352942% 100%; - } - - &._1f565 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 17.647058823529413% 100%; - } - - &._1f566 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 23.529411764705884% 100%; - } - - &._1f567 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 29.41176470588235% 100%; - } - - &._0030 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 35.294117647058826% 100%; - } - - &._0031 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 41.1764705882353% 100%; - } - - &._0032 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 47.05882352941177% 100%; - } - - &._0033 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 52.94117647058823% 100%; - } - - &._0034 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 58.8235294117647% 100%; - } - - &._0035 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 64.70588235294117% 100%; - } - - &._0036 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 70.58823529411765% 100%; - } - - &._0037 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 76.47058823529412% 100%; - } - - &._0038 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 82.3529411764706% 100%; - } - - &._0039 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 88.23529411764706% 100%; - } - - &._0023 { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 94.11764705882354% 100%; - } - - &._002a { - background-repeat: no-repeat; - background-size: 1800% 1700%; - background-position: 100% 0%; - } - -} - diff --git a/apps/meteor/app/emoji-emojione/client/travel-sprites.css b/apps/meteor/app/emoji-emojione/client/travel-sprites.css deleted file mode 100644 index 93fc40ec635ea..0000000000000 --- a/apps/meteor/app/emoji-emojione/client/travel-sprites.css +++ /dev/null @@ -1,739 +0,0 @@ -/* stylelint-disable */ - -.emojione-travel { - background-image: url('/packages/emojione/travel-sprites.png'); - - &._1f5ff { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 0% 0%; - } - - &._2693 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 9.090909090909092% 0%; - } - - &._1f697 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 0% 10%; - } - - &._1f695 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 9.090909090909092% 10%; - } - - &._1f699 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 18.181818181818183% 0%; - } - - &._1f68c { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 18.181818181818183% 10%; - } - - &._1f68e { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 0% 20%; - } - - &._1f3ce { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 9.090909090909092% 20%; - } - - &._1f693 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 18.181818181818183% 20%; - } - - &._1f691 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 27.272727272727273% 0%; - } - - &._1f692 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 27.272727272727273% 10%; - } - - &._1f690 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 27.272727272727273% 20%; - } - - &._1f69a { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 0% 30%; - } - - &._1f69b { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 9.090909090909092% 30%; - } - - &._1f69c { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 18.181818181818183% 30%; - } - - &._1f6f4 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 27.272727272727273% 30%; - } - - &._1f6b2 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 36.36363636363637% 0%; - } - - &._1f6f5 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 36.36363636363637% 10%; - } - - &._1f3cd { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 36.36363636363637% 20%; - } - - &._1f6a8 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 36.36363636363637% 30%; - } - - &._1f694 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 0% 40%; - } - - &._1f68d { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 9.090909090909092% 40%; - } - - &._1f698 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 18.181818181818183% 40%; - } - - &._1f696 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 27.272727272727273% 40%; - } - - &._1f6a1 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 36.36363636363637% 40%; - } - - &._1f6a0 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 45.45454545454545% 0%; - } - - &._1f69f { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 45.45454545454545% 10%; - } - - &._1f683 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 45.45454545454545% 20%; - } - - &._1f68b { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 45.45454545454545% 30%; - } - - &._1f69e { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 45.45454545454545% 40%; - } - - &._1f69d { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 0% 50%; - } - - &._1f684 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 9.090909090909092% 50%; - } - - &._1f685 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 18.181818181818183% 50%; - } - - &._1f688 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 27.272727272727273% 50%; - } - - &._1f682 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 36.36363636363637% 50%; - } - - &._1f686 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 45.45454545454545% 50%; - } - - &._1f687 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 54.54545454545455% 0%; - } - - &._1f68a { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 54.54545454545455% 10%; - } - - &._1f689 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 54.54545454545455% 20%; - } - - &._1f6eb { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 54.54545454545455% 30%; - } - - &._1f6ec { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 54.54545454545455% 40%; - } - - &._1f6e9 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 54.54545454545455% 50%; - } - - &._1f4ba { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 0% 60%; - } - - &._1f9f3 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 9.090909090909092% 60%; - } - - &._1f6f0 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 18.181818181818183% 60%; - } - - &._1f680 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 27.272727272727273% 60%; - } - - &._1f6f8 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 36.36363636363637% 60%; - } - - &._1f681 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 45.45454545454545% 60%; - } - - &._1f6f6 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 54.54545454545455% 60%; - } - - &._26f5 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 63.63636363636363% 0%; - } - - &._1f6a4 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 63.63636363636363% 10%; - } - - &._1f6e5 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 63.63636363636363% 20%; - } - - &._1f6f3 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 63.63636363636363% 30%; - } - - &._26f4 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 63.63636363636363% 40%; - } - - &._1f6a2 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 63.63636363636363% 50%; - } - - &._26fd { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 63.63636363636363% 60%; - } - - &._1f6a7 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 0% 70%; - } - - &._1f6a6 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 9.090909090909092% 70%; - } - - &._1f6a5 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 18.181818181818183% 70%; - } - - &._1f68f { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 27.272727272727273% 70%; - } - - &._1f5fa { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 36.36363636363637% 70%; - } - - &._2708 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 45.45454545454545% 70%; - } - - &._1f5fd { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 54.54545454545455% 70%; - } - - &._1f5fc { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 63.63636363636363% 70%; - } - - &._1f3f0 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 72.72727272727273% 0%; - } - - &._1f3ef { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 72.72727272727273% 10%; - } - - &._1f3df { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 72.72727272727273% 20%; - } - - &._1f3a1 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 72.72727272727273% 30%; - } - - &._1f3a2 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 72.72727272727273% 40%; - } - - &._1f3a0 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 72.72727272727273% 50%; - } - - &._26f2 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 72.72727272727273% 60%; - } - - &._26f1 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 72.72727272727273% 70%; - } - - &._1f3d6 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 0% 80%; - } - - &._1f3dd { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 9.090909090909092% 80%; - } - - &._1f3dc { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 18.181818181818183% 80%; - } - - &._1f30b { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 27.272727272727273% 80%; - } - - &._26f0 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 36.36363636363637% 80%; - } - - &._1f3d4 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 45.45454545454545% 80%; - } - - &._1f5fb { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 54.54545454545455% 80%; - } - - &._1f3d5 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 63.63636363636363% 80%; - } - - &._26fa { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 72.72727272727273% 80%; - } - - &._1f3e0 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 81.81818181818181% 0%; - } - - &._1f3e1 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 81.81818181818181% 10%; - } - - &._1f3d8 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 81.81818181818181% 20%; - } - - &._1f3da { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 81.81818181818181% 30%; - } - - &._1f3d7 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 81.81818181818181% 40%; - } - - &._1f3ed { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 81.81818181818181% 50%; - } - - &._1f3e2 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 81.81818181818181% 60%; - } - - &._1f3ec { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 81.81818181818181% 70%; - } - - &._1f3e3 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 81.81818181818181% 80%; - } - - &._1f3e4 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 0% 90%; - } - - &._1f3e5 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 9.090909090909092% 90%; - } - - &._1f3e6 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 18.181818181818183% 90%; - } - - &._1f3e8 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 27.272727272727273% 90%; - } - - &._1f3ea { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 36.36363636363637% 90%; - } - - &._1f3eb { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 45.45454545454545% 90%; - } - - &._1f3e9 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 54.54545454545455% 90%; - } - - &._1f492 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 63.63636363636363% 90%; - } - - &._1f3db { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 72.72727272727273% 90%; - } - - &._26ea { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 81.81818181818181% 90%; - } - - &._1f54c { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 90.9090909090909% 0%; - } - - &._1f54d { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 90.9090909090909% 10%; - } - - &._1f54b { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 90.9090909090909% 20%; - } - - &._26e9 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 90.9090909090909% 30%; - } - - &._1f6e4 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 90.9090909090909% 40%; - } - - &._1f6e3 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 90.9090909090909% 50%; - } - - &._1f5fe { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 90.9090909090909% 60%; - } - - &._1f391 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 90.9090909090909% 70%; - } - - &._1f3de { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 90.9090909090909% 80%; - } - - &._1f305 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 90.9090909090909% 90%; - } - - &._1f304 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 0% 100%; - } - - &._1f320 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 9.090909090909092% 100%; - } - - &._1f387 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 18.181818181818183% 100%; - } - - &._1f386 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 27.272727272727273% 100%; - } - - &._1f9e8 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 36.36363636363637% 100%; - } - - &._1f307 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 45.45454545454545% 100%; - } - - &._1f306 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 54.54545454545455% 100%; - } - - &._1f3d9 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 63.63636363636363% 100%; - } - - &._1f303 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 72.72727272727273% 100%; - } - - &._1f30c { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 81.81818181818181% 100%; - } - - &._1f309 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 90.9090909090909% 100%; - } - - &._1f301 { - background-repeat: no-repeat; - background-size: 1200% 1100%; - background-position: 100% 0%; - } - -} - diff --git a/apps/meteor/app/emoji-emojione/lib/emojiPicker.ts b/apps/meteor/app/emoji-emojione/lib/emojiPicker.ts deleted file mode 100644 index ecc0c35eb8487..0000000000000 --- a/apps/meteor/app/emoji-emojione/lib/emojiPicker.ts +++ /dev/null @@ -1,1951 +0,0 @@ -/* - * This file is automatically generated from generateEmojiIndex.mjs - * Last generated Tue Apr 09 2019 15:27:21 GMT-0300 (-03) - * - * Mapping category hashes into human readable and translated names - */ - -export const emojiCategories = [ - { key: 'people', i18n: 'Smileys_and_People' }, - { key: 'nature', i18n: 'Animals_and_Nature' }, - { key: 'food', i18n: 'Food_and_Drink' }, - { key: 'activity', i18n: 'Activity' }, - { key: 'travel', i18n: 'Travel_and_Places' }, - { key: 'objects', i18n: 'Objects' }, - { key: 'symbols', i18n: 'Symbols' }, - { key: 'flags', i18n: 'Flags' }, -]; - -export const toneList = { - 'snowboarder': 1, - 'person_lifting_weights': 1, - 'woman_lifting_weights': 1, - 'man_lifting_weights': 1, - 'person_doing_cartwheel': 1, - 'woman_cartwheeling': 1, - 'man_cartwheeling': 1, - 'person_bouncing_ball': 1, - 'woman_bouncing_ball': 1, - 'man_bouncing_ball': 1, - 'person_playing_handball': 1, - 'woman_playing_handball': 1, - 'man_playing_handball': 1, - 'person_golfing': 1, - 'woman_golfing': 1, - 'man_golfing': 1, - 'horse_racing': 1, - 'person_in_lotus_position': 1, - 'woman_in_lotus_position': 1, - 'man_in_lotus_position': 1, - 'person_surfing': 1, - 'woman_surfing': 1, - 'man_surfing': 1, - 'person_swimming': 1, - 'woman_swimming': 1, - 'man_swimming': 1, - 'person_playing_water_polo': 1, - 'woman_playing_water_polo': 1, - 'man_playing_water_polo': 1, - 'person_rowing_boat': 1, - 'woman_rowing_boat': 1, - 'man_rowing_boat': 1, - 'person_climbing': 1, - 'woman_climbing': 1, - 'man_climbing': 1, - 'person_mountain_biking': 1, - 'woman_mountain_biking': 1, - 'man_mountain_biking': 1, - 'person_biking': 1, - 'woman_biking': 1, - 'man_biking': 1, - 'person_juggling': 1, - 'woman_juggling': 1, - 'man_juggling': 1, - 'bath': 1, - 'person_in_bed': 1, - 'palms_up_together': 1, - 'open_hands': 1, - 'raised_hands': 1, - 'clap': 1, - 'thumbsup': 1, - 'thumbsdown': 1, - 'punch': 1, - 'fist': 1, - 'left_facing_fist': 1, - 'right_facing_fist': 1, - 'fingers_crossed': 1, - 'v': 1, - 'love_you_gesture': 1, - 'metal': 1, - 'ok_hand': 1, - 'point_left': 1, - 'point_right': 1, - 'point_up_2': 1, - 'point_down': 1, - 'point_up': 1, - 'raised_hand': 1, - 'raised_back_of_hand': 1, - 'hand_splayed': 1, - 'vulcan': 1, - 'wave': 1, - 'call_me': 1, - 'muscle': 1, - 'leg': 1, - 'foot': 1, - 'middle_finger': 1, - 'writing_hand': 1, - 'pray': 1, - 'ear': 1, - 'nose': 1, - 'baby': 1, - 'girl': 1, - 'child': 1, - 'boy': 1, - 'woman': 1, - 'adult': 1, - 'man': 1, - 'blond_haired_person': 1, - 'blond-haired_woman': 1, - 'blond-haired_man': 1, - 'woman_red_haired': 1, - 'man_red_haired': 1, - 'woman_curly_haired': 1, - 'man_curly_haired': 1, - 'woman_white_haired': 1, - 'man_white_haired': 1, - 'woman_bald': 1, - 'man_bald': 1, - 'bearded_person': 1, - 'older_woman': 1, - 'older_adult': 1, - 'older_man': 1, - 'man_with_chinese_cap': 1, - 'person_wearing_turban': 1, - 'woman_wearing_turban': 1, - 'man_wearing_turban': 1, - 'woman_with_headscarf': 1, - 'police_officer': 1, - 'woman_police_officer': 1, - 'man_police_officer': 1, - 'construction_worker': 1, - 'woman_construction_worker': 1, - 'man_construction_worker': 1, - 'guard': 1, - 'woman_guard': 1, - 'man_guard': 1, - 'detective': 1, - 'woman_detective': 1, - 'man_detective': 1, - 'woman_health_worker': 1, - 'man_health_worker': 1, - 'woman_farmer': 1, - 'man_farmer': 1, - 'woman_cook': 1, - 'man_cook': 1, - 'woman_student': 1, - 'man_student': 1, - 'woman_singer': 1, - 'man_singer': 1, - 'woman_teacher': 1, - 'man_teacher': 1, - 'woman_factory_worker': 1, - 'man_factory_worker': 1, - 'woman_technologist': 1, - 'man_technologist': 1, - 'woman_office_worker': 1, - 'man_office_worker': 1, - 'woman_mechanic': 1, - 'man_mechanic': 1, - 'woman_scientist': 1, - 'man_scientist': 1, - 'woman_artist': 1, - 'man_artist': 1, - 'woman_firefighter': 1, - 'man_firefighter': 1, - 'woman_pilot': 1, - 'man_pilot': 1, - 'woman_astronaut': 1, - 'man_astronaut': 1, - 'woman_judge': 1, - 'man_judge': 1, - 'bride_with_veil': 1, - 'man_in_tuxedo': 1, - 'princess': 1, - 'prince': 1, - 'mrs_claus': 1, - 'santa': 1, - 'superhero': 1, - 'woman_superhero': 1, - 'man_superhero': 1, - 'supervillain': 1, - 'woman_supervillain': 1, - 'man_supervillain': 1, - 'mage': 1, - 'woman_mage': 1, - 'man_mage': 1, - 'elf': 1, - 'woman_elf': 1, - 'man_elf': 1, - 'vampire': 1, - 'woman_vampire': 1, - 'man_vampire': 1, - 'merperson': 1, - 'mermaid': 1, - 'merman': 1, - 'fairy': 1, - 'woman_fairy': 1, - 'man_fairy': 1, - 'angel': 1, - 'pregnant_woman': 1, - 'breast_feeding': 1, - 'person_bowing': 1, - 'woman_bowing': 1, - 'man_bowing': 1, - 'person_tipping_hand': 1, - 'woman_tipping_hand': 1, - 'man_tipping_hand': 1, - 'person_gesturing_no': 1, - 'woman_gesturing_no': 1, - 'man_gesturing_no': 1, - 'person_gesturing_ok': 1, - 'woman_gesturing_ok': 1, - 'man_gesturing_ok': 1, - 'person_raising_hand': 1, - 'woman_raising_hand': 1, - 'man_raising_hand': 1, - 'person_facepalming': 1, - 'woman_facepalming': 1, - 'man_facepalming': 1, - 'person_shrugging': 1, - 'woman_shrugging': 1, - 'man_shrugging': 1, - 'person_pouting': 1, - 'woman_pouting': 1, - 'man_pouting': 1, - 'person_frowning': 1, - 'woman_frowning': 1, - 'man_frowning': 1, - 'person_getting_haircut': 1, - 'woman_getting_haircut': 1, - 'man_getting_haircut': 1, - 'person_getting_massage': 1, - 'woman_getting_face_massage': 1, - 'man_getting_face_massage': 1, - 'person_in_steamy_room': 1, - 'woman_in_steamy_room': 1, - 'man_in_steamy_room': 1, - 'nail_care': 1, - 'selfie': 1, - 'dancer': 1, - 'man_dancing': 1, - 'levitate': 1, - 'person_walking': 1, - 'woman_walking': 1, - 'man_walking': 1, - 'person_running': 1, - 'woman_running': 1, - 'man_running': 1, -}; -export const emojisByCategory = { - symbols: [ - 'heart', - 'orange_heart', - 'yellow_heart', - 'green_heart', - 'blue_heart', - 'purple_heart', - 'black_heart', - 'broken_heart', - 'heart_exclamation', - 'two_hearts', - 'revolving_hearts', - 'heartbeat', - 'heartpulse', - 'sparkling_heart', - 'cupid', - 'gift_heart', - 'heart_decoration', - 'peace', - 'cross', - 'star_and_crescent', - 'om_symbol', - 'wheel_of_dharma', - 'star_of_david', - 'six_pointed_star', - 'menorah', - 'yin_yang', - 'orthodox_cross', - 'place_of_worship', - 'ophiuchus', - 'aries', - 'taurus', - 'gemini', - 'cancer', - 'leo', - 'virgo', - 'libra', - 'scorpius', - 'sagittarius', - 'capricorn', - 'aquarius', - 'pisces', - 'id', - 'atom', - 'infinity', - 'accept', - 'radioactive', - 'biohazard', - 'mobile_phone_off', - 'vibration_mode', - 'u6709', - 'u7121', - 'u7533', - 'u55b6', - 'u6708', - 'eight_pointed_black_star', - 'vs', - 'white_flower', - 'ideograph_advantage', - 'secret', - 'congratulations', - 'u5408', - 'u6e80', - 'u5272', - 'u7981', - 'a', - 'b', - 'ab', - 'cl', - 'o2', - 'sos', - 'x', - 'o', - 'octagonal_sign', - 'no_entry', - 'name_badge', - 'no_entry_sign', - '100', - 'anger', - 'hotsprings', - 'no_pedestrians', - 'do_not_litter', - 'no_bicycles', - 'non-potable_water', - 'underage', - 'no_mobile_phones', - 'no_smoking', - 'exclamation', - 'grey_exclamation', - 'question', - 'grey_question', - 'bangbang', - 'interrobang', - 'low_brightness', - 'high_brightness', - 'part_alternation_mark', - 'warning', - 'children_crossing', - 'trident', - 'fleur-de-lis', - 'beginner', - 'recycle', - 'white_check_mark', - 'u6307', - 'chart', - 'sparkle', - 'eight_spoked_asterisk', - 'negative_squared_cross_mark', - 'globe_with_meridians', - 'diamond_shape_with_a_dot_inside', - 'm', - 'cyclone', - 'zzz', - 'atm', - 'wc', - 'wheelchair', - 'parking', - 'u7a7a', - 'sa', - 'passport_control', - 'customs', - 'baggage_claim', - 'left_luggage', - 'mens', - 'womens', - 'baby_symbol', - 'restroom', - 'put_litter_in_its_place', - 'cinema', - 'signal_strength', - 'koko', - 'symbols', - 'information_source', - 'abc', - 'abcd', - 'capital_abcd', - 'ng', - 'ok', - 'up', - 'cool', - 'new', - 'free', - 'zero', - 'one', - 'two', - 'three', - 'four', - 'five', - 'six', - 'seven', - 'eight', - 'nine', - 'keycap_ten', - '1234', - 'hash', - 'asterisk', - 'eject', - 'arrow_forward', - 'pause_button', - 'play_pause', - 'stop_button', - 'record_button', - 'track_next', - 'track_previous', - 'fast_forward', - 'rewind', - 'arrow_double_up', - 'arrow_double_down', - 'arrow_backward', - 'arrow_up_small', - 'arrow_down_small', - 'arrow_right', - 'arrow_left', - 'arrow_up', - 'arrow_down', - 'arrow_upper_right', - 'arrow_lower_right', - 'arrow_lower_left', - 'arrow_upper_left', - 'arrow_up_down', - 'left_right_arrow', - 'arrow_right_hook', - 'leftwards_arrow_with_hook', - 'arrow_heading_up', - 'arrow_heading_down', - 'twisted_rightwards_arrows', - 'repeat', - 'repeat_one', - 'arrows_counterclockwise', - 'arrows_clockwise', - 'musical_note', - 'notes', - 'heavy_plus_sign', - 'heavy_minus_sign', - 'heavy_division_sign', - 'heavy_multiplication_x', - 'heavy_dollar_sign', - 'currency_exchange', - 'tm', - 'copyright', - 'registered', - 'wavy_dash', - 'curly_loop', - 'loop', - 'end', - 'back', - 'on', - 'top', - 'soon', - 'heavy_check_mark', - 'ballot_box_with_check', - 'radio_button', - 'white_circle', - 'black_circle', - 'red_circle', - 'blue_circle', - 'small_red_triangle', - 'small_red_triangle_down', - 'small_orange_diamond', - 'small_blue_diamond', - 'large_orange_diamond', - 'large_blue_diamond', - 'white_square_button', - 'black_square_button', - 'black_small_square', - 'white_small_square', - 'black_medium_small_square', - 'white_medium_small_square', - 'black_medium_square', - 'white_medium_square', - 'black_large_square', - 'white_large_square', - 'speaker', - 'mute', - 'sound', - 'loud_sound', - 'bell', - 'no_bell', - 'mega', - 'loudspeaker', - 'speech_left', - 'eye_in_speech_bubble', - 'speech_balloon', - 'thought_balloon', - 'anger_right', - 'spades', - 'clubs', - 'hearts', - 'diamonds', - 'black_joker', - 'flower_playing_cards', - 'mahjong', - 'clock1', - 'clock2', - 'clock3', - 'clock4', - 'clock5', - 'clock6', - 'clock7', - 'clock8', - 'clock9', - 'clock10', - 'clock11', - 'clock12', - 'clock130', - 'clock230', - 'clock330', - 'clock430', - 'clock530', - 'clock630', - 'clock730', - 'clock830', - 'clock930', - 'clock1030', - 'clock1130', - 'clock1230', - 'digit_zero', - 'digit_one', - 'digit_two', - 'digit_three', - 'digit_four', - 'digit_five', - 'digit_six', - 'digit_seven', - 'digit_eight', - 'digit_nine', - 'pound_symbol', - 'asterisk_symbol', - 'female_sign', - 'male_sign', - 'medical_symbol', - ], - activity: [ - 'soccer', - 'basketball', - 'football', - 'baseball', - 'softball', - 'tennis', - 'volleyball', - 'rugby_football', - '8ball', - 'ping_pong', - 'badminton', - 'goal', - 'hockey', - 'field_hockey', - 'cricket_game', - 'lacrosse', - 'golf', - 'flying_disc', - 'bow_and_arrow', - 'fishing_pole_and_fish', - 'boxing_glove', - 'martial_arts_uniform', - 'running_shirt_with_sash', - 'skateboard', - 'ice_skate', - 'curling_stone', - 'sled', - 'ski', - 'skier', - 'snowboarder', - 'person_lifting_weights', - 'woman_lifting_weights', - 'man_lifting_weights', - 'people_wrestling', - 'women_wrestling', - 'men_wrestling', - 'person_doing_cartwheel', - 'woman_cartwheeling', - 'man_cartwheeling', - 'person_bouncing_ball', - 'woman_bouncing_ball', - 'man_bouncing_ball', - 'person_fencing', - 'person_playing_handball', - 'woman_playing_handball', - 'man_playing_handball', - 'person_golfing', - 'woman_golfing', - 'man_golfing', - 'horse_racing', - 'person_in_lotus_position', - 'woman_in_lotus_position', - 'man_in_lotus_position', - 'person_surfing', - 'woman_surfing', - 'man_surfing', - 'person_swimming', - 'woman_swimming', - 'man_swimming', - 'person_playing_water_polo', - 'woman_playing_water_polo', - 'man_playing_water_polo', - 'person_rowing_boat', - 'woman_rowing_boat', - 'man_rowing_boat', - 'person_climbing', - 'woman_climbing', - 'man_climbing', - 'person_mountain_biking', - 'woman_mountain_biking', - 'man_mountain_biking', - 'person_biking', - 'woman_biking', - 'man_biking', - 'trophy', - 'first_place', - 'second_place', - 'third_place', - 'medal', - 'military_medal', - 'rosette', - 'reminder_ribbon', - 'ticket', - 'tickets', - 'circus_tent', - 'person_juggling', - 'woman_juggling', - 'man_juggling', - 'performing_arts', - 'art', - 'clapper', - 'microphone', - 'headphones', - 'musical_score', - 'musical_keyboard', - 'drum', - 'saxophone', - 'trumpet', - 'guitar', - 'violin', - 'game_die', - 'dart', - 'bowling', - 'video_game', - 'slot_machine', - ], - objects: [ - 'watch', - 'iphone', - 'calling', - 'computer', - 'keyboard', - 'desktop', - 'printer', - 'mouse_three_button', - 'trackball', - 'joystick', - 'chess_pawn', - 'jigsaw', - 'compression', - 'minidisc', - 'floppy_disk', - 'cd', - 'dvd', - 'vhs', - 'camera', - 'camera_with_flash', - 'video_camera', - 'movie_camera', - 'projector', - 'film_frames', - 'telephone_receiver', - 'telephone', - 'pager', - 'fax', - 'tv', - 'radio', - 'microphone2', - 'level_slider', - 'control_knobs', - 'stopwatch', - 'timer', - 'alarm_clock', - 'clock', - 'hourglass', - 'hourglass_flowing_sand', - 'satellite', - 'compass', - 'battery', - 'electric_plug', - 'magnet', - 'bulb', - 'flashlight', - 'candle', - 'fire_extinguisher', - 'wastebasket', - 'oil', - 'money_with_wings', - 'dollar', - 'yen', - 'euro', - 'pound', - 'moneybag', - 'credit_card', - 'gem', - 'nazar_amulet', - 'bricks', - 'scales', - 'toolbox', - 'wrench', - 'hammer', - 'hammer_pick', - 'tools', - 'pick', - 'nut_and_bolt', - 'gear', - 'chains', - 'gun', - 'bomb', - 'knife', - 'dagger', - 'crossed_swords', - 'shield', - 'smoking', - 'coffin', - 'urn', - 'amphora', - 'crystal_ball', - 'prayer_beads', - 'barber', - 'alembic', - 'test_tube', - 'petri_dish', - 'dna', - 'abacus', - 'telescope', - 'microscope', - 'hole', - 'pill', - 'syringe', - 'thermometer', - 'toilet', - 'potable_water', - 'shower', - 'bathtub', - 'bath', - 'broom', - 'basket', - 'roll_of_paper', - 'soap', - 'sponge', - 'squeeze_bottle', - 'thread', - 'yarn', - 'bellhop', - 'key', - 'key2', - 'door', - 'couch', - 'bed', - 'sleeping_accommodation', - 'teddy_bear', - 'frame_photo', - 'shopping_bags', - 'shopping_cart', - 'gift', - 'balloon', - 'flags', - 'ribbon', - 'confetti_ball', - 'tada', - 'dolls', - 'izakaya_lantern', - 'wind_chime', - 'red_envelope', - 'envelope', - 'envelope_with_arrow', - 'incoming_envelope', - 'e-mail', - 'love_letter', - 'inbox_tray', - 'outbox_tray', - 'package', - 'label', - 'mailbox_closed', - 'mailbox', - 'mailbox_with_mail', - 'mailbox_with_no_mail', - 'postbox', - 'postal_horn', - 'scroll', - 'page_with_curl', - 'page_facing_up', - 'receipt', - 'bookmark_tabs', - 'bar_chart', - 'chart_with_upwards_trend', - 'chart_with_downwards_trend', - 'notepad_spiral', - 'calendar_spiral', - 'calendar', - 'date', - 'card_index', - 'card_box', - 'ballot_box', - 'file_cabinet', - 'clipboard', - 'file_folder', - 'open_file_folder', - 'dividers', - 'newspaper2', - 'newspaper', - 'notebook', - 'notebook_with_decorative_cover', - 'ledger', - 'closed_book', - 'green_book', - 'blue_book', - 'orange_book', - 'books', - 'book', - 'bookmark', - 'link', - 'paperclip', - 'paperclips', - 'triangular_ruler', - 'straight_ruler', - 'safety_pin', - 'pushpin', - 'round_pushpin', - 'scissors', - 'pen_ballpoint', - 'pen_fountain', - 'black_nib', - 'paintbrush', - 'crayon', - 'pencil', - 'pencil2', - 'mag', - 'mag_right', - 'lock_with_ink_pen', - 'closed_lock_with_key', - 'lock', - 'unlock', - ], - nature: [ - 'dog', - 'cat', - 'mouse', - 'hamster', - 'rabbit', - 'fox', - 'raccoon', - 'bear', - 'panda_face', - 'kangaroo', - 'badger', - 'koala', - 'tiger', - 'lion_face', - 'cow', - 'pig', - 'pig_nose', - 'frog', - 'monkey_face', - 'see_no_evil', - 'hear_no_evil', - 'speak_no_evil', - 'monkey', - 'chicken', - 'penguin', - 'bird', - 'baby_chick', - 'hatching_chick', - 'hatched_chick', - 'duck', - 'swan', - 'eagle', - 'owl', - 'parrot', - 'peacock', - 'bat', - 'wolf', - 'boar', - 'horse', - 'unicorn', - 'bee', - 'bug', - 'butterfly', - 'snail', - 'shell', - 'beetle', - 'ant', - 'cricket', - 'spider', - 'spider_web', - 'scorpion', - 'mosquito', - 'microbe', - 'turtle', - 'snake', - 'lizard', - 't_rex', - 'sauropod', - 'octopus', - 'squid', - 'shrimp', - 'crab', - 'lobster', - 'blowfish', - 'tropical_fish', - 'fish', - 'dolphin', - 'whale', - 'whale2', - 'shark', - 'crocodile', - 'tiger2', - 'leopard', - 'zebra', - 'gorilla', - 'elephant', - 'rhino', - 'hippopotamus', - 'dromedary_camel', - 'camel', - 'giraffe', - 'llama', - 'water_buffalo', - 'ox', - 'cow2', - 'racehorse', - 'pig2', - 'ram', - 'sheep', - 'goat', - 'deer', - 'dog2', - 'poodle', - 'cat2', - 'rooster', - 'turkey', - 'dove', - 'rabbit2', - 'mouse2', - 'rat', - 'chipmunk', - 'hedgehog', - 'feet', - 'dragon', - 'dragon_face', - 'cactus', - 'christmas_tree', - 'evergreen_tree', - 'deciduous_tree', - 'palm_tree', - 'seedling', - 'herb', - 'shamrock', - 'four_leaf_clover', - 'bamboo', - 'tanabata_tree', - 'leaves', - 'fallen_leaf', - 'maple_leaf', - 'mushroom', - 'ear_of_rice', - 'bouquet', - 'tulip', - 'rose', - 'wilted_rose', - 'hibiscus', - 'cherry_blossom', - 'blossom', - 'sunflower', - 'sun_with_face', - 'full_moon_with_face', - 'first_quarter_moon_with_face', - 'last_quarter_moon_with_face', - 'new_moon_with_face', - 'full_moon', - 'waning_gibbous_moon', - 'last_quarter_moon', - 'waning_crescent_moon', - 'new_moon', - 'waxing_crescent_moon', - 'first_quarter_moon', - 'waxing_gibbous_moon', - 'crescent_moon', - 'earth_americas', - 'earth_africa', - 'earth_asia', - 'dizzy', - 'star', - 'star2', - 'sparkles', - 'zap', - 'comet', - 'boom', - 'fire', - 'cloud_tornado', - 'rainbow', - 'sunny', - 'white_sun_small_cloud', - 'partly_sunny', - 'white_sun_cloud', - 'cloud', - 'white_sun_rain_cloud', - 'cloud_rain', - 'thunder_cloud_rain', - 'cloud_lightning', - 'cloud_snow', - 'snowflake', - 'snowman2', - 'snowman', - 'wind_blowing_face', - 'dash', - 'droplet', - 'sweat_drops', - 'umbrella', - 'umbrella2', - 'ocean', - 'fog', - ], - food: [ - 'green_apple', - 'apple', - 'pear', - 'tangerine', - 'lemon', - 'banana', - 'watermelon', - 'grapes', - 'strawberry', - 'melon', - 'cherries', - 'peach', - 'mango', - 'pineapple', - 'coconut', - 'kiwi', - 'tomato', - 'eggplant', - 'avocado', - 'broccoli', - 'leafy_green', - 'cucumber', - 'hot_pepper', - 'corn', - 'carrot', - 'potato', - 'sweet_potato', - 'croissant', - 'bread', - 'french_bread', - 'pretzel', - 'bagel', - 'cheese', - 'egg', - 'cooking', - 'pancakes', - 'bacon', - 'cut_of_meat', - 'poultry_leg', - 'meat_on_bone', - 'hotdog', - 'hamburger', - 'fries', - 'pizza', - 'sandwich', - 'stuffed_flatbread', - 'taco', - 'burrito', - 'salad', - 'shallow_pan_of_food', - 'canned_food', - 'spaghetti', - 'ramen', - 'stew', - 'curry', - 'sushi', - 'bento', - 'fried_shrimp', - 'rice_ball', - 'rice', - 'rice_cracker', - 'fish_cake', - 'fortune_cookie', - 'oden', - 'dango', - 'shaved_ice', - 'ice_cream', - 'icecream', - 'pie', - 'cake', - 'birthday', - 'moon_cake', - 'cupcake', - 'custard', - 'lollipop', - 'candy', - 'chocolate_bar', - 'popcorn', - 'salt', - 'doughnut', - 'dumpling', - 'cookie', - 'chestnut', - 'peanuts', - 'honey_pot', - 'milk', - 'baby_bottle', - 'coffee', - 'tea', - 'cup_with_straw', - 'sake', - 'beer', - 'beers', - 'champagne_glass', - 'wine_glass', - 'tumbler_glass', - 'cocktail', - 'tropical_drink', - 'champagne', - 'spoon', - 'fork_and_knife', - 'fork_knife_plate', - 'bowl_with_spoon', - 'takeout_box', - 'chopsticks', - ], - people: [ - 'grinning', - 'smiley', - 'smile', - 'grin', - 'laughing', - 'sweat_smile', - 'joy', - 'rofl', - 'relaxed', - 'blush', - 'innocent', - 'slight_smile', - 'upside_down', - 'wink', - 'relieved', - 'heart_eyes', - 'kissing_heart', - 'smiling_face_with_3_hearts', - 'kissing', - 'kissing_smiling_eyes', - 'kissing_closed_eyes', - 'yum', - 'stuck_out_tongue', - 'stuck_out_tongue_closed_eyes', - 'stuck_out_tongue_winking_eye', - 'zany_face', - 'face_with_raised_eyebrow', - 'face_with_monocle', - 'nerd', - 'sunglasses', - 'star_struck', - 'partying_face', - 'smirk', - 'unamused', - 'disappointed', - 'pensive', - 'worried', - 'confused', - 'slight_frown', - 'frowning2', - 'persevere', - 'confounded', - 'tired_face', - 'weary', - 'cry', - 'sob', - 'triumph', - 'angry', - 'rage', - 'face_with_symbols_over_mouth', - 'exploding_head', - 'flushed', - 'scream', - 'fearful', - 'cold_sweat', - 'hot_face', - 'cold_face', - 'pleading_face', - 'disappointed_relieved', - 'sweat', - 'hugging', - 'thinking', - 'face_with_hand_over_mouth', - 'shushing_face', - 'lying_face', - 'no_mouth', - 'neutral_face', - 'expressionless', - 'grimacing', - 'rolling_eyes', - 'hushed', - 'frowning', - 'anguished', - 'open_mouth', - 'astonished', - 'sleeping', - 'drooling_face', - 'sleepy', - 'dizzy_face', - 'zipper_mouth', - 'woozy_face', - 'nauseated_face', - 'face_vomiting', - 'sneezing_face', - 'mask', - 'thermometer_face', - 'head_bandage', - 'money_mouth', - 'cowboy', - 'smiling_imp', - 'imp', - 'japanese_ogre', - 'japanese_goblin', - 'clown', - 'poop', - 'ghost', - 'skull', - 'skull_crossbones', - 'alien', - 'space_invader', - 'robot', - 'jack_o_lantern', - 'smiley_cat', - 'smile_cat', - 'joy_cat', - 'heart_eyes_cat', - 'smirk_cat', - 'kissing_cat', - 'scream_cat', - 'crying_cat_face', - 'pouting_cat', - 'palms_up_together', - 'open_hands', - 'raised_hands', - 'clap', - 'handshake', - 'thumbsup', - 'thumbsdown', - 'punch', - 'fist', - 'left_facing_fist', - 'right_facing_fist', - 'fingers_crossed', - 'v', - 'love_you_gesture', - 'metal', - 'ok_hand', - 'point_left', - 'point_right', - 'point_up_2', - 'point_down', - 'point_up', - 'raised_hand', - 'raised_back_of_hand', - 'hand_splayed', - 'vulcan', - 'wave', - 'call_me', - 'muscle', - 'leg', - 'foot', - 'middle_finger', - 'writing_hand', - 'pray', - 'ring', - 'lipstick', - 'kiss', - 'lips', - 'tongue', - 'ear', - 'nose', - 'footprints', - 'eye', - 'eyes', - 'brain', - 'bone', - 'tooth', - 'speaking_head', - 'bust_in_silhouette', - 'busts_in_silhouette', - 'baby', - 'girl', - 'child', - 'boy', - 'woman', - 'adult', - 'man', - 'blond_haired_person', - 'blond-haired_woman', - 'blond-haired_man', - 'woman_red_haired', - 'man_red_haired', - 'woman_curly_haired', - 'man_curly_haired', - 'woman_white_haired', - 'man_white_haired', - 'woman_bald', - 'man_bald', - 'bearded_person', - 'older_woman', - 'older_adult', - 'older_man', - 'man_with_chinese_cap', - 'person_wearing_turban', - 'woman_wearing_turban', - 'man_wearing_turban', - 'woman_with_headscarf', - 'police_officer', - 'woman_police_officer', - 'man_police_officer', - 'construction_worker', - 'woman_construction_worker', - 'man_construction_worker', - 'guard', - 'woman_guard', - 'man_guard', - 'detective', - 'woman_detective', - 'man_detective', - 'woman_health_worker', - 'man_health_worker', - 'woman_farmer', - 'man_farmer', - 'woman_cook', - 'man_cook', - 'woman_student', - 'man_student', - 'woman_singer', - 'man_singer', - 'woman_teacher', - 'man_teacher', - 'woman_factory_worker', - 'man_factory_worker', - 'woman_technologist', - 'man_technologist', - 'woman_office_worker', - 'man_office_worker', - 'woman_mechanic', - 'man_mechanic', - 'woman_scientist', - 'man_scientist', - 'woman_artist', - 'man_artist', - 'woman_firefighter', - 'man_firefighter', - 'woman_pilot', - 'man_pilot', - 'woman_astronaut', - 'man_astronaut', - 'woman_judge', - 'man_judge', - 'bride_with_veil', - 'man_in_tuxedo', - 'princess', - 'prince', - 'mrs_claus', - 'santa', - 'superhero', - 'woman_superhero', - 'man_superhero', - 'supervillain', - 'woman_supervillain', - 'man_supervillain', - 'mage', - 'woman_mage', - 'man_mage', - 'elf', - 'woman_elf', - 'man_elf', - 'vampire', - 'woman_vampire', - 'man_vampire', - 'zombie', - 'woman_zombie', - 'man_zombie', - 'genie', - 'woman_genie', - 'man_genie', - 'merperson', - 'mermaid', - 'merman', - 'fairy', - 'woman_fairy', - 'man_fairy', - 'angel', - 'pregnant_woman', - 'breast_feeding', - 'person_bowing', - 'woman_bowing', - 'man_bowing', - 'person_tipping_hand', - 'woman_tipping_hand', - 'man_tipping_hand', - 'person_gesturing_no', - 'woman_gesturing_no', - 'man_gesturing_no', - 'person_gesturing_ok', - 'woman_gesturing_ok', - 'man_gesturing_ok', - 'person_raising_hand', - 'woman_raising_hand', - 'man_raising_hand', - 'person_facepalming', - 'woman_facepalming', - 'man_facepalming', - 'person_shrugging', - 'woman_shrugging', - 'man_shrugging', - 'person_pouting', - 'woman_pouting', - 'man_pouting', - 'person_frowning', - 'woman_frowning', - 'man_frowning', - 'person_getting_haircut', - 'woman_getting_haircut', - 'man_getting_haircut', - 'person_getting_massage', - 'woman_getting_face_massage', - 'man_getting_face_massage', - 'person_in_steamy_room', - 'woman_in_steamy_room', - 'man_in_steamy_room', - 'nail_care', - 'selfie', - 'dancer', - 'man_dancing', - 'people_with_bunny_ears_partying', - 'women_with_bunny_ears_partying', - 'men_with_bunny_ears_partying', - 'levitate', - 'person_walking', - 'woman_walking', - 'man_walking', - 'person_running', - 'woman_running', - 'man_running', - 'couple', - 'two_women_holding_hands', - 'two_men_holding_hands', - 'couple_with_heart', - 'couple_with_heart_woman_man', - 'couple_ww', - 'couple_mm', - 'couplekiss', - 'kiss_woman_man', - 'kiss_ww', - 'kiss_mm', - 'family', - 'family_man_woman_boy', - 'family_mwg', - 'family_mwgb', - 'family_mwbb', - 'family_mwgg', - 'family_wwb', - 'family_wwg', - 'family_wwgb', - 'family_wwbb', - 'family_wwgg', - 'family_mmb', - 'family_mmg', - 'family_mmgb', - 'family_mmbb', - 'family_mmgg', - 'family_woman_boy', - 'family_woman_girl', - 'family_woman_girl_boy', - 'family_woman_boy_boy', - 'family_woman_girl_girl', - 'family_man_boy', - 'family_man_girl', - 'family_man_girl_boy', - 'family_man_boy_boy', - 'family_man_girl_girl', - 'coat', - 'womans_clothes', - 'shirt', - 'jeans', - 'necktie', - 'dress', - 'bikini', - 'kimono', - 'lab_coat', - 'high_heel', - 'sandal', - 'boot', - 'mans_shoe', - 'athletic_shoe', - 'hiking_boot', - 'womans_flat_shoe', - 'socks', - 'gloves', - 'scarf', - 'tophat', - 'billed_cap', - 'womans_hat', - 'mortar_board', - 'helmet_with_cross', - 'crown', - 'pouch', - 'purse', - 'handbag', - 'briefcase', - 'school_satchel', - 'eyeglasses', - 'dark_sunglasses', - 'goggles', - 'closed_umbrella', - 'red_haired', - 'curly_haired', - 'white_haired', - 'bald', - ], - regional: [ - 'regional_indicator_z', - 'regional_indicator_y', - 'regional_indicator_x', - 'regional_indicator_w', - 'regional_indicator_v', - 'regional_indicator_u', - 'regional_indicator_t', - 'regional_indicator_s', - 'regional_indicator_r', - 'regional_indicator_q', - 'regional_indicator_p', - 'regional_indicator_o', - 'regional_indicator_n', - 'regional_indicator_m', - 'regional_indicator_l', - 'regional_indicator_k', - 'regional_indicator_j', - 'regional_indicator_i', - 'regional_indicator_h', - 'regional_indicator_g', - 'regional_indicator_f', - 'regional_indicator_e', - 'regional_indicator_d', - 'regional_indicator_c', - 'regional_indicator_b', - 'regional_indicator_a', - ], - travel: [ - 'red_car', - 'taxi', - 'blue_car', - 'bus', - 'trolleybus', - 'race_car', - 'police_car', - 'ambulance', - 'fire_engine', - 'minibus', - 'truck', - 'articulated_lorry', - 'tractor', - 'scooter', - 'bike', - 'motor_scooter', - 'motorcycle', - 'rotating_light', - 'oncoming_police_car', - 'oncoming_bus', - 'oncoming_automobile', - 'oncoming_taxi', - 'aerial_tramway', - 'mountain_cableway', - 'suspension_railway', - 'railway_car', - 'train', - 'mountain_railway', - 'monorail', - 'bullettrain_side', - 'bullettrain_front', - 'light_rail', - 'steam_locomotive', - 'train2', - 'metro', - 'tram', - 'station', - 'airplane', - 'airplane_departure', - 'airplane_arriving', - 'airplane_small', - 'seat', - 'luggage', - 'satellite_orbital', - 'rocket', - 'flying_saucer', - 'helicopter', - 'canoe', - 'sailboat', - 'speedboat', - 'motorboat', - 'cruise_ship', - 'ferry', - 'ship', - 'anchor', - 'fuelpump', - 'construction', - 'vertical_traffic_light', - 'traffic_light', - 'busstop', - 'map', - 'moyai', - 'statue_of_liberty', - 'tokyo_tower', - 'european_castle', - 'japanese_castle', - 'stadium', - 'ferris_wheel', - 'roller_coaster', - 'carousel_horse', - 'fountain', - 'beach_umbrella', - 'beach', - 'island', - 'desert', - 'volcano', - 'mountain', - 'mountain_snow', - 'mount_fuji', - 'camping', - 'tent', - 'house', - 'house_with_garden', - 'homes', - 'house_abandoned', - 'construction_site', - 'factory', - 'office', - 'department_store', - 'post_office', - 'european_post_office', - 'hospital', - 'bank', - 'hotel', - 'convenience_store', - 'school', - 'love_hotel', - 'wedding', - 'classical_building', - 'church', - 'mosque', - 'synagogue', - 'kaaba', - 'shinto_shrine', - 'railway_track', - 'motorway', - 'japan', - 'rice_scene', - 'park', - 'sunrise', - 'sunrise_over_mountains', - 'stars', - 'sparkler', - 'fireworks', - 'firecracker', - 'city_sunset', - 'city_dusk', - 'cityscape', - 'night_with_stars', - 'milky_way', - 'bridge_at_night', - 'foggy', - ], - flags: [ - 'flag_white', - 'flag_black', - 'checkered_flag', - 'triangular_flag_on_post', - 'rainbow_flag', - 'pirate_flag', - 'flag_af', - 'flag_ax', - 'flag_al', - 'flag_dz', - 'flag_as', - 'flag_ad', - 'flag_ao', - 'flag_ai', - 'flag_aq', - 'flag_ag', - 'flag_ar', - 'flag_am', - 'flag_aw', - 'flag_au', - 'flag_at', - 'flag_az', - 'flag_bs', - 'flag_bh', - 'flag_bd', - 'flag_bb', - 'flag_by', - 'flag_be', - 'flag_bz', - 'flag_bj', - 'flag_bm', - 'flag_bt', - 'flag_bo', - 'flag_ba', - 'flag_bw', - 'flag_br', - 'flag_io', - 'flag_vg', - 'flag_bn', - 'flag_bg', - 'flag_bf', - 'flag_bi', - 'flag_kh', - 'flag_cm', - 'flag_ca', - 'flag_ic', - 'flag_cv', - 'flag_bq', - 'flag_ky', - 'flag_cf', - 'flag_td', - 'flag_cl', - 'flag_cn', - 'flag_cx', - 'flag_cc', - 'flag_co', - 'flag_km', - 'flag_cg', - 'flag_cd', - 'flag_ck', - 'flag_cr', - 'flag_ci', - 'flag_hr', - 'flag_cu', - 'flag_cw', - 'flag_cy', - 'flag_cz', - 'flag_dk', - 'flag_dj', - 'flag_dm', - 'flag_do', - 'flag_ec', - 'flag_eg', - 'flag_sv', - 'flag_gq', - 'flag_er', - 'flag_ee', - 'flag_et', - 'flag_eu', - 'flag_fk', - 'flag_fo', - 'flag_fj', - 'flag_fi', - 'flag_fr', - 'flag_gf', - 'flag_pf', - 'flag_tf', - 'flag_ga', - 'flag_gm', - 'flag_ge', - 'flag_de', - 'flag_gh', - 'flag_gi', - 'flag_gr', - 'flag_gl', - 'flag_gd', - 'flag_gp', - 'flag_gu', - 'flag_gt', - 'flag_gg', - 'flag_gn', - 'flag_gw', - 'flag_gy', - 'flag_ht', - 'flag_hn', - 'flag_hk', - 'flag_hu', - 'flag_is', - 'flag_in', - 'flag_id', - 'flag_ir', - 'flag_iq', - 'flag_ie', - 'flag_im', - 'flag_il', - 'flag_it', - 'flag_jm', - 'flag_jp', - 'crossed_flags', - 'flag_je', - 'flag_jo', - 'flag_kz', - 'flag_ke', - 'flag_ki', - 'flag_xk', - 'flag_kw', - 'flag_kg', - 'flag_la', - 'flag_lv', - 'flag_lb', - 'flag_ls', - 'flag_lr', - 'flag_ly', - 'flag_li', - 'flag_lt', - 'flag_lu', - 'flag_mo', - 'flag_mk', - 'flag_mg', - 'flag_mw', - 'flag_my', - 'flag_mv', - 'flag_ml', - 'flag_mt', - 'flag_mh', - 'flag_mq', - 'flag_mr', - 'flag_mu', - 'flag_yt', - 'flag_mx', - 'flag_fm', - 'flag_md', - 'flag_mc', - 'flag_mn', - 'flag_me', - 'flag_ms', - 'flag_ma', - 'flag_mz', - 'flag_mm', - 'flag_na', - 'flag_nr', - 'flag_np', - 'flag_nl', - 'flag_nc', - 'flag_nz', - 'flag_ni', - 'flag_ne', - 'flag_ng', - 'flag_nu', - 'flag_nf', - 'flag_kp', - 'flag_mp', - 'flag_no', - 'flag_om', - 'flag_pk', - 'flag_pw', - 'flag_ps', - 'flag_pa', - 'flag_pg', - 'flag_py', - 'flag_pe', - 'flag_ph', - 'flag_pn', - 'flag_pl', - 'flag_pt', - 'flag_pr', - 'flag_qa', - 'flag_re', - 'flag_ro', - 'flag_ru', - 'flag_rw', - 'flag_ws', - 'flag_sm', - 'flag_st', - 'flag_sa', - 'flag_sn', - 'flag_rs', - 'flag_sc', - 'flag_sl', - 'flag_sg', - 'flag_sx', - 'flag_sk', - 'flag_si', - 'flag_gs', - 'flag_sb', - 'flag_so', - 'flag_za', - 'flag_kr', - 'flag_ss', - 'flag_es', - 'flag_lk', - 'flag_bl', - 'flag_sh', - 'flag_kn', - 'flag_lc', - 'flag_pm', - 'flag_vc', - 'flag_sd', - 'flag_sr', - 'flag_sz', - 'flag_se', - 'flag_ch', - 'flag_sy', - 'flag_tw', - 'flag_tj', - 'flag_tz', - 'flag_th', - 'flag_tl', - 'flag_tg', - 'flag_tk', - 'flag_to', - 'flag_tt', - 'flag_tn', - 'flag_tr', - 'flag_tm', - 'flag_tc', - 'flag_vi', - 'flag_tv', - 'flag_ug', - 'flag_ua', - 'flag_ae', - 'flag_gb', - 'england', - 'scotland', - 'wales', - 'flag_us', - 'flag_uy', - 'flag_uz', - 'flag_vu', - 'flag_va', - 'flag_ve', - 'flag_vn', - 'flag_wf', - 'flag_eh', - 'flag_ye', - 'flag_zm', - 'flag_zw', - 'flag_ac', - 'flag_bv', - 'flag_cp', - 'flag_ea', - 'flag_dg', - 'flag_hm', - 'flag_mf', - 'flag_sj', - 'flag_ta', - 'flag_um', - 'united_nations', - ], - modifier: ['tone1', 'tone2', 'tone3', 'tone4', 'tone5'], -}; diff --git a/apps/meteor/app/emoji-emojione/lib/emojione.tpl b/apps/meteor/app/emoji-emojione/lib/emojione.tpl deleted file mode 100644 index b7426fb4370fe..0000000000000 --- a/apps/meteor/app/emoji-emojione/lib/emojione.tpl +++ /dev/null @@ -1,30 +0,0 @@ -/* stylelint-disable */ - -.emojione-<%= options.category %> { - background-image: url('<%= options.spritePath %>'); -<% -layout.images.forEach(function (image) { - if(options.diversityList[image.className]){ - return; - } -%> - &._<%= image.className %> { - background-repeat: no-repeat; - background-size: <%= (layout.width / image.width * 100) %>% <%= (layout.height / image.height * 100) %>%; - background-position: <%= (image.x * 100 / (layout.width - image.width )) %>% <%= (image.y * 100 / (layout.height - image.height)) %>%; - } -<% }); %> -} -<% -layout.images.forEach(function (image) { - if(!options.diversityList[image.className]){ - return; - } -%> - -.emojione-diversity._<%= image.className %> { - background-image: url('<%= options.spritePath %>'); - background-repeat: no-repeat; - background-size: <%= (layout.width / image.width * 100) %>% <%= (layout.height / image.height * 100) %>%; - background-position: <%= (image.x * 100 / (layout.width - image.width )) %>% <%= (image.y * 100 / (layout.height - image.height)) %>%; -}<% }); %> diff --git a/apps/meteor/app/emoji-emojione/lib/generateEmojiIndex.mjs b/apps/meteor/app/emoji-emojione/lib/generateEmojiIndex.mjs deleted file mode 100644 index fbed7b93cd9b1..0000000000000 --- a/apps/meteor/app/emoji-emojione/lib/generateEmojiIndex.mjs +++ /dev/null @@ -1,182 +0,0 @@ -/* eslint-disable */ - -// before using this script make sure to run: npm i --no-save node-sprite-generator - -// node --experimental-modules generateEmojiIndex.mjs -import fs from 'node:fs'; -import nsg from 'node-sprite-generator'; -import _ from 'underscore'; -import gm from 'gm'; // lgtm[js/unused-local-variable] - -const assetFolder = '../../../node_modules/emojione-assets'; -const emojiJsonFile = `${assetFolder}/emoji.json`; - -if (!fs.existsSync(emojiJsonFile)) { - console.error(`${emojiJsonFile} doesn't exist.`); - console.error("Maybe you need to run 'meteor npm install emojione-assets' or 'meteor npm install'?"); -} else { - const emojiJson = fs.readFileSync(emojiJsonFile); - generateEmojiPicker(emojiJson); -} - -function generateEmojiPicker(data) { - const emojiList = JSON.parse(data); - console.log(`${Object.keys(emojiList).length} emojis found.`); - - let toneList = []; - let emojisByCategory = {}; - - _.sortBy(Object.entries(emojiList), (a) => a[1].order).forEach(([code, emoji]) => { - if (emoji && emoji.shortname) { - const toneIndex = emoji.shortname.indexOf('_tone'); - if (toneIndex !== -1) { - const tone = emoji.shortname.substr(1, toneIndex - 1); - if (!toneList.includes(tone)) { - toneList.push(tone); - } - return; - } - } - - if (!emojisByCategory[emoji.category]) { - emojisByCategory[emoji.category] = []; - } - emojisByCategory[emoji.category].push(code); - }); - - let output = `/* - * This file is automatically generated from generateEmojiIndex.mjs - * Last generated ${Date().toString()} - * - * Mapping category hashes into human readable and translated names - */\n\n`; - - const emojiCategoriesMapping = [ - { key: 'people', i18n: 'Smileys_and_People' }, - { key: 'nature', i18n: 'Animals_and_Nature' }, - { key: 'food', i18n: 'Food_and_Drink' }, - { key: 'activity', i18n: 'Activity' }, - { key: 'travel', i18n: 'Travel_and_Places' }, - { key: 'objects', i18n: 'Objects' }, - { key: 'symbols', i18n: 'Symbols' }, - { key: 'flags', i18n: 'Flags' }, - ]; - - // emojiCategories - output += `export const emojiCategories = [\n`; - for (let category in emojisByCategory) { - const map = emojiCategoriesMapping.find((o) => o.key === category); - if (map) { - output += `\t{ key: '${category}', i18n: '${map.i18n}' },\n`; - } else { - if (category !== 'modifier' || category !== 'regional') { - console.error(`No emojiCategory mapping for ${category}`); - } - } - } - output += `];\n`; - - // toneList - const needsQuotes = ['-']; - output += `export const toneList = {\n`; - for (let tone in toneList) { - if (toneList[tone].includes(needsQuotes)) { - output += `\t'${toneList[tone]}': 1,\n`; - } else { - output += `\t${toneList[tone]}: 1,\n`; - } - } - output += `};\n`; - - // emojisByCategory - output += `export const emojisByCategory = {\n`; - for (let category in emojisByCategory) { - output += `\t${category}: [\n`; - - for (let emoji in emojisByCategory[category]) { - output += `\t\t'${emojiList[emojisByCategory[category][emoji]].shortname.replace(/:/g, '')}',\n`; - } - - output += `\t],\n`; - } - output += `};\n`; - - fs.writeFileSync('emojiPicker.js', output, { - encoding: 'utf8', - flag: 'w', - }); - console.log('Generated emojiPicker.js!'); - - console.log('Generating sprite sheets....'); - - let spriteCss = ''; - - for (let category in emojisByCategory) { - let srcList = []; - let diversityList = []; - const emojis = _.filter(emojiList, (x) => x.category === category); - const spritePath = `../../../public/packages/emojione/${category}-sprites.png`; - - _.each(emojis, function (emoji) { - srcList.push(`${assetFolder}/png/64/${emoji.code_points.base}.png`); - if (emoji.diversity) { - diversityList[emoji.code_points.base] = true; - } - }); - spriteCss += `@import './${category}-sprites.css';\n`; - - nsg( - { - src: srcList, - spritePath: spritePath, - layout: 'packed', - stylesheet: 'emojione.tpl', - stylesheetPath: `../client/${category}-sprites.css`, - compositor: 'gm', - layoutOptions: { - scaling: 1, - }, - stylesheetOptions: { - prefix: '', - diversityList: diversityList, - category: category, - spritePath: `/packages/emojione/${category}-sprites.png`, - pixelRatio: 1, - }, - }, - function (err) { - if (err) { - console.error(err); - return; - } - console.log(`${category}'s sprite generated!`); - }, - ); - } - - spriteCss += ` -.emojione { - position: relative; - - display: inline-block; - overflow: hidden; - - width: 1.375rem; - height: 1.375rem; - margin: 0 0.15em; - - vertical-align: middle; - white-space: nowrap; - text-indent: 100%; - - font-size: inherit; - line-height: normal; - image-rendering: -webkit-optimize-contrast; - image-rendering: optimizeQuality; -} -`; - fs.writeFileSync('../client/emojione-sprites.css', spriteCss, { - encoding: 'utf8', - flag: 'w', - }); -} diff --git a/apps/meteor/app/emoji-emojione/lib/getEmojiConfig.ts b/apps/meteor/app/emoji-emojione/lib/getEmojiConfig.ts deleted file mode 100644 index 51d2fbc1c4efc..0000000000000 --- a/apps/meteor/app/emoji-emojione/lib/getEmojiConfig.ts +++ /dev/null @@ -1,281 +0,0 @@ -import emojione from 'emojione'; -import mem from 'mem'; - -import { emojisByCategory, emojiCategories, toneList } from './emojiPicker'; - -// TODO remove fix below when issue is solved: https://github.com/joypixels/emojione/issues/617 - -// add missing emojis not provided by JS object, but included on emoji.json -emojione.shortnames += - '|:tm:|:copyright:|:registered:|:digit_zero:|:digit_one:|:digit_two:|:digit_three:|:digit_four:|:digit_five:|:digit_six:|:digit_seven:|:digit_eight:|:digit_nine:|:pound_symbol:|:asterisk_symbol:'; -emojione.regShortNames = new RegExp( - `]*>.*?<\/object>|]*>.*?<\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|(${emojione.shortnames})`, - 'gi', -); - -emojione.emojioneList[':tm:'] = { - uc_base: '2122', - uc_output: '2122-fe0f', - uc_match: '2122-fe0f', - uc_greedy: '2122-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':copyright:'] = { - uc_base: '00a9', - uc_output: '00a9-f0ef', - uc_match: '00a9-fe0f', - uc_greedy: '00a9-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':registered:'] = { - uc_base: '00ae', - uc_output: '00ae-fe0f', - uc_match: '00ae-fe0f', - uc_greedy: '00ae-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':digit_zero:'] = { - uc_base: '0030', - uc_output: '0030-fe0f', - uc_match: '0030-fe0f', - uc_greedy: '0030-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':digit_one:'] = { - uc_base: '0031', - uc_output: '0031-fe0f', - uc_match: '0031-fe0f', - uc_greedy: '0031-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':digit_two:'] = { - uc_base: '0032', - uc_output: '0032-fe0f', - uc_match: '0032-fe0f', - uc_greedy: '0032-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':digit_three:'] = { - uc_base: '0033', - uc_output: '0033-fe0f', - uc_match: '0033-fe0f', - uc_greedy: '0033-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':digit_four:'] = { - uc_base: '0034', - uc_output: '0034-fe0f', - uc_match: '0034-fe0f', - uc_greedy: '0034-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':digit_five:'] = { - uc_base: '0035', - uc_output: '0035-fe0f', - uc_match: '0035-fe0f', - uc_greedy: '0035-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':digit_six:'] = { - uc_base: '0036', - uc_output: '0036-fe0f', - uc_match: '0036-fe0f', - uc_greedy: '0036-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':digit_seven:'] = { - uc_base: '0037', - uc_output: '0037-fe0f', - uc_match: '0037-fe0f', - uc_greedy: '0037-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':digit_eight:'] = { - uc_base: '0038', - uc_output: '0038-fe0f', - uc_match: '0038-fe0f', - uc_greedy: '0038-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':digit_nine:'] = { - uc_base: '0039', - uc_output: '0039-fe0f', - uc_match: '0039-fe0f', - uc_greedy: '0039-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':pound_symbol:'] = { - uc_base: '0023', - uc_output: '0023-fe0f', - uc_match: '0023-fe0f', - uc_greedy: '0023-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; - -emojione.emojioneList[':asterisk_symbol:'] = { - uc_base: '002a', - uc_output: '002a-fe0f', - uc_match: '002a-fe0f', - uc_greedy: '002a-fe0f', - shortnames: [], - category: 'symbols', - emojiPackage: 'emojione', -}; -// end fix - -// fix for :+1: - had to replace all function that does its conversion: https://github.com/joypixels/emojione/blob/4.5.0/lib/js/emojione.js#L249 - -emojione.shortnameConversionMap = mem(emojione.shortnameConversionMap, { maxAge: 1000 }); - -emojione.unicodeCharRegex = mem(emojione.unicodeCharRegex, { maxAge: 1000 }); - -const convertShortName = mem( - (shortname) => { - // the fix is basically adding this .replace(/[+]/g, '\\$&') - if (typeof shortname === 'undefined' || shortname === '' || emojione.shortnames.indexOf(shortname.replace(/[+]/g, '\\$&')) === -1) { - // if the shortname doesnt exist just return the entire match - return shortname; - } - - // map shortname to parent - if (!emojione.emojioneList[shortname]) { - for (const emoji in emojione.emojioneList) { - if (!emojione.emojioneList.hasOwnProperty(emoji) || emoji === '') { - continue; - } - if (emojione.emojioneList[emoji].shortnames.indexOf(shortname) === -1) { - continue; - } - shortname = emoji; - break; - } - } - - const unicode = emojione.emojioneList[shortname].uc_output; - const fname = emojione.emojioneList[shortname].uc_base; - const category = fname.indexOf('-1f3f') >= 0 ? 'diversity' : emojione.emojioneList[shortname].category; - const title = emojione.imageTitleTag ? `title="${shortname}"` : ''; - // const size = ns.spriteSize === '32' || ns.spriteSize === '64' ? ns.spriteSize : '32'; - // if the emoji path has been set, we'll use the provided path, otherwise we'll use the default path - const ePath = - emojione.defaultPathPNG !== emojione.imagePathPNG ? emojione.imagePathPNG : `${emojione.defaultPathPNG + emojione.emojiSize}/`; - - // depending on the settings, we'll either add the native unicode as the alt tag, otherwise the shortname - const alt = emojione.unicodeAlt ? emojione.convert(unicode.toUpperCase()) : shortname; - - if (emojione.sprites) { - return `${alt}`; - } - return `${alt}`; - }, - { maxAge: 1000 }, -); - -const convertUnicode = mem( - (entire, _m1, m2, m3) => { - const mappedUnicode = emojione.mapUnicodeToShort(); - - if (typeof m3 === 'undefined' || m3 === '' || !(emojione.unescapeHTML(m3) in emojione.asciiList)) { - // if the ascii doesnt exist just return the entire match - return entire; - } - - m3 = emojione.unescapeHTML(m3); - const unicode = emojione.asciiList[m3]; - const shortname = mappedUnicode[unicode]; - const category = unicode.indexOf('-1f3f') >= 0 ? 'diversity' : emojione.emojioneList[shortname].category; - const title = emojione.imageTitleTag ? `title="${emojione.escapeHTML(m3)}"` : ''; - // const size = ns.spriteSize === '32' || ns.spriteSize === '64' ? ns.spriteSize : '32'; - // if the emoji path has been set, we'll use the provided path, otherwise we'll use the default path - const ePath = - emojione.defaultPathPNG !== emojione.imagePathPNG ? emojione.imagePathPNG : `${emojione.defaultPathPNG + emojione.emojiSize}/`; - - // depending on the settings, we'll either add the native unicode as the alt tag, otherwise the shortname - const alt = emojione.unicodeAlt ? emojione.convert(unicode.toUpperCase()) : emojione.escapeHTML(m3); - - if (emojione.sprites) { - return `${m2}${alt}`; - } - return `${m2}${alt}`; - }, - { maxAge: 1000, cacheKey: JSON.stringify }, -); - -emojione.shortnameToImage = (str) => { - // replace regular shortnames first - str = str.replace(emojione.regShortNames, convertShortName); - - // if ascii smileys are turned on, then we'll replace them! - if (emojione.ascii) { - const asciiRX = emojione.riskyMatchAscii ? emojione.regAsciiRisky : emojione.regAscii; - - return str.replace(asciiRX, convertUnicode); - } - - return str; -}; - -const isEmojiSupported = (str: string) => { - str = str.replace(emojione.regShortNames, convertShortName); - - // if ascii smileys are turned on, then we'll replace them! - if (emojione.ascii) { - const asciiRX = emojione.riskyMatchAscii ? emojione.regAsciiRisky : emojione.regAscii; - - return str.replace(asciiRX, convertUnicode); - } - - return str; -}; - -export const getEmojiConfig = () => ({ - emojione, - emojisByCategory, - emojiCategories, - toneList, - render: emojione.toImage, - renderPicker: emojione.shortnameToImage, - sprites: true, - isEmojiSupported, -}); diff --git a/apps/meteor/app/emoji-emojione/lib/isSetNotNull.ts b/apps/meteor/app/emoji-emojione/lib/isSetNotNull.ts deleted file mode 100644 index 000be1279e684..0000000000000 --- a/apps/meteor/app/emoji-emojione/lib/isSetNotNull.ts +++ /dev/null @@ -1,10 +0,0 @@ -// http://stackoverflow.com/a/26990347 function isSet() from Gajus -export const isSetNotNull = async (fn: () => unknown) => { - let value; - try { - value = await fn(); - } catch (e) { - value = null; - } - return value !== null && value !== undefined; -}; diff --git a/apps/meteor/app/emoji-emojione/server/callbacks.ts b/apps/meteor/app/emoji-emojione/server/callbacks.ts deleted file mode 100644 index 081e115a152a5..0000000000000 --- a/apps/meteor/app/emoji-emojione/server/callbacks.ts +++ /dev/null @@ -1,13 +0,0 @@ -import emojione from 'emojione'; -import { Meteor } from 'meteor/meteor'; - -import { callbacks } from '../../../server/lib/callbacks'; - -Meteor.startup(() => { - callbacks.add( - 'beforeSendMessageNotifications', - (message) => emojione.shortnameToUnicode(message), - callbacks.priority.MEDIUM, - 'emojione-shortnameToUnicode', - ); -}); diff --git a/apps/meteor/app/emoji-emojione/server/index.ts b/apps/meteor/app/emoji-emojione/server/index.ts deleted file mode 100644 index 723d879892f7d..0000000000000 --- a/apps/meteor/app/emoji-emojione/server/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import './lib'; -import './callbacks'; diff --git a/apps/meteor/app/emoji-emojione/server/lib.ts b/apps/meteor/app/emoji-emojione/server/lib.ts deleted file mode 100644 index 57d366529526a..0000000000000 --- a/apps/meteor/app/emoji-emojione/server/lib.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Meteor } from 'meteor/meteor'; - -import { emoji } from '../../emoji/server'; -import { getUserPreference } from '../../utils/server/lib/getUserPreference'; -import { getEmojiConfig } from '../lib/getEmojiConfig'; -import { isSetNotNull } from '../lib/isSetNotNull'; - -const config = getEmojiConfig(); - -emoji.packages.emojione = config.emojione as any; -if (emoji.packages.emojione) { - emoji.packages.emojione.sprites = config.sprites; - emoji.packages.emojione.emojisByCategory = config.emojisByCategory; - emoji.packages.emojione.emojiCategories = config.emojiCategories as typeof emoji.packages.emojione.emojiCategories; - emoji.packages.emojione.toneList = config.toneList; - - emoji.packages.emojione.render = config.render; - emoji.packages.emojione.renderPicker = config.renderPicker; - // TODO: check types - // RocketChat.emoji.list is the collection of emojis from all emoji packages - for (const key in config.emojione.emojioneList) { - if (config.emojione.emojioneList.hasOwnProperty(key)) { - const currentEmoji = config.emojione.emojioneList[key]; - currentEmoji.emojiPackage = 'emojione'; - emoji.list[key] = currentEmoji; - - if (currentEmoji.shortnames) { - currentEmoji.shortnames.forEach((shortname: string) => { - emoji.list[shortname] = currentEmoji; - }); - } - } - } - - // Additional settings -- ascii emojis - Meteor.startup(async () => { - if ((await isSetNotNull(() => emoji.packages.emojione)) && emoji.packages.emojione) { - if (await isSetNotNull(() => getUserPreference(Meteor.userId() as string, 'convertAsciiEmoji'))) { - emoji.packages.emojione.ascii = await getUserPreference(Meteor.userId() as string, 'convertAsciiEmoji'); - } else { - emoji.packages.emojione.ascii = true; - } - } - }); -} diff --git a/apps/meteor/app/emoji-native/lib/generateEmojiData.spec.ts b/apps/meteor/app/emoji-native/lib/generateEmojiData.spec.ts new file mode 100644 index 0000000000000..e8e4d4da3b248 --- /dev/null +++ b/apps/meteor/app/emoji-native/lib/generateEmojiData.spec.ts @@ -0,0 +1,196 @@ +import type { Emoji } from 'emojibase'; +import data from 'emojibase-data/en/data.json'; +import emojibaseShortcodes from 'emojibase-data/en/shortcodes/emojibase.json'; +import joypixelsShortcodes from 'emojibase-data/en/shortcodes/joypixels.json'; + +import type { EmojiEntry } from './generateEmojiData'; +import { getEmojiData } from './generateEmojiData'; +import { legacyEmojioneMap } from './legacyEmojioneMap'; +import { shortnameToUnicode } from './shortnameToUnicode'; + +const asArray = (entry: string | string[] | undefined): string[] => { + if (!entry) return []; + return Array.isArray(entry) ? entry : [entry]; +}; + +/** + * The emoji we expose shortcodes for, derived independently from `generateEmojiData` so this suite + * fails if the two ever drift apart. + */ +const emittedEmojis = (() => { + const emojis = new Map(); + + for (const emojiData of data as Emoji[]) { + if (emojiData.group === 2) continue; + + const { hexcode } = emojiData; + const codepoint = hexcode.includes('-') ? NaN : parseInt(hexcode, 16); + const isRegional = codepoint >= 0x1f1e6 && codepoint <= 0x1f1ff; + if (emojiData.group === undefined && !isRegional) continue; + + emojis.set(hexcode, emojiData.emoji); + for (const skin of emojiData.skins ?? []) { + if (!skin.tone) continue; + emojis.set(skin.hexcode, skin.emoji); + } + } + + return emojis; +})(); + +describe('native emoji shortcodes', () => { + const { emojiList, emojisByCategory } = getEmojiData(); + + const unicodeOf = (shortcode: string) => emojiList[`:${shortcode}:`]?.unicode; + + // Shortcodes both presets define, pointing at different emoji. Reaction keys and message + // shortcodes stored before the native emoji migration — and everything the mobile clients + // send today — use the joypixels/emojione meaning, so these must not follow emojibase. + describe.each([ + ['up', '🆙', 'arrow_up_small', '🔼'], + ['cat', '🐱', 'cat2', '🐈️'], + ['dog', '🐶', 'dog2', '🐕️'], + ['o', '⭕️', 'o2', '🅾️'], + ['point_up', '☝️', 'point_up_2', '👆️'], + ['sunglasses', '😎', 'dark_sunglasses', '🕶️'], + ['pencil', '📝', 'pencil2', '✏️'], + ['train', '🚋', 'train2', '🚆'], + ['whale', '🐳', 'whale2', '🐋'], + ['umbrella', '☔️', 'umbrella2', '☂️'], + ['computer', '💻️', 'desktop_computer', '🖥️'], + ['satellite', '📡', 'satellite_orbital', '🛰️'], + ['tiger', '🐯', 'tiger2', '🐅'], + ['no', '🇳🇴', 'thumbsdown', '👎️'], + ['om', '🇴🇲', 'om_symbol', '🕉️'], + ['sunny', '☀️', 'white_sun_small_cloud', '🌤️'], + ['japan', '🗾', 'flag_jp', '🇯🇵'], + ])('contested shortcode :%s:', (contested, expected, displacedShortcode, displaced) => { + it(`resolves to ${expected}, not ${displaced}`, () => { + expect(unicodeOf(contested)).toBe(expected); + }); + + it(`leaves ${displaced} reachable as :${displacedShortcode}:`, () => { + expect(unicodeOf(displacedShortcode)).toBe(displaced); + }); + }); + + it('falls back to emojibase for emoji joypixels never named', () => { + // joypixels stopped shipping, so everything added to Unicode since then only has an + // emojibase name — without the fallback these emoji disappear from the picker entirely + expect(unicodeOf('fingerprint')).toBe('🫆'); + expect(unicodeOf('face_with_eye_bags')).toBe('🫩'); + expect(unicodeOf('leafless_tree')).toBe('🪾'); + expect(unicodeOf('root_vegetable')).toBe('🫜'); + }); + + it('only backfills legacy shortcodes the presets do not provide', () => { + // the map is hand-generated; if a preset already names a shortcode, the entry is dead weight + // and, worse, hides which name is authoritative + const redundant = Object.keys(legacyEmojioneMap).filter((shortcode) => emojiList[`:${shortcode}:`]); + + expect(redundant).toEqual([]); + }); + + it('resolves the legacy shortcodes that survived', () => { + expect(shortnameToUnicode(':bride_with_veil:')).toBe('👰'); + expect(shortnameToUnicode(':bride_with_veil_tone3:')).toBe('👰🏽'); + expect(shortnameToUnicode(':digit_zero:')).toBe('0️⃣'); + expect(shortnameToUnicode(':tone3:')).toBe('🏽'); + }); + + it('keeps joypixels aliases of contested emoji working', () => { + expect(unicodeOf('point_up_2')).toBe('👆️'); + expect(unicodeOf('cat_face')).toBe('🐱'); + expect(unicodeOf('tram_car')).toBe('🚋'); + }); + + it('applies the same precedence to skin tone variants', () => { + expect(unicodeOf('point_up_tone1')).toBe('☝🏻'); + expect(unicodeOf('point_up_2_tone1')).toBe('👆🏻'); + }); + + it('resolves contested shortcodes to unicode for shortnameToUnicode consumers', () => { + expect(shortnameToUnicode(':up:')).toBe('🆙'); + expect(shortnameToUnicode(':cat:')).toBe('🐱'); + expect(shortnameToUnicode(':o:')).toBe('⭕️'); + }); + + it('gives joypixels precedence for every shortcode the two presets contest', () => { + const contested: string[] = []; + + for (const [hexcode, emoji] of emittedEmojis) { + for (const shortcode of asArray((joypixelsShortcodes as Record)[hexcode])) { + const entry = emojiList[`:${shortcode}:`]; + if (entry && entry.unicode !== emoji) { + contested.push(`:${shortcode}: is ${entry.unicode}, joypixels says ${emoji}`); + } + } + } + + expect(contested).toEqual([]); + }); + + it('never strands an emoji without a shortcode', () => { + const stranded: string[] = []; + const reachable = new Set(Object.values(emojiList).map((entry) => entry.unicode)); + + for (const [hexcode, emoji] of emittedEmojis) { + const hadShortcode = + asArray((emojibaseShortcodes as Record)[hexcode]).length > 0 || + asArray((joypixelsShortcodes as Record)[hexcode]).length > 0; + + if (hadShortcode && !reachable.has(emoji)) { + stranded.push(`${emoji} (${hexcode})`); + } + } + + expect(stranded).toEqual([]); + }); + + it('keeps every picker entry resolvable', () => { + const unresolvable = Object.values(emojisByCategory) + .flat() + .filter((shortcode) => !emojiList[`:${shortcode}:`]); + + expect(unresolvable).toEqual([]); + }); + + it('keeps every picker entry pointing at its own emoji', () => { + // a picker entry whose name resolves to a *different* emoji would insert the wrong emoji + const misdirected = Object.values(emojisByCategory) + .flat() + .filter((shortcode) => emojiList[`:${shortcode}:`]?.name !== shortcode); + + expect(misdirected).toEqual([]); + }); + + it('registers the primary shortcode before any of its aliases', () => { + // picker search and unicodeToShortcodeMap both take the first registered name for an entry, + // so an alias registered ahead of the primary surfaces the wrong name to users + const firstSeen = new Map(); + for (const [shortcode, entry] of Object.entries(emojiList)) { + if (!firstSeen.has(entry)) firstSeen.set(entry, shortcode); + } + + const outOfOrder = Object.values(emojisByCategory) + .flat() + .filter((shortcode) => firstSeen.get(emojiList[`:${shortcode}:`]) !== `:${shortcode}:`); + + expect(outOfOrder).toEqual([]); + }); + + it('never lists a shortname that resolves to another emoji', () => { + // emoji picker search reads `shortnames`, so a stale alias surfaces the wrong result + const stale: string[] = []; + + for (const entry of Object.values(emojiList)) { + for (const shortname of entry.shortnames) { + if (emojiList[shortname] !== entry) { + stale.push(`${entry.unicode} lists ${shortname}, which resolves to ${emojiList[shortname]?.unicode}`); + } + } + } + + expect(stale).toEqual([]); + }); +}); diff --git a/apps/meteor/app/emoji-native/lib/generateEmojiData.ts b/apps/meteor/app/emoji-native/lib/generateEmojiData.ts new file mode 100644 index 0000000000000..33c8da8970553 --- /dev/null +++ b/apps/meteor/app/emoji-native/lib/generateEmojiData.ts @@ -0,0 +1,152 @@ +import data from 'emojibase-data/en/data.json'; +import emojibaseShortcodes from 'emojibase-data/en/shortcodes/emojibase.json'; +import joypixelsShortcodes from 'emojibase-data/en/shortcodes/joypixels.json'; + +// Map emojibase group numbers to our category keys +const groupToCategory: Record = { + 0: 'people', // smileys & emotion + 1: 'people', // people & body + 2: 'people', // component - skin tones etc (we skip these) + 3: 'nature', // animals & nature + 4: 'food', // food & drink + 5: 'travel', // travel & places + 6: 'activity', // activities + 7: 'objects', // objects + 8: 'symbols', // symbols + 9: 'flags', // flags +}; + +export type EmojiEntry = { + name: string; + uc_base: string; + uc_output: string; + uc_match: string; + uc_greedy: string; + shortnames: string[]; + category: string; + emojiPackage: string; + unicode: string; +}; + +function hexFromEmoji(emoji: string): string { + return [...emoji].map((cp) => cp.codePointAt(0)!.toString(16)).join('-'); +} + +function isRegionalIndicator(hexcode: string): boolean { + if (hexcode.includes('-')) return false; + const cp = parseInt(hexcode, 16); + return cp >= 0x1f1e6 && cp <= 0x1f1ff; +} + +function getShortcodes(hexcode: string): string[] { + const entry = + (joypixelsShortcodes as Record)[hexcode] ?? + (emojibaseShortcodes as Record)[hexcode]; + if (!entry) return []; + return Array.isArray(entry) ? entry : [entry]; +} + +function buildEmojiData() { + const emojiList: Record = {}; + const emojisByCategory: Record = { + people: [], + nature: [], + food: [], + activity: [], + travel: [], + objects: [], + symbols: [], + flags: [], + }; + const toneList: Record = {}; + const bareAliases: [string, string][] = []; + + for (const emojiData of data) { + // Skip component group (skin tones, hair styles) + if (emojiData.group === 2) continue; + + const isRegional = isRegionalIndicator(emojiData.hexcode); + const category = groupToCategory[emojiData.group ?? -1] ?? (isRegional ? 'flags' : undefined); + if (!category) continue; + + const codes = getShortcodes(emojiData.hexcode); + if (codes.length === 0) continue; + + const primaryShortcode = codes[0]; + const altShortcodes = codes.slice(1).map((s) => `:${s}:`); + const hex = hexFromEmoji(emojiData.emoji); + const bare = emojiData.emoji.replace(/\uFE0F/g, ''); + + const entry: EmojiEntry = { + name: primaryShortcode, + uc_base: hex, + uc_output: hex, + uc_match: hex, + uc_greedy: hex, + shortnames: altShortcodes, + category, + emojiPackage: 'native', + unicode: emojiData.emoji, + }; + + const key = `:${primaryShortcode}:`; + emojiList[key] = entry; + + if (emojiData.type === 1 && bare !== emojiData.emoji) { + bareAliases.push([bare, key]); + } + + // Only add to category if it's NOT a skin tone variant + if (!emojiData.tone && !isRegional) { + emojisByCategory[category].push(primaryShortcode); + } + + // Register alternate shortcodes + for (const alt of altShortcodes) { + emojiList[alt] = entry; + } + + // Track skin tone support + if (emojiData.skins && emojiData.skins.length > 0) { + toneList[primaryShortcode] = 1; + + // Register skin tone variants + for (const skin of emojiData.skins) { + if (!skin.tone) continue; + + const tones = Array.isArray(skin.tone) ? skin.tone : [skin.tone]; + const skinHex = hexFromEmoji(skin.emoji); + + const skinEntry: EmojiEntry = { + name: primaryShortcode, + uc_base: skinHex, + uc_output: skinHex, + uc_match: skinHex, + uc_greedy: skinHex, + shortnames: [], + category, + emojiPackage: 'native', + unicode: skin.emoji, + }; + + const toneShortcodes = getShortcodes(skin.hexcode); + const fallbackShortcode = `${primaryShortcode}_tone${tones.join('-')}`; + for (const code of [...toneShortcodes, fallbackShortcode]) { + emojiList[`:${code}:`] = skinEntry; + } + } + } + } + + return { emojiList, emojisByCategory, toneList, bareAliases }; +} + +// Build once and cache +let _cached: ReturnType | null = null; + +export function getEmojiData() { + if (!_cached) { + _cached = buildEmojiData(); + } + return _cached; +} diff --git a/apps/meteor/app/emoji-native/lib/getEmojiConfig.spec.ts b/apps/meteor/app/emoji-native/lib/getEmojiConfig.spec.ts new file mode 100644 index 0000000000000..5ab30f7c3c640 --- /dev/null +++ b/apps/meteor/app/emoji-native/lib/getEmojiConfig.spec.ts @@ -0,0 +1,95 @@ +import { getEmojiConfig } from './getEmojiConfig'; +import type { EmojiPackages } from '../../emoji/lib/rocketchat'; + +const buildEmojiPackages = (ascii: boolean): EmojiPackages => + ({ + packages: { native: { ascii } }, + list: {}, + }) as unknown as EmojiPackages; + +describe('native emoji render', () => { + it('converts ascii emoticons when the ascii flag is enabled', () => { + const { render } = getEmojiConfig(buildEmojiPackages(true)); + + expect(render('hello :)')).toBe('hello 🙂'); + }); + + it('converts HTML-escaped ascii emoticons', () => { + const { render } = getEmojiConfig(buildEmojiPackages(true)); + + expect(render('hello >:(')).toBe('hello 😠'); + expect(render('hello <3')).toBe('hello '); + }); + + it('keeps ascii emoticons literal when the ascii flag is disabled', () => { + const { render } = getEmojiConfig(buildEmojiPackages(false)); + + expect(render('hello :)')).toBe('hello :)'); + }); + + it('converts ascii emoticons adjacent to HTML tags', () => { + const { render } = getEmojiConfig(buildEmojiPackages(true)); + + expect(render('

hello :D

')).toBe('

hello 😄

'); + expect(render('

:)

')).toBe('

🙂

'); + }); + + it('does not convert ascii sequences inside words or URLs', () => { + const { render } = getEmojiConfig(buildEmojiPackages(true)); + + expect(render('https://rocket.chat')).toBe('https://rocket.chat'); + expect(render('hello:)')).toBe('hello:)'); + }); + + it('does not convert ascii sequences inside HTML tags', () => { + const { render } = getEmojiConfig(buildEmojiPackages(true)); + + expect(render('
rocket')).toBe('rocket'); + }); + + it('still renders shortcodes when the ascii flag is enabled', () => { + const { render } = getEmojiConfig(buildEmojiPackages(true)); + + expect(render(':smiley:')).toContain(''); + }); + + it('renders bare (non-VS16) emoji-default characters', () => { + const { render } = getEmojiConfig(buildEmojiPackages(false)); + + expect(render('🐕')).toBe('🐕'); + expect(render('🐶')).toBe('🐶'); + expect(render('⭐')).toBe(''); + expect(render('👍')).toBe('👍'); + }); + + it('resolves the VS16-qualified form to the same shortcode', () => { + const { render } = getEmojiConfig(buildEmojiPackages(false)); + + expect(render('🐕\u{FE0F}')).toBe('🐕\u{FE0F}'); + expect(render('⭐\u{FE0F}')).toBe('⭐\u{FE0F}'); + }); + + it('only treats text-default symbols as emoji when VS16 is present', () => { + const { render } = getEmojiConfig(buildEmojiPackages(false)); + + expect(render('©')).toBe('©'); + expect(render('™')).toBe('™'); + expect(render('©\u{FE0F}')).toBe('©\u{FE0F}'); + }); + + it('renders shortcodes contested with emojibase using their emojione meaning', () => { + const { render } = getEmojiConfig(buildEmojiPackages(false)); + + expect(render(':up:')).toBe('🆙'); + expect(render(':arrow_up_small:')).toBe('🔼'); + expect(render(':cat:')).toBe('🐱'); + expect(render(':cat2:')).toBe('🐈️'); + }); + + it('renders picker entries for contested shortcodes', () => { + const { renderPicker } = getEmojiConfig(buildEmojiPackages(false)); + + expect(renderPicker(':up:')).toBe('🆙'); + expect(renderPicker(':cat2:')).toBe('🐈️'); + }); +}); diff --git a/apps/meteor/app/emoji-native/lib/getEmojiConfig.ts b/apps/meteor/app/emoji-native/lib/getEmojiConfig.ts new file mode 100644 index 0000000000000..83b8cac501d49 --- /dev/null +++ b/apps/meteor/app/emoji-native/lib/getEmojiConfig.ts @@ -0,0 +1,147 @@ +import { asciiList } from '@rocket.chat/message-parser'; +import { escapeHTML, escapeRegExp, unescapeHTML } from '@rocket.chat/string-helpers'; + +import type { EmojiEntry } from './generateEmojiData'; +import { getEmojiData } from './generateEmojiData'; +import { legacyEmojioneMap } from './legacyEmojioneMap'; +import { shortnameToUnicode } from './shortnameToUnicode'; +import type { EmojiPackages } from '../../emoji/lib/rocketchat'; + +const emojiCategories = [ + { key: 'people', i18n: 'Smileys_and_People' }, + { key: 'nature', i18n: 'Animals_and_Nature' }, + { key: 'food', i18n: 'Food_and_Drink' }, + { key: 'activity', i18n: 'Activity' }, + { key: 'travel', i18n: 'Travel_and_Places' }, + { key: 'objects', i18n: 'Objects' }, + { key: 'symbols', i18n: 'Symbols' }, + { key: 'flags', i18n: 'Flags' }, +]; + +// Build a reverse mapping from unicode emoji to shortcode for detection +let unicodeToShortcodeMap: Map | null = null; +let emojiRegex: RegExp | null = null; + +function getUnicodeToShortcodeMap(): Map { + if (!unicodeToShortcodeMap) { + const { emojiList, bareAliases } = getEmojiData(); + unicodeToShortcodeMap = new Map(); + + for (const [shortcode, entry] of Object.entries(emojiList)) { + const emojiEntry = entry; + if (emojiEntry.unicode && !unicodeToShortcodeMap.has(emojiEntry.unicode)) { + unicodeToShortcodeMap.set(emojiEntry.unicode, shortcode); + } + } + + for (const [bare, shortcode] of bareAliases) { + if (!unicodeToShortcodeMap.has(bare)) { + unicodeToShortcodeMap.set(bare, shortcode); + } + } + } + return unicodeToShortcodeMap; +} + +function getEmojiRegex(): RegExp { + if (!emojiRegex) { + const unicodeMap = getUnicodeToShortcodeMap(); + // Sort emojis by length (longest first) to match multi-codepoint emojis correctly + const unicodeEmojis = [...unicodeMap.keys()].sort((a, b) => b.length - a.length); + const unicodePattern = unicodeEmojis.map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'); + // Combine shortcode and unicode emoji patterns + emojiRegex = new RegExp(`(:([a-zA-Z0-9_+-]+):)|(${unicodePattern})`, 'g'); + } + return emojiRegex; +} + +// HTML-escaped variants are needed because the renderer receives escaped HTML (e.g. `>:(` arrives as `>:(`) +const asciiPattern = [...new Set(Object.keys(asciiList).flatMap((ascii) => [escapeHTML(ascii), ascii]))] + .sort((a, b) => b.length - a.length) + .map(escapeRegExp) + .join('|'); + +// `>` and `<` count as boundaries so emoticons touching tags still convert (e.g. `

hello :D

`) +const asciiRegex = new RegExp( + `]*>.*?|]*>.*?
|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|(?<=^|\\s|>)(${asciiPattern})(?=\\s|$|[!,.?<])`, + 'g', +); + +function renderAsciiEmoji(text: string): string { + return text.replace(asciiRegex, (entire, ascii) => { + if (ascii === undefined) { + return entire; + } + + const unescaped = unescapeHTML(ascii); + const unicode = asciiList[unescaped]; + if (!unicode) { + return entire; + } + + return `${unicode}`; + }); +} + +function renderEmoji(text: string, emojiPackages: EmojiPackages): string { + const { emojiList } = getEmojiData(); + const unicodeMap = getUnicodeToShortcodeMap(); + const pattern = getEmojiRegex(); + + const rendered = text.replace(pattern, (match, shortcodeGroup, shortcodeName, unicodeGroup) => { + // If it's a shortcode pattern (:emoji:) + if (shortcodeGroup) { + if (emojiPackages.list[`:${shortcodeName}:`]?.emojiPackage === 'emojiCustom') { + return match; // Don't render custom emojis as native + } + const key = `:${shortcodeName}:`; + const emoji = emojiList[key] as EmojiEntry | undefined; + if (emoji?.unicode) { + return `${emoji.unicode}`; + } + + // Fallback to legacy emojione shortcodes for backward compatibility + const legacy = legacyEmojioneMap[shortcodeName]; + if (legacy) { + return `${legacy}`; + } + + return match; + } + + // If it's a unicode emoji character (unicodeGroup will be defined) + if (unicodeGroup) { + const shortcode = unicodeMap.get(unicodeGroup); + if (shortcode) { + return `${unicodeGroup}`; + } + } + + return match; + }); + + return emojiPackages.packages.native?.ascii ? renderAsciiEmoji(rendered) : rendered; +} + +function renderPicker(emojiToRender: string): string | undefined { + const { emojiList } = getEmojiData(); + const emoji = emojiList[emojiToRender] as EmojiEntry | undefined; + if (!emoji?.unicode) return undefined; + + return `${emoji.unicode}`; +} + +export const getEmojiConfig = (emojiPackages: EmojiPackages) => { + const { emojiList, emojisByCategory, toneList } = getEmojiData(); + + return { + emojiList, + emojisByCategory, + emojiCategories, + toneList, + render: (text: string) => renderEmoji(text, emojiPackages), + renderPicker, + sprites: false, + shortnameToUnicode, + }; +}; diff --git a/apps/meteor/app/emoji-native/lib/legacyEmojioneMap.ts b/apps/meteor/app/emoji-native/lib/legacyEmojioneMap.ts new file mode 100644 index 0000000000000..9c0b68755ebcf --- /dev/null +++ b/apps/meteor/app/emoji-native/lib/legacyEmojioneMap.ts @@ -0,0 +1,34 @@ +// Auto-generated legacy emojione shortcode mapping +// These shortcodes existed in emojione but are absent from the joypixels preset that +// `generateEmojiData` reads, so they are backfilled here to keep old stored messages and +// reactions resolving. `digit_*`, `pound_symbol` and `asterisk_symbol` were themselves +// hand-patched into emojione by Rocket.Chat, and `tone1`-`tone5` name skin-tone components, +// which are not emoji in their own right. + +const legacyEmojioneMapData: Record = { + bride_with_veil_tone1: '👰🏻', + bride_with_veil_tone2: '👰🏼', + bride_with_veil_tone3: '👰🏽', + bride_with_veil_tone4: '👰🏾', + bride_with_veil_tone5: '👰🏿', + bride_with_veil: '👰', + digit_zero: '0️⃣', + digit_one: '1️⃣', + digit_two: '2️⃣', + digit_three: '3️⃣', + digit_four: '4️⃣', + digit_five: '5️⃣', + digit_six: '6️⃣', + digit_seven: '7️⃣', + digit_eight: '8️⃣', + digit_nine: '9️⃣', + pound_symbol: '#️⃣', + asterisk_symbol: '*️⃣', + tone1: '🏻', + tone2: '🏼', + tone3: '🏽', + tone4: '🏾', + tone5: '🏿', +}; + +export const legacyEmojioneMap: Record = Object.assign(Object.create(null), legacyEmojioneMapData); diff --git a/apps/meteor/app/emoji-native/lib/shortnameToUnicode.ts b/apps/meteor/app/emoji-native/lib/shortnameToUnicode.ts new file mode 100644 index 0000000000000..f836adb1149d4 --- /dev/null +++ b/apps/meteor/app/emoji-native/lib/shortnameToUnicode.ts @@ -0,0 +1,19 @@ +import type { EmojiEntry } from './generateEmojiData'; +import { getEmojiData } from './generateEmojiData'; +import { legacyEmojioneMap } from './legacyEmojioneMap'; + +export function shortnameToUnicode(text: string): string { + const { emojiList } = getEmojiData(); + + return text.replace(/:([a-zA-Z0-9_+-]+):/g, (match, shortcode) => { + const key = `:${shortcode}:`; + const emoji = emojiList[key] as EmojiEntry | undefined; + if (emoji?.unicode) return emoji.unicode; + + // Fallback to legacy emojione shortcodes for backward compatibility + const legacy = legacyEmojioneMap[shortcode]; + if (legacy) return legacy; + + return match; + }); +} diff --git a/apps/meteor/app/emoji/client/emojiParser.ts b/apps/meteor/app/emoji/client/emojiParser.ts index c919642d28345..3653bb441b085 100644 --- a/apps/meteor/app/emoji/client/emojiParser.ts +++ b/apps/meteor/app/emoji/client/emojiParser.ts @@ -1,5 +1,17 @@ import { emoji } from './lib'; -import { isIE11 } from '../../../client/lib/utils/isIE11'; + +// Escapes a plain text value into its HTML representation so it can be safely +// reinserted via innerHTML after emoji rendering (e.g. `<` becomes `<`). +const escapeHtml = (value: string): string => { + const escaper = document.createElement('div'); + escaper.textContent = value; + return escaper.innerHTML; +}; + +const renderEmojiPackages = (value: string): string => + Object.entries(emoji.packages) + .reverse() + .reduce((rendered, [, emojiPackage]) => emojiPackage.render(rendered), value); /** * emojiParser is a function that will replace emojis @@ -13,53 +25,64 @@ export const emojiParser = (html: string) => { // '
' to '
' for emojis such at line breaks html = html.replace(/
/g, '
'); - html = Object.entries(emoji.packages) - .reverse() - .reduce((value, [, emojiPackage]) => emojiPackage.render(value), html); - const checkEmojiOnly = document.createElement('div'); checkEmojiOnly.innerHTML = html; - const emojis = Array.from(checkEmojiOnly.querySelectorAll('.emoji:not(:empty), .emojione:not(:empty)')); + // Render emojis only inside text nodes so shortcodes that live in markup + // (e.g. a URL containing `:smile:` in an anchor's href) stay untouched. + // Emojis inside code blocks are intentionally left as their literal shortcode. + const textWalker = document.createTreeWalker(checkEmojiOnly, NodeFilter.SHOW_TEXT, { + acceptNode: (node) => (node.parentElement?.closest('code') ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT), + }); - emojis.forEach((emojiElement) => { - const htmlElement = emojiElement.parentElement; + const textNodes: Text[] = []; + while (textWalker.nextNode()) { + textNodes.push(textWalker.currentNode as Text); + } + + textNodes.forEach((textNode) => { + const escaped = escapeHtml(textNode.nodeValue ?? ''); + const rendered = renderEmojiPackages(escaped); - if (htmlElement && htmlElement.nodeName === 'CODE') { - emojiElement.replaceWith(emojiElement.getAttribute('title') ?? ''); + if (rendered === escaped) { + return; } + + const fragmentHolder = document.createElement('span'); + fragmentHolder.innerHTML = rendered; + textNode.replaceWith(...Array.from(fragmentHolder.childNodes)); }); + const emojis = Array.from(checkEmojiOnly.querySelectorAll('.emoji:not(:empty)')); + let hasText = false; - if (!isIE11) { - const isElement = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE; + const isElement = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE; - const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE; + const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE; - const filter = (node: Node) => { - if (isElement(node) && (node.classList.contains('emojione') || node.classList.contains('emoji'))) { - return NodeFilter.FILTER_REJECT; - } - return NodeFilter.FILTER_ACCEPT; - }; + const filter = (node: Node) => { + if (isElement(node) && node.classList.contains('emoji')) { + return NodeFilter.FILTER_REJECT; + } + return NodeFilter.FILTER_ACCEPT; + }; - const walker = document.createTreeWalker(checkEmojiOnly, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, filter); + const walker = document.createTreeWalker(checkEmojiOnly, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, filter); - while (walker.nextNode()) { - if (isTextNode(walker.currentNode) && walker.currentNode.nodeValue.trim() !== '') { - hasText = true; - break; - } + while (walker.nextNode()) { + if (isTextNode(walker.currentNode) && walker.currentNode.nodeValue.trim() !== '') { + hasText = true; + break; } - const emojiOnly = emojis.length && !hasText; + } + const emojiOnly = emojis.length && !hasText; - if (emojiOnly) { - for (let i = 0, len = emojis.length; i < len; i++) { - const { classList } = emojis[i]; - classList.add('big'); - } + if (emojiOnly) { + for (let i = 0, len = emojis.length; i < len; i++) { + const { classList } = emojis[i]; + classList.add('big'); } } diff --git a/apps/meteor/app/emoji/client/helpers.ts b/apps/meteor/app/emoji/client/helpers.ts index d36dc958cf20e..5c5d68f29e592 100644 --- a/apps/meteor/app/emoji/client/helpers.ts +++ b/apps/meteor/app/emoji/client/helpers.ts @@ -5,6 +5,9 @@ import type { EmojiCategory, EmojiItem } from '.'; import { emoji, emojiEmitter } from './lib'; export const CUSTOM_CATEGORY = 'rocket'; +export const CUSTOM_CATEGORY_CLASSNAME = 'emojipicker--custom'; + +const MIXED_TONE_SUFFIX = /_tone([1-5])-[1-5]$/; type RowItem = Array; type RowDivider = { category: string; i18n: TranslationKey }; @@ -66,11 +69,11 @@ export const createEmojiList = ( setRecentEmojis: (emojis: string[]) => void, ): (RowItem | LoadMoreItem)[] => { const items: RowItem = []; - const emojiPackages = Object.values(emoji.packages); + const emojiPackages = Object.entries(emoji.packages); let count = 0; let limited = false; - emojiPackages.forEach((emojiPackage) => { + emojiPackages.forEach(([packageName, emojiPackage]) => { if (!emojiPackage.emojisByCategory?.[category]) { return; } @@ -83,12 +86,19 @@ export const createEmojiList = ( const emojiToRender = `:${current}${tone}:`; - if (!emoji.list[emojiToRender]) { + const actualEmoji = emoji.list[emojiToRender]; + if (!actualEmoji) { removeFromRecent(emojiToRender, recentEmojis, setRecentEmojis); return; } - const image = emojiPackage.renderPicker(emojiToRender); + // A custom emoji with the same name overrides the native one (including its tones), so skip the native duplicate + if (packageName === 'native' && emoji.list[`:${current}:`]?.emojiPackage === 'emojiCustom') { + continue; + } + + const actualPackage = actualEmoji.emojiPackage; + const image = emoji.packages[actualPackage].renderPicker(emojiToRender); if (!image) { continue; } @@ -147,48 +157,59 @@ export const getEmojisBySearchTerm = ( setRecentEmojis: (emojis: string[]) => void, ) => { const emojis = []; + const seenEmojis = new Set<(typeof emoji.list)[string]>(); const searchRegExp = new RegExp(escapeRegExp(searchTerm.replace(/:/g, '')), 'i'); for (let current in emoji.list) { - if (!emoji.list.hasOwnProperty(current)) { + if (!emoji.list.hasOwnProperty(current) || !searchRegExp.test(current)) { continue; } - if (searchRegExp.test(current)) { - const emojiObject = emoji.list[current]; - const { emojiPackage, shortnames = [] } = emojiObject; - let tone = ''; - current = current.replace(/:/g, ''); - const alias = shortnames[0] !== undefined ? shortnames[0].replace(/:/g, '') : shortnames[0]; + const emojiObject = emoji.list[current]; - if (actualTone > 0 && emoji.packages[emojiPackage].toneList.hasOwnProperty(current)) { - tone = `_tone${actualTone}`; - } + // Skip duplicates (same emoji in different packages) + if (seenEmojis.has(emojiObject)) { + continue; + } + + const { emojiPackage, shortnames = [], name } = emojiObject; + let tone = ''; + current = current.replace(/:/g, ''); + + if (actualTone > 0 && emoji.packages[emojiPackage].toneList.hasOwnProperty(name ?? current)) { + tone = `_tone${actualTone}`; + } - let emojiFound = false; - - for (const key in emoji.packages[emojiPackage].emojisByCategory) { - if (emoji.packages[emojiPackage].emojisByCategory.hasOwnProperty(key)) { - const contents = emoji.packages[emojiPackage].emojisByCategory[key]; - const searchValArray = alias !== undefined ? alias.replace(/:/g, '').split('_') : alias; - if (contents.indexOf(current) !== -1 || searchValArray?.includes(searchTerm)) { - emojiFound = true; - break; - } - } + const isNative = emojiPackage === 'native'; + if (isNative) { + const mixedTones = current.match(MIXED_TONE_SUFFIX); + if (mixedTones && !(actualTone > 0 && Number(mixedTones[1]) === actualTone)) { + continue; } + } - if (emojiFound) { - const emojiToRender = `:${current}${tone}:`; + const categoryName = isNative ? current.replace(MIXED_TONE_SUFFIX, '') : current; - if (!emoji.list[emojiToRender]) { - removeFromRecent(emojiToRender, recentEmojis, setRecentEmojis); - break; - } + const isCategoryEmoji = Object.values(emoji.packages[emojiPackage].emojisByCategory).some( + (contents) => contents.indexOf(categoryName) !== -1, + ); + if (!isCategoryEmoji && shortnames.length === 0) { + continue; + } - emojis.push({ emoji: current, image: emoji.packages[emojiPackage].renderPicker(emojiToRender) }); - } + const emojiToRender = `:${current}${tone}:`; + + const actualEmoji = emoji.list[emojiToRender]; + if (!actualEmoji) { + removeFromRecent(emojiToRender, recentEmojis, setRecentEmojis); + continue; } + + seenEmojis.add(emojiObject); + + const actualPackage = actualEmoji.emojiPackage; + + emojis.push({ emoji: `${current}${tone}`, image: emoji.packages[actualPackage].renderPicker(emojiToRender) }); } return emojis; diff --git a/apps/meteor/app/emoji/client/lib.ts b/apps/meteor/app/emoji/client/lib.ts index 462e86cc34a91..688ef40d8b652 100644 --- a/apps/meteor/app/emoji/client/lib.ts +++ b/apps/meteor/app/emoji/client/lib.ts @@ -1,5 +1,4 @@ import { Emitter } from '@rocket.chat/emitter'; -import emojione from 'emojione'; import type { EmojiPackages } from '../lib/rocketchat'; @@ -14,7 +13,7 @@ export const emoji: EmojiPackages & { dispatchUpdate: () => void } = { recent: [], }, toneList: {}, - render: emojione.toImage, + render: (message: string) => message, renderPicker(emojiToRender) { const correctPackage = emoji.list[emojiToRender].emojiPackage; if (!correctPackage) { diff --git a/apps/meteor/app/emoji/lib/rocketchat.ts b/apps/meteor/app/emoji/lib/rocketchat.ts index 1c5b515407ed8..a72da9a1e88c6 100644 --- a/apps/meteor/app/emoji/lib/rocketchat.ts +++ b/apps/meteor/app/emoji/lib/rocketchat.ts @@ -7,8 +7,8 @@ export type EmojiPackage = { toneList: Record; render: (message: string) => string; renderPicker: (emojiToRender: string) => string | undefined; - ascii?: boolean; sprites?: unknown; + ascii?: boolean; list?: string[]; _regexpSignature?: string | null; _regexp?: RegExp | null; @@ -21,6 +21,7 @@ export type EmojiPackages = { list: { [key: keyof NonNullable]: | { + name?: string; category: string; emojiPackage: string; shortnames: string[]; @@ -32,8 +33,10 @@ export type EmojiPackages = { aliasOf?: undefined; extension?: string; etag?: string; + unicode?: string; } | { + name?: undefined; emojiPackage: string; aliasOf: string; extension?: undefined; diff --git a/apps/meteor/app/emoji/server/index.ts b/apps/meteor/app/emoji/server/index.ts deleted file mode 100644 index 525aac9589067..0000000000000 --- a/apps/meteor/app/emoji/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { emoji } from './lib'; diff --git a/apps/meteor/app/emoji/server/lib.ts b/apps/meteor/app/emoji/server/lib.ts deleted file mode 100644 index ecd109579cfe7..0000000000000 --- a/apps/meteor/app/emoji/server/lib.ts +++ /dev/null @@ -1,28 +0,0 @@ -import type { EmojiPackages } from '../lib/rocketchat'; - -export const emoji: EmojiPackages = { - packages: { - base: { - emojiCategories: [{ key: 'recent', i18n: 'Frequently_Used' }], - categoryIndex: 0, - emojisByCategory: { - recent: [], - }, - toneList: {}, - render: (message: string) => message, - renderPicker(emojiToRender) { - if (!emoji.list[emojiToRender]) { - return; - } - const correctPackage = emoji.list[emojiToRender].emojiPackage; - if (!correctPackage) { - return; - } - - return emoji.packages[correctPackage]?.renderPicker(emojiToRender); - }, - }, - }, - /** @type {Record} */ - list: {}, -}; diff --git a/apps/meteor/app/error-handler/server/index.ts b/apps/meteor/app/error-handler/server/index.ts deleted file mode 100644 index a321a704bc2cb..0000000000000 --- a/apps/meteor/app/error-handler/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './lib/RocketChat.ErrorHandler'; diff --git a/apps/meteor/app/file-upload/server/config/Webdav.ts b/apps/meteor/app/file-upload/server/config/Webdav.ts deleted file mode 100644 index 901c74e9c149e..0000000000000 --- a/apps/meteor/app/file-upload/server/config/Webdav.ts +++ /dev/null @@ -1,74 +0,0 @@ -import _ from 'underscore'; - -import { SystemLogger } from '../../../../server/lib/logger/system'; -import { settings } from '../../../settings/server'; -import { FileUploadClass, FileUpload } from '../lib/FileUpload'; -import '../../ufs/Webdav/server'; - -const get: FileUploadClass['get'] = async function (this: FileUploadClass, file, _req, res) { - (await this.store.getReadStream(file._id, file)) - .on('error', () => { - SystemLogger.error('An error ocurred when fetching the file'); - res.writeHead(503); - res.end(); - }) - .on('data', (chunk) => { - res.write(chunk); - }) - .on('end', res.end.bind(res)); -}; - -const copy: FileUploadClass['copy'] = async function (this: FileUploadClass, file, out) { - return new Promise(async (resolve) => { - (await this.store.getReadStream(file._id, file)).pipe(out).on('finish', () => resolve()); - }); -}; - -const WebdavUploads = new FileUploadClass({ - name: 'Webdav:Uploads', - get, - copy, - // store setted bellow -}); - -const WebdavAvatars = new FileUploadClass({ - name: 'Webdav:Avatars', - get, - copy, - // store setted bellow -}); - -const WebdavUserDataFiles = new FileUploadClass({ - name: 'Webdav:UserDataFiles', - get, - copy, - // store setted bellow -}); - -const configure = _.debounce(() => { - const uploadFolderPath = settings.get('FileUpload_Webdav_Upload_Folder_Path'); - const server = settings.get('FileUpload_Webdav_Server_URL'); - const username = settings.get('FileUpload_Webdav_Username'); - const password = settings.get('FileUpload_Webdav_Password'); - - if (!server || !username || !password) { - return; - } - - const config = { - connection: { - credentials: { - server, - username, - password, - }, - }, - uploadFolderPath, - }; - - WebdavUploads.store = FileUpload.configureUploadsStore('Webdav', WebdavUploads.name, config); - WebdavAvatars.store = FileUpload.configureUploadsStore('Webdav', WebdavAvatars.name, config); - WebdavUserDataFiles.store = FileUpload.configureUploadsStore('Webdav', WebdavUserDataFiles.name, config); -}, 500); - -settings.watchByRegex(/^FileUpload_Webdav_/, configure); diff --git a/apps/meteor/app/file-upload/server/index.ts b/apps/meteor/app/file-upload/server/index.ts deleted file mode 100644 index ff2fc4fabf369..0000000000000 --- a/apps/meteor/app/file-upload/server/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import '../lib/FileUploadBase'; -import { FileUpload } from './lib/FileUpload'; -import './lib/requests'; -import './config/_configUploadStorage'; -import './methods/sendFileMessage'; -import './methods/getS3FileUrl'; - -export { FileUpload }; diff --git a/apps/meteor/app/file-upload/server/lib/FileUpload.spec.ts b/apps/meteor/app/file-upload/server/lib/FileUpload.spec.ts deleted file mode 100644 index ddec9231b3bb2..0000000000000 --- a/apps/meteor/app/file-upload/server/lib/FileUpload.spec.ts +++ /dev/null @@ -1,471 +0,0 @@ -import { expect } from 'chai'; -import { before, beforeEach, describe, it } from 'mocha'; -import proxyquire from 'proxyquire'; -import sinon from 'sinon'; - -import { createFakeMessageWithAttachment } from '../../../../tests/mocks/data'; - -const fakeStorageModel = { findOneById: sinon.stub(), deleteFile: sinon.stub() }; -const settingsStub = { watch: sinon.stub(), get: sinon.stub() }; -const settingsGetMap = new Map(); -const messagesModelStub = { - find: sinon.stub(), -}; -const usersModelStub = { - findOneByIdAndLoginToken: sinon.stub(), -}; -const subscriptionsModelStub = { - findOneByRoomIdAndUserId: sinon.stub(), -}; -const validateAndDecodeJWTStub = sinon.stub(); -const systemLoggerStub = { - error: sinon.stub(), -}; -const roomCoordinatorStub = { - getRoomDirectives: sinon.stub(), -}; - -const { FileUpload, FileUploadClass } = proxyquire.noCallThru().load('./FileUpload', { - '@rocket.chat/models': { - Messages: messagesModelStub, - Users: usersModelStub, - Subscriptions: subscriptionsModelStub, - }, - 'meteor/check': sinon.stub(), - 'meteor/meteor': sinon.stub(), - 'meteor/ostrio:cookies': { Cookies: sinon.stub() }, - 'sharp': sinon.stub(), - 'stream-buffers': sinon.stub(), - '@rocket.chat/tools': sinon.stub(), - '../../../../server/lib/i18n': sinon.stub(), - '../../../../server/lib/logger/system': { SystemLogger: systemLoggerStub }, - '../../../../server/lib/rooms/roomCoordinator': { roomCoordinator: roomCoordinatorStub }, - '../../../../server/ufs': sinon.stub(), - '../../../../server/ufs/ufs-methods': sinon.stub(), - '../../../settings/server': { settings: settingsStub }, - '../../../utils/lib/mimeTypes': sinon.stub(), - '../../../utils/server/lib/JWTHelper': { - validateAndDecodeJWT: validateAndDecodeJWTStub, - generateJWT: sinon.stub(), - }, - '../../../utils/server/restrictions': sinon.stub(), - '../../../api/server/lib/MultipartUploadHandler': sinon.stub(), - '@rocket.chat/account-utils': { hashLoginToken: sinon.stub().callsFake((token) => `hashed_${token}`) }, -}); - -describe('FileUpload', () => { - before(() => { - new FileUploadClass({ name: 'fakeStorage:Uploads', model: fakeStorageModel, store: {} }); - settingsGetMap.set('FileUpload_Storage_Type', 'fakeStorage'); - settingsStub.get.callsFake((settingName) => settingsGetMap.get(settingName)); - }); - - beforeEach(() => { - messagesModelStub.find.reset(); - fakeStorageModel.findOneById.reset(); - fakeStorageModel.deleteFile.reset(); - usersModelStub.findOneByIdAndLoginToken.reset(); - subscriptionsModelStub.findOneByRoomIdAndUserId.reset(); - validateAndDecodeJWTStub.reset(); - systemLoggerStub.error.reset(); - roomCoordinatorStub.getRoomDirectives.reset(); - settingsGetMap.clear(); - settingsGetMap.set('FileUpload_Storage_Type', 'fakeStorage'); - }); - - it('should not remove any file if no room id is provided', async () => { - expect(await FileUpload.removeFilesByRoomId()).to.be.undefined; - - expect(messagesModelStub.find.called).to.be.false; - expect(fakeStorageModel.findOneById.called).to.be.false; - }); - - it('should not remove any file if an empty room id is provided', async () => { - expect(await FileUpload.removeFilesByRoomId('')).to.be.undefined; - - expect(messagesModelStub.find.called).to.be.false; - expect(fakeStorageModel.findOneById.called).to.be.false; - }); - - it('should not remove any file if an invalid room id is provided', async () => { - messagesModelStub.find.returns([]); - expect(await FileUpload.removeFilesByRoomId('invalid')).to.be.undefined; - - expect(messagesModelStub.find.called).to.be.true; - expect(fakeStorageModel.findOneById.called).to.be.false; - }); - - it('should delete file from storage if message contains a single file', async () => { - fakeStorageModel.findOneById.resolves({ _id: 'file-id', store: 'fakeStorage:Uploads' }); - - const fakeMessage = createFakeMessageWithAttachment(); - messagesModelStub.find.returns([fakeMessage]); - expect(await FileUpload.removeFilesByRoomId('invalid')).to.be.undefined; - - expect(messagesModelStub.find.called).to.be.true; - expect(fakeStorageModel.findOneById.calledOnceWith(fakeMessage.files?.[0]._id)).to.be.true; - expect(fakeStorageModel.deleteFile.calledOnceWith('file-id')).to.be.true; - }); - - it('should delete multiple files from storage if message contains many files (e.g. image and thumbnail)', async () => { - fakeStorageModel.findOneById.callsFake((_id) => ({ _id, store: 'fakeStorage:Uploads' })); - - const fakeMessage = createFakeMessageWithAttachment({ - files: [ - { _id: 'file-id', name: 'image', size: 100, type: 'image/png', format: 'png' }, - { _id: 'thumbnail-id', name: 'thumbnail-image', size: 25, type: 'image/png', format: 'png' }, - ], - }); - messagesModelStub.find.returns([fakeMessage]); - expect(await FileUpload.removeFilesByRoomId('invalid')).to.be.undefined; - - expect(messagesModelStub.find.called).to.be.true; - expect(fakeStorageModel.findOneById.calledTwice).to.be.true; - expect(fakeStorageModel.findOneById.calledWith('file-id')).to.be.true; - expect(fakeStorageModel.findOneById.calledWith('thumbnail-id')).to.be.true; - expect(fakeStorageModel.deleteFile.calledTwice).to.be.true; - expect(fakeStorageModel.deleteFile.calledWith('file-id')).to.be.true; - expect(fakeStorageModel.deleteFile.calledWith('thumbnail-id')).to.be.true; - }); - - describe('requestCanAccessFiles', () => { - it('should allow access if FileUpload_ProtectFiles is false', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', false); - - const request = { - headers: {}, - url: '/file-upload/test-file-id/test-file.png', - } as any; - - const result = await FileUpload.requestCanAccessFiles(request); - expect(result).to.be.true; - }); - - it('should allow access if no url is provided', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - - const request = { - headers: {}, - url: undefined, - } as any; - - const result = await FileUpload.requestCanAccessFiles(request); - expect(result).to.be.true; - }); - - it('should deny access if FileUpload_Enable_json_web_token_for_files is true but no token is provided', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true); - - const request = { - headers: {}, - url: '/file-upload/test-file-id/test-file.png', - } as any; - - const file = { - _id: 'test-file-id', - rid: 'test-room-id', - } as any; - - const result = await FileUpload.requestCanAccessFiles(request, file); - expect(result).to.be.false; - }); - - it('should deny access if FileUpload_json_web_token_secret_for_files is not configured', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true); - settingsGetMap.set('FileUpload_json_web_token_secret_for_files', ''); - - const request = { - headers: {}, - url: '/file-upload/test-file-id/test-file.png?token=some-token', - } as any; - - const file = { - _id: 'test-file-id', - rid: 'test-room-id', - } as any; - - const result = await FileUpload.requestCanAccessFiles(request, file); - expect(result).to.be.false; - expect(systemLoggerStub.error.calledOnce).to.be.true; - }); - - it('should deny access if an invalid token is provided', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true); - settingsGetMap.set('FileUpload_json_web_token_secret_for_files', 'test-secret'); - validateAndDecodeJWTStub.returns(null); - - const request = { - headers: {}, - url: '/file-upload/test-file-id/test-file.png?token=invalid-token', - } as any; - - const file = { - _id: 'test-file-id', - rid: 'test-room-id', - } as any; - - const result = await FileUpload.requestCanAccessFiles(request, file); - expect(result).to.be.false; - expect(validateAndDecodeJWTStub.calledOnce).to.be.true; - }); - - it('should deny access if token is invalid or payload cannot be decoded', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true); - settingsGetMap.set('FileUpload_json_web_token_secret_for_files', 'test-secret'); - validateAndDecodeJWTStub.returns(null); - - const request = { - headers: {}, - url: '/file-upload/test-file-id/test-file.png?token=valid-token', - } as any; - - const file = { - _id: 'test-file-id', - rid: 'test-room-id', - } as any; - - const result = await FileUpload.requestCanAccessFiles(request, file); - expect(result).to.be.false; - }); - - it('should deny access if the fileId and rid in the token do not match the requested file', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true); - settingsGetMap.set('FileUpload_json_web_token_secret_for_files', 'test-secret'); - validateAndDecodeJWTStub.returns({ fileId: 'different-file-id', rid: 'different-room-id', userId: 'test-user-id' }); - - const request = { - headers: {}, - url: '/file-upload/test-file-id/test-file.png?token=valid-token', - } as any; - - const file = { - _id: 'test-file-id', - rid: 'test-room-id', - } as any; - - const result = await FileUpload.requestCanAccessFiles(request, file); - expect(result).to.be.false; - }); - - it('should deny access if file object is not provided when using JWT', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true); - settingsGetMap.set('FileUpload_json_web_token_secret_for_files', 'test-secret'); - validateAndDecodeJWTStub.returns({ fileId: 'test-file-id', rid: 'test-room-id', userId: 'test-user-id' }); - - const request = { - headers: {}, - url: '/file-upload/test-file-id/test-file.png?token=valid-token', - } as any; - - const result = await FileUpload.requestCanAccessFiles(request, undefined); - expect(result).to.be.false; - }); - - it('should allow access when everything is valid: token is valid, secret configured, and file/room match', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true); - settingsGetMap.set('FileUpload_json_web_token_secret_for_files', 'test-secret'); - validateAndDecodeJWTStub.returns({ fileId: 'test-file-id', rid: 'test-room-id', userId: 'test-user-id' }); - - const request = { - headers: {}, - url: '/file-upload/test-file-id/test-file.png?token=valid-token', - } as any; - - const file = { - _id: 'test-file-id', - rid: 'test-room-id', - } as any; - - const result = await FileUpload.requestCanAccessFiles(request, file); - expect(result).to.be.true; - expect(validateAndDecodeJWTStub.calledOnceWith('valid-token', 'test-secret')).to.be.true; - }); - - describe('livechat room-based authorization (rc_room_type=l)', () => { - it('should allow access when livechat credentials are valid and file belongs to the same room', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - const canAccessUploadedFileStub = sinon.stub().resolves(true); - roomCoordinatorStub.getRoomDirectives.returns({ canAccessUploadedFile: canAccessUploadedFileStub }); - - const request = { - headers: {}, - url: '/file-upload/test-file-id/test-file.png?rc_room_type=l&rc_rid=room-1&rc_token=visitor-token', - } as any; - - const file = { _id: 'test-file-id', rid: 'room-1' } as any; - - const result = await FileUpload.requestCanAccessFiles(request, file); - expect(result).to.be.true; - expect(canAccessUploadedFileStub.calledOnce).to.be.true; - }); - - it('should deny access when livechat credentials are valid but file belongs to a different room', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - const canAccessUploadedFileStub = sinon.stub().resolves(false); - roomCoordinatorStub.getRoomDirectives.returns({ canAccessUploadedFile: canAccessUploadedFileStub }); - - const request = { - headers: {}, - url: '/file-upload/victim-file-id/secret.txt?rc_room_type=l&rc_rid=room-attacker&rc_token=attacker-token', - } as any; - - // File belongs to victim's room, not the attacker's room - const file = { _id: 'victim-file-id', rid: 'room-victim' } as any; - - const result = await FileUpload.requestCanAccessFiles(request, file); - expect(result).to.be.false; - }); - - it('should pass the file object to canAccessUploadedFile', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - const canAccessUploadedFileStub = sinon.stub().resolves(true); - roomCoordinatorStub.getRoomDirectives.returns({ canAccessUploadedFile: canAccessUploadedFileStub }); - - const request = { - headers: {}, - url: '/file-upload/test-file-id/test-file.png?rc_room_type=l&rc_rid=room-1&rc_token=visitor-token', - } as any; - - const file = { _id: 'test-file-id', rid: 'room-1' } as any; - - await FileUpload.requestCanAccessFiles(request, file); - - const callArgs = canAccessUploadedFileStub.firstCall.args; - expect(callArgs[1]).to.deep.equal(file); - }); - - it('should deny access when rc_room_type is provided but canAccessUploadedFile returns false', async () => { - settingsGetMap.set('FileUpload_ProtectFiles', true); - const canAccessUploadedFileStub = sinon.stub().resolves(false); - roomCoordinatorStub.getRoomDirectives.returns({ canAccessUploadedFile: canAccessUploadedFileStub }); - - const request = { - headers: {}, - url: '/file-upload/test-file-id/test-file.png?rc_room_type=l&rc_rid=room-1&rc_token=invalid-token', - } as any; - - const file = { _id: 'test-file-id', rid: 'room-1' } as any; - - const result = await FileUpload.requestCanAccessFiles(request, file); - expect(result).to.be.false; - }); - }); - }); - - describe('getRequestUserId', () => { - it('should return undefined when no url is provided', async () => { - const request = { headers: {}, url: undefined } as any; - - const result = await FileUpload.getRequestUserId(request); - expect(result).to.be.undefined; - expect(usersModelStub.findOneByIdAndLoginToken.called).to.be.false; - }); - - it('should return undefined when no credentials are provided', async () => { - const request = { headers: {}, url: '/ufs/UserDataFiles/file-id' } as any; - - const result = await FileUpload.getRequestUserId(request); - expect(result).to.be.undefined; - expect(usersModelStub.findOneByIdAndLoginToken.called).to.be.false; - }); - - it('should return undefined when a uid is provided without a token', async () => { - const request = { headers: { 'x-user-id': 'user-1' }, url: '/ufs/UserDataFiles/file-id' } as any; - - const result = await FileUpload.getRequestUserId(request); - expect(result).to.be.undefined; - expect(usersModelStub.findOneByIdAndLoginToken.called).to.be.false; - }); - - it('should return undefined when the login token is invalid', async () => { - usersModelStub.findOneByIdAndLoginToken.resolves(null); - - const request = { headers: { 'x-user-id': 'user-1', 'x-auth-token': 'bad-token' }, url: '/ufs/UserDataFiles/file-id' } as any; - - const result = await FileUpload.getRequestUserId(request); - expect(result).to.be.undefined; - expect(usersModelStub.findOneByIdAndLoginToken.calledOnceWith('user-1', 'hashed_bad-token')).to.be.true; - }); - - it('should return the user id when credentials are valid via headers', async () => { - usersModelStub.findOneByIdAndLoginToken.resolves({ _id: 'user-1' }); - - const request = { headers: { 'x-user-id': 'user-1', 'x-auth-token': 'good-token' }, url: '/ufs/UserDataFiles/file-id' } as any; - - const result = await FileUpload.getRequestUserId(request); - expect(result).to.equal('user-1'); - expect(usersModelStub.findOneByIdAndLoginToken.calledOnceWith('user-1', 'hashed_good-token')).to.be.true; - }); - - it('should return the user id when credentials are valid via query string', async () => { - usersModelStub.findOneByIdAndLoginToken.resolves({ _id: 'user-1' }); - - const request = { headers: {}, url: '/ufs/UserDataFiles/file-id?rc_uid=user-1&rc_token=good-token' } as any; - - const result = await FileUpload.getRequestUserId(request); - expect(result).to.equal('user-1'); - expect(usersModelStub.findOneByIdAndLoginToken.calledOnceWith('user-1', 'hashed_good-token')).to.be.true; - }); - }); - - describe('UserDataFiles.onRead', () => { - // eslint-disable-next-line new-cap - const getOnRead = () => FileUpload.defaults.UserDataFiles().onRead; - - const createResponse = () => { - const res = { writeHead: sinon.stub(), setHeader: sinon.stub() }; - res.writeHead.returns(res); - return res as any; - }; - - it('should deny access to an unauthenticated request', async () => { - const res = createResponse(); - const file = { _id: 'file-id', userId: 'owner-1', name: 'export.zip' } as any; - const request = { headers: {}, url: '/ufs/UserDataFiles/file-id' } as any; - - const result = await getOnRead()('file-id', file, request, res); - expect(result).to.be.false; - expect(res.writeHead.calledOnceWith(403)).to.be.true; - expect(res.setHeader.called).to.be.false; - }); - - it('should deny access to an authenticated user who is not the owner', async () => { - usersModelStub.findOneByIdAndLoginToken.resolves({ _id: 'attacker-1' }); - - const res = createResponse(); - const file = { _id: 'file-id', userId: 'owner-1', name: 'export.zip' } as any; - const request = { - headers: { 'x-user-id': 'attacker-1', 'x-auth-token': 'attacker-token' }, - url: '/ufs/UserDataFiles/file-id', - } as any; - - const result = await getOnRead()('file-id', file, request, res); - expect(result).to.be.false; - expect(res.writeHead.calledOnceWith(403)).to.be.true; - expect(res.setHeader.called).to.be.false; - }); - - it('should allow access to the owner of the export', async () => { - usersModelStub.findOneByIdAndLoginToken.resolves({ _id: 'owner-1' }); - - const res = createResponse(); - const file = { _id: 'file-id', userId: 'owner-1', name: 'export.zip' } as any; - const request = { - headers: { 'x-user-id': 'owner-1', 'x-auth-token': 'owner-token' }, - url: '/ufs/UserDataFiles/file-id', - } as any; - - const result = await getOnRead()('file-id', file, request, res); - expect(result).to.be.true; - expect(res.writeHead.called).to.be.false; - expect(res.setHeader.calledOnceWith('content-disposition', 'attachment; filename="export.zip"')).to.be.true; - }); - }); -}); diff --git a/apps/meteor/app/file-upload/server/lib/ranges.ts b/apps/meteor/app/file-upload/server/lib/ranges.ts deleted file mode 100644 index 0fedb0e981fac..0000000000000 --- a/apps/meteor/app/file-upload/server/lib/ranges.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type http from 'node:http'; - -import type { IUpload } from '@rocket.chat/core-typings'; - -function getByteRange(header?: string) { - if (!header) { - return; - } - const matches = header.match(/(\d+)-(\d+)/); - if (!matches) { - return; - } - return { - start: parseInt(matches[1], 10), - stop: parseInt(matches[2], 10), - }; -} - -export function getFileRange(file: IUpload, req: http.IncomingMessage) { - const range = getByteRange(req.headers.range); - if (!range) { - return; - } - const size = file.size || 0; - if (range.start > size || range.stop <= range.start || range.stop > size) { - return { outOfRange: true, start: range.start, stop: range.stop }; - } - - return { outOfRange: false, start: range.start, stop: range.stop }; -} - -// code from: https://github.com/jalik/jalik-ufs/blob/master/ufs-server.js#L310 -export const setRangeHeaders = function ( - range: { start: number; stop: number; outOfRange?: boolean } | undefined, - file: IUpload, - res: http.ServerResponse, -) { - if (!range) { - return; - } - - if (range.outOfRange) { - // out of range request, return 416 - res.removeHeader('Content-Length'); - res.removeHeader('Content-Type'); - res.removeHeader('Content-Disposition'); - res.removeHeader('Last-Modified'); - res.setHeader('Content-Range', `bytes */${file.size}`); - res.writeHead(416); - res.end(); - return; - } - - res.setHeader('Content-Range', `bytes ${range.start}-${range.stop}/${file.size}`); - res.removeHeader('Content-Length'); - res.setHeader('Content-Length', range.stop - range.start + 1); - res.statusCode = 206; -}; diff --git a/apps/meteor/app/file-upload/ufs/AmazonS3/server.ts b/apps/meteor/app/file-upload/ufs/AmazonS3/server.ts deleted file mode 100644 index 2ab3312b31f30..0000000000000 --- a/apps/meteor/app/file-upload/ufs/AmazonS3/server.ts +++ /dev/null @@ -1,212 +0,0 @@ -import stream from 'node:stream'; - -import { - DeleteObjectCommand, - GetObjectCommand, - S3Client, - type GetObjectCommandInput, - type PutObjectCommandInput, - type S3ClientConfig, -} from '@aws-sdk/client-s3'; -import { Upload } from '@aws-sdk/lib-storage'; -import { getSignedUrl } from '@aws-sdk/s3-request-presigner'; -import type { IUpload } from '@rocket.chat/core-typings'; -import { Random } from '@rocket.chat/random'; -import { check } from 'meteor/check'; -import _ from 'underscore'; - -import { SystemLogger } from '../../../../server/lib/logger/system'; -import { UploadFS } from '../../../../server/ufs'; -import type { StoreOptions } from '../../../../server/ufs/ufs-store'; -import { getUrlExpiryTimeSpanWithFallback } from '../../server/lib/urlExpiry'; - -export type S3Options = StoreOptions & { - connection: S3ClientConfig; - params: { - Bucket: string; - ACL: string; - }; - URLExpiryTimeSpan: number; - getPath: (file: Omit) => string; -}; - -class AmazonS3Store extends UploadFS.Store { - protected getPath: (file: Omit) => string; - - constructor(options: S3Options) { - // Default options - // options.secretAccessKey, - // options.accessKeyId, - // options.region, - // options.sslEnabled // optional - - options = _.extend( - { - httpOptions: { - timeout: 6000, - agent: false, - }, - }, - options, - ); - - super(options); - - const classOptions = options; - - const customUserAgent = process.env.FILE_STORAGE_CUSTOM_USER_AGENT?.trim(); - - const s3 = new S3Client({ - ...options.connection, - ...(customUserAgent && { customUserAgent }), - }); - - options.getPath = - options.getPath || - function (file) { - return file._id; - }; - - this.getPath = function (file) { - if (file.AmazonS3) { - return file.AmazonS3.path; - } - // Compatibility - // TODO: Migration - if (file.s3) { - return file.s3.path + file._id; - } - - return file._id; - }; - - this.getRedirectURL = async (file, forceDownload = false) => { - const expiresIn = getUrlExpiryTimeSpanWithFallback(classOptions.URLExpiryTimeSpan); - return getSignedUrl( - s3, - new GetObjectCommand({ - Key: this.getPath(file), - ResponseContentDisposition: `${forceDownload ? 'attachment' : 'inline'}; filename="${encodeURI(file.name || '')}"`, - Bucket: classOptions.params.Bucket, - }), - { expiresIn }, - ); - }; - - /** - * Creates the file in the collection - */ - this.create = async (file) => { - check(file, Object); - - if (file._id == null) { - file._id = Random.id(); - } - - file.AmazonS3 = { - path: classOptions.getPath(file as Omit), - }; - - file.store = this.options.name; // assign store to file - - return (await this.getCollection().insertOne(file)).insertedId; - }; - - /** - * Removes the file - */ - this.delete = async function (fileId) { - const file = await this.getCollection().findOne({ _id: fileId }); - if (!file) { - throw new Error('File not found'); - } - - try { - return await s3.send( - new DeleteObjectCommand({ - Key: this.getPath(file), - Bucket: classOptions.params.Bucket, - }), - ); - } catch (error) { - SystemLogger.error({ error, key: this.getPath(file), bucket: classOptions.params.Bucket }); - throw error; - } - }; - - /** - * Returns the file read stream - */ - this.getReadStream = async function (_fileId, file, options = {}) { - const params: GetObjectCommandInput = { - Key: this.getPath(file), - Bucket: classOptions.params.Bucket, - }; - - if (options.start != null && options.end != null) { - params.Range = `bytes=${options.start}-${options.end}`; - } - - const response = await s3.send(new GetObjectCommand(params)); - - if (!response.Body) { - throw new Error('File not found'); - } - - if (!('readable' in response.Body)) { - throw new Error('Response body is not a readable stream'); - } - - return response.Body; - }; - - /** - * Returns the file write stream - */ - this.getWriteStream = async function (_fileId, file /* , options*/) { - const writeStream = new stream.PassThrough(); - - writeStream.on('newListener', (event, listener) => { - if (event === 'finish') { - process.nextTick(() => { - writeStream.removeListener(event, listener); - writeStream.on('real_finish', listener); - }); - } - }); - - const uploadParams: PutObjectCommandInput = { - Key: this.getPath(file), - Body: writeStream, - Bucket: classOptions.params.Bucket, - ...(file.type && { ContentType: file.type }), - ...(file.size != null && { ContentLength: file.size }), - ...(classOptions.params.ACL && { ACL: classOptions.params.ACL as PutObjectCommandInput['ACL'] }), - }; - - const upload = new Upload({ - client: s3, - params: uploadParams, - }); - - upload - .done() - .then(() => { - writeStream.emit('real_finish'); - }) - .catch((error) => { - SystemLogger.error({ err: error }); - writeStream.emit('error', error); - }); - - return writeStream; - }; - - this.getUrlExpiryTimeSpan = async () => { - return getUrlExpiryTimeSpanWithFallback(classOptions.URLExpiryTimeSpan); - }; - } -} - -// Add store to UFS namespace -UploadFS.store.AmazonS3 = AmazonS3Store; diff --git a/apps/meteor/app/file-upload/ufs/GoogleStorage/server.ts b/apps/meteor/app/file-upload/ufs/GoogleStorage/server.ts deleted file mode 100644 index 03b74df609b01..0000000000000 --- a/apps/meteor/app/file-upload/ufs/GoogleStorage/server.ts +++ /dev/null @@ -1,163 +0,0 @@ -import type { GetSignedUrlConfig } from '@google-cloud/storage'; -import { Storage } from '@google-cloud/storage'; -import type { IUpload } from '@rocket.chat/core-typings'; -import { Random } from '@rocket.chat/random'; -import { check } from 'meteor/check'; - -import { SystemLogger } from '../../../../server/lib/logger/system'; -import { UploadFS } from '../../../../server/ufs'; -import type { StoreOptions } from '../../../../server/ufs/ufs-store'; -import { getUrlExpiryTimeSpanWithFallback } from '../../server/lib/urlExpiry'; - -type GStoreOptions = StoreOptions & { - connection: { - credentials: { - client_email: string; - private_key: string; - projectId: string; - }; - }; - bucket: string; - URLExpiryTimeSpan: number; - getPath: (file: Omit) => string; -}; - -class GoogleStorageStore extends UploadFS.Store { - protected getPath: (file: Omit) => string; - - constructor(options: GStoreOptions) { - super(options); - - const userAgent = process.env.FILE_STORAGE_CUSTOM_USER_AGENT?.trim(); - - const gcs = new Storage({ - ...(userAgent && { userAgent }), - ...options.connection, - }); - const bucket = gcs.bucket(options.bucket); - - options.getPath = - options.getPath || - function (file) { - return file._id; - }; - - this.getPath = function (file) { - if (file.GoogleStorage) { - return file.GoogleStorage.path; - } - // Compatibility - // TODO: Migration - if (file.googleCloudStorage) { - return file.googleCloudStorage.path + file._id; - } - - return file._id; - }; - - this.getRedirectURL = async (file, forceDownload = false) => { - const expirySeconds = getUrlExpiryTimeSpanWithFallback(options.URLExpiryTimeSpan); - const params: GetSignedUrlConfig = { - action: 'read', - responseDisposition: forceDownload ? 'attachment' : 'inline', - version: 'v2', - expires: Date.now() + expirySeconds * 1000, - }; - - const res = await bucket.file(this.getPath(file)).getSignedUrl(params); - return res[0]; - }; - - this.getUrlExpiryTimeSpan = async () => { - return getUrlExpiryTimeSpanWithFallback(options.URLExpiryTimeSpan); - }; - - /** - * Creates the file in the collection - * @param file - * @param callback - * @return {string} - */ - this.create = async function (file) { - check(file, Object); - - if (file._id == null) { - file._id = Random.id(); - } - - file.GoogleStorage = { - path: options.getPath(file as Omit), - }; - - file.store = this.options.name; // assign store to file - - return (await this.getCollection().insertOne(file)).insertedId; - }; - - /** - * Removes the file - * @param fileId - * @param callback - */ - this.delete = async function (fileId) { - // TODO - const file = await this.getCollection().findOne({ _id: fileId }); - if (!file) { - throw new Error('File not found'); - } - - try { - return bucket.file(this.getPath(file)).delete(); - } catch (err: any) { - SystemLogger.error({ err }); - } - }; - - /** - * Returns the file read stream - * @param fileId - * @param file - * @param options - * @return {*} - */ - this.getReadStream = async function (_fileId, file, options = {}) { - const config: { - start?: number; - end?: number; - } = {}; - - if (options.start != null) { - config.start = options.start; - } - - if (options.end != null) { - config.end = options.end; - } - - return bucket.file(this.getPath(file)).createReadStream(config); - }; - - /** - * Returns the file write stream - * @param fileId - * @param file - * @param options - * @return {*} - */ - this.getWriteStream = async function (_fileId, file /* , options*/) { - return bucket.file(this.getPath(file)).createWriteStream({ - gzip: false, - metadata: { - contentType: file.type, - contentDisposition: `inline; filename=${file.name}`, - // metadata: { - // custom: 'metadata' - // } - }, - }); - }; - } -} - -// Add store to UFS namespace -UploadFS.store.GoogleStorage = GoogleStorageStore; diff --git a/apps/meteor/app/file-upload/ufs/Webdav/server.ts b/apps/meteor/app/file-upload/ufs/Webdav/server.ts deleted file mode 100644 index 7eccb59d609cf..0000000000000 --- a/apps/meteor/app/file-upload/ufs/Webdav/server.ts +++ /dev/null @@ -1,154 +0,0 @@ -import stream from 'node:stream'; - -import type { IUpload } from '@rocket.chat/core-typings'; -import { Random } from '@rocket.chat/random'; -import { check } from 'meteor/check'; - -import { SystemLogger } from '../../../../server/lib/logger/system'; -import { UploadFS } from '../../../../server/ufs'; -import type { StoreOptions } from '../../../../server/ufs/ufs-store'; -import { WebdavClientAdapter } from '../../../webdav/server/lib/webdavClientAdapter'; - -type WebdavOptions = StoreOptions & { - connection: { - credentials: { - server: string; - username: string; - password: string; - }; - }; - uploadFolderPath: string; - getPath: (file: Omit) => string; -}; - -class WebdavStore extends UploadFS.Store { - protected getPath: (file: Omit) => string; - - constructor(options: WebdavOptions) { - super(options); - const { server, username, password } = options.connection.credentials; - const client = new WebdavClientAdapter(server, { username, password }); - - options.getPath = function (file) { - if (options.uploadFolderPath[options.uploadFolderPath.length - 1] !== '/') { - options.uploadFolderPath += '/'; - } - return options.uploadFolderPath + file._id; - }; - - client.stat(options.uploadFolderPath).catch((err) => { - if (err.message.toLowerCase() === 'not found') { - void client.createDirectory(options.uploadFolderPath); - } else if (err.message.toLowerCase() === 'unauthorized') { - console.warn('File upload is unauthorized to connect on Webdav, please verify your credentials'); - } - }); - - /** - * Returns the file path - * @param file - * @return {string} - */ - this.getPath = function (file) { - if (file.Webdav) { - return file.Webdav.path; - } - - return file._id; - }; - - /** - * Creates the file in the col lection - * @param file - * @param callback - * @return {string} - */ - this.create = async function (file) { - check(file, Object); - - if (file._id == null) { - file._id = Random.id(); - } - - file.Webdav = { - path: options.getPath(file as Omit), - }; - - file.store = this.options.name; - - return (await this.getCollection().insertOne(file)).insertedId; - }; - - /** - * Removes the file - * @param fileId - * @param callback - */ - this.delete = async function (fileId) { - const file = await this.getCollection().findOne({ _id: fileId }); - if (!file) { - throw new Error('File no found'); - } - - try { - return client.deleteFile(this.getPath(file)); - } catch (err: any) { - SystemLogger.error({ err }); - } - }; - - /** - * Returns the file read stream - * @param fileId - * @param file - * @param options - * @return {*} - */ - this.getReadStream = async function (_fileId, file, options = {}) { - const range: { - start?: number; - end?: number; - } = {}; - - if (options.start != null) { - range.start = options.start; - } - - if (options.end != null) { - range.end = options.end; - } - return client.createReadStream(this.getPath(file), options); - }; - - /** - * Returns the file write stream - * @param fileId - * @param file - * @return {*} - */ - this.getWriteStream = async function (_fileId, file) { - const writeStream = new stream.PassThrough(); - const webdavStream = client.createWriteStream(this.getPath(file), file.size || 0); - - // TODO remove timeout when UploadFS bug resolved - const newListenerCallback = (event: string, listener: () => any) => { - if (event === 'finish') { - process.nextTick(() => { - writeStream.removeListener(event, listener); - writeStream.removeListener('newListener', newListenerCallback); - writeStream.on(event, () => { - setTimeout(listener, 500); - }); - }); - } - }; - writeStream.on('newListener', newListenerCallback); - - writeStream.pipe(webdavStream); - return writeStream; - }; - } -} - -// Add store to UFS namespace -UploadFS.store.Webdav = WebdavStore; diff --git a/apps/meteor/app/github-enterprise/server/index.ts b/apps/meteor/app/github-enterprise/server/index.ts deleted file mode 100644 index cf327e4971bb2..0000000000000 --- a/apps/meteor/app/github-enterprise/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './lib'; diff --git a/apps/meteor/app/github-enterprise/server/lib.ts b/apps/meteor/app/github-enterprise/server/lib.ts deleted file mode 100644 index b4f67a1c3a50f..0000000000000 --- a/apps/meteor/app/github-enterprise/server/lib.ts +++ /dev/null @@ -1,28 +0,0 @@ -import type { OauthConfig } from '@rocket.chat/core-typings'; -import { Meteor } from 'meteor/meteor'; - -import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; -import { settings } from '../../settings/server'; - -// GitHub Enterprise Server CallBack URL needs to be http(s)://{rocketchat.server}[:port]/_oauth/github_enterprise -// In RocketChat -> Administration the URL needs to be http(s)://{github.enterprise.server}/ - -const config: OauthConfig = { - serverURL: '', - identityPath: '/api/v3/user', - authorizePath: '/login/oauth/authorize', - tokenPath: '/login/oauth/access_token', - addAutopublishFields: { - forLoggedInUser: ['services.github-enterprise'], - forOtherUsers: ['services.github-enterprise.username'], - }, -}; - -const GitHubEnterprise = new CustomOAuth('github_enterprise', config); - -Meteor.startup(() => { - settings.watch('API_GitHub_Enterprise_URL', (value) => { - config.serverURL = value; - GitHubEnterprise.configure(config); - }); -}); diff --git a/apps/meteor/app/github/server/index.ts b/apps/meteor/app/github/server/index.ts deleted file mode 100644 index cf327e4971bb2..0000000000000 --- a/apps/meteor/app/github/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './lib'; diff --git a/apps/meteor/app/github/server/lib.ts b/apps/meteor/app/github/server/lib.ts deleted file mode 100644 index 5409f7a809803..0000000000000 --- a/apps/meteor/app/github/server/lib.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { OauthConfig } from '@rocket.chat/core-typings'; - -import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; - -const config: OauthConfig = { - serverURL: 'https://github.com', - identityPath: 'https://api.github.com/user', - tokenPath: 'https://github.com/login/oauth/access_token', - emailPath: 'https://api.github.com/user/emails', - scope: 'user:email', - mergeUsers: false, - addAutopublishFields: { - forLoggedInUser: ['services.github'], - forOtherUsers: ['services.github.username'], - }, - accessTokenParam: 'access_token', - identityTokenSentVia: 'header', -}; - -export const Github = new CustomOAuth('github', config); diff --git a/apps/meteor/app/gitlab/server/index.ts b/apps/meteor/app/gitlab/server/index.ts deleted file mode 100644 index cf327e4971bb2..0000000000000 --- a/apps/meteor/app/gitlab/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './lib'; diff --git a/apps/meteor/app/gitlab/server/lib.ts b/apps/meteor/app/gitlab/server/lib.ts deleted file mode 100644 index 0f4d330cf5970..0000000000000 --- a/apps/meteor/app/gitlab/server/lib.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { OauthConfig } from '@rocket.chat/core-typings'; -import { Meteor } from 'meteor/meteor'; -import _ from 'underscore'; - -import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; -import { settings } from '../../settings/server'; - -const config: OauthConfig = { - serverURL: 'https://gitlab.com', - identityPath: '/api/v4/user', - scope: 'read_user', - mergeUsers: false, - addAutopublishFields: { - forLoggedInUser: ['services.gitlab'], - forOtherUsers: ['services.gitlab.username'], - }, - accessTokenParam: 'access_token', -}; - -const Gitlab = new CustomOAuth('gitlab', config); - -Meteor.startup(() => { - const updateConfig = _.debounce(() => { - config.serverURL = settings.get('API_Gitlab_URL').trim().replace(/\/*$/, '') || config.serverURL; - config.identityPath = settings.get('Accounts_OAuth_Gitlab_identity_path') || config.identityPath; - config.mergeUsers = Boolean(settings.get('Accounts_OAuth_Gitlab_merge_users')); - Gitlab.configure(config); - }, 300); - - settings.watchMultiple(['API_Gitlab_URL', 'Accounts_OAuth_Gitlab_identity_path', 'Accounts_OAuth_Gitlab_merge_users'], updateConfig); -}); diff --git a/apps/meteor/app/iframe-login/server/index.ts b/apps/meteor/app/iframe-login/server/index.ts deleted file mode 100644 index 6dbf8cb373253..0000000000000 --- a/apps/meteor/app/iframe-login/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './iframe_server'; diff --git a/apps/meteor/app/importer-csv/server/index.ts b/apps/meteor/app/importer-csv/server/index.ts deleted file mode 100644 index f20c375ae9435..0000000000000 --- a/apps/meteor/app/importer-csv/server/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CsvImporter } from './CsvImporter'; -import { Importers } from '../../importer/server'; - -Importers.add({ - key: 'csv', - name: 'CSV', - importer: CsvImporter, -}); diff --git a/apps/meteor/app/importer-omnichannel-contacts/server/index.ts b/apps/meteor/app/importer-omnichannel-contacts/server/index.ts deleted file mode 100644 index 0ba882650bf07..0000000000000 --- a/apps/meteor/app/importer-omnichannel-contacts/server/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { License } from '@rocket.chat/license'; - -import { ContactImporter } from './ContactImporter'; -import { Importers } from '../../importer/server'; - -License.onValidFeature('contact-id-verification', () => { - Importers.add({ - key: 'omnichannel_contact', - name: 'omnichannel_contacts_importer', - importer: ContactImporter, - }); -}); diff --git a/apps/meteor/app/importer-pending-avatars/server/index.ts b/apps/meteor/app/importer-pending-avatars/server/index.ts deleted file mode 100644 index 2710c06b9d15b..0000000000000 --- a/apps/meteor/app/importer-pending-avatars/server/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { PendingAvatarImporter } from './PendingAvatarImporter'; -import { Importers } from '../../importer/server'; - -Importers.add({ - key: 'pending-avatars', - name: 'Pending Avatars', - visible: false, - importer: PendingAvatarImporter, -}); diff --git a/apps/meteor/app/importer-pending-files/server/PendingFileImporter.ts b/apps/meteor/app/importer-pending-files/server/PendingFileImporter.ts deleted file mode 100644 index 35b88c4267138..0000000000000 --- a/apps/meteor/app/importer-pending-files/server/PendingFileImporter.ts +++ /dev/null @@ -1,214 +0,0 @@ -import http from 'node:http'; -import https from 'node:https'; - -import { api } from '@rocket.chat/core-services'; -import type { IImport, MessageAttachment, IUpload, IImporterShortSelection } from '@rocket.chat/core-typings'; -import { Messages } from '@rocket.chat/models'; -import { Random } from '@rocket.chat/random'; - -import { FileUpload } from '../../file-upload/server'; -import { Importer, ProgressStep } from '../../importer/server'; -import type { ConverterOptions } from '../../importer/server/classes/ImportDataConverter'; -import type { ImporterProgress } from '../../importer/server/classes/ImporterProgress'; -import type { ImporterInfo } from '../../importer/server/definitions/ImporterInfo'; - -export class PendingFileImporter extends Importer { - constructor(info: ImporterInfo, importRecord: IImport, converterOptions: ConverterOptions = {}) { - super(info, importRecord, converterOptions); - } - - async prepareFileCount() { - this.logger.debug('start preparing import operation'); - await super.updateProgress(ProgressStep.PREPARING_STARTED); - - const fileCount = await Messages.countAllImportedMessagesWithFilesToDownload(); - if (fileCount === 0) { - await super.updateProgress(ProgressStep.DONE); - return 0; - } - - this.progress.count.total += fileCount; - await this.updateRecord({ - 'count.messages': fileCount, - 'count.total': fileCount, - 'messagesstatus': null, - 'status': ProgressStep.IMPORTING_FILES, - }); - this.reportProgress(); - - setImmediate(() => { - void this.startImport({}); - }); - - return fileCount; - } - - override async startImport(importSelection: IImporterShortSelection): Promise { - const downloadedFileIds: string[] = []; - const maxFileCount = 10; - const maxFileSize = 1024 * 1024 * 500; - - let count = 0; - let currentSize = 0; - let nextSize = 0; - - const waitForFiles = async () => { - if (count + 1 < maxFileCount && currentSize + nextSize < maxFileSize) { - return; - } - - return new Promise((resolve) => { - const handler = setInterval(() => { - if (count + 1 >= maxFileCount) { - return; - } - - if (currentSize + nextSize >= maxFileSize && count > 0) { - return; - } - - clearInterval(handler); - resolve(); - }, 1000); - }); - }; - - const completeFile = async (details: { size: number }) => { - await this.addCountCompleted(1); - count--; - currentSize -= details.size; - }; - - const logError = this.logger.error.bind(this.logger); - - try { - const pendingFileMessageList = Messages.findAllImportedMessagesWithFilesToDownload(); - const importedRoomIds = new Set(); - for await (const message of pendingFileMessageList) { - try { - const { _importFile } = message; - - if (!_importFile || _importFile.downloaded || downloadedFileIds.includes(_importFile.id)) { - await this.addCountCompleted(1); - continue; - } - - const url = _importFile.downloadUrl; - if (!url?.startsWith('http')) { - await this.addCountCompleted(1); - continue; - } - - const details: { message_id: string; name: string; size: number; userId: string; rid: string; type?: string } = { - message_id: `${message._id}-file-${_importFile.id}`, - name: _importFile.name || Random.id(), - size: _importFile.size || 0, - userId: message.u._id, - rid: message.rid, - }; - - const requestModule = /https/i.test(url) ? https : http; - const fileStore = FileUpload.getStore('Uploads'); - - nextSize = details.size; - await waitForFiles(); - count++; - currentSize += nextSize; - downloadedFileIds.push(_importFile.id); - - requestModule.get(url, (res) => { - const contentType = res.headers['content-type']; - if (!details.type && contentType) { - details.type = contentType; - } - - const rawData: Uint8Array[] = []; - res.on('data', (chunk) => { - rawData.push(chunk); - - // Update progress more often on large files - this.reportProgress(); - }); - res.on('error', async (err) => { - await completeFile(details); - logError({ err }); - }); - - res.on('end', async () => { - try { - // Bypass the fileStore filters - const file = await fileStore._doInsert(details, Buffer.concat(rawData)); - - const url = FileUpload.getPath(`${file._id}/${encodeURI(file.name || '')}`); - const attachment = this.getMessageAttachment(file, url); - - await Messages.setImportFileRocketChatAttachment(_importFile.id, url, attachment); - await completeFile(details); - importedRoomIds.add(message.rid); - } catch (err) { - await completeFile(details); - logError({ err }); - } - }); - }); - } catch (err) { - this.logger.error({ err }); - } - } - - void api.broadcast('notify.importedMessages', { roomIds: Array.from(importedRoomIds) }); - } catch (error) { - // If the cursor expired, restart the method - if (this.isCursorNotFoundError(error)) { - this.logger.info('CursorNotFound'); - return this.startImport(importSelection); - } - - await super.updateProgress(ProgressStep.ERROR); - throw error; - } - - await super.updateProgress(ProgressStep.DONE); - return this.getProgress(); - } - - getMessageAttachment(file: IUpload, url: string): MessageAttachment { - if (file.type) { - if (/^image\/.+/.test(file.type)) { - return { - title: file.name, - title_link: url, - image_url: url, - image_type: file.type, - image_size: file.size, - image_dimensions: file.identify ? file.identify.size : undefined, - }; - } - - if (/^audio\/.+/.test(file.type)) { - return { - title: file.name, - title_link: url, - audio_url: url, - audio_type: file.type, - audio_size: file.size, - }; - } - - if (/^video\/.+/.test(file.type)) { - return { - title: file.name, - title_link: url, - video_url: url, - video_type: file.type, - video_size: file.size, - }; - } - } - - return { - title: file.name, - title_link: url, - }; - } -} diff --git a/apps/meteor/app/importer-pending-files/server/index.ts b/apps/meteor/app/importer-pending-files/server/index.ts deleted file mode 100644 index e18b0de0a29e4..0000000000000 --- a/apps/meteor/app/importer-pending-files/server/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { PendingFileImporter } from './PendingFileImporter'; -import { Importers } from '../../importer/server'; - -Importers.add({ - key: 'pending-files', - name: 'Pending Files', - visible: false, - importer: PendingFileImporter, -}); diff --git a/apps/meteor/app/importer-slack-users/server/index.ts b/apps/meteor/app/importer-slack-users/server/index.ts deleted file mode 100644 index 67b2dbdb319a2..0000000000000 --- a/apps/meteor/app/importer-slack-users/server/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { SlackUsersImporter } from './SlackUsersImporter'; -import { Importers } from '../../importer/server'; - -Importers.add({ - key: 'slack-users', - name: 'Slack_Users', - importer: SlackUsersImporter, -}); diff --git a/apps/meteor/app/importer-slack/server/index.ts b/apps/meteor/app/importer-slack/server/index.ts deleted file mode 100644 index d32edde7271fb..0000000000000 --- a/apps/meteor/app/importer-slack/server/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { SlackImporter } from './SlackImporter'; -import { Importers } from '../../importer/server'; - -Importers.add({ - key: 'slack', - name: 'Slack', - importer: SlackImporter, -}); diff --git a/apps/meteor/app/importer/server/index.ts b/apps/meteor/app/importer/server/index.ts deleted file mode 100644 index 02949733174c5..0000000000000 --- a/apps/meteor/app/importer/server/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ProgressStep } from '../lib/ImporterProgressStep'; -import { Importer } from './classes/Importer'; -import { ImporterSelection } from './classes/ImporterSelection'; -import { SelectionChannel } from './classes/ImporterSelectionChannel'; -import { SelectionUser } from './classes/ImporterSelectionUser'; -import { ImporterWebsocket } from './classes/ImporterWebsocket'; -import { ImportersContainer } from './classes/ImportersContainer'; -import './methods'; -import './startup/setImportsToInvalid'; -import './startup/store'; - -export { Importer, ImporterWebsocket, ProgressStep, ImporterSelection as Selection, SelectionChannel, SelectionUser }; - -export const Importers = new ImportersContainer(); - -Importers.add({ - key: 'api', - name: 'API', - visible: false, - importer: Importer, -}); diff --git a/apps/meteor/app/importer/server/methods/index.ts b/apps/meteor/app/importer/server/methods/index.ts deleted file mode 100644 index 0136565a1185f..0000000000000 --- a/apps/meteor/app/importer/server/methods/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './getImportProgress'; -export * from './startImport'; -export * from './uploadImportFile'; -export * from './getImportFileData'; -export * from './downloadPublicImportFile'; -export * from './getLatestImportOperations'; diff --git a/apps/meteor/app/integrations/server/api/api.ts b/apps/meteor/app/integrations/server/api/api.ts deleted file mode 100644 index de016532e92e2..0000000000000 --- a/apps/meteor/app/integrations/server/api/api.ts +++ /dev/null @@ -1,554 +0,0 @@ -import type { IIncomingIntegration, IIntegration, IOutgoingIntegration, IUser, RequiredField } from '@rocket.chat/core-typings'; -import { Integrations, Users } from '@rocket.chat/models'; -import { Random } from '@rocket.chat/random'; -import { isIntegrationsHooksAddSchema, isIntegrationsHooksRemoveSchema } from '@rocket.chat/rest-typings'; -import type express from 'express'; -import { Meteor } from 'meteor/meteor'; -import type { RateLimiterOptionsToCheck } from 'meteor/rate-limit'; -import { WebApp } from 'meteor/webapp'; -import _ from 'underscore'; - -import { isPlainObject } from '../../../../lib/utils/isPlainObject'; -import { APIClass } from '../../../api/server/ApiClass'; -import type { RateLimiterOptions } from '../../../api/server/api'; -import { API, defaultRateLimiterOptions } from '../../../api/server/api'; -import type { FailureResult, GenericRouteExecutionContext, SuccessResult, UnavailableResult } from '../../../api/server/definition'; -import { loggerMiddleware } from '../../../api/server/middlewares/logger'; -import { metricsMiddleware } from '../../../api/server/middlewares/metrics'; -import { tracerSpanMiddleware } from '../../../api/server/middlewares/tracer'; -import type { APIActionContext } from '../../../api/server/router'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import type { WebhookResponseItem } from '../../../lib/server/functions/processWebhookMessage'; -import { processWebhookMessage } from '../../../lib/server/functions/processWebhookMessage'; -import { metrics } from '../../../metrics/server'; -import { settings } from '../../../settings/server'; -import { IsolatedVMScriptEngine } from '../lib/isolated-vm/isolated-vm'; -import { incomingLogger, integrationLogger } from '../logger'; -import { addOutgoingIntegration } from '../methods/outgoing/addOutgoingIntegration'; -import { deleteOutgoingIntegration } from '../methods/outgoing/deleteOutgoingIntegration'; - -const ivmEngine = new IsolatedVMScriptEngine(true); - -function getEngine(_integration: IIntegration): IsolatedVMScriptEngine { - return ivmEngine; -} - -type IntegrationOptions = { - event: string; - name: string; - target_url: string; - data?: { - channel_name?: string; - trigger_words?: string[]; - username?: string; - }; -}; - -type IntegrationThis = GenericRouteExecutionContext & { - request: Request & { - integration: IIncomingIntegration; - }; - user: RequiredField; -}; - -async function createIntegration(options: IntegrationOptions, user: IUser): Promise { - incomingLogger.info({ msg: 'Add integration', integration: options.name }); - incomingLogger.debug({ options }); - - switch (options.event) { - case 'newMessageOnChannel': - if (options.data == null) { - options.data = {}; - } - if (options.data.channel_name?.indexOf('#') === -1) { - options.data.channel_name = `#${options.data.channel_name}`; - } - return addOutgoingIntegration(user._id, { - username: 'rocket.cat', - urls: [options.target_url], - name: options.name, - channel: options.data.channel_name, - triggerWords: options.data.trigger_words, - type: 'webhook-outgoing', - event: 'sendMessage', - token: Random.id(24), - scriptEnabled: false, - script: '', - enabled: true, - _id: Random.id(), - _updatedAt: new Date(), - }); - case 'newMessageToUser': - if (options.data?.username?.indexOf('@') === -1) { - options.data.username = `@${options.data.username}`; - } - if (!options.data?.username) { - throw new Error('username-required'); - } - - return addOutgoingIntegration(user._id, { - username: 'rocket.cat', - urls: [options.target_url], - name: options.name, - channel: options.data.username, - triggerWords: options.data.trigger_words, - _id: '', - type: 'webhook-outgoing', - token: '', - scriptEnabled: false, - script: '', - enabled: false, - _updatedAt: new Date(), - event: 'sendMessage', - }); - } -} - -async function removeIntegration(options: { target_url: string }, user: IUser): Promise | FailureResult> { - incomingLogger.info('Remove integration'); - incomingLogger.debug({ options }); - - const integrationToRemove = await Integrations.findOneByUrl(options.target_url); - if (!integrationToRemove) { - return API.v1.failure('integration-not-found'); - } - - await deleteOutgoingIntegration(integrationToRemove._id, user._id); - - return API.v1.success(); -} - -/** - * Slack/GitHub-style webhooks send JSON wrapped in a `payload` field - * with Content-Type: application/x-www-form-urlencoded (e.g. `payload={"text":"hello"}`). - * This function unwraps it so integrations receive the parsed JSON directly. - */ -function getBodyParams(bodyParams: unknown, request: Request): Record { - if (!isPlainObject(bodyParams)) { - return {}; - } - - if ( - request.headers.get('content-type')?.startsWith('application/x-www-form-urlencoded') && - Object.keys(bodyParams).length === 1 && - typeof bodyParams.payload === 'string' - ) { - try { - const parsed = JSON.parse(bodyParams.payload); - - // Valid JSON must be an object, not an array or primitive - if (!isPlainObject(parsed)) { - throw new Error('Integration payload must be a JSON object, not an array or primitive'); - } - - return parsed; - } catch (err) { - // Invalid JSON -> return original bodyParams (backward compatibility) - if (err instanceof SyntaxError) { - return bodyParams; - } - throw err; - } - } - - return bodyParams; -} - -async function executeIntegrationRest( - this: IntegrationThis, -): Promise< - | SuccessResult | { responses: WebhookResponseItem[] } | undefined | void> - | FailureResult - | FailureResult<{ responses: WebhookResponseItem[] }> - | UnavailableResult -> { - incomingLogger.info({ msg: 'Post integration:', integration: this.request.integration.name }); - incomingLogger.debug({ urlParams: this.urlParams, bodyParams: this.bodyParams }); - - if (this.request.integration.enabled !== true) { - return API.v1.unavailable('Service Unavailable'); - } - - if (!(await hasPermissionAsync(this.user._id, 'message-impersonate'))) { - incomingLogger.error({ - msg: 'Error trying to execute integration', - integration: this.request.integration.name, - error: 'The assigned user from the integration must have the message-impersonate permission.', - }); - return API.v1.failure('error-user-lacks-message-impersonate-permission'); - } - - const defaultValues = { - channel: this.request.integration.channel, - alias: this.request.integration.alias || '', - avatar: this.request.integration.avatar || '', - emoji: this.request.integration.emoji || '', - }; - - const scriptEngine = getEngine(this.request.integration); - - let bodyParams: Record; - try { - bodyParams = getBodyParams(this.bodyParams, this.request); - } catch (err) { - return API.v1.failure(err instanceof Error ? err.message : String(err)); - } - - const separateResponse = bodyParams.separateResponse === true; - let scriptResponse: Record | undefined; - - if (scriptEngine.integrationHasValidScript(this.request.integration) && this.request.body) { - const buffers = []; - const reader = this.request.body.getReader(); - for (let result = await reader.read(); !result.done; result = await reader.read()) { - buffers.push(result.value); - } - const contentRaw = Buffer.concat(buffers).toString('utf8'); - const protocol = `${this.request.headers.get('x-forwarded-proto')}:` || 'http:'; - const url = new URL(this.request.url, `${protocol}//${this.request.headers.get('host')}`); - const query = isPlainObject(this.queryParams) ? this.queryParams : {}; - - const request = { - url: { - query, - hash: url.hash, - search: url.search, - pathname: url.pathname, - path: this.request.url, - }, - url_raw: this.request.url, - url_params: this.urlParams, - content: bodyParams, - content_raw: contentRaw, - headers: Object.fromEntries(this.request.headers.entries()), - body: bodyParams, - user: { - _id: this.user._id, - name: this.user.name || '', - username: this.user.username, - }, - }; - - const result = await scriptEngine.processIncomingRequest({ - integration: this.request.integration, - request, - }); - - try { - if (!result) { - incomingLogger.debug({ - msg: 'Process Incoming Request result of Trigger has no data', - integration: this.request.integration.name, - }); - return API.v1.success(); - } - if (result?.error) { - return API.v1.failure(result.error); - } - - bodyParams = result?.content; - - if (!('separateResponse' in bodyParams)) { - bodyParams.separateResponse = separateResponse; - } - - scriptResponse = result.response; - if (result.user) { - this.user = result.user; - } - - incomingLogger.debug({ - msg: 'Process Incoming Request result of Trigger', - integration: this.request.integration.name, - result: bodyParams, - }); - } catch (err) { - incomingLogger.error({ - msg: 'Error running Script in Trigger', - integration: this.request.integration.name, - script: this.request.integration.scriptCompiled, - err, - }); - return API.v1.failure('error-running-script'); - } - } - - if (!bodyParams || (_.isEmpty(bodyParams) && !this.request.integration.scriptEnabled)) { - return API.v1.success(); - } - - if ((bodyParams.channel || bodyParams.roomId) && !this.request.integration.overrideDestinationChannelEnabled) { - return API.v1.failure('overriding destination channel is disabled for this integration'); - } - - bodyParams.bot = { i: this.request.integration._id }; - - try { - const messageResponse = await processWebhookMessage(bodyParams, this.user, defaultValues); - if (_.isEmpty(messageResponse)) { - return API.v1.failure('unknown-error'); - } - - if (scriptResponse) { - incomingLogger.debug({ msg: 'response', response: scriptResponse }); - return API.v1.success(scriptResponse); - } - if (bodyParams.separateResponse) { - const allFailed = messageResponse.every((response) => 'error' in response && response.error); - if (allFailed) { - return API.v1.failure({ responses: messageResponse }); - } - return API.v1.success({ responses: messageResponse }); - } - return API.v1.success(); - } catch (err: any) { - incomingLogger.error({ msg: 'Error processing webhook message', err }); - return API.v1.failure(err?.error || err?.message || 'Unknown error'); - } -} - -type IntegrationSampleBody = { - token: string; - channel_id: string; - channel_name: string; - timestamp: Date; - user_id: string; - user_name: string; - text: string; - trigger_word: string; -}; - -function integrationSampleRest(): { statusCode: number; body: IntegrationSampleBody[] } { - incomingLogger.info('Sample Integration'); - return { - statusCode: 200, - body: [ - { - token: Random.id(24), - channel_id: Random.id(), - channel_name: 'general', - timestamp: new Date(), - user_id: Random.id(), - user_name: 'rocket.cat', - text: 'Sample text 1', - trigger_word: 'Sample', - }, - { - token: Random.id(24), - channel_id: Random.id(), - channel_name: 'general', - timestamp: new Date(), - user_id: Random.id(), - user_name: 'rocket.cat', - text: 'Sample text 2', - trigger_word: 'Sample', - }, - { - token: Random.id(24), - channel_id: Random.id(), - channel_name: 'general', - timestamp: new Date(), - user_id: Random.id(), - user_name: 'rocket.cat', - text: 'Sample text 3', - trigger_word: 'Sample', - }, - ], - }; -} - -function integrationInfoRest(): { statusCode: number; body: { success: boolean } } { - incomingLogger.info('Info integration'); - return { - statusCode: 200, - body: { - success: true, - }, - }; -} - -class WebHookAPI extends APIClass<'/hooks'> { - override async authenticatedRoute(routeContext: APIActionContext): Promise { - const { integrationId, token } = routeContext.urlParams; - const integration = await Integrations.findOneByIdAndToken(integrationId, decodeURIComponent(token)); - - if (!integration) { - incomingLogger.info({ msg: 'Invalid integration id or token', integrationId, token }); - - throw new Error('Invalid integration id or token provided.'); - } - - routeContext.request.headers.set('x-auth-token', token); - - const req = routeContext.request as Request & { integration?: IIncomingIntegration }; - req.integration = integration; - - return Users.findOneById(req.integration.userId); - } - - override shouldAddRateLimitToRoute(options: { rateLimiterOptions?: RateLimiterOptions | boolean }): boolean { - const { rateLimiterOptions } = options; - return ( - (typeof rateLimiterOptions === 'object' || rateLimiterOptions === undefined) && - !process.env.TEST_MODE && - Boolean(defaultRateLimiterOptions.numRequestsAllowed && defaultRateLimiterOptions.intervalTimeInMS) - ); - } - - override async shouldVerifyRateLimit(): Promise { - return ( - settings.get('API_Enable_Rate_Limiter') === true && - (process.env.NODE_ENV !== 'development' || settings.get('API_Enable_Rate_Limiter_Dev') === true) - ); - } - - override async enforceRateLimit( - objectForRateLimitMatch: RateLimiterOptionsToCheck, - request: Request, - response: Response, - userId: string, - ): Promise { - const { method, url } = request; - const route = url.replace(`/${this.apiPath}`, ''); - const nameRoute = this.getFullRouteName(route, method.toLowerCase()); - if (!this.getRateLimiter(nameRoute)) { - this.addRateLimiterRuleForRoutes({ - routes: [route], - rateLimiterOptions: defaultRateLimiterOptions, - endpoints: { - post: 'executeIntegrationRest', - get: 'executeIntegrationRest', - }, - }); - } - - const integrationForRateLimitMatch = objectForRateLimitMatch; - integrationForRateLimitMatch.route = nameRoute; - - await super.enforceRateLimit(integrationForRateLimitMatch, request, response, userId); - } -} - -const Api = new WebHookAPI({ - enableCors: true, - apiPath: 'hooks/', - useDefaultAuth: false, - prettyJson: process.env.NODE_ENV === 'development', -}); - -Api.router - .use( - metricsMiddleware({ - basePathRegex: new RegExp(/^\/hooks\//), - api: Api, - settings, - endpointTimeSummary: metrics.rocketchatRestApi, - endpointTimeHistogram: metrics.rocketchatRestApiSeconds, - responseSizeHistogram: metrics.rocketchatRestApiResponseSizeBytes, - activeRequestsGauge: metrics.rocketchatRestApiActiveRequests, - }), - ) - .use(tracerSpanMiddleware) - .use(loggerMiddleware(integrationLogger)); - -Api.addRoute( - ':integrationId/:userId/:token', - { authRequired: true }, - { - post: executeIntegrationRest, - get: executeIntegrationRest, - }, -); - -Api.addRoute( - ':integrationId/:token', - { authRequired: true }, - { - post: executeIntegrationRest, - get: executeIntegrationRest, - }, -); - -Api.addRoute( - 'sample/:integrationId/:userId/:token', - { authRequired: true }, - { - get: integrationSampleRest, - }, -); - -Api.addRoute( - 'sample/:integrationId/:token', - { authRequired: true }, - { - get: integrationSampleRest, - }, -); - -Api.addRoute( - 'info/:integrationId/:userId/:token', - { authRequired: true }, - { - get: integrationInfoRest, - }, -); - -Api.addRoute( - 'info/:integrationId/:token', - { authRequired: true }, - { - get: integrationInfoRest, - }, -); - -Api.addRoute( - 'add/:integrationId/:userId/:token', - { authRequired: true, validateParams: isIntegrationsHooksAddSchema }, - { - async post() { - const result = await createIntegration(this.bodyParams, this.user); - - return API.v1.success(result || {}); - }, - }, -); - -Api.addRoute( - 'add/:integrationId/:token', - { authRequired: true, validateParams: isIntegrationsHooksAddSchema }, - { - async post() { - const result = await createIntegration(this.bodyParams, this.user); - - return API.v1.success(result || {}); - }, - }, -); - -Api.addRoute( - 'remove/:integrationId/:userId/:token', - { authRequired: true, validateParams: isIntegrationsHooksRemoveSchema }, - { - async post() { - const result = await removeIntegration(this.bodyParams, this.user); - - return API.v1.success(result || {}); - }, - }, -); - -Api.addRoute( - 'remove/:integrationId/:token', - { authRequired: true, validateParams: isIntegrationsHooksRemoveSchema }, - { - async post() { - const result = await removeIntegration(this.bodyParams, this.user); - - return API.v1.success(result || {}); - }, - }, -); - -Meteor.startup(() => { - (WebApp.rawConnectHandlers as unknown as ReturnType).use(Api.router.router); -}); diff --git a/apps/meteor/app/integrations/server/index.ts b/apps/meteor/app/integrations/server/index.ts deleted file mode 100644 index ea3dbd71dd6ee..0000000000000 --- a/apps/meteor/app/integrations/server/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import './logger'; -import './lib/validateOutgoingIntegration'; -import './methods/incoming/addIncomingIntegration'; -import './methods/incoming/updateIncomingIntegration'; -import './methods/incoming/deleteIncomingIntegration'; -import './methods/outgoing/addOutgoingIntegration'; -import './methods/outgoing/updateOutgoingIntegration'; -import './methods/outgoing/replayOutgoingIntegration'; -import './methods/outgoing/deleteOutgoingIntegration'; -import './methods/clearIntegrationHistory'; -import './api/api'; -import './lib/triggerHandler'; -import './triggers'; -import './startup'; diff --git a/apps/meteor/app/integrations/server/methods/clearIntegrationHistory.ts b/apps/meteor/app/integrations/server/methods/clearIntegrationHistory.ts deleted file mode 100644 index a30bb9b5ee9a3..0000000000000 --- a/apps/meteor/app/integrations/server/methods/clearIntegrationHistory.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Integrations, IntegrationHistory } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import notifications from '../../../notifications/server/lib/Notifications'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - clearIntegrationHistory(integrationId: string): Promise; - } -} - -Meteor.methods({ - async clearIntegrationHistory(integrationId) { - let integration; - - if (!this.userId) { - throw new Meteor.Error('not_authorized', 'Unauthorized', { - method: 'clearIntegrationHistory', - }); - } - - if (await hasPermissionAsync(this.userId, 'manage-outgoing-integrations')) { - integration = await Integrations.findOneById(integrationId); - } else if (await hasPermissionAsync(this.userId, 'manage-own-outgoing-integrations')) { - integration = await Integrations.findOne({ - '_id': integrationId, - '_createdBy._id': this.userId, - }); - } else { - throw new Meteor.Error('not_authorized', 'Unauthorized', { - method: 'clearIntegrationHistory', - }); - } - - if (!integration) { - throw new Meteor.Error('error-invalid-integration', 'Invalid integration', { - method: 'clearIntegrationHistory', - }); - } - - // Don't sending to IntegrationHistory listener since it don't waits for 'removed' events. - await IntegrationHistory.removeByIntegrationId(integrationId); - - notifications.streamIntegrationHistory.emit(integrationId, { type: 'removed', id: integrationId }); - - return true; - }, -}); diff --git a/apps/meteor/app/integrations/server/methods/incoming/deleteIncomingIntegration.ts b/apps/meteor/app/integrations/server/methods/incoming/deleteIncomingIntegration.ts deleted file mode 100644 index 3258aeed8aebc..0000000000000 --- a/apps/meteor/app/integrations/server/methods/incoming/deleteIncomingIntegration.ts +++ /dev/null @@ -1,56 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Integrations } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { hasPermissionAsync } from '../../../../authorization/server/functions/hasPermission'; -import { methodDeprecationLogger } from '../../../../lib/server/lib/deprecationWarningLogger'; -import { notifyOnIntegrationChangedById } from '../../../../lib/server/lib/notifyListener'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - deleteIncomingIntegration(integrationId: string): Promise; - } -} - -export const deleteIncomingIntegration = async (integrationId: string, userId: string): Promise => { - let integration; - - if (userId && (await hasPermissionAsync(userId, 'manage-incoming-integrations'))) { - integration = Integrations.findOneById(integrationId); - } else if (userId && (await hasPermissionAsync(userId, 'manage-own-incoming-integrations'))) { - integration = Integrations.findOne({ - '_id': integrationId, - '_createdBy._id': userId, - }); - } else { - throw new Meteor.Error('not_authorized', 'Unauthorized', { - method: 'deleteIncomingIntegration', - }); - } - - if (!(await integration)) { - throw new Meteor.Error('error-invalid-integration', 'Invalid integration', { - method: 'deleteIncomingIntegration', - }); - } - - await Integrations.removeById(integrationId); - void notifyOnIntegrationChangedById(integrationId, 'removed'); -}; - -Meteor.methods({ - async deleteIncomingIntegration(integrationId) { - methodDeprecationLogger.method('deleteIncomingIntegration', '9.0.0', '/v1/integrations.remove'); - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('not_authorized', 'Unauthorized', { - method: 'deleteIncomingIntegration', - }); - } - - await deleteIncomingIntegration(integrationId, userId); - - return true; - }, -}); diff --git a/apps/meteor/app/integrations/server/methods/outgoing/deleteOutgoingIntegration.ts b/apps/meteor/app/integrations/server/methods/outgoing/deleteOutgoingIntegration.ts deleted file mode 100644 index b9e44d7d5adbd..0000000000000 --- a/apps/meteor/app/integrations/server/methods/outgoing/deleteOutgoingIntegration.ts +++ /dev/null @@ -1,64 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Integrations, IntegrationHistory } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { hasPermissionAsync } from '../../../../authorization/server/functions/hasPermission'; -import { methodDeprecationLogger } from '../../../../lib/server/lib/deprecationWarningLogger'; -import { notifyOnIntegrationChangedById } from '../../../../lib/server/lib/notifyListener'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - deleteOutgoingIntegration(integrationId: string): Promise; - } -} - -export const deleteOutgoingIntegration = async (integrationId: string, userId: string): Promise => { - let integration; - - if (!userId) { - throw new Meteor.Error('not_authorized', 'Unauthorized', { - method: 'deleteOutgoingIntegration', - }); - } - - if (await hasPermissionAsync(userId, 'manage-outgoing-integrations')) { - integration = Integrations.findOneById(integrationId); - } else if (await hasPermissionAsync(userId, 'manage-own-outgoing-integrations')) { - integration = Integrations.findOne({ - '_id': integrationId, - '_createdBy._id': userId, - }); - } else { - throw new Meteor.Error('not_authorized', 'Unauthorized', { - method: 'deleteOutgoingIntegration', - }); - } - - if (!(await integration)) { - throw new Meteor.Error('error-invalid-integration', 'Invalid integration', { - method: 'deleteOutgoingIntegration', - }); - } - - await Integrations.removeById(integrationId); - // Don't sending to IntegrationHistory listener since it don't waits for 'removed' events. - await IntegrationHistory.removeByIntegrationId(integrationId); - void notifyOnIntegrationChangedById(integrationId, 'removed'); -}; - -Meteor.methods({ - async deleteOutgoingIntegration(integrationId) { - methodDeprecationLogger.method('deleteOutgoingIntegration', '9.0.0', '/v1/integrations.remove'); - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('not_authorized', 'Unauthorized', { - method: 'deleteOutgoingIntegration', - }); - } - - await deleteOutgoingIntegration(integrationId, userId); - - return true; - }, -}); diff --git a/apps/meteor/app/integrations/server/methods/outgoing/replayOutgoingIntegration.ts b/apps/meteor/app/integrations/server/methods/outgoing/replayOutgoingIntegration.ts deleted file mode 100644 index c8108bfc2acda..0000000000000 --- a/apps/meteor/app/integrations/server/methods/outgoing/replayOutgoingIntegration.ts +++ /dev/null @@ -1,57 +0,0 @@ -import type { IOutgoingIntegration } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Integrations, IntegrationHistory } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { hasPermissionAsync } from '../../../../authorization/server/functions/hasPermission'; -import { triggerHandler } from '../../lib/triggerHandler'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - replayOutgoingIntegration(params: { integrationId: string; historyId: string }): Promise; - } -} - -Meteor.methods({ - async replayOutgoingIntegration({ integrationId, historyId }) { - let integration: IOutgoingIntegration | null = null; - - if (!this.userId) { - throw new Meteor.Error('not_authorized', 'Unauthorized', { - method: 'replayOutgoingIntegration', - }); - } - - if (await hasPermissionAsync(this.userId, 'manage-outgoing-integrations')) { - integration = await Integrations.findOneById(integrationId); - } else if (await hasPermissionAsync(this.userId, 'manage-own-outgoing-integrations')) { - const foundIntegration = await Integrations.findOne({ - '_id': integrationId, - '_createdBy._id': this.userId, - }); - - if (foundIntegration && 'event' in foundIntegration) { - integration = foundIntegration; - } - } - - if (!integration) { - throw new Meteor.Error('error-invalid-integration', 'Invalid integration', { - method: 'replayOutgoingIntegration', - }); - } - - const history = await IntegrationHistory.findOneByIntegrationIdAndHistoryId(integration._id, historyId); - - if (!history) { - throw new Meteor.Error('error-invalid-integration-history', 'Invalid Integration History', { - method: 'replayOutgoingIntegration', - }); - } - - await triggerHandler.replay(integration, history); - - return true; - }, -}); diff --git a/apps/meteor/app/integrations/server/triggers.ts b/apps/meteor/app/integrations/server/triggers.ts deleted file mode 100644 index adf3d5b8bdf4d..0000000000000 --- a/apps/meteor/app/integrations/server/triggers.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { triggerHandler } from './lib/triggerHandler'; -import { callbacks } from '../../../server/lib/callbacks'; -import { afterLeaveRoomCallback } from '../../../server/lib/callbacks/afterLeaveRoomCallback'; - -const callbackHandler = function _callbackHandler(eventType: string) { - return function _wrapperFunction(...args: any[]) { - return triggerHandler.executeTriggers(eventType, ...args); - }; -}; - -callbacks.add( - 'afterSaveMessage', - (message, { room }) => callbackHandler('sendMessage')(message, room), - callbacks.priority.LOW, - 'integrations-sendMessage', -); -callbacks.add('afterCreateChannel', callbackHandler('roomCreated'), callbacks.priority.LOW, 'integrations-roomCreated'); -callbacks.add('afterCreatePrivateGroup', callbackHandler('roomCreated'), callbacks.priority.LOW, 'integrations-roomCreated'); -callbacks.add('afterCreateUser', callbackHandler('userCreated'), callbacks.priority.LOW, 'integrations-userCreated'); -callbacks.add('afterJoinRoom', callbackHandler('roomJoined'), callbacks.priority.LOW, 'integrations-roomJoined'); -afterLeaveRoomCallback.add(callbackHandler('roomLeft'), callbacks.priority.LOW, 'integrations-roomLeft'); -callbacks.add('afterRoomArchived', callbackHandler('roomArchived'), callbacks.priority.LOW, 'integrations-roomArchived'); -callbacks.add('afterFileUpload', callbackHandler('fileUploaded'), callbacks.priority.LOW, 'integrations-fileUploaded'); diff --git a/apps/meteor/app/invites/server/functions/removeInvite.ts b/apps/meteor/app/invites/server/functions/removeInvite.ts deleted file mode 100644 index c754d82d071cc..0000000000000 --- a/apps/meteor/app/invites/server/functions/removeInvite.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { IInvite } from '@rocket.chat/core-typings'; -import { Invites } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; - -export const removeInvite = async (userId: string, invite: Pick) => { - if (!userId || !invite) { - return false; - } - - if (!(await hasPermissionAsync(userId, 'create-invite-links'))) { - throw new Meteor.Error('not_authorized'); - } - - if (!invite._id) { - throw new Meteor.Error('error-the-field-is-required', 'The field _id is required', { - method: 'removeInvite', - field: '_id', - }); - } - - // Before anything, let's check if there's an existing invite - const existing = await Invites.findOneById(invite._id); - - if (!existing) { - throw new Meteor.Error('invalid-invitation-id', 'Invalid Invitation _id', { - method: 'removeInvite', - }); - } - - await Invites.removeById(invite._id); - - return true; -}; diff --git a/apps/meteor/app/irc/server/irc-bridge/index.js b/apps/meteor/app/irc/server/irc-bridge/index.js deleted file mode 100644 index 25f6b5b9f0a29..0000000000000 --- a/apps/meteor/app/irc/server/irc-bridge/index.js +++ /dev/null @@ -1,239 +0,0 @@ -import { Logger } from '@rocket.chat/logger'; -import { Settings } from '@rocket.chat/models'; -import moment from 'moment'; -import Queue from 'queue-fifo'; - -import { withThrottling } from '../../../../lib/utils/highOrderFunctions'; -import { callbacks } from '../../../../server/lib/callbacks'; -import { afterLeaveRoomCallback } from '../../../../server/lib/callbacks/afterLeaveRoomCallback'; -import { afterLogoutCleanUpCallback } from '../../../../server/lib/callbacks/afterLogoutCleanUpCallback'; -import { updateAuditedBySystem } from '../../../../server/settings/lib/auditedSettingUpdates'; -import { notifyOnSettingChangedById } from '../../../lib/server/lib/notifyListener'; -import * as servers from '../servers'; -import * as localCommandHandlers from './localHandlers'; -import * as peerCommandHandlers from './peerHandlers'; - -const logger = new Logger('IRC Bridge'); -const queueLogger = logger.section('Queue'); - -let removed = false; -const updateLastPing = withThrottling({ wait: 10_000 })(() => { - if (removed) { - return; - } - - void (async () => { - const updatedValue = await updateAuditedBySystem({ - reason: 'updateLastPing', - })(Settings.updateValueById, 'IRC_Bridge_Last_Ping', new Date(), { upsert: true }); - if (updatedValue.modifiedCount || updatedValue.upsertedCount) { - void notifyOnSettingChangedById('IRC_Bridge_Last_Ping'); - } - })(); -}); - -class Bridge { - constructor(config) { - // General - this.config = config; - - // Workaround for Rocket.Chat callbacks being called multiple times - this.loggedInUsers = []; - - // Server - const Server = servers[this.config.server.protocol]; - - this.server = new Server(this.config); - - this.setupPeerHandlers(); - this.setupLocalHandlers(); - - // Command queue - this.queue = new Queue(); - this.queueTimeout = 5; - } - - async init() { - this.initTime = new Date(); - removed = false; - this.loggedInUsers = []; - - const lastPing = await Settings.findOneById('IRC_Bridge_Last_Ping'); - if (lastPing) { - if (Math.abs(moment(lastPing.value).diff()) < 1000 * 30) { - this.log('Not trying to connect.'); - this.remove(); - return; - } - } - - this.log('Connecting.'); - updateLastPing(); - this.server.register(); - - this.server.on('registered', () => { - this.logQueue('Starting...'); - - this.runQueue(); - }); - } - - stop() { - this.server.disconnect(); - } - - remove() { - this.log('Removing current connection.'); - removed = true; - this.server = null; - this.removeLocalHandlers(); - } - - /** - * Log helper - */ - log(message) { - // TODO logger: debug? - logger.info(message); - } - - logQueue(message) { - // TODO logger: debug? - queueLogger.info(message); - } - - /** - * - * - * Queue - * - * - */ - onMessageReceived(from, command, ...parameters) { - this.queue.enqueue({ from, command, parameters }); - } - - async runQueue() { - if (!this.server) { - return; - } - - const lastResetTime = Settings.findOneById('IRC_Bridge_Reset_Time'); - if (lastResetTime && lastResetTime.value > this.initTime) { - this.stop(); - this.remove(); - return; - } - - updateLastPing(); - - // If it is empty, skip and keep the queue going - if (this.queue.isEmpty()) { - return setTimeout(this.runQueue.bind(this), this.queueTimeout); - } - - // Get the command - const item = this.queue.dequeue(); - - this.logQueue({ msg: 'Processing command from source', command: item.command, from: item.from }); - - // Handle the command accordingly - try { - // Handle the command accordingly - switch (item.from) { - case 'local': - if (!localCommandHandlers[item.command]) { - throw new Error(`Could not find handler for local:${item.command}`); - } - - await localCommandHandlers[item.command].apply(this, item.parameters); - break; - case 'peer': - if (!peerCommandHandlers[item.command]) { - throw new Error(`Could not find handler for peer:${item.command}`); - } - - await peerCommandHandlers[item.command].apply(this, item.parameters); - break; - } - } catch (e) { - this.logQueue(e); - } - - // Keep the queue going - setTimeout(this.runQueue.bind(this), this.queueTimeout); - } - - /** - * - * - * Peer - * - * - */ - setupPeerHandlers() { - this.server.on('peerCommand', (cmd) => { - this.onMessageReceived('peer', cmd.identifier, cmd.args); - }); - } - - /** - * - * - * Local - * - * - */ - setupLocalHandlers() { - // Auth - callbacks.add('afterValidateLogin', this.onMessageReceived.bind(this, 'local', 'onLogin'), callbacks.priority.LOW, 'irc-on-login'); - callbacks.add( - 'afterCreateUser', - this.onMessageReceived.bind(this, 'local', 'onCreateUser'), - callbacks.priority.LOW, - 'irc-on-create-user', - ); - // Joining rooms or channels - callbacks.add( - 'afterCreateChannel', - this.onMessageReceived.bind(this, 'local', 'onCreateRoom'), - callbacks.priority.LOW, - 'irc-on-create-channel', - ); - callbacks.add( - 'afterCreateRoom', - this.onMessageReceived.bind(this, 'local', 'onCreateRoom'), - callbacks.priority.LOW, - 'irc-on-create-room', - ); - callbacks.add('afterJoinRoom', this.onMessageReceived.bind(this, 'local', 'onJoinRoom'), callbacks.priority.LOW, 'irc-on-join-room'); - // Leaving rooms or channels - afterLeaveRoomCallback.add(this.onMessageReceived.bind(this, 'local', 'onLeaveRoom'), callbacks.priority.LOW, 'irc-on-leave-room'); - // Chatting - callbacks.add( - 'afterSaveMessage', - (message, { room }) => this.onMessageReceived('local', 'onSaveMessage', message, room), - callbacks.priority.LOW, - 'irc-on-save-message', - ); - // Leaving - afterLogoutCleanUpCallback.add(this.onMessageReceived.bind(this, 'local', 'onLogout'), callbacks.priority.LOW, 'irc-on-logout'); - } - - removeLocalHandlers() { - callbacks.remove('afterValidateLogin', 'irc-on-login'); - callbacks.remove('afterCreateUser', 'irc-on-create-user'); - callbacks.remove('afterCreateChannel', 'irc-on-create-channel'); - callbacks.remove('afterCreateRoom', 'irc-on-create-room'); - callbacks.remove('afterJoinRoom', 'irc-on-join-room'); - afterLeaveRoomCallback.remove('irc-on-leave-room'); - callbacks.remove('afterSaveMessage', 'irc-on-save-message'); - afterLogoutCleanUpCallback.remove('irc-on-logout'); - } - - sendCommand(command, parameters) { - this.server.emit('onReceiveFromLocal', command, parameters); - } -} - -export default Bridge; diff --git a/apps/meteor/app/lib/server/functions/addUserToRoom.ts b/apps/meteor/app/lib/server/functions/addUserToRoom.ts deleted file mode 100644 index 7b871e2d37a9d..0000000000000 --- a/apps/meteor/app/lib/server/functions/addUserToRoom.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { Apps, AppEvents } from '@rocket.chat/apps'; -import { AppsEngineException } from '@rocket.chat/apps-engine/definition/exceptions'; -import { Message, Team, Room } from '@rocket.chat/core-services'; -import { isBannedSubscription, isRoomNativeFederated, type IUser } from '@rocket.chat/core-typings'; -import { Subscriptions, Users, Rooms } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { RoomMemberActions } from '../../../../definition/IRoomTypeConfig'; -import { callbacks } from '../../../../server/lib/callbacks'; -import { beforeAddUserToRoom } from '../../../../server/lib/callbacks/beforeAddUserToRoom'; -import { roomCoordinator } from '../../../../server/lib/rooms/roomCoordinator'; -import { settings } from '../../../settings/server'; -import { beforeAddUserToRoom as beforeAddUserToRoomPatch } from '../lib/beforeAddUserToRoom'; -import { notifyOnRoomChangedById, notifyOnSubscriptionChanged } from '../lib/notifyListener'; - -/** - * This function adds user to the given room. - * Caution - It does not validates if the user has permission to join room - */ - -export const addUserToRoom = async ( - rid: string, - user: Pick, - inviter?: Pick, - { - skipSystemMessage, - skipAlertSound, - createAsHidden = false, - }: { - skipSystemMessage?: boolean; - skipAlertSound?: boolean; - createAsHidden?: boolean; - } = {}, -): Promise => { - const now = new Date(); - const room = await Rooms.findOneById(rid); - - if (!room) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { - method: 'addUserToRoom', - }); - } - - const userToBeAdded = await Users.findOneById(user._id); - const roomDirectives = roomCoordinator.getRoomDirectives(room.t); - - if (!userToBeAdded) { - throw new Meteor.Error('user-not-found'); - } - - if ( - !(await roomDirectives.allowMemberAction(room, RoomMemberActions.JOIN, userToBeAdded._id)) && - !(await roomDirectives.allowMemberAction(room, RoomMemberActions.INVITE, userToBeAdded._id)) - ) { - return; - } - - try { - const inviterUser = inviter && ((await Users.findOneById(inviter._id)) || undefined); - // Not "duplicated": we're moving away from callbacks so this is a patch function. We should migrate the next one to be a patch or use this same patch, instead of calling both - await beforeAddUserToRoomPatch([userToBeAdded.username!], room, inviterUser); - await beforeAddUserToRoom.run({ user: userToBeAdded, inviter: inviterUser }, room); - } catch (error) { - throw new Meteor.Error((error as any)?.message); - } - - // TODO: are we calling this twice? - - await callbacks.run('beforeAddedToRoom', { user: userToBeAdded, inviter }); - - try { - await Apps.self?.triggerEvent(AppEvents.IPreRoomUserJoined, room, userToBeAdded, inviter); - } catch (error: any) { - if (error.name === AppsEngineException.name) { - throw new Meteor.Error('error-app-prevented', error.message); - } - - throw error; - } - - // for federation rooms we stop here since everything else will be handled by the federation invite flow - if (isRoomNativeFederated(room)) { - return; - } - - // TODO: are we calling this twice? - if (room.t === 'c' || room.t === 'p' || room.t === 'l') { - // Add a new event, with an optional inviter - await callbacks.run('beforeAddedToRoom', { user: userToBeAdded, inviter }, room); - - // Keep the current event - await callbacks.run('beforeJoinRoom', userToBeAdded, room); - } - - const subscription = await Subscriptions.findOneByRoomIdAndUserId(rid, userToBeAdded._id); - if (subscription) { - if (!isBannedSubscription(subscription)) { - return true; - } - - const deletedSub = await Subscriptions.removeByRoomIdAndUserId(rid, userToBeAdded._id); - if (!deletedSub) { - return true; - } - void notifyOnSubscriptionChanged(deletedSub, 'removed'); - - if (!skipSystemMessage && inviter) { - await Message.saveSystemMessage('user-unbanned', rid, userToBeAdded.username!, inviter, { ts: now }); - } - } - - await Room.createUserSubscription({ - room, - ts: now, - inviter, - userToBeAdded, - createAsHidden, - skipAlertSound, - skipSystemMessage, - }); - - if (room.t === 'c' || room.t === 'p') { - process.nextTick(async () => { - // Add a new event, with an optional inviter - await callbacks.run('afterAddedToRoom', { user: userToBeAdded, inviter }, room); - - // Keep the current event - await callbacks.run('afterJoinRoom', userToBeAdded, room); - - void Apps.self?.triggerEvent(AppEvents.IPostRoomUserJoined, room, userToBeAdded, inviter); - }); - } - - if (room.teamMain && room.teamId) { - // if user is joining to main team channel, create a membership - await Team.addMember(inviter || userToBeAdded, userToBeAdded._id, room.teamId); - } - - if (room.encrypted && settings.get('E2E_Enable') && userToBeAdded.e2e?.public_key) { - await Rooms.addUserIdToE2EEQueueByRoomIds([room._id], userToBeAdded._id); - } - - void notifyOnRoomChangedById(rid); - return true; -}; diff --git a/apps/meteor/app/lib/server/functions/archiveRoom.ts b/apps/meteor/app/lib/server/functions/archiveRoom.ts deleted file mode 100644 index 9bc3582d6671d..0000000000000 --- a/apps/meteor/app/lib/server/functions/archiveRoom.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Message } from '@rocket.chat/core-services'; -import type { IMessage } from '@rocket.chat/core-typings'; -import { Rooms, Subscriptions } from '@rocket.chat/models'; - -import { callbacks } from '../../../../server/lib/callbacks'; -import { notifyOnRoomChanged, notifyOnSubscriptionChangedByRoomId } from '../lib/notifyListener'; - -export const archiveRoom = async function (rid: string, user: IMessage['u']): Promise { - await Rooms.archiveById(rid); - - const archiveResponse = await Subscriptions.archiveByRoomId(rid); - if (archiveResponse.modifiedCount) { - void notifyOnSubscriptionChangedByRoomId(rid); - } - - await Message.saveSystemMessage('room-archived', rid, '', user); - - const room = await Rooms.findOneById(rid); - - await callbacks.run('afterRoomArchived', room, user); - - if (room) { - void notifyOnRoomChanged(room); - } -}; diff --git a/apps/meteor/app/lib/server/functions/blockUser.ts b/apps/meteor/app/lib/server/functions/blockUser.ts deleted file mode 100644 index c748ade354a34..0000000000000 --- a/apps/meteor/app/lib/server/functions/blockUser.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Subscriptions, Rooms } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { RoomMemberActions } from '../../../../definition/IRoomTypeConfig'; -import { roomCoordinator } from '../../../../server/lib/rooms/roomCoordinator'; -import { notifyOnSubscriptionChangedByRoomIdAndUserIds } from '../lib/notifyListener'; - -export const blockUserMethod = async (userId: string, { rid, blocked }: { rid: string; blocked: string }): Promise => { - const room = await Rooms.findOne({ _id: rid }); - - if (!room) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'blockUser' }); - } - - if (!(await roomCoordinator.getRoomDirectives(room.t).allowMemberAction(room, RoomMemberActions.BLOCK, userId))) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'blockUser' }); - } - - const [blockedUser, blockerUser] = await Promise.all([ - Subscriptions.findOneByRoomIdAndUserId(rid, blocked, { projection: { _id: 1 } }), - Subscriptions.findOneByRoomIdAndUserId(rid, userId, { projection: { _id: 1 } }), - ]); - - if (!blockedUser || !blockerUser) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'blockUser' }); - } - - const [blockedResponse, blockerResponse] = await Subscriptions.setBlockedByRoomId(rid, blocked, userId); - - const listenerUsers = [...(blockedResponse?.modifiedCount ? [blocked] : []), ...(blockerResponse?.modifiedCount ? [userId] : [])]; - - if (listenerUsers.length) { - void notifyOnSubscriptionChangedByRoomIdAndUserIds(rid, listenerUsers); - } -}; diff --git a/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts b/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts deleted file mode 100644 index 1e3e3faeb15b5..0000000000000 --- a/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts +++ /dev/null @@ -1,169 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { IRoom } from '@rocket.chat/core-typings'; -import { Messages, Rooms, Subscriptions, ReadReceipts, ReadReceiptsArchive } from '@rocket.chat/models'; - -import { deleteRoom } from './deleteRoom'; -import { NOTIFICATION_ATTACHMENT_COLOR } from '../../../../lib/constants'; -import { i18n } from '../../../../server/lib/i18n'; -import { FileUpload } from '../../../file-upload/server'; -import { notifyOnRoomChangedById, notifyOnSubscriptionChangedById } from '../lib/notifyListener'; - -const FILE_CLEANUP_BATCH_SIZE = 1000; - -export async function cleanRoomHistory({ - rid = '', - latest = new Date(), - oldest = new Date('0001-01-01T00:00:00Z'), - inclusive = true, - limit = 0, - excludePinned = true, - ignoreDiscussion = true, - filesOnly = false, - fromUsers = [], - ignoreThreads = true, -}: { - rid?: IRoom['_id']; - latest?: Date; - oldest?: Date; - inclusive?: boolean; - limit?: number; - excludePinned?: boolean; - ignoreDiscussion?: boolean; - filesOnly?: boolean; - fromUsers?: string[]; - ignoreThreads?: boolean; -}): Promise { - const gt = inclusive ? '$gte' : '$gt'; - const lt = inclusive ? '$lte' : '$lt'; - - const ts = { [gt]: oldest, [lt]: latest }; - - const text = `_${i18n.t('File_removed_by_prune')}_`; - - let fileCount = 0; - - const cursor = Messages.findFilesByRoomIdPinnedTimestampAndUsers(rid, excludePinned, ignoreDiscussion, ts, fromUsers, ignoreThreads, { - projection: { pinned: 1, files: 1 }, - limit, - }); - - const targetMessageIdsForAttachmentRemoval = new Set(); - // Since we remove every file from the messages, we don't need to specify which fileId has been removed. - const pruneMessageAttachment = { type: 'removed-file', color: NOTIFICATION_ATTACHMENT_COLOR, text }; - - async function performFileAttachmentCleanupBatch() { - if (targetMessageIdsForAttachmentRemoval.size === 0) return; - - const ids = [...targetMessageIdsForAttachmentRemoval]; - await Messages.removeFileAttachmentsByMessageIds(ids, pruneMessageAttachment); - await Messages.clearFilesByMessageIds(ids); - void api.broadcast('notify.deleteMessageBulk', rid, { - rid, - excludePinned, - ignoreDiscussion, - ts, - users: fromUsers, - ids, - filesOnly: true, - replaceFileAttachmentsWith: pruneMessageAttachment, - }); - targetMessageIdsForAttachmentRemoval.clear(); - } - - for await (const document of cursor) { - const uploadsStore = FileUpload.getStore('Uploads'); - - document.files && (await Promise.all(document.files.map((file) => uploadsStore.deleteById(file._id)))); - - fileCount++; - if (filesOnly) { - targetMessageIdsForAttachmentRemoval.add(document._id); - } - - if (targetMessageIdsForAttachmentRemoval.size >= FILE_CLEANUP_BATCH_SIZE) { - await performFileAttachmentCleanupBatch(); - } - } - - if (targetMessageIdsForAttachmentRemoval.size > 0) { - await performFileAttachmentCleanupBatch(); - } - - if (filesOnly) { - return fileCount; - } - - if (!ignoreDiscussion) { - const discussionsCursor = Messages.findDiscussionByRoomIdPinnedTimestampAndUsers(rid, excludePinned, ts, fromUsers, { - projection: { drid: 1 }, - ...(limit && { limit }), - }); - - for await (const { drid } of discussionsCursor) { - if (!drid) { - continue; - } - await deleteRoom(drid); - } - } - - if (!ignoreThreads) { - const threads = new Set(); - - await Messages.findThreadsByRoomIdPinnedTimestampAndUsers( - { rid, pinned: excludePinned, ignoreDiscussion, ts, users: fromUsers }, - { projection: { _id: 1 } }, - ).forEach(({ _id }) => { - threads.add(_id); - }); - - if (threads.size > 0) { - const subscriptionIds: string[] = ( - await Subscriptions.findUnreadThreadsByRoomId(rid, [...threads], { projection: { _id: 1 } }).toArray() - ).map(({ _id }) => _id); - - const { modifiedCount } = await Subscriptions.removeUnreadThreadsByRoomId(rid, [...threads]); - if (modifiedCount) { - subscriptionIds.forEach((id) => notifyOnSubscriptionChangedById(id)); - } - } - } - - const selectedMessageIds = limit - ? await Messages.findByIdPinnedTimestampLimitAndUsers(rid, excludePinned, ignoreDiscussion, ts, limit, fromUsers, ignoreThreads) - : undefined; - const count = await Messages.removeByIdPinnedTimestampLimitAndUsers( - rid, - excludePinned, - ignoreDiscussion, - ts, - limit, - fromUsers, - ignoreThreads, - selectedMessageIds, - ); - - if (limit && selectedMessageIds) { - await ReadReceipts.removeByMessageIds(selectedMessageIds); - await ReadReceiptsArchive.removeByMessageIds(selectedMessageIds); - } - - if (count) { - const lastMessage = await Messages.getLastVisibleUserMessageSentByRoomId(rid); - - await Rooms.resetLastMessageById(rid, lastMessage, -count); - - void notifyOnRoomChangedById(rid); - - void api.broadcast('notify.deleteMessageBulk', rid, { - rid, - excludePinned, - ignoreDiscussion, - ts, - users: fromUsers, - ids: selectedMessageIds, - }); - } - - return count; -} diff --git a/apps/meteor/app/lib/server/functions/deleteUser.ts b/apps/meteor/app/lib/server/functions/deleteUser.ts deleted file mode 100644 index 6a09dbc7b0338..0000000000000 --- a/apps/meteor/app/lib/server/functions/deleteUser.ts +++ /dev/null @@ -1,186 +0,0 @@ -import { Apps, AppEvents } from '@rocket.chat/apps'; -import { api } from '@rocket.chat/core-services'; -import { isUserFederated, type IUser } from '@rocket.chat/core-typings'; -import { - Integrations, - LivechatVisitors, - LivechatDepartmentAgents, - Messages, - Rooms, - Subscriptions, - Users, - ReadReceipts, - ReadReceiptsArchive, - LivechatUnitMonitors, - ModerationReports, -} from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { getSubscribedRoomsForUserWithDetails, shouldRemoveOrChangeOwner } from './getRoomsWithSingleOwner'; -import { getUserSingleOwnedRooms } from './getUserSingleOwnedRooms'; -import { relinquishRoomOwnerships } from './relinquishRoomOwnerships'; -import { updateGroupDMsName } from './updateGroupDMsName'; -import { callbacks } from '../../../../server/lib/callbacks'; -import { i18n } from '../../../../server/lib/i18n'; -import { FileUpload } from '../../../file-upload/server'; -import { settings } from '../../../settings/server'; -import { - notifyOnRoomChangedById, - notifyOnIntegrationChangedByUserId, - notifyOnLivechatDepartmentAgentChanged, - notifyOnUserChange, -} from '../lib/notifyListener'; - -export async function deleteUser(userId: string, confirmRelinquish = false, deletedBy?: IUser['_id']): Promise<{ deletedRooms: string[] }> { - if (userId === 'rocket.cat') { - throw new Meteor.Error('error-action-not-allowed', 'Deleting the rocket.cat user is not allowed', { - method: 'deleteUser', - action: 'Delete_user', - }); - } - - const user = await Users.findOneById(userId, { - projection: { username: 1, avatarOrigin: 1, roles: 1, federated: 1 }, - }); - - if (!user) { - return { deletedRooms: [] }; - } - - if (isUserFederated(user)) { - throw new Meteor.Error('error-not-allowed', 'User participated in federation, this user can only be deactivated permanently', { - method: 'deleteUser', - }); - } - - const subscribedRooms = await getSubscribedRoomsForUserWithDetails(userId); - - if (shouldRemoveOrChangeOwner(subscribedRooms) && !confirmRelinquish) { - const rooms = await getUserSingleOwnedRooms(subscribedRooms); - throw new Meteor.Error('user-last-owner', '', rooms); - } - - let deletedRooms: string[] = []; - // Users without username can't do anything, so there is nothing to remove - if (user.username != null) { - let userToReplaceWhenUnlinking: IUser | null = null; - const nameAlias = i18n.t('Removed_User'); - deletedRooms = await relinquishRoomOwnerships(userId, subscribedRooms, true); - - const messageErasureType = settings.get<'Delete' | 'Unlink' | 'Keep'>('Message_ErasureType'); - switch (messageErasureType) { - case 'Delete': - const store = FileUpload.getStore('Uploads'); - const cursor = Messages.findFilesByUserId(userId); - - for await (const { file, files } of cursor) { - const fileIds = files?.map(({ _id }) => _id) || []; - for await (const fileId of fileIds) { - if (fileId) { - await store.deleteById(fileId); - } - } - - if (file?._id && !fileIds.includes(file._id)) { - await store.deleteById(file._id); - } - } - - await Messages.removeByUserId(userId); - await ReadReceipts.removeByUserId(userId); - await ReadReceiptsArchive.removeByUserId(userId); - - await ModerationReports.hideMessageReportsByUserId( - userId, - deletedBy || userId, - deletedBy === userId ? 'user deleted own account' : 'user account deleted', - 'DELETE_USER', - ); - - break; - case 'Unlink': - userToReplaceWhenUnlinking = await Users.findOneById('rocket.cat'); - if (!userToReplaceWhenUnlinking?._id || !userToReplaceWhenUnlinking?.username) { - break; - } - await Messages.unlinkUserId(userId, userToReplaceWhenUnlinking?._id, userToReplaceWhenUnlinking?.username, nameAlias); - break; - } - - await Rooms.updateGroupDMsRemovingUsernamesByUsername(user.username, userId); // Remove direct rooms with the user - await Rooms.removeDirectRoomContainingUsername(user.username); // Remove direct rooms with the user - - const rids = subscribedRooms.map((room) => room.rid); - void notifyOnRoomChangedById(rids); - - await Subscriptions.removeByUserId(userId); - - // Remove user as livechat agent - if (user.roles.includes('livechat-agent')) { - const departmentAgents = await LivechatDepartmentAgents.findByAgentId(userId).toArray(); - - const { deletedCount } = await LivechatDepartmentAgents.removeByAgentId(userId); - - if (deletedCount > 0) { - departmentAgents.forEach((depAgent) => { - void notifyOnLivechatDepartmentAgentChanged( - { - _id: depAgent._id, - agentId: userId, - departmentId: depAgent.departmentId, - }, - 'removed', - ); - }); - } - } - - if (user.roles.includes('livechat-monitor')) { - // Remove user as Unit Monitor - await LivechatUnitMonitors.removeByMonitorId(userId); - } - - // This is for compatibility. Since we allowed any user to be contact manager b4, we need to have the same logic - // for deletion. - await LivechatVisitors.removeContactManagerByUsername(user.username); - - // removes user's avatar - if (user.avatarOrigin === 'upload' || user.avatarOrigin === 'url' || user.avatarOrigin === 'rest') { - await FileUpload.getStore('Avatars').deleteByName(user.username); - } - - // Disables all the integrations which rely on the user being deleted. - await Integrations.disableByUserId(userId); - void notifyOnIntegrationChangedByUserId(userId); - - // Don't broadcast user.deleted for Erasure Type of 'Keep' so that messages don't disappear from logged in sessions - if (messageErasureType === 'Delete') { - void api.broadcast('user.deleted', user, { - messageErasureType, - }); - } - if (messageErasureType === 'Unlink' && userToReplaceWhenUnlinking) { - void api.broadcast('user.deleted', user, { - messageErasureType, - replaceByUser: { _id: userToReplaceWhenUnlinking._id, username: userToReplaceWhenUnlinking?.username, alias: nameAlias }, - }); - } - } - - // Remove user from users database - await Users.removeById(userId); - - // App IPostUserDeleted event hook - if (deletedBy) { - await Apps.self?.triggerEvent(AppEvents.IPostUserDeleted, { user, performedBy: await Users.findOneById(deletedBy) }); - } - - // update name and fname of group direct messages - await updateGroupDMsName(user); - - void notifyOnUserChange({ clientAction: 'removed', id: user._id }); - - await callbacks.run('afterDeleteUser', user); - - return { deletedRooms }; -} diff --git a/apps/meteor/app/lib/server/functions/getUsernameSuggestion.ts b/apps/meteor/app/lib/server/functions/getUsernameSuggestion.ts deleted file mode 100644 index f91e39e8ba088..0000000000000 --- a/apps/meteor/app/lib/server/functions/getUsernameSuggestion.ts +++ /dev/null @@ -1,79 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; -import limax from 'limax'; - -import { settings } from '../../../settings/server'; - -function slug(text: string): string { - return limax(text, { replacement: '.' }).replace(/[^0-9a-z-_.]/g, ''); -} - -async function usernameIsAvailable(username: string): Promise { - if (username.length === 0) { - return false; - } - - if (username === 'all') { - return false; - } - - return !(await Users.findOneByUsernameIgnoringCase(username, {})); -} - -const name = (username: string): string => (settings.get('UTF8_Names_Slugify') ? slug(username) : username); - -export async function generateUsernameSuggestion(user: Pick): Promise { - let usernames = []; - - if (user.name) { - usernames.push(name(user.name)); - - const nameParts = user.name.split(' '); - - if (nameParts.length > 1) { - const [first] = nameParts; - const last = nameParts[nameParts.length - 1]; - usernames.push(name(first[0] + last)); - usernames.push(name(first + last[0])); - } - } - - if (user?.name) { - usernames.push(name(user.name)); - } - - if (Array.isArray(user.services)) { - const services = [ - ...new Set(user.services.flatMap(({ name, username, firstName, lastName }) => [name, username, firstName, lastName])), - ]; - usernames.push(...services.map(name)); - } - - if (user.emails && user.emails.length > 0) { - for (const email of user.emails) { - if (email.address && email.verified === true) { - usernames.push(slug(email.address.replace(/@.+$/, ''))); - usernames.push(slug(email.address.replace(/(.+)@(\w+).+/, '$1.$2'))); - } - } - } - - usernames = usernames.filter((e) => e); - - for (const item of usernames) { - if (await usernameIsAvailable(item)) { - return item; - } - } - - usernames.push(settings.get('Accounts_DefaultUsernamePrefixSuggestion')); - - let index = await Users.countDocuments({ username: new RegExp(`^${usernames[0]}-[0-9]+`) }); - const username = ''; - while (!username) { - if (await usernameIsAvailable(`${usernames[0]}-${index}`)) { - return `${usernames[0]}-${index}`; - } - index++; - } -} diff --git a/apps/meteor/app/lib/server/functions/isTheLastMessage.ts b/apps/meteor/app/lib/server/functions/isTheLastMessage.ts deleted file mode 100644 index f1f1fb4c1497d..0000000000000 --- a/apps/meteor/app/lib/server/functions/isTheLastMessage.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { IMessage, IRoom, AtLeast } from '@rocket.chat/core-typings'; - -import { settings } from '../../../settings/server'; - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export const isTheLastMessage = (room: AtLeast, message: Pick) => - settings.get('Store_Last_Message') && (!room.lastMessage || room.lastMessage._id === message._id); diff --git a/apps/meteor/app/lib/server/functions/notifications/index.ts b/apps/meteor/app/lib/server/functions/notifications/index.ts deleted file mode 100644 index 47a38ac0f068c..0000000000000 --- a/apps/meteor/app/lib/server/functions/notifications/index.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { IMessage, IUser } from '@rocket.chat/core-typings'; -import { isFileAttachment, isFileImageAttachment } from '@rocket.chat/core-typings'; -import { escapeRegExp } from '@rocket.chat/string-helpers'; - -import { callbacks } from '../../../../../server/lib/callbacks'; -import { i18n } from '../../../../../server/lib/i18n'; -import { settings } from '../../../../settings/server'; - -/** - * This function returns a string ready to be shown in the notification - * - * @param {object} message the message to be parsed - */ -export async function parseMessageTextPerUser( - messageText: string, - message: Pick, - receiver: Pick, -): Promise { - const lng = receiver.language || settings.get('Language') || 'en'; - - const firstAttachment = message.attachments?.[0]; - if (!message.msg && firstAttachment && isFileAttachment(firstAttachment) && isFileImageAttachment(firstAttachment)) { - return firstAttachment.image_type ? i18n.t('User_uploaded_image', { lng }) : i18n.t('User_uploaded_file', { lng }); - } - - if (message.msg && message.t === 'e2e') { - return i18n.t('Encrypted_message', { lng }); - } - - // perform processing required before sending message as notification such as markdown filtering - return callbacks.run('renderNotification', messageText); -} - -/** - * Replaces @username with full name - * - * @param {string} message The message to replace - * @param {object[]} mentions Array of mentions used to make replacements - * - * @returns {string} - */ -export function replaceMentionedUsernamesWithFullNames(message: string, mentions: NonNullable): string { - mentions.forEach((mention) => { - if (mention.name) { - message = message.replace(new RegExp(escapeRegExp(`@${mention.username}`), 'g'), mention.name); - } - }); - return message; -} diff --git a/apps/meteor/app/lib/server/functions/removeUserFromRoom.ts b/apps/meteor/app/lib/server/functions/removeUserFromRoom.ts deleted file mode 100644 index b58710aaeb5e1..0000000000000 --- a/apps/meteor/app/lib/server/functions/removeUserFromRoom.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { Apps, AppEvents } from '@rocket.chat/apps'; -import { AppsEngineException } from '@rocket.chat/apps-engine/definition/exceptions'; -import { Message, Team, Room } from '@rocket.chat/core-services'; -import type { IRoom, IUser, MessageTypesValues } from '@rocket.chat/core-typings'; -import { Subscriptions, Rooms } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { afterLeaveRoomCallback } from '../../../../server/lib/callbacks/afterLeaveRoomCallback'; -import { beforeLeaveRoomCallback } from '../../../../server/lib/callbacks/beforeLeaveRoomCallback'; -import { settings } from '../../../settings/server'; -import { notifyOnRoomChangedById, notifyOnSubscriptionChanged } from '../lib/notifyListener'; - -/** - * Removes a user from a room when triggered by federation or other external events. - * Executes only the necessary database operations, with no callbacks, to prevent - * propagation loops during external event processing. - */ -export const performUserRemoval = async function ( - room: IRoom, - user: IUser, - options?: { byUser?: IUser; skipAppPreEvents?: boolean; customSystemMessage?: MessageTypesValues }, -): Promise { - const subscription = await Subscriptions.findOneByRoomIdAndUserId(room._id, user._id, { - projection: { _id: 1, status: 1 }, - }); - if (!subscription) { - return; - } - - // make TS happy, this should never happen - if (!user.username) { - throw new Error('User must have a username to be removed from the room'); - } - - // TODO: move before callbacks to service - await beforeLeaveRoomCallback.run(user, room); - - if (subscription) { - if (options?.customSystemMessage) { - await Message.saveSystemMessage(options?.customSystemMessage, room._id, user.username || '', user); - } else if (options?.byUser) { - const extraData = { - u: options.byUser, - }; - - if (room.teamMain) { - await Message.saveSystemMessage('removed-user-from-team', room._id, user.username, user, extraData); - } else { - await Message.saveSystemMessage('ru', room._id, user.username, user, extraData); - } - } else if (subscription.status === 'INVITED') { - await Message.saveSystemMessage('uir', room._id, user.username, user); - } else if (room.teamMain) { - await Message.saveSystemMessage('ult', room._id, user.username, user); - } else { - await Message.saveSystemMessage('ul', room._id, user.username, user); - } - } - - if (room.t === 'l') { - await Message.saveSystemMessage('command', room._id, 'survey', user); - } - - const deletedSubscription = await Subscriptions.removeByRoomIdAndUserId(room._id, user._id); - if (deletedSubscription) { - void notifyOnSubscriptionChanged(deletedSubscription, 'removed'); - } - - if (room.teamId && room.teamMain) { - await Team.removeMember(room.teamId, user._id); - } - - if (room.encrypted && settings.get('E2E_Enable')) { - await Rooms.removeUsersFromE2EEQueueByRoomId(room._id, [user._id]); - } - - // remove references to the user in direct message rooms - if (room.t === 'd') { - await Rooms.removeUserReferenceFromDMsById(room._id, user.username, user._id); - } - - void notifyOnRoomChangedById(room._id); -}; - -/** - * Removes a user from the given room by performing the required database updates - * and triggering all standard callbacks. Used for local actions (UI or API) - * that should propagate normally to federation and other subscribers. - */ -export const removeUserFromRoom = async function ( - rid: string, - user: IUser, - options?: { byUser?: IUser; skipAppPreEvents?: boolean; customSystemMessage?: MessageTypesValues }, -): Promise { - const room = await Rooms.findOneById(rid); - if (!room) { - return; - } - - // Rationale: for an abac room, we don't want apps to be able to prevent a user from leaving - if (!options?.skipAppPreEvents) { - try { - await Apps.self?.triggerEvent(AppEvents.IPreRoomUserLeave, room, user, options?.byUser); - } catch (error: any) { - if (error.name === AppsEngineException.name) { - throw new Meteor.Error('error-app-prevented', error.message); - } - - throw error; - } - } - - await Room.beforeLeave(room); - - await performUserRemoval(room, user, options); - - await afterLeaveRoomCallback.run({ user, kicker: options?.byUser }, room); - - await Apps.self?.triggerEvent(AppEvents.IPostRoomUserLeave, room, user, options?.byUser); -}; diff --git a/apps/meteor/app/lib/server/functions/sendMessage.ts b/apps/meteor/app/lib/server/functions/sendMessage.ts deleted file mode 100644 index 73fa409999182..0000000000000 --- a/apps/meteor/app/lib/server/functions/sendMessage.ts +++ /dev/null @@ -1,298 +0,0 @@ -import { AppEvents, Apps } from '@rocket.chat/apps'; -import { Message } from '@rocket.chat/core-services'; -import type { IMessage, IRoom } from '@rocket.chat/core-typings'; -import { Messages } from '@rocket.chat/models'; -import { isAbsoluteURL } from '@rocket.chat/tools'; -import { Match, check } from 'meteor/check'; - -import { isRelativeURL } from '../../../../lib/utils/isRelativeURL'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { FileUpload } from '../../../file-upload/server'; -import { settings } from '../../../settings/server'; -import { afterSaveMessage } from '../lib/afterSaveMessage'; -import { notifyOnRoomChangedById } from '../lib/notifyListener'; -import { validateCustomMessageFields } from '../lib/validateCustomMessageFields'; - -export type SendMessageOptions = { - upsert?: boolean; - previewUrls?: string[]; - skipNotifications?: boolean; -}; - -// TODO: most of the types here are wrong, but I don't want to change them now - -/** - * IMPORTANT - * - * This validator prevents malicious href values - * intending to run arbitrary js code in anchor tags. - * You should use it whenever the value you're checking - * is going to be rendered in the href attribute of a - * link. - */ -const validFullURLParam = Match.Where((value) => { - check(value, String); - - if (!isAbsoluteURL(value) && !value.startsWith(FileUpload.getPath())) { - throw new Error('Invalid href value provided'); - } - - if (/^javascript:/i.test(value)) { - throw new Error('Invalid href value provided'); - } - - return true; -}); - -const validPartialURLParam = Match.Where((value) => { - check(value, String); - - if (!isRelativeURL(value) && !isAbsoluteURL(value) && !value.startsWith(FileUpload.getPath())) { - throw new Error('Invalid href value provided'); - } - - if (/^javascript:/i.test(value)) { - throw new Error('Invalid href value provided'); - } - - return true; -}); - -const objectMaybeIncluding = (types: any) => - Match.Where((value: any) => { - Object.keys(types).forEach((field) => { - if (value[field] != null) { - try { - check(value[field], types[field]); - } catch (error: any) { - error.path = field; - throw error; - } - } - }); - - return true; - }); - -const validateAttachmentsFields = (attachmentField: any) => { - check( - attachmentField, - objectMaybeIncluding({ - short: Boolean, - title: String, - value: Match.OneOf(String, Number, Boolean), - }), - ); - - if (!attachmentField.value || !attachmentField.title) { - throw new Error('Invalid attachment field, title and value is required'); - } -}; - -const validateAttachmentsActions = (attachmentActions: any) => { - check( - attachmentActions, - objectMaybeIncluding({ - type: String, - text: String, - url: validFullURLParam, - image_url: validFullURLParam, - is_webview: Boolean, - webview_height_ratio: String, - msg: String, - msg_in_chat_window: Boolean, - }), - ); -}; - -const validateAttachment = (attachment: any) => { - check( - attachment, - objectMaybeIncluding({ - color: String, - text: String, - ts: Match.OneOf(String, Number), - thumb_url: validFullURLParam, - button_alignment: String, - actions: [Match.Any], - message_link: validFullURLParam, - collapsed: Boolean, - author_name: String, - author_link: validFullURLParam, - author_icon: validFullURLParam, - title: String, - title_link: validFullURLParam, - title_link_download: Boolean, - image_dimensions: Object, - image_url: validFullURLParam, - image_preview: String, - image_type: String, - image_size: Number, - audio_url: validFullURLParam, - audio_type: String, - audio_size: Number, - video_url: validFullURLParam, - video_type: String, - video_size: Number, - fields: [Match.Any], - }), - ); - - if (attachment.fields?.length) { - attachment.fields.map(validateAttachmentsFields); - } - - if (attachment.actions?.length) { - attachment.actions.map(validateAttachmentsActions); - } -}; - -const validateBodyAttachments = (attachments: any[]) => attachments.map(validateAttachment); - -export const validateMessage = async (message: any, room: any, user: any) => { - check( - message, - objectMaybeIncluding({ - _id: String, - msg: String, - text: String, - alias: String, - emoji: String, - tmid: String, - tshow: Boolean, - avatar: validPartialURLParam, - attachments: [Match.Any], - blocks: [Match.Any], - }), - ); - - if (message.alias || message.avatar) { - const isLiveChatGuest = !message.avatar && user.token && user.token === room.v?.token; - - if (!isLiveChatGuest && !(await hasPermissionAsync(user._id, 'message-impersonate', room._id))) { - throw new Error('Not enough permission'); - } - } - - if (Array.isArray(message.attachments) && message.attachments.length) { - validateBodyAttachments(message.attachments); - } - - if (message.customFields) { - validateCustomMessageFields({ - customFields: message.customFields, - messageCustomFieldsEnabled: settings.get('Message_CustomFields_Enabled'), - messageCustomFields: settings.get('Message_CustomFields'), - }); - } -}; - -export function prepareMessageObject( - message: Partial, - rid: IRoom['_id'], - user: { _id: string; username?: string; name?: string }, -): asserts message is IMessage { - if (!message.ts) { - message.ts = new Date(); - } - - if (message.tshow !== true) { - delete message.tshow; - } - - const { _id, username, name } = user; - message.u = { - _id, - username: username as string, // FIXME: this is wrong but I don't want to change it now - name, - }; - message.rid = rid; - - if (!Match.test(message.msg, String)) { - message.msg = ''; - } - - if (message.ts == null) { - message.ts = new Date(); - } -} - -/** - * Validates and sends the message object. This function does not verify the Message_MaxAllowedSize settings. - * Caller of the function should verify the Message_MaxAllowedSize if needed. - * There might be same use cases which needs to override this setting. Example - sending error logs. - */ -export const sendMessage = async function (user: any, message: any, room: any, options: SendMessageOptions = {}) { - const { upsert = false, previewUrls } = options; - - if (!user || !message || !room._id) { - return false; - } - - await validateMessage(message, room, user); - prepareMessageObject(message, room._id, user); - - if (settings.get('Message_Read_Receipt_Enabled')) { - message.unread = true; - } - - // For the Rocket.Chat Apps :) - if (Apps.self?.isLoaded()) { - const prevent = await Apps.self?.triggerEvent(AppEvents.IPreMessageSentPrevent, message); - - if (prevent) { - return; - } - - const result = await Apps.self?.triggerEvent( - AppEvents.IPreMessageSentModify, - await Apps.self?.triggerEvent(AppEvents.IPreMessageSentExtend, message), - ); - - if (typeof result === 'object') { - message = Object.assign(message, result); - - // Some app may have inserted malicious/invalid values in the message, let's check it again - await validateMessage(message, room, user); - } - } - - message = await Message.beforeSave({ message, room, user, previewUrls, parseUrls: message.parseUrls }); - - if (!message) { - return; - } - - if (message._id && upsert) { - const { _id } = message; - delete message._id; - await Messages.updateOne( - { - _id, - 'u._id': message.u._id, - }, - { $set: message }, - { upsert: true }, - ); - message._id = _id; - } else { - const messageAlreadyExists = message._id && (await Messages.findOneById(message._id, { projection: { _id: 1 } })); - if (messageAlreadyExists) { - return; - } - const { insertedId } = await Messages.insertOne(message); - message._id = insertedId; - } - - if (Apps.self?.isLoaded()) { - // If the message has a type (system message), we should notify the listener about it - const messageEvent = message.t ? AppEvents.IPostSystemMessageSent : AppEvents.IPostMessageSent; - void Apps.self?.triggerEvent(messageEvent, message); - } - - await afterSaveMessage(message, room, user, { options }); - - void notifyOnRoomChangedById(message.rid); - - return message; -}; diff --git a/apps/meteor/app/lib/server/functions/setEmail.ts b/apps/meteor/app/lib/server/functions/setEmail.ts deleted file mode 100644 index f9a911e85b3c3..0000000000000 --- a/apps/meteor/app/lib/server/functions/setEmail.ts +++ /dev/null @@ -1,106 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import type { Updater } from '@rocket.chat/models'; -import { Users } from '@rocket.chat/models'; -import { escapeHTML } from '@rocket.chat/string-helpers'; -import { Meteor } from 'meteor/meteor'; -import type { ClientSession } from 'mongodb'; - -import { onceTransactionCommitedSuccessfully } from '../../../../server/database/utils'; -import * as Mailer from '../../../mailer/server/api'; -import { settings } from '../../../settings/server'; -import { validateEmailDomain } from '../lib'; -import { checkEmailAvailability } from './checkEmailAvailability'; -import { sendConfirmationEmail } from '../../../../server/methods/sendConfirmationEmail'; - -let html = ''; -Meteor.startup(() => { - Mailer.getTemplate('Email_Changed_Email', (template) => { - html = template; - }); -}); - -const _sendEmailChangeNotification = async function (to: string, newEmail: string) { - const subject = String(settings.get('Email_Changed_Email_Subject')); - const email = { - to, - from: String(settings.get('From_Email')), - subject, - html, - data: { - email: escapeHTML(newEmail), - }, - }; - - try { - await Mailer.send(email); - } catch (error: any) { - throw new Meteor.Error('error-email-send-failed', `Error trying to send email: ${error.message}`, { - function: 'setEmail', - message: error.message, - }); - } -}; - -export const setEmail = async function ( - userId: string, - email: string, - shouldSendVerificationEmail = true, - verified = false, - updater?: Updater, - session?: ClientSession, -) { - email = email.trim(); - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { function: '_setEmail' }); - } - - if (!email) { - throw new Meteor.Error('error-invalid-email', 'Invalid email', { function: '_setEmail' }); - } - - await validateEmailDomain(email); - - const user = await Users.findOneById(userId, { session }); - if (!user) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { function: '_setEmail' }); - } - - // User already has desired username, return - if (user?.emails?.[0] && user.emails[0].address === email) { - return user; - } - - // Check email availability - if (!(await checkEmailAvailability(email))) { - throw new Meteor.Error('error-field-unavailable', `${email} is already in use :(`, { - function: '_setEmail', - field: email, - }); - } - - const oldEmail = user?.emails?.[0]; - - if (oldEmail) { - await onceTransactionCommitedSuccessfully(async () => { - await _sendEmailChangeNotification(oldEmail.address, email); - }, session); - } - - // Set new email - if (updater) { - updater.set('emails', [{ address: email, verified }]); - } else { - await Users.setEmail(user?._id, email, verified, { session }); - } - - const result = { - ...user, - email, - }; - if (shouldSendVerificationEmail === true) { - await onceTransactionCommitedSuccessfully(async () => { - await sendConfirmationEmail(result.email); - }, session); - } - return result; -}; diff --git a/apps/meteor/app/lib/server/functions/setRealName.ts b/apps/meteor/app/lib/server/functions/setRealName.ts deleted file mode 100644 index d33aa01406230..0000000000000 --- a/apps/meteor/app/lib/server/functions/setRealName.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { IUser } from '@rocket.chat/core-typings'; -import type { Updater } from '@rocket.chat/models'; -import { Users } from '@rocket.chat/models'; -import type { ClientSession } from 'mongodb'; - -import { onceTransactionCommitedSuccessfully } from '../../../../server/database/utils'; -import { settings } from '../../../settings/server'; - -export const setRealName = async function ( - userId: string, - name: string, - fullUser?: IUser, - updater?: Updater, - session?: ClientSession, -): Promise { - name = name.trim(); - - if (!userId || (settings.get('Accounts_RequireNameForSignUp') && !name)) { - return; - } - - const user = fullUser || (await Users.findOneById(userId, { session })); - - if (!user) { - return; - } - - // User already has desired name, return - if (user.name && user.name.trim() === name) { - return user; - } - - // Set new name - if (name) { - if (updater) { - updater.set('name', name); - } else { - await Users.setName(user._id, name, { session }); - } - } else if (updater) { - updater.unset('name'); - } else { - await Users.unsetName(user._id, { session }); - } - user.name = name; - - await onceTransactionCommitedSuccessfully(() => { - if (settings.get('UI_Use_Real_Name') === true) { - void api.broadcast('user.nameChanged', { - _id: user._id, - name: user.name, - username: user.username, - }); - } - void api.broadcast('user.realNameChanged', { - _id: user._id, - name, - username: user.username, - }); - }, session); - - return user; -}; diff --git a/apps/meteor/app/lib/server/functions/setUserActiveStatus.ts b/apps/meteor/app/lib/server/functions/setUserActiveStatus.ts deleted file mode 100644 index 6734c9bbb781f..0000000000000 --- a/apps/meteor/app/lib/server/functions/setUserActiveStatus.ts +++ /dev/null @@ -1,169 +0,0 @@ -import type { IUser, IUserEmail } from '@rocket.chat/core-typings'; -import { isUserFederated, isDirectMessageRoom } from '@rocket.chat/core-typings'; -import { Rooms, Users, Subscriptions, OAuthAccessTokens, OAuthRefreshTokens, OAuthAuthCodes } from '@rocket.chat/models'; -import { Accounts } from 'meteor/accounts-base'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { closeOmnichannelConversations } from './closeOmnichannelConversations'; -import { shouldRemoveOrChangeOwner, getSubscribedRoomsForUserWithDetails } from './getRoomsWithSingleOwner'; -import { getUserSingleOwnedRooms } from './getUserSingleOwnedRooms'; -import { relinquishRoomOwnerships } from './relinquishRoomOwnerships'; -import { callbacks } from '../../../../server/lib/callbacks'; -import * as Mailer from '../../../mailer/server/api'; -import { settings } from '../../../settings/server'; -import { - notifyOnRoomChangedById, - notifyOnRoomChangedByUserDM, - notifyOnSubscriptionChangedByNameAndRoomType, - notifyOnUserChange, -} from '../lib/notifyListener'; - -async function reactivateDirectConversations(userId: string) { - // since both users can be deactivated at the same time, we should just reactivate rooms if both users are active - // for that, we need to fetch the direct messages, fetch the users involved and then the ids of rooms we can reactivate - const directConversations = await Rooms.getDirectConversationsByUserId(userId, { - projection: { _id: 1, uids: 1, t: 1 }, - }).toArray(); - - const userIds = directConversations.reduce((acc: string[], r) => { - if (isDirectMessageRoom(r)) { - acc.push(...r.uids); - } - return acc; - }, []); - const uniqueUserIds = [...new Set(userIds)]; - const activeUsers = await Users.findActiveByUserIds(uniqueUserIds, { projection: { _id: 1 } }).toArray(); - const activeUserIds = activeUsers.map((u: IUser) => u._id); - const roomsToReactivate = directConversations.reduce((acc: string[], room) => { - const otherUserId = isDirectMessageRoom(room) ? room.uids.find((u: string) => u !== userId) : undefined; - if (otherUserId && activeUserIds.includes(otherUserId)) { - acc.push(room._id); - } - return acc; - }, []); - - const setDmReadOnlyResponse = await Rooms.setDmReadOnlyByUserId(userId, roomsToReactivate, false, false); - if (setDmReadOnlyResponse.modifiedCount) { - void notifyOnRoomChangedById(roomsToReactivate); - } -} - -export async function setUserActiveStatus( - userId: string, - active: boolean, - confirmRelinquish = false, - executedBy?: string, -): Promise { - check(userId, String); - check(active, Boolean); - - const user = await Users.findOneById(userId); - - if (!user) { - return false; - } - - if (isUserFederated(user)) { - throw new Meteor.Error('error-user-is-federated', 'Cannot change federated users status', { - method: 'setUserActiveStatus', - }); - } - - // Users without username can't do anything, so there is no need to check for owned rooms - if (user.username != null && !active) { - const userAdmin = await Users.findOneAdmin(userId || ''); - const adminsCount = await Users.countActiveUsersInRoles(['admin']); - if (userAdmin && adminsCount === 1) { - throw new Meteor.Error('error-action-not-allowed', 'Leaving the app without an active admin is not allowed', { - method: 'removeUserFromRole', - action: 'Remove_last_admin', - }); - } - - const subscribedRooms = await getSubscribedRoomsForUserWithDetails(userId); - // give omnichannel rooms a special treatment :) - const chatSubscribedRooms = subscribedRooms.filter(({ t }) => t !== 'l'); - const livechatSubscribedRooms = subscribedRooms.filter(({ t }) => t === 'l'); - - if (shouldRemoveOrChangeOwner(chatSubscribedRooms) && !confirmRelinquish) { - const rooms = await getUserSingleOwnedRooms(chatSubscribedRooms as []); - throw new Meteor.Error('user-last-owner', '', rooms); - } - - // We don't want one killing the other :) - await Promise.allSettled([ - closeOmnichannelConversations(user, livechatSubscribedRooms, executedBy), - relinquishRoomOwnerships(user._id, chatSubscribedRooms, false), - ]); - } - - if (active && !user.active) { - await callbacks.run('beforeActivateUser', user); - } - - await Users.setUserActive(userId, active); - - if (active && !user.active) { - await callbacks.run('afterActivateUser', user); - } - - if (!active && user.active) { - await callbacks.run('afterDeactivateUser', user); - } - - if (user.username) { - const { modifiedCount } = await Subscriptions.setArchivedForDMsWithUsername(user.username, !active); - if (modifiedCount) { - void notifyOnSubscriptionChangedByNameAndRoomType({ t: 'd', name: user.username }); - } - } - - if (active === false) { - await Users.unsetLoginTokens(userId); - await Promise.all([ - OAuthAccessTokens.deleteByUserId(userId), - OAuthRefreshTokens.deleteByUserId(userId), - OAuthAuthCodes.deleteByUserId(userId), - ]); - await Rooms.setDmReadOnlyByUserId(userId, undefined, true, false); - - void notifyOnUserChange({ clientAction: 'updated', id: userId, diff: { 'services.resume.loginTokens': [], active } }); - void notifyOnRoomChangedByUserDM(userId); - } else { - await Users.unsetReason(userId); - - void notifyOnUserChange({ clientAction: 'updated', id: userId, diff: { active } }); - await reactivateDirectConversations(userId); - } - - if (active && !settings.get('Accounts_Send_Email_When_Activating')) { - return true; - } - if (!active && !settings.get('Accounts_Send_Email_When_Deactivating')) { - return true; - } - if (!user.emails || !Array.isArray(user.emails) || user.emails.length === 0) { - return true; - } - - const destinations = user.emails.map((email: IUserEmail) => `${user.name || user.username}<${email.address}>`); - - type UserActivated = { - subject: (params: { active: boolean }) => string; - html: (params: { active: boolean; name: string; username: string }) => string; - }; - const { subject, html } = (Accounts.emailTemplates as unknown as { userActivated: UserActivated }).userActivated; - const email = { - to: String(destinations), - from: String(settings.get('From_Email')), - subject: subject({ active } as any), - html: html({ - active, - name: user.name, - username: user.username, - } as any), - }; - - void Mailer.sendNoWrap(email); -} diff --git a/apps/meteor/app/lib/server/functions/unarchiveRoom.ts b/apps/meteor/app/lib/server/functions/unarchiveRoom.ts deleted file mode 100644 index 353124a02037c..0000000000000 --- a/apps/meteor/app/lib/server/functions/unarchiveRoom.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { Message } from '@rocket.chat/core-services'; -import type { IMessage } from '@rocket.chat/core-typings'; -import { Rooms, Subscriptions, Users } from '@rocket.chat/models'; - -import { notifyOnRoomChangedById, notifyOnSubscriptionChangedByRoomId } from '../lib/notifyListener'; - -const BATCH_SIZE = 100_000; - -async function getActiveUserIds(userIds: string[]): Promise> { - const activeUserIds = new Set(); - - for (let i = 0; i < userIds.length; i += BATCH_SIZE) { - const batch = await Users.findActiveByIds(userIds.slice(i, i + BATCH_SIZE), { projection: { _id: 1 } }).toArray(); - for (const u of batch) { - activeUserIds.add(u._id); - } - } - - return activeUserIds; -} - -async function unarchiveSubscriptionsByIds(ids: string[]): Promise { - for (let i = 0; i < ids.length; i += BATCH_SIZE) { - await Subscriptions.unarchiveByIds(ids.slice(i, i + BATCH_SIZE)); - } -} - -export const unarchiveRoom = async function (rid: string, user: IMessage['u']): Promise { - await Rooms.unarchiveById(rid); - - const archivedSubs = await Subscriptions.findArchivedByRoomId(rid, { projection: { 'u._id': 1 } }).toArray(); - - if (archivedSubs.length > 0) { - const activeUserIds = await getActiveUserIds(archivedSubs.map((s) => s.u._id)); - const idsToUnarchive = archivedSubs.filter((s) => activeUserIds.has(s.u._id)).map((s) => s._id); - - await unarchiveSubscriptionsByIds(idsToUnarchive); - void notifyOnSubscriptionChangedByRoomId(rid); - } - - await Message.saveSystemMessage('room-unarchived', rid, '', user); - - void notifyOnRoomChangedById(rid); -}; diff --git a/apps/meteor/app/lib/server/functions/unblockUser.ts b/apps/meteor/app/lib/server/functions/unblockUser.ts deleted file mode 100644 index 03ee770f69d6b..0000000000000 --- a/apps/meteor/app/lib/server/functions/unblockUser.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Subscriptions } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { notifyOnSubscriptionChangedByRoomIdAndUserIds } from '../lib/notifyListener'; - -export const unblockUserMethod = async (userId: string, { rid, blocked }: { rid: string; blocked: string }): Promise => { - const [blockedUser, blockerUser] = await Promise.all([ - Subscriptions.findOneByRoomIdAndUserId(rid, blocked, { projection: { _id: 1 } }), - Subscriptions.findOneByRoomIdAndUserId(rid, userId, { projection: { _id: 1 } }), - ]); - - if (!blockedUser || !blockerUser) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'unblockUser' }); - } - - const [blockedResponse, blockerResponse] = await Subscriptions.unsetBlockedByRoomId(rid, blocked, userId); - - const listenerUsers = [...(blockedResponse?.modifiedCount ? [blocked] : []), ...(blockerResponse?.modifiedCount ? [userId] : [])]; - - if (listenerUsers.length) { - void notifyOnSubscriptionChangedByRoomIdAndUserIds(rid, listenerUsers); - } -}; diff --git a/apps/meteor/app/lib/server/functions/updateMessage.ts b/apps/meteor/app/lib/server/functions/updateMessage.ts deleted file mode 100644 index 7f089f6872975..0000000000000 --- a/apps/meteor/app/lib/server/functions/updateMessage.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { AppEvents, Apps } from '@rocket.chat/apps'; -import { Message } from '@rocket.chat/core-services'; -import type { IMessage, IUser, AtLeast } from '@rocket.chat/core-typings'; -import { Messages, Rooms } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { settings } from '../../../settings/server'; -import { afterSaveMessage } from '../lib/afterSaveMessage'; -import { notifyOnRoomChangedById } from '../lib/notifyListener'; -import { validateCustomMessageFields } from '../lib/validateCustomMessageFields'; - -export const updateMessage = async function ( - { - parseUrls, - ...message - }: (AtLeast | AtLeast) & { - parseUrls?: boolean; - }, - user: IUser, - originalMsg?: IMessage, - previewUrls?: string[], -): Promise { - const originalMessage = originalMsg || (await Messages.findOneById(message._id)); - if (!originalMessage) { - throw new Error('Invalid message ID.'); - } - - let messageData: IMessage = Object.assign({}, originalMessage, message); - - // For the Rocket.Chat Apps :) - if (message && Apps.self && Apps.isLoaded()) { - const prevent = await Apps.self?.triggerEvent(AppEvents.IPreMessageUpdatedPrevent, messageData); - if (prevent) { - throw new Meteor.Error('error-app-prevented-updating', 'A Rocket.Chat App prevented the message updating.'); - } - - let result = await Apps.self?.triggerEvent(AppEvents.IPreMessageUpdatedExtend, messageData); - result = await Apps.self?.triggerEvent(AppEvents.IPreMessageUpdatedModify, result); - - if (typeof result === 'object') { - Object.assign(messageData, result); - } - } - - // If we keep history of edits, insert a new message to store history information - if (settings.get('Message_KeepHistory')) { - await Messages.cloneAndSaveAsHistoryById(messageData._id, user as Required>); - } - - Object.assign(messageData, { - editedAt: new Date(), - editedBy: { - _id: user._id, - username: user.username, - }, - }); - - const room = await Rooms.findOneById(messageData.rid); - if (!room) { - return; - } - - messageData = await Message.beforeSave({ message: messageData, room, user, previewUrls, parseUrls }); - - if (messageData.customFields) { - validateCustomMessageFields({ - customFields: messageData.customFields, - messageCustomFieldsEnabled: settings.get('Message_CustomFields_Enabled'), - messageCustomFields: settings.get('Message_CustomFields'), - }); - } - - const { _id, ...editedMessage } = messageData; - - if (!editedMessage.msg) { - delete editedMessage.md; - } - - // do not send $unset if not defined. Can cause exceptions in certain mongo versions. - await Messages.updateOne( - { _id }, - { - $set: { - ...editedMessage, - }, - ...(!editedMessage.md && { $unset: { md: 1 } }), - }, - ); - - if (Apps.self?.isLoaded()) { - // This returns a promise, but it won't mutate anything about the message - // so, we don't really care if it is successful or fails - void Apps.self?.triggerEvent(AppEvents.IPostMessageUpdated, messageData); - } - - setImmediate(async () => { - const msg = await Messages.findOneById(_id); - if (!msg) { - return; - } - - await afterSaveMessage(msg, room, user); - - if (room?.lastMessage?._id === msg._id) { - void notifyOnRoomChangedById(message.rid); - } - }); -}; diff --git a/apps/meteor/app/lib/server/index.ts b/apps/meteor/app/lib/server/index.ts deleted file mode 100644 index 9fb7c341b83e4..0000000000000 --- a/apps/meteor/app/lib/server/index.ts +++ /dev/null @@ -1,46 +0,0 @@ -import '../lib/MessageTypes'; -import './lib/bugsnag'; -import './lib/debug'; -import './lib/loginErrorMessageOverride'; -import './oauth/oauth'; -import './oauth/facebook'; -import './oauth/google'; -import './oauth/proxy'; -import './oauth/twitter'; -import './methods/addOAuthService'; -import './methods/addUsersToRoom'; -import './methods/addUserToRoom'; -import './methods/archiveRoom'; -import './methods/blockUser'; -import './methods/checkRegistrationSecretURL'; -import './methods/cleanRoomHistory'; -import './methods/createChannel'; -import './methods/createPrivateGroup'; -import './methods/deleteUserOwnAccount'; -import './methods/executeSlashCommandPreview'; -import './startup/mentionUserNotInChannel'; -import './methods/getChannelHistory'; -import './methods/getRoomJoinCode'; -import './methods/getRoomRoles'; -import './methods/getSingleMessage'; -import './methods/getMessages'; -import './methods/getSlashCommandPreviews'; -import './methods/getUsernameSuggestion'; -import './methods/joinDefaultChannels'; -import './methods/joinRoom'; -import './methods/leaveRoom'; -import './methods/refreshOAuthService'; -import './methods/removeOAuthService'; -import './methods/restartServer'; -import './methods/saveSetting'; -import './methods/saveSettings'; -import './methods/sendMessage'; -import './methods/sendSMTPTestEmail'; -import './methods/setEmail'; -import './methods/setRealName'; -import './methods/unarchiveRoom'; -import './methods/unblockUser'; -import './methods/updateMessage'; -import './methods/checkFederationConfiguration'; - -export * from './lib'; diff --git a/apps/meteor/app/lib/server/lib/afterSaveMessage.ts b/apps/meteor/app/lib/server/lib/afterSaveMessage.ts deleted file mode 100644 index d1cf0e15927bf..0000000000000 --- a/apps/meteor/app/lib/server/lib/afterSaveMessage.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Message } from '@rocket.chat/core-services'; -import type { IMessage, IUser, IRoom } from '@rocket.chat/core-typings'; -import type { Updater } from '@rocket.chat/models'; -import { Rooms } from '@rocket.chat/models'; - -import { callbacks } from '../../../../server/lib/callbacks'; -import type { SendMessageOptions } from '../functions/sendMessage'; - -export async function afterSaveMessage( - message: IMessage, - room: IRoom, - user: IUser, - { - roomUpdater, - options, - }: { - roomUpdater?: Updater; - options?: SendMessageOptions; - } = {}, -): Promise { - const updater = roomUpdater ?? Rooms.getUpdater(); - - const data: IMessage = (await callbacks.run('afterSaveMessage', message, { - room, - user, - roomUpdater: updater, - options, - })) as unknown as IMessage; - - if (!roomUpdater && updater.hasChanges()) { - await Rooms.updateFromUpdater({ _id: room._id }, updater); - } - - void Message.afterSave({ message: data }); - - // TODO: Fix type - callback configuration needs to be updated - return data; -} - -export function afterSaveMessageAsync( - message: IMessage, - room: IRoom, - user: IUser, - { - roomUpdater: updater, - options, - }: { - roomUpdater?: Updater; - options?: SendMessageOptions; - } = {}, -): void { - const roomUpdater = updater ?? Rooms.getUpdater(); - - callbacks.runAsync('afterSaveMessage', message, { room, user, roomUpdater, options }); - - if (roomUpdater.hasChanges()) { - void Rooms.updateFromUpdater({ _id: room._id }, roomUpdater); - } - - void Message.afterSave({ message }); -} diff --git a/apps/meteor/app/lib/server/lib/afterUserActions.ts b/apps/meteor/app/lib/server/lib/afterUserActions.ts deleted file mode 100644 index cbc5410acefc9..0000000000000 --- a/apps/meteor/app/lib/server/lib/afterUserActions.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { Subscriptions } from '@rocket.chat/models'; - -import { notifyOnSubscriptionChangedByUserId } from './notifyListener'; -import { callbacks } from '../../../../server/lib/callbacks'; -import { unarchiveUserSubscriptions } from '../functions/unarchiveUserSubscriptions'; - -const handleDeactivateUser = async (user: IUser): Promise => { - const { modifiedCount } = await Subscriptions.setArchivedByUserId(user._id, true); - if (modifiedCount) { - void notifyOnSubscriptionChangedByUserId(user._id); - } -}; - -const handleActivateUser = async (user: IUser): Promise => { - const unarchived = await unarchiveUserSubscriptions(user._id); - if (unarchived) { - void notifyOnSubscriptionChangedByUserId(user._id); - } -}; - -callbacks.add('afterDeactivateUser', handleDeactivateUser, callbacks.priority.LOW, 'subscription-archive-on-deactivate'); - -callbacks.add('afterActivateUser', handleActivateUser, callbacks.priority.LOW, 'subscription-unarchive-on-activate'); diff --git a/apps/meteor/app/lib/server/lib/index.ts b/apps/meteor/app/lib/server/lib/index.ts deleted file mode 100644 index be0fad1f89f41..0000000000000 --- a/apps/meteor/app/lib/server/lib/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - What is this file? Great question! To make Rocket.Chat more "modular" - and to make the "rocketchat:lib" package more of a core package - with the libraries, this index file contains the exported members - for the *server* pieces of code which does include the shared - library files. -*/ -import './afterUserActions'; -import './notifyUsersOnMessage'; - -export { sendNotification } from './sendNotificationsOnMessage'; -export { passwordPolicy } from './passwordPolicy'; -export { validateEmailDomain } from './validateEmailDomain'; -export { RateLimiterClass as RateLimiter } from './RateLimiter'; -export { msgStream } from './msgStream'; diff --git a/apps/meteor/app/lib/server/lib/msgStream.ts b/apps/meteor/app/lib/server/lib/msgStream.ts deleted file mode 100644 index 208c3ab14f549..0000000000000 --- a/apps/meteor/app/lib/server/lib/msgStream.ts +++ /dev/null @@ -1,3 +0,0 @@ -import notifications from '../../../notifications/server/lib/Notifications'; - -export const msgStream = notifications.streamRoomMessage; diff --git a/apps/meteor/app/lib/server/methods/addUserToRoom.ts b/apps/meteor/app/lib/server/methods/addUserToRoom.ts deleted file mode 100644 index 4c23ae7494ad4..0000000000000 --- a/apps/meteor/app/lib/server/methods/addUserToRoom.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Meteor } from 'meteor/meteor'; - -import { addUsersToRoomMethod } from './addUsersToRoom'; -import { methodDeprecationLogger } from '../lib/deprecationWarningLogger'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - addUserToRoom(data: { rid: string; username: string }): void; - } -} - -Meteor.methods({ - async addUserToRoom(data) { - methodDeprecationLogger.method('addUserToRoom', '9.0.0', ['/v1/channels.invite', '/v1/groups.invite']); - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'addUserToRoom', - }); - } - - await addUsersToRoomMethod(userId, { - rid: data.rid, - users: [data.username], - }); - }, -}); diff --git a/apps/meteor/app/lib/server/methods/archiveRoom.ts b/apps/meteor/app/lib/server/methods/archiveRoom.ts deleted file mode 100644 index 5a7e989df175d..0000000000000 --- a/apps/meteor/app/lib/server/methods/archiveRoom.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { isRegisterUser } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Users, Rooms } from '@rocket.chat/models'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { RoomMemberActions } from '../../../../definition/IRoomTypeConfig'; -import { roomCoordinator } from '../../../../server/lib/rooms/roomCoordinator'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { archiveRoom } from '../functions/archiveRoom'; -import { methodDeprecationLogger } from '../lib/deprecationWarningLogger'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - archiveRoom(rid: string): Promise; - } -} - -export const executeArchiveRoom = async (userId: string, rid: string) => { - check(rid, String); - - const user = await Users.findOneById(userId, { projection: { username: 1, name: 1 } }); - if (!user || !isRegisterUser(user)) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'archiveRoom' }); - } - - const room = await Rooms.findOneById(rid); - if (!room) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'archiveRoom' }); - } - - if (!(await roomCoordinator.getRoomDirectives(room.t).allowMemberAction(room, RoomMemberActions.ARCHIVE, userId))) { - throw new Meteor.Error('error-direct-message-room', `rooms type: ${room.t} can not be archived`, { method: 'archiveRoom' }); - } - - if (!(await hasPermissionAsync(userId, 'archive-room', room._id))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { method: 'archiveRoom' }); - } - - return archiveRoom(rid, user); -}; - -Meteor.methods({ - async archiveRoom(rid) { - methodDeprecationLogger.method('archiveRoom', '9.0.0', '/v1/channels.archive'); - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'archiveRoom' }); - } - - return executeArchiveRoom(userId, rid); - }, -}); diff --git a/apps/meteor/app/lib/server/methods/blockUser.ts b/apps/meteor/app/lib/server/methods/blockUser.ts deleted file mode 100644 index cc873f62e8e24..0000000000000 --- a/apps/meteor/app/lib/server/methods/blockUser.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { blockUserMethod } from '../functions/blockUser'; -import { methodDeprecationLogger } from '../lib/deprecationWarningLogger'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - blockUser({ rid, blocked }: { rid: string; blocked: string }): boolean; - } -} - -Meteor.methods({ - async blockUser({ rid, blocked }) { - methodDeprecationLogger.method('blockUser', '9.0.0', '/v1/im.blockUser'); - check(rid, String); - check(blocked, String); - - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'blockUser' }); - } - - await blockUserMethod(userId, { rid, blocked }); - - return true; - }, -}); diff --git a/apps/meteor/app/lib/server/methods/cleanRoomHistory.ts b/apps/meteor/app/lib/server/methods/cleanRoomHistory.ts deleted file mode 100644 index 23bd39f3090fb..0000000000000 --- a/apps/meteor/app/lib/server/methods/cleanRoomHistory.ts +++ /dev/null @@ -1,110 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Match, check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { findRoomByIdOrName } from '../../../api/server/v1/rooms'; -import { canAccessRoomAsync } from '../../../authorization/server'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { cleanRoomHistory } from '../functions/cleanRoomHistory'; - -type CleanRoomHistoryParams = { - roomId: string; - latest: Date; - oldest: Date; - inclusive?: boolean; - limit?: number; - excludePinned?: boolean; - ignoreDiscussion?: boolean; - filesOnly?: boolean; - fromUsers?: string[]; - ignoreThreads?: boolean; -}; -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - cleanRoomHistory(data: CleanRoomHistoryParams): number; - } -} - -export const cleanRoomHistoryMethod = async ( - userId: string, - { - roomId, - latest, - oldest, - inclusive = true, - limit, - excludePinned = false, - ignoreDiscussion = true, - filesOnly = false, - fromUsers = [], - ignoreThreads, - }: CleanRoomHistoryParams, -): Promise => { - if (!(await hasPermissionAsync(userId, 'clean-channel-history', roomId))) { - throw new Meteor.Error('error-not-allowed', 'Not allowed', { method: 'cleanRoomHistory' }); - } - - const room = await findRoomByIdOrName({ params: { roomId } }); - - if (!room || !(await canAccessRoomAsync(room, { _id: userId }))) { - throw new Meteor.Error('error-not-allowed', 'Not allowed', { method: 'cleanRoomHistory' }); - } - - return cleanRoomHistory({ - rid: roomId, - latest, - oldest, - inclusive, - limit, - excludePinned, - ignoreDiscussion, - filesOnly, - fromUsers, - ignoreThreads, - }); -}; - -Meteor.methods({ - async cleanRoomHistory({ - roomId, - latest, - oldest, - inclusive = true, - limit, - excludePinned = false, - ignoreDiscussion = true, - filesOnly = false, - fromUsers = [], - ignoreThreads, - }) { - check(roomId, String); - check(latest, Date); - check(oldest, Date); - check(inclusive, Boolean); - check(limit, Match.Maybe(Number)); - check(excludePinned, Match.Maybe(Boolean)); - check(filesOnly, Match.Maybe(Boolean)); - check(ignoreThreads, Match.Maybe(Boolean)); - check(fromUsers, Match.Maybe([String])); - - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'cleanRoomHistory' }); - } - - return cleanRoomHistoryMethod(userId, { - roomId, - latest, - oldest, - inclusive, - limit, - excludePinned, - ignoreDiscussion, - filesOnly, - fromUsers, - ignoreThreads, - }); - }, -}); diff --git a/apps/meteor/app/lib/server/methods/getUsernameSuggestion.ts b/apps/meteor/app/lib/server/methods/getUsernameSuggestion.ts deleted file mode 100644 index 601f0e9564b71..0000000000000 --- a/apps/meteor/app/lib/server/methods/getUsernameSuggestion.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Meteor } from 'meteor/meteor'; - -import { generateUsernameSuggestion } from '../functions/getUsernameSuggestion'; -import { methodDeprecationLogger } from '../lib/deprecationWarningLogger'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - getUsernameSuggestion(): Promise; - } -} - -Meteor.methods({ - async getUsernameSuggestion() { - methodDeprecationLogger.method('getUsernameSuggestion', '9.0.0', '/v1/users.getUsernameSuggestion'); - const user = await Meteor.userAsync(); - - if (!user) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'getUsernameSuggestion', - }); - } - - return generateUsernameSuggestion(user); - }, -}); diff --git a/apps/meteor/app/lib/server/methods/refreshOAuthService.ts b/apps/meteor/app/lib/server/methods/refreshOAuthService.ts deleted file mode 100644 index 1d547b7703615..0000000000000 --- a/apps/meteor/app/lib/server/methods/refreshOAuthService.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Meteor } from 'meteor/meteor'; - -import { refreshLoginServices } from '../../../../server/lib/refreshLoginServices'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - refreshOAuthService(): Promise; - } -} - -Meteor.methods({ - async refreshOAuthService() { - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'refreshOAuthService', - }); - } - - if ((await hasPermissionAsync(userId, 'add-oauth-service')) !== true) { - throw new Meteor.Error('error-action-not-allowed', 'Refresh OAuth Services is not allowed', { - method: 'refreshOAuthService', - action: 'Refreshing_OAuth_Services', - }); - } - - await refreshLoginServices(); - }, -}); diff --git a/apps/meteor/app/lib/server/methods/removeOAuthService.ts b/apps/meteor/app/lib/server/methods/removeOAuthService.ts deleted file mode 100644 index fee2caa911d22..0000000000000 --- a/apps/meteor/app/lib/server/methods/removeOAuthService.ts +++ /dev/null @@ -1,77 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Settings } from '@rocket.chat/models'; -import { capitalize } from '@rocket.chat/string-helpers'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { notifyOnSettingChangedById } from '../lib/notifyListener'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - removeOAuthService(name: string): Promise; - } -} - -Meteor.methods({ - async removeOAuthService(name) { - check(name, String); - - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'removeOAuthService', - }); - } - - if ((await hasPermissionAsync(userId, 'add-oauth-service')) !== true) { - throw new Meteor.Error('error-not-allowed', 'Not allowed', { method: 'removeOAuthService' }); - } - - name = name.toLowerCase().replace(/[^a-z0-9_]/g, ''); - name = capitalize(name); - - const settingsIds = [ - `Accounts_OAuth_Custom-${name}`, - `Accounts_OAuth_Custom-${name}-url`, - `Accounts_OAuth_Custom-${name}-token_path`, - `Accounts_OAuth_Custom-${name}-identity_path`, - `Accounts_OAuth_Custom-${name}-authorize_path`, - `Accounts_OAuth_Custom-${name}-scope`, - `Accounts_OAuth_Custom-${name}-access_token_param`, - `Accounts_OAuth_Custom-${name}-token_sent_via`, - `Accounts_OAuth_Custom-${name}-identity_token_sent_via`, - `Accounts_OAuth_Custom-${name}-id`, - `Accounts_OAuth_Custom-${name}-secret`, - `Accounts_OAuth_Custom-${name}-button_label_text`, - `Accounts_OAuth_Custom-${name}-button_label_color`, - `Accounts_OAuth_Custom-${name}-button_color`, - `Accounts_OAuth_Custom-${name}-login_style`, - `Accounts_OAuth_Custom-${name}-key_field`, - `Accounts_OAuth_Custom-${name}-username_field`, - `Accounts_OAuth_Custom-${name}-email_field`, - `Accounts_OAuth_Custom-${name}-name_field`, - `Accounts_OAuth_Custom-${name}-avatar_field`, - `Accounts_OAuth_Custom-${name}-roles_claim`, - `Accounts_OAuth_Custom-${name}-merge_roles`, - `Accounts_OAuth_Custom-${name}-roles_to_sync`, - `Accounts_OAuth_Custom-${name}-merge_users`, - `Accounts_OAuth_Custom-${name}-show_button`, - `Accounts_OAuth_Custom-${name}-groups_claim`, - `Accounts_OAuth_Custom-${name}-channels_admin`, - `Accounts_OAuth_Custom-${name}-map_channels`, - `Accounts_OAuth_Custom-${name}-groups_channel_map`, - `Accounts_OAuth_Custom-${name}-merge_users_distinct_services`, - ]; - - const promises = settingsIds.map((id) => Settings.removeById(id)); - - (await Promise.all(promises)).forEach((value, index) => { - if (value?.deletedCount) { - void notifyOnSettingChangedById(settingsIds[index], 'removed'); - } - }); - }, -}); diff --git a/apps/meteor/app/lib/server/methods/saveSettings.ts b/apps/meteor/app/lib/server/methods/saveSettings.ts deleted file mode 100644 index c01f40481b106..0000000000000 --- a/apps/meteor/app/lib/server/methods/saveSettings.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { ISetting } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Meteor } from 'meteor/meteor'; - -import { twoFactorRequired } from '../../../2fa/server/twoFactorRequired'; -import { saveSettingsBulk } from '../functions/saveSettingsBulk'; -import { methodDeprecationLogger } from '../lib/deprecationWarningLogger'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - saveSettings( - changes: { - _id: ISetting['_id']; - value: ISetting['value']; - }[], - ): Promise; - } -} - -Meteor.methods({ - saveSettings: twoFactorRequired(async function ( - params: { - _id: ISetting['_id']; - value: ISetting['value']; - }[] = [], - ) { - methodDeprecationLogger.method('saveSettings', '9.0.0', '/v1/settings'); - - const uid = Meteor.userId(); - if (uid === null) { - throw new Meteor.Error('error-action-not-allowed', 'Editing settings is not allowed', { - method: 'saveSetting', - }); - } - - await saveSettingsBulk(uid, params, { - username: (await Meteor.userAsync())!.username!, - ip: this.connection.clientAddress || '', - useragent: this.connection.httpHeaders['user-agent'] || '', - }); - - return true; - }, {}), -}); diff --git a/apps/meteor/app/lib/server/methods/sendMessage.ts b/apps/meteor/app/lib/server/methods/sendMessage.ts deleted file mode 100644 index cf5deabc68a66..0000000000000 --- a/apps/meteor/app/lib/server/methods/sendMessage.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { AtLeast, IMessage, IUser } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import type { RocketchatI18nKeys } from '@rocket.chat/i18n'; -import { MessageTypes } from '@rocket.chat/message-types'; -import { Messages, Users } from '@rocket.chat/models'; -import type { TOptions } from 'i18next'; -import { check, Match } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; -import moment from 'moment'; - -import { i18n } from '../../../../server/lib/i18n'; -import { SystemLogger } from '../../../../server/lib/logger/system'; -import { canSendMessageAsync } from '../../../authorization/server/functions/canSendMessage'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { applyAirGappedRestrictionsValidation } from '../../../license/server/airGappedRestrictionsWrapper'; -import { metrics } from '../../../metrics/server'; -import { settings } from '../../../settings/server'; -import { sendMessage } from '../functions/sendMessage'; -import { RateLimiter } from '../lib'; -/** - * - * @param uid - * @param message - * @param extraInfo - * - ts: The timestamp of the message. the message object already has a ts, but this value is validated and only a window of 10 seconds is allowed to be used. this value overrides the message.ts value without validation. - * - * - * @returns - */ -export async function executeSendMessage( - uid: IUser['_id'] | IUser, - message: AtLeast, - extraInfo?: { ts?: Date; previewUrls?: string[] }, -) { - if (message.tshow && !message.tmid) { - throw new Meteor.Error('invalid-params', 'tshow provided but missing tmid', { - method: 'sendMessage', - }); - } - - if (message.tmid && !settings.get('Threads_enabled')) { - throw new Meteor.Error('error-not-allowed', 'not-allowed', { - method: 'sendMessage', - }); - } - - const isTimestampFromClient = Boolean(!extraInfo?.ts && message.ts); - const now = new Date(); - message.ts = extraInfo?.ts ?? message.ts ?? now; - if (isTimestampFromClient) { - const tsDiff = Math.abs(moment(message.ts).diff(Date.now())); - if (tsDiff > 60000) { - throw new Meteor.Error('error-message-ts-out-of-sync', 'Message timestamp is out of sync', { - method: 'sendMessage', - message_ts: message.ts, - server_ts: new Date().getTime(), - }); - } - if (tsDiff > 10000) { - message.ts = now; - } - } - - if (message.msg) { - if (message.msg.length > (settings.get('Message_MaxAllowedSize') ?? 0)) { - throw new Meteor.Error('error-message-size-exceeded', 'Message size exceeds Message_MaxAllowedSize', { - method: 'sendMessage', - }); - } - } - - const user = typeof uid === 'string' ? await Users.findOneById(uid) : uid; - if (!user?.username) { - throw new Meteor.Error('error-invalid-user', 'Invalid user'); - } - - let { rid } = message; - - // do not allow nested threads - if (message.tmid) { - const parentMessage = await Messages.findOneById(message.tmid, { projection: { rid: 1, tmid: 1 } }); - message.tmid = parentMessage?.tmid || message.tmid; - - if (parentMessage?.rid) { - rid = parentMessage?.rid; - } - } - - if (!rid) { - throw new Error("The 'rid' property on the message object is missing."); - } - - check(rid, String); - - try { - const room = await canSendMessageAsync(rid, user); - - if (room.encrypted && settings.get('E2E_Enable') && !settings.get('E2E_Allow_Unencrypted_Messages')) { - if (message.t !== 'e2e') { - throw new Meteor.Error('error-not-allowed', 'Not allowed to send un-encrypted messages in an encrypted room', { - method: 'sendMessage', - }); - } - } - - const result = await sendMessage(user, message, room, { previewUrls: extraInfo?.previewUrls }); - - metrics.messagesSent.inc(); - metrics.messagesSentTotal.inc(); - - return result; - } catch (err: any) { - SystemLogger.error({ msg: 'Error sending message:', err }); - - const errorMessage: RocketchatI18nKeys = typeof err === 'string' ? err : err.error || err.message; - const errorContext: TOptions = err.details ?? {}; - void api.broadcast('notify.ephemeralMessage', user._id, message.rid, { - msg: i18n.t(errorMessage, { ...errorContext, lng: user.language }), - }); - - if (typeof err === 'string') { - throw new Error(err); - } - - throw err; - } -} - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - sendMessage(message: AtLeast, previewUrls?: string[]): any; - } -} - -Meteor.methods({ - async sendMessage(message, previewUrls) { - check(message, { - _id: Match.Maybe(String), - rid: Match.Maybe(String), - msg: Match.Maybe(String), - tmid: Match.Maybe(String), - tshow: Match.Maybe(Boolean), - ts: Match.Maybe(Date), - t: Match.Maybe(String), - bot: Match.Maybe(Object), - content: Match.Maybe(Object), - e2e: Match.Maybe(String), - e2eMentions: Match.Maybe(Object), - customFields: Match.Maybe(Object), - federation: Match.Maybe(Object), - groupable: Match.Maybe(Boolean), - sentByEmail: Match.Maybe(Boolean), - }); - - const user = (await Meteor.userAsync()) as IUser; - if (!user) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'sendMessage', - }); - } - - if (MessageTypes.isSystemMessage(message)) { - throw new Error("Cannot send system messages using 'sendMessage'"); - } - - try { - return await applyAirGappedRestrictionsValidation(() => executeSendMessage(user, message, { previewUrls })); - } catch (error: any) { - if (['error-not-allowed', 'restricted-workspace'].includes(error.error || error.message)) { - throw new Meteor.Error(error.error || error.message, error.reason, { - method: 'sendMessage', - }); - } - } - }, -}); -// Limit a user, who does not have the "bot" role, to sending 5 msgs/second -RateLimiter.limitMethod('sendMessage', 5, 1000, { - async userId(userId: IUser['_id']) { - return !(await hasPermissionAsync(userId, 'send-many-messages')); - }, -}); diff --git a/apps/meteor/app/lib/server/methods/setEmail.ts b/apps/meteor/app/lib/server/methods/setEmail.ts deleted file mode 100644 index 67c59572631d1..0000000000000 --- a/apps/meteor/app/lib/server/methods/setEmail.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { settings } from '../../../settings/server'; -import { setEmail } from '../functions/setEmail'; -import { RateLimiter } from '../lib'; -import { methodDeprecationLogger } from '../lib/deprecationWarningLogger'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - setEmail(email: string): string; - } -} - -export const setEmailFunction = async (email: string, user: Meteor.User | IUser) => { - check(email, String); - - if (!settings.get('Accounts_AllowEmailChange')) { - throw new Meteor.Error('error-action-not-allowed', 'Changing email is not allowed', { - method: 'setEmail', - action: 'Changing_email', - }); - } - - if (user.emails?.[0]?.address === email) { - return email; - } - - if (!(await setEmail(user._id, email))) { - throw new Meteor.Error('error-could-not-change-email', 'Could not change email', { - method: 'setEmail', - }); - } - - return email; -}; - -Meteor.methods({ - async setEmail(email) { - methodDeprecationLogger.method('setEmail', '9.0.0', '/v1/users.updateOwnBasicInfo'); - const user = await Meteor.userAsync(); - - if (!user) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'setEmail' }); - } - - return setEmailFunction(email, user); - }, -}); - -RateLimiter.limitMethod('setEmail', 1, 1000, { - userId(/* userId*/) { - return true; - }, -}); diff --git a/apps/meteor/app/lib/server/methods/setRealName.ts b/apps/meteor/app/lib/server/methods/setRealName.ts deleted file mode 100644 index da72e1b6257bd..0000000000000 --- a/apps/meteor/app/lib/server/methods/setRealName.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { settings } from '../../../settings/server'; -import { setRealName } from '../functions/setRealName'; -import { RateLimiter } from '../lib'; -import { methodDeprecationLogger } from '../lib/deprecationWarningLogger'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - setRealName(name: string): string; - } -} - -Meteor.methods({ - async setRealName(name) { - methodDeprecationLogger.method('setRealName', '9.0.0', '/v1/users.updateOwnBasicInfo'); - check(name, String); - const userId = Meteor.userId(); - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'setRealName' }); - } - - if (!settings.get('Accounts_AllowRealNameChange')) { - throw new Meteor.Error('error-not-allowed', 'Not allowed', { method: 'setRealName' }); - } - - if (!(await setRealName(userId, name))) { - throw new Meteor.Error('error-could-not-change-name', 'Could not change name', { - method: 'setRealName', - }); - } - - return name; - }, -}); - -RateLimiter.limitMethod('setRealName', 1, 1000, { - userId: () => true, -}); diff --git a/apps/meteor/app/lib/server/methods/unarchiveRoom.ts b/apps/meteor/app/lib/server/methods/unarchiveRoom.ts deleted file mode 100644 index 389f0af6c8d5f..0000000000000 --- a/apps/meteor/app/lib/server/methods/unarchiveRoom.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { isRegisterUser } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Users, Rooms } from '@rocket.chat/models'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { unarchiveRoom } from '../functions/unarchiveRoom'; -import { methodDeprecationLogger } from '../lib/deprecationWarningLogger'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - unarchiveRoom(rid: string): Promise; - } -} - -export const executeUnarchiveRoom = async (userId: string, rid: string) => { - check(rid, String); - - const user = await Users.findOneById(userId, { projection: { username: 1, name: 1 } }); - if (!user || !isRegisterUser(user)) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'archiveRoom' }); - } - - const room = await Rooms.findOneById(rid); - - if (!room) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'unarchiveRoom' }); - } - - if (!(await hasPermissionAsync(userId, 'unarchive-room', room._id))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized', { method: 'unarchiveRoom' }); - } - - return unarchiveRoom(rid, user); -}; - -Meteor.methods({ - async unarchiveRoom(rid) { - methodDeprecationLogger.method('unarchiveRoom', '9.0.0', '/v1/channels.unarchive'); - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'unarchiveRoom' }); - } - - return executeUnarchiveRoom(userId, rid); - }, -}); diff --git a/apps/meteor/app/lib/server/methods/unblockUser.ts b/apps/meteor/app/lib/server/methods/unblockUser.ts deleted file mode 100644 index ef940bf40b4eb..0000000000000 --- a/apps/meteor/app/lib/server/methods/unblockUser.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { unblockUserMethod } from '../functions/unblockUser'; -import { methodDeprecationLogger } from '../lib/deprecationWarningLogger'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - unblockUser({ rid, blocked }: { rid: string; blocked: string }): boolean; - } -} - -Meteor.methods({ - async unblockUser({ rid, blocked }) { - methodDeprecationLogger.method('unblockUser', '9.0.0', '/v1/im.blockUser'); - check(rid, String); - check(blocked, String); - - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'unblockUser' }); - } - - await unblockUserMethod(userId, { rid, blocked }); - - return true; - }, -}); diff --git a/apps/meteor/app/lib/server/methods/updateMessage.ts b/apps/meteor/app/lib/server/methods/updateMessage.ts deleted file mode 100644 index 45ba42f25f000..0000000000000 --- a/apps/meteor/app/lib/server/methods/updateMessage.ts +++ /dev/null @@ -1,121 +0,0 @@ -import type { IEditedMessage, IMessage, IUser, AtLeast } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Messages, Users } from '@rocket.chat/models'; -import { Match, check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; -import moment from 'moment'; - -import { canSendMessageAsync } from '../../../authorization/server/functions/canSendMessage'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { applyAirGappedRestrictionsValidation } from '../../../license/server/airGappedRestrictionsWrapper'; -import { settings } from '../../../settings/server'; -import { updateMessage } from '../functions/updateMessage'; - -const allowedEditedFields = ['tshow', 'alias', 'attachments', 'avatar', 'emoji', 'msg', 'customFields', 'content', 'e2eMentions']; - -export async function executeUpdateMessage( - uid: IUser['_id'], - message: AtLeast | AtLeast, - previewUrls?: string[], -) { - const originalMessage = await Messages.findOneById(message._id); - if (!originalMessage?._id) { - return; - } - - Object.entries(message).forEach(([key, value]) => { - if (!allowedEditedFields.includes(key) && value !== originalMessage[key as keyof IMessage]) { - throw new Meteor.Error('error-invalid-update-key', `Cannot update the message ${key}`, { - method: 'updateMessage', - }); - } - }); - - // IF the message has custom fields, always update - // Ideally, we'll compare the custom fields to check for change, but since we don't know the shape of - // custom fields, as it's user defined, we're gonna update - const msgText = originalMessage?.attachments?.[0]?.description ?? originalMessage.msg; - if (msgText === message.msg && !previewUrls && !message.customFields) { - return; - } - - if (!!message.tmid && originalMessage._id === message.tmid) { - throw new Meteor.Error('error-message-same-as-tmid', 'Cannot set tmid the same as the _id', { - method: 'updateMessage', - }); - } - - if (!originalMessage.tmid && !!message.tmid) { - throw new Meteor.Error('error-message-change-to-thread', 'Cannot update message to a thread', { method: 'updateMessage' }); - } - - const _hasPermission = await hasPermissionAsync(uid, 'edit-message', message.rid); - const editAllowed = settings.get('Message_AllowEditing'); - const editOwn = originalMessage.u && originalMessage.u._id === uid; - - if (!_hasPermission && (!editAllowed || !editOwn)) { - throw new Meteor.Error('error-action-not-allowed', 'Message editing not allowed', { - method: 'updateMessage', - action: 'Message_editing', - }); - } - - const blockEditInMinutes = settings.get('Message_AllowEditing_BlockEditInMinutes'); - const bypassBlockTimeLimit = await hasPermissionAsync(uid, 'bypass-time-limit-edit-and-delete', message.rid); - - if (!bypassBlockTimeLimit && Match.test(blockEditInMinutes, Number) && blockEditInMinutes !== 0) { - let currentTsDiff = 0; - let msgTs; - - if (originalMessage.ts instanceof Date || Match.test(originalMessage.ts, Number)) { - msgTs = moment(originalMessage.ts); - } - if (msgTs) { - currentTsDiff = moment().diff(msgTs, 'minutes'); - } - if (currentTsDiff >= blockEditInMinutes) { - throw new Meteor.Error('error-message-editing-blocked', 'Message editing is blocked', { - method: 'updateMessage', - }); - } - } - - const user = await Users.findOneById(uid); - if (!user) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'updateMessage' }); - } - await canSendMessageAsync(message.rid, { uid: user._id, username: user.username ?? undefined, ...user }); - - // It is possible to have an empty array as the attachments property, so ensure both things exist - if (originalMessage.attachments && originalMessage.attachments.length > 0 && originalMessage.attachments[0].description !== undefined) { - originalMessage.attachments[0].description = message.msg; - message.attachments = originalMessage.attachments; - message.msg = originalMessage.msg; - } - - message.u = originalMessage.u; - - return updateMessage(message, user, originalMessage, previewUrls); -} - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - updateMessage(message: IEditedMessage, previewUrls?: string[]): void; - } -} - -Meteor.methods({ - async updateMessage(message: IEditedMessage, previewUrls?: string[]) { - check(message, Match.ObjectIncluding({ _id: String })); - check(previewUrls, Match.Maybe([String])); - - const uid = Meteor.userId(); - - if (!uid) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'updateMessage' }); - } - - return applyAirGappedRestrictionsValidation(() => executeUpdateMessage(uid, message, previewUrls)); - }, -}); diff --git a/apps/meteor/app/lib/server/startup/index.ts b/apps/meteor/app/lib/server/startup/index.ts deleted file mode 100644 index 94084edafb398..0000000000000 --- a/apps/meteor/app/lib/server/startup/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import './rateLimiter'; -import './robots'; diff --git a/apps/meteor/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx b/apps/meteor/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx index 297837a3bddf6..aebccb5cf3fc0 100644 --- a/apps/meteor/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx +++ b/apps/meteor/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx @@ -11,7 +11,7 @@ import { } from '@rocket.chat/fuselage'; import { useTranslation } from 'react-i18next'; -type PlaceChatOnHoldModalProps = { +export type PlaceChatOnHoldModalProps = { onOnHoldChat: () => void; confirm?: () => void; onCancel: () => void; diff --git a/apps/meteor/app/livechat/imports/server/rest/agent.ts b/apps/meteor/app/livechat/imports/server/rest/agent.ts deleted file mode 100644 index 65ac3cd0b6714..0000000000000 --- a/apps/meteor/app/livechat/imports/server/rest/agent.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { isGETLivechatAgentsAgentIdDepartmentsParams } from '@rocket.chat/rest-typings'; - -import { API } from '../../../../api/server'; -import { findAgentDepartments } from '../../../server/api/lib/agents'; - -API.v1.addRoute( - 'livechat/agents/:agentId/departments', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isGETLivechatAgentsAgentIdDepartmentsParams }, - { - async get() { - const departments = await findAgentDepartments({ - enabledDepartmentsOnly: this.queryParams.enabledDepartmentsOnly && this.queryParams.enabledDepartmentsOnly === 'true', - agentId: this.urlParams.agentId, - }); - - return API.v1.success(departments); - }, - }, -); diff --git a/apps/meteor/app/livechat/imports/server/rest/businessHours.ts b/apps/meteor/app/livechat/imports/server/rest/businessHours.ts deleted file mode 100644 index 11f7a99afd856..0000000000000 --- a/apps/meteor/app/livechat/imports/server/rest/businessHours.ts +++ /dev/null @@ -1,77 +0,0 @@ -import type { ILivechatBusinessHour } from '@rocket.chat/core-typings'; -import { - isGETBusinessHourParams, - isPOSTLivechatBusinessHoursSaveParams, - isPOSTLivechatBusinessHoursRemoveParams, - POSTLivechatBusinessHoursRemoveSuccessResponse, - POSTLivechatBusinessHoursSaveSuccessResponse, - validateBadRequestErrorResponse, - validateUnauthorizedErrorResponse, -} from '@rocket.chat/rest-typings'; - -import { API } from '../../../../api/server'; -import type { ExtractRoutesFromAPI } from '../../../../api/server/ApiClass'; -import { findLivechatBusinessHour } from '../../../server/api/lib/businessHours'; -import { businessHourManager } from '../../../server/business-hour'; - -API.v1.addRoute( - 'livechat/business-hour', - { authRequired: true, permissionsRequired: ['view-livechat-business-hours'], validateParams: isGETBusinessHourParams }, - { - async get() { - const { _id, type } = this.queryParams; - const { businessHour } = await findLivechatBusinessHour(_id, type); - return API.v1.success({ - businessHour, - }); - }, - }, -); - -const livechatBusinessHoursEndpoints = API.v1 - .post( - 'livechat/business-hours.save', - { - response: { - 200: POSTLivechatBusinessHoursSaveSuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - authRequired: true, - body: isPOSTLivechatBusinessHoursSaveParams, - }, - async function action() { - const params = this.bodyParams; - - // TODO: Remove typecasting after refactoring saveBusinessHour logic with proper type logic. See: CORE-1552 - const result = await businessHourManager.saveBusinessHour(params as unknown as ILivechatBusinessHour); - - return API.v1.success(result); - } - ) - .post( - 'livechat/business-hours.remove', - { - response: { - 200: POSTLivechatBusinessHoursRemoveSuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - }, - authRequired: true, - body: isPOSTLivechatBusinessHoursRemoveParams, - }, - async function action() { - const { _id, type } = this.bodyParams; - - await businessHourManager.removeBusinessHourByIdAndType(_id, type); - - return API.v1.success(); - } - ); - -type LivechatBusinessHoursEndpoints = ExtractRoutesFromAPI; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends LivechatBusinessHoursEndpoints {} -} diff --git a/apps/meteor/app/livechat/imports/server/rest/dashboards.ts b/apps/meteor/app/livechat/imports/server/rest/dashboards.ts deleted file mode 100644 index 1e4b6850b45b8..0000000000000 --- a/apps/meteor/app/livechat/imports/server/rest/dashboards.ts +++ /dev/null @@ -1,296 +0,0 @@ -import { OmnichannelAnalytics } from '@rocket.chat/core-services'; -import { Users } from '@rocket.chat/models'; -import { - isGETDashboardTotalizerParams, - isGETDashboardsAgentStatusParams, - isGETLivechatAnalyticsDashboardsChartDataParams, - validateUnauthorizedErrorResponse, - validateForbiddenErrorResponse, - GETLivechatAnalyticsDashboardsChartDataSuccessSchema, -} from '@rocket.chat/rest-typings'; - -import { API } from '../../../../api/server'; -import type { ExtractRoutesFromAPI } from '../../../../api/server/ApiClass'; -import { - getProductivityMetricsAsyncCached, - getConversationsMetricsAsyncCached, - getAgentsProductivityMetricsAsyncCached, - getChatsMetricsAsyncCached, - findAllChatsStatusAsyncCached, - findAllChatMetricsByAgentAsyncCached, - findAllAgentsStatusAsyncCached, - findAllChatMetricsByDepartmentAsyncCached, - findAllResponseTimeMetricsAsyncCached, -} from '../../../server/lib/analytics/dashboards'; - -API.v1.addRoute( - 'livechat/analytics/dashboards/conversation-totalizers', - { - authRequired: true, - permissionsRequired: ['view-livechat-manager'], - validateParams: isGETDashboardTotalizerParams, - }, - { - async get() { - const { start, end } = this.queryParams; - const { departmentId } = this.queryParams; - - if (isNaN(Date.parse(start))) { - return API.v1.failure('The "start" query parameter must be a valid date.'); - } - - if (isNaN(Date.parse(end))) { - return API.v1.failure('The "end" query parameter must be a valid date.'); - } - - const user = await Users.findOneById(this.userId, { projection: { utcOffset: 1, language: 1 } }); - if (!user) { - return API.v1.failure('User not found'); - } - - const totalizers = await getConversationsMetricsAsyncCached({ start, end, departmentId, user }); - return API.v1.success(totalizers); - }, - }, -); - -API.v1.addRoute( - 'livechat/analytics/dashboards/agents-productivity-totalizers', - { authRequired: true, permissionsRequired: ['view-livechat-manager'], validateParams: isGETDashboardTotalizerParams }, - { - async get() { - const { start, end } = this.queryParams; - const { departmentId } = this.queryParams; - - if (isNaN(Date.parse(start))) { - return API.v1.failure('The "start" query parameter must be a valid date.'); - } - - if (isNaN(Date.parse(end))) { - return API.v1.failure('The "end" query parameter must be a valid date.'); - } - - const user = await Users.findOneById(this.userId, { projection: { utcOffset: 1, language: 1 } }); - if (!user) { - return API.v1.failure('User not found'); - } - - const totalizers = await getAgentsProductivityMetricsAsyncCached({ start, end, departmentId, user }); - return API.v1.success(totalizers); - }, - }, -); - -API.v1.addRoute( - 'livechat/analytics/dashboards/chats-totalizers', - { authRequired: true, permissionsRequired: ['view-livechat-manager'], validateParams: isGETDashboardTotalizerParams }, - { - async get() { - const { start, end } = this.queryParams; - const { departmentId } = this.queryParams; - - if (isNaN(Date.parse(start))) { - return API.v1.failure('The "start" query parameter must be a valid date.'); - } - const startDate = new Date(start); - - if (isNaN(Date.parse(end))) { - return API.v1.failure('The "end" query parameter must be a valid date.'); - } - const endDate = new Date(end); - - const totalizers = await getChatsMetricsAsyncCached({ start: startDate, end: endDate, departmentId }); - return API.v1.success(totalizers); - }, - }, -); - -API.v1.addRoute( - 'livechat/analytics/dashboards/productivity-totalizers', - { authRequired: true, permissionsRequired: ['view-livechat-manager'], validateParams: isGETDashboardTotalizerParams }, - { - async get() { - const { start, end } = this.queryParams; - const { departmentId } = this.queryParams; - - if (isNaN(Date.parse(start))) { - return API.v1.failure('The "start" query parameter must be a valid date.'); - } - - if (isNaN(Date.parse(end))) { - return API.v1.failure('The "end" query parameter must be a valid date.'); - } - - const user = await Users.findOneById(this.userId, { projection: { utcOffset: 1, language: 1 } }); - if (!user) { - return API.v1.failure('User not found'); - } - - const totalizers = await getProductivityMetricsAsyncCached({ start, end, departmentId, user }); - - return API.v1.success(totalizers); - }, - }, -); - -API.v1.addRoute( - 'livechat/analytics/dashboards/charts/chats', - { authRequired: true, permissionsRequired: ['view-livechat-manager'], validateParams: isGETDashboardTotalizerParams }, - { - async get() { - const { start, end } = this.queryParams; - const { departmentId } = this.queryParams; - - if (isNaN(Date.parse(start))) { - return API.v1.failure('The "start" query parameter must be a valid date.'); - } - const startDate = new Date(start); - - if (isNaN(Date.parse(end))) { - return API.v1.failure('The "end" query parameter must be a valid date.'); - } - const endDate = new Date(end); - - const result = await findAllChatsStatusAsyncCached({ start: startDate, end: endDate, departmentId }); - - return API.v1.success(result); - }, - }, -); - -API.v1.addRoute( - 'livechat/analytics/dashboards/charts/chats-per-agent', - { authRequired: true, permissionsRequired: ['view-livechat-manager'], validateParams: isGETDashboardTotalizerParams }, - { - async get() { - const { start, end } = this.queryParams; - const { departmentId } = this.queryParams; - - if (isNaN(Date.parse(start))) { - return API.v1.failure('The "start" query parameter must be a valid date.'); - } - const startDate = new Date(start); - - if (isNaN(Date.parse(end))) { - return API.v1.failure('The "end" query parameter must be a valid date.'); - } - const endDate = new Date(end); - const result = await findAllChatMetricsByAgentAsyncCached({ start: startDate, end: endDate, departmentId }); - - return API.v1.success(result); - }, - }, -); - -API.v1.addRoute( - 'livechat/analytics/dashboards/charts/agents-status', - { authRequired: true, permissionsRequired: ['view-livechat-manager'], validateParams: isGETDashboardsAgentStatusParams }, - { - async get() { - const { departmentId } = this.queryParams; - - const result = await findAllAgentsStatusAsyncCached({ departmentId }); - - return API.v1.success(result); - }, - }, -); - -API.v1.addRoute( - 'livechat/analytics/dashboards/charts/chats-per-department', - { authRequired: true, permissionsRequired: ['view-livechat-manager'], validateParams: isGETDashboardTotalizerParams }, - { - async get() { - const { start, end } = this.queryParams; - const { departmentId } = this.queryParams; - - if (isNaN(Date.parse(start))) { - return API.v1.failure('The "start" query parameter must be a valid date.'); - } - const startDate = new Date(start); - - if (isNaN(Date.parse(end))) { - return API.v1.failure('The "end" query parameter must be a valid date.'); - } - const endDate = new Date(end); - - const result = (await findAllChatMetricsByDepartmentAsyncCached({ start: startDate, end: endDate, departmentId })) as { - [k: string]: { open: number; closed: number }; - }; - - return API.v1.success(result); - }, - }, -); - -API.v1.addRoute( - 'livechat/analytics/dashboards/charts/timings', - { authRequired: true, permissionsRequired: ['view-livechat-manager'], validateParams: isGETDashboardTotalizerParams }, - { - async get() { - const { start, end } = this.queryParams; - const { departmentId } = this.queryParams; - - if (isNaN(Date.parse(start))) { - return API.v1.failure('The "start" query parameter must be a valid date.'); - } - const startDate = new Date(start); - - if (isNaN(Date.parse(end))) { - return API.v1.failure('The "end" query parameter must be a valid date.'); - } - const endDate = new Date(end); - - const result = await findAllResponseTimeMetricsAsyncCached({ start: startDate, end: endDate, departmentId }); - - return API.v1.success(result); - }, - }, -); - -const livechatAnalyticsEndpoints = API.v1.get( - 'livechat/analytics/dashboards/charts-data', - { - response: { - 200: GETLivechatAnalyticsDashboardsChartDataSuccessSchema, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - authRequired: true, - permissionsRequired: ['view-livechat-manager'], - query: isGETLivechatAnalyticsDashboardsChartDataParams, - }, - async function action() { - const { chartName, start, end, departmentId } = this.queryParams; - - const chartData = await OmnichannelAnalytics.getAnalyticsChartData({ - daterange: { - from: start, - to: end, - }, - chartOptions: { - name: chartName, - }, - utcOffset: this.user.utcOffset, - executedBy: this.user._id, - departmentId, - }); - - if (!chartData) { - return API.v1.success({ - chartLabel: chartName, - dataLabels: [], - dataPoints: [], - }); - } - - return API.v1.success(chartData); - }, -); - -type LivechatAnalyticsEndpoints = ExtractRoutesFromAPI; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends LivechatAnalyticsEndpoints {} -} diff --git a/apps/meteor/app/livechat/imports/server/rest/departments.ts b/apps/meteor/app/livechat/imports/server/rest/departments.ts deleted file mode 100644 index 6c4bada41c6e0..0000000000000 --- a/apps/meteor/app/livechat/imports/server/rest/departments.ts +++ /dev/null @@ -1,326 +0,0 @@ -import type { ILivechatDepartment } from '@rocket.chat/core-typings'; -import { LivechatDepartment, LivechatDepartmentAgents } from '@rocket.chat/models'; -import { isDepartmentCreationAvailable } from '@rocket.chat/omni-core'; -import { isGETLivechatDepartmentProps, isPOSTLivechatDepartmentProps } from '@rocket.chat/rest-typings'; -import { - isLivechatDepartmentDepartmentIdAgentsGETProps, - isLivechatDepartmentDepartmentIdAgentsPOSTProps, -} from '@rocket.chat/rest-typings/src/v1/omnichannel'; -import { Match, check } from 'meteor/check'; - -import { API } from '../../../../api/server'; -import { getPaginationItems } from '../../../../api/server/helpers/getPaginationItems'; -import { hasPermissionAsync } from '../../../../authorization/server/functions/hasPermission'; -import { settings } from '../../../../settings/server'; -import { - findDepartments, - findDepartmentById, - findDepartmentsToAutocomplete, - findDepartmentsBetweenIds, - findDepartmentAgents, - findArchivedDepartments, -} from '../../../server/api/lib/departments'; -import { - saveDepartment, - archiveDepartment, - unarchiveDepartment, - saveDepartmentAgents, - removeDepartment, -} from '../../../server/lib/departmentsLib'; - -API.v1.addRoute( - 'livechat/department', - { - authRequired: true, - validateParams: { GET: isGETLivechatDepartmentProps, POST: isPOSTLivechatDepartmentProps }, - permissionsRequired: { - GET: { permissions: ['view-livechat-departments', 'view-l-room'], operation: 'hasAny' }, - POST: { permissions: ['manage-livechat-departments'], operation: 'hasAll' }, - }, - }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - - const { text, enabled, onlyMyDepartments, excludeDepartmentId, showArchived } = this.queryParams; - - const { departments, total } = await findDepartments({ - userId: this.userId, - text, - enabled: enabled === 'true', - showArchived: showArchived === 'true', - onlyMyDepartments: onlyMyDepartments === 'true', - excludeDepartmentId, - pagination: { - offset, - count, - // IMO, sort type shouldn't be record, but a generic of the model we're trying to sort - // or the form { [k: keyof T]: number | string } - sort: sort as any, - }, - }); - - return API.v1.success({ departments, count: departments.length, offset, total }); - }, - async post() { - check(this.bodyParams, { - department: Object, - agents: Match.Maybe(Array), - departmentUnit: Match.Maybe({ _id: Match.Optional(String) }), - }); - - const agents = this.bodyParams.agents ? { upsert: this.bodyParams.agents } : {}; - const { departmentUnit } = this.bodyParams; - const department = await saveDepartment( - this.userId, - null, - this.bodyParams.department as ILivechatDepartment, - agents, - departmentUnit || {}, - ); - - if (department) { - return API.v1.success({ - department, - agents: await LivechatDepartmentAgents.find({ departmentId: department._id }).toArray(), - }); - } - - return API.v1.failure(); - }, - }, -); - -API.v1.addRoute( - 'livechat/department/isDepartmentCreationAvailable', - { - authRequired: true, - permissionsRequired: { - GET: { permissions: ['view-livechat-departments', 'manage-livechat-departments'], operation: 'hasAny' }, - }, - }, - { - async get() { - const available = await isDepartmentCreationAvailable(); - return API.v1.success({ isDepartmentCreationAvailable: available }); - }, - }, -); - -API.v1.addRoute( - 'livechat/department/:_id', - { - authRequired: true, - permissionsRequired: { - GET: { permissions: ['view-livechat-departments', 'view-l-room'], operation: 'hasAny' }, - PUT: { permissions: ['manage-livechat-departments', 'add-livechat-department-agents'], operation: 'hasAny' }, - DELETE: { permissions: ['manage-livechat-departments', 'remove-livechat-department'], operation: 'hasAny' }, - }, - }, - { - async get() { - check(this.urlParams, { - _id: String, - }); - - const { onlyMyDepartments } = this.queryParams; - - const { department, agents } = await findDepartmentById({ - userId: this.userId, - departmentId: this.urlParams._id, - includeAgents: this.queryParams.includeAgents && this.queryParams.includeAgents === 'true', - onlyMyDepartments: onlyMyDepartments === 'true', - }); - - // TODO: return 404 when department is not found - // Currently, FE relies on the fact that this endpoint returns an empty payload - // to show the "new" view. Returning 404 breaks it - - return API.v1.success({ department, agents }); - }, - async put() { - const permissionToSave = await hasPermissionAsync(this.userId, 'manage-livechat-departments'); - const permissionToAddAgents = await hasPermissionAsync(this.userId, 'add-livechat-department-agents'); - - check(this.bodyParams, { - department: Object, - agents: Match.Maybe(Array), - departmentUnit: Match.Maybe({ _id: Match.Optional(String) }), - }); - - const { _id } = this.urlParams; - const { department, agents, departmentUnit } = this.bodyParams; - - if (!permissionToSave) { - throw new Error('error-not-allowed'); - } - - const agentParam = permissionToAddAgents && agents ? { upsert: agents } : {}; - await saveDepartment(this.userId, _id, department, agentParam, departmentUnit || {}); - - return API.v1.success({ - department: await LivechatDepartment.findOneById(_id), - agents: await LivechatDepartmentAgents.findByDepartmentId(_id).toArray(), - }); - }, - async delete() { - check(this.urlParams, { - _id: String, - }); - - const isRemoveEnabled = settings.get('Omnichannel_enable_department_removal'); - - if (!isRemoveEnabled) { - return API.v1.failure('error-department-removal-disabled'); - } - - await removeDepartment(this.urlParams._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'livechat/departments/archived', - { - authRequired: true, - validateParams: { GET: isGETLivechatDepartmentProps }, - permissionsRequired: { - GET: { permissions: ['view-livechat-departments', 'view-l-room'], operation: 'hasAny' }, - }, - }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - - const { text, onlyMyDepartments, excludeDepartmentId } = this.queryParams; - - const { departments, total } = await findArchivedDepartments({ - userId: this.userId, - text, - onlyMyDepartments: onlyMyDepartments === 'true', - excludeDepartmentId, - pagination: { - offset, - count, - sort: sort as any, - }, - }); - - return API.v1.success({ departments, count: departments.length, offset, total }); - }, - }, -); - -API.v1.addRoute( - 'livechat/department/:_id/archive', - { - authRequired: true, - permissionsRequired: ['manage-livechat-departments'], - }, - { - async post() { - await archiveDepartment(this.urlParams._id); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'livechat/department/:_id/unarchive', - { - authRequired: true, - permissionsRequired: ['manage-livechat-departments'], - }, - { - async post() { - await unarchiveDepartment(this.urlParams._id); - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'livechat/department.autocomplete', - { authRequired: true, permissionsRequired: { GET: { permissions: ['view-livechat-departments', 'view-l-room'], operation: 'hasAny' } } }, - { - async get() { - const { selector, onlyMyDepartments, showArchived } = this.queryParams; - if (!selector) { - return API.v1.failure("The 'selector' param is required"); - } - - return API.v1.success( - await findDepartmentsToAutocomplete({ - uid: this.userId, - selector: JSON.parse(selector), - onlyMyDepartments: onlyMyDepartments === 'true', - showArchived: showArchived === 'true', - }), - ); - }, - }, -); - -API.v1.addRoute( - 'livechat/department/:_id/agents', - { - authRequired: true, - permissionsRequired: { - GET: { permissions: ['view-livechat-departments', 'view-l-room'], operation: 'hasAny' }, - POST: { permissions: ['manage-livechat-departments', 'add-livechat-department-agents'], operation: 'hasAny' }, - }, - validateParams: { GET: isLivechatDepartmentDepartmentIdAgentsGETProps, POST: isLivechatDepartmentDepartmentIdAgentsPOSTProps }, - }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - - const agents = await findDepartmentAgents({ - userId: this.userId, - departmentId: this.urlParams._id, - pagination: { - offset, - count, - sort, - }, - }); - - return API.v1.success(agents); - }, - async post() { - await saveDepartmentAgents(this.urlParams._id, this.bodyParams); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'livechat/department.listByIds', - { authRequired: true, permissionsRequired: { GET: { permissions: ['view-livechat-departments', 'view-l-room'], operation: 'hasAny' } } }, - { - async get() { - const { ids } = this.queryParams; - const { fields } = await this.parseJsonQuery(); - if (!ids) { - return API.v1.failure("The 'ids' param is required"); - } - if (!Array.isArray(ids)) { - return API.v1.failure("The 'ids' param must be an array"); - } - - return API.v1.success( - await findDepartmentsBetweenIds({ - ids, - fields, - }), - ); - }, - }, -); diff --git a/apps/meteor/app/livechat/imports/server/rest/inquiries.ts b/apps/meteor/app/livechat/imports/server/rest/inquiries.ts deleted file mode 100644 index 4846fb5100602..0000000000000 --- a/apps/meteor/app/livechat/imports/server/rest/inquiries.ts +++ /dev/null @@ -1,160 +0,0 @@ -import { LivechatInquiryStatus } from '@rocket.chat/core-typings'; -import { LivechatInquiry, LivechatDepartment, Users, LivechatRooms } from '@rocket.chat/models'; -import { - isGETLivechatInquiriesListParams, - isPOSTLivechatInquiriesTakeParams, - isGETLivechatInquiriesQueuedForUserParams, - isGETLivechatInquiriesGetOneParams, - validateBadRequestErrorResponse, - validateUnauthorizedErrorResponse, - validateForbiddenErrorResponse, - isPOSTLivechatInquiriesReturnAsInquiry, - POSTLivechatInquiriesReturnAsInquirySuccessResponse, -} from '@rocket.chat/rest-typings'; - -import { API } from '../../../../api/server'; -import type { ExtractRoutesFromAPI } from '../../../../api/server/ApiClass'; -import { getPaginationItems } from '../../../../api/server/helpers/getPaginationItems'; -import { findInquiries, findOneInquiryByRoomId } from '../../../server/api/lib/inquiries'; -import { returnRoomAsInquiry } from '../../../server/lib/rooms'; -import { takeInquiry } from '../../../server/lib/takeInquiry'; -import { Meteor } from 'meteor/meteor'; - -API.v1.addRoute( - 'livechat/inquiries.list', - { authRequired: true, permissionsRequired: ['view-livechat-manager'], validateParams: isGETLivechatInquiriesListParams }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - const { department } = this.queryParams; - const ourQuery: { status: string; department?: string } = { status: 'queued' }; - if (department) { - const departmentFromDB = await LivechatDepartment.findOneByIdOrName(department, { projection: { _id: 1 } }); - if (departmentFromDB) { - ourQuery.department = departmentFromDB._id; - } - } - // @ts-expect-error - attachments... - const { cursor, totalCount } = LivechatInquiry.findPaginated(ourQuery, { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - projection: { - rid: 1, - name: 1, - ts: 1, - status: 1, - department: 1, - }, - }); - - const [inquiries, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - inquiries, - offset, - count: inquiries.length, - total, - }); - }, - }, -); - -API.v1.addRoute( - 'livechat/inquiries.take', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isPOSTLivechatInquiriesTakeParams }, - { - async post() { - if (this.bodyParams.userId && !(await Users.findOneById(this.bodyParams.userId, { projection: { _id: 1 } }))) { - return API.v1.failure('The user is invalid'); - } - return API.v1.success({ - inquiry: await takeInquiry(this.bodyParams.userId || this.userId, this.bodyParams.inquiryId, this.bodyParams.options), - }); - }, - }, -); - -API.v1.addRoute( - 'livechat/inquiries.queuedForUser', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isGETLivechatInquiriesQueuedForUserParams }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - const { department } = this.queryParams; - - return API.v1.success( - await findInquiries({ - userId: this.userId, - department, - status: LivechatInquiryStatus.QUEUED, - pagination: { - offset, - count, - sort, - }, - }), - ); - }, - }, -); - -API.v1.addRoute( - 'livechat/inquiries.getOne', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isGETLivechatInquiriesGetOneParams }, - { - async get() { - const { roomId } = this.queryParams; - - return API.v1.success( - await findOneInquiryByRoomId({ - roomId, - }), - ); - }, - }, -); - -const livechatInquiriesEndpoints = API.v1.post( - 'livechat/inquiries.returnAsInquiry', - { - response: { - 200: POSTLivechatInquiriesReturnAsInquirySuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - authRequired: true, - permissionsRequired: ['view-l-room'], - body: isPOSTLivechatInquiriesReturnAsInquiry, - }, - async function action() { - const { roomId, departmentId } = this.bodyParams; - - try { - const room = await LivechatRooms.findOneById(roomId); - if (!room) { - return API.v1.failure('error-room-not-found'); - } - - const result = await returnRoomAsInquiry(room, departmentId); - - return API.v1.success({ result }); - } catch (error) { - if (error instanceof Meteor.Error && typeof error.error === 'string') { - return API.v1.failure(error.error as string); - } - - return API.v1.failure('error-returning-inquiry'); - } - }, -); - -type LivechatInquiriesEndpoints = ExtractRoutesFromAPI; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends LivechatInquiriesEndpoints {} -} diff --git a/apps/meteor/app/livechat/imports/server/rest/integrations.ts b/apps/meteor/app/livechat/imports/server/rest/integrations.ts deleted file mode 100644 index 5d86202768b8d..0000000000000 --- a/apps/meteor/app/livechat/imports/server/rest/integrations.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { API } from '../../../../api/server'; -import { findIntegrationSettings } from '../../../server/api/lib/integrations'; - -API.v1.addRoute( - 'livechat/integrations.settings', - { authRequired: true, permissionsRequired: ['view-livechat-manager'] }, - { - async get() { - return API.v1.success(await findIntegrationSettings()); - }, - }, -); diff --git a/apps/meteor/app/livechat/imports/server/rest/rooms.ts b/apps/meteor/app/livechat/imports/server/rest/rooms.ts deleted file mode 100644 index 4fe1e8bb279f6..0000000000000 --- a/apps/meteor/app/livechat/imports/server/rest/rooms.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { LivechatRooms } from '@rocket.chat/models'; -import { isGETLivechatRoomsParams } from '@rocket.chat/rest-typings'; - -import { API } from '../../../../api/server'; -import { getPaginationItems } from '../../../../api/server/helpers/getPaginationItems'; -import { hasPermissionAsync } from '../../../../authorization/server/functions/hasPermission'; -import { findRooms } from '../../../server/api/lib/rooms'; - -const validateDateParams = (property: string, date?: string) => { - let parsedDate: { start?: string; end?: string } | undefined = undefined; - if (date) { - parsedDate = JSON.parse(date) as { start?: string; end?: string }; - } - - if (parsedDate?.start && isNaN(Date.parse(parsedDate.start))) { - throw new Error(`The "${property}.start" query parameter must be a valid date.`); - } - if (parsedDate?.end && isNaN(Date.parse(parsedDate.end))) { - throw new Error(`The "${property}.end" query parameter must be a valid date.`); - } - return parsedDate; -}; - -const isBoolean = (value?: string | boolean): boolean => value === 'true' || value === 'false' || typeof value === 'boolean'; - -API.v1.addRoute( - 'livechat/rooms', - { authRequired: true, validateParams: isGETLivechatRoomsParams }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort, fields, query } = await this.parseJsonQuery(); - const { agents, departmentId, open, tags, roomName, onhold, queued, units } = this.queryParams; - const { createdAt, customFields, closedAt } = this.queryParams; - - const createdAtParam = validateDateParams('createdAt', createdAt); - const closedAtParam = validateDateParams('closedAt', closedAt); - - const hasAdminAccess = await hasPermissionAsync(this.userId, 'view-livechat-rooms'); - const hasAgentAccess = - (await hasPermissionAsync(this.userId, 'view-l-room')) && agents?.includes(this.userId) && agents?.length === 1; - if (!hasAdminAccess && !hasAgentAccess) { - return API.v1.forbidden(); - } - - let parsedCf: { [key: string]: string } | undefined = undefined; - if (customFields) { - try { - const parsedCustomFields = JSON.parse(customFields) as { [key: string]: string }; - if (typeof parsedCustomFields !== 'object' || Array.isArray(parsedCustomFields) || parsedCustomFields === null) { - throw new Error('Invalid custom fields'); - } - - // Model's already checking for the keys, so we don't need to do it here. - parsedCf = parsedCustomFields; - } catch (e) { - throw new Error('The "customFields" query parameter must be a valid JSON.'); - } - } - - return API.v1.success( - await findRooms({ - agents, - roomName, - departmentId, - ...(isBoolean(open) && { open: open === true || open === 'true' }), - createdAt: createdAtParam, - closedAt: closedAtParam, - tags, - customFields: parsedCf, - onhold, - queued, - units, - query, - options: { offset, count, sort, fields }, - callerId: this.userId, - }), - ); - }, - }, -); - -API.v1.addRoute( - 'livechat/rooms/filters', - { authRequired: true, permissionsRequired: ['view-l-room'] }, - { - async get() { - return API.v1.success({ - filters: (await LivechatRooms.findAvailableSources().toArray())[0].fullTypes, - }); - }, - }, -); diff --git a/apps/meteor/app/livechat/imports/server/rest/triggers.ts b/apps/meteor/app/livechat/imports/server/rest/triggers.ts deleted file mode 100644 index a7660827b0ce1..0000000000000 --- a/apps/meteor/app/livechat/imports/server/rest/triggers.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { LivechatTrigger } from '@rocket.chat/models'; -import { isGETLivechatTriggersParams, isPOSTLivechatTriggersParams } from '@rocket.chat/rest-typings'; - -import { API } from '../../../../api/server'; -import { getPaginationItems } from '../../../../api/server/helpers/getPaginationItems'; -import { findTriggers, findTriggerById, deleteTrigger } from '../../../server/api/lib/triggers'; - -API.v1.addRoute( - 'livechat/triggers', - { - authRequired: true, - permissionsRequired: ['view-livechat-manager'], - validateParams: { - GET: isGETLivechatTriggersParams, - POST: isPOSTLivechatTriggersParams, - }, - }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - - const triggers = await findTriggers({ - pagination: { - offset, - count, - sort, - }, - }); - - return API.v1.success(triggers); - }, - async post() { - const { _id, name, description, enabled, runOnce, conditions, actions } = this.bodyParams; - - if (_id) { - await LivechatTrigger.updateById(_id, { name, description, enabled, runOnce, conditions, actions }); - } else { - await LivechatTrigger.insertOne({ name, description, enabled, runOnce, conditions, actions }); - } - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'livechat/triggers/:_id', - { authRequired: true, permissionsRequired: ['view-livechat-manager'] }, - { - async get() { - const trigger = await findTriggerById({ - triggerId: this.urlParams._id, - }); - - return API.v1.success({ - trigger, - }); - }, - async delete() { - await deleteTrigger({ - triggerId: this.urlParams._id, - }); - - return API.v1.success(); - }, - }, -); diff --git a/apps/meteor/app/livechat/imports/server/rest/users.ts b/apps/meteor/app/livechat/imports/server/rest/users.ts deleted file mode 100644 index 53039e8836c4e..0000000000000 --- a/apps/meteor/app/livechat/imports/server/rest/users.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { Users } from '@rocket.chat/models'; -import { isLivechatUsersManagerGETProps, isPOSTLivechatUsersTypeProps } from '@rocket.chat/rest-typings'; -import { check } from 'meteor/check'; - -import { API } from '../../../../api/server'; -import { getPaginationItems } from '../../../../api/server/helpers/getPaginationItems'; -import { hasAtLeastOnePermissionAsync } from '../../../../authorization/server/functions/hasPermission'; -import { findAgents, findManagers } from '../../../server/api/lib/users'; -import { addManager, addAgent, removeAgent, removeManager } from '../../../server/lib/omni-users'; - -const emptyStringArray: string[] = []; - -API.v1.addRoute( - 'livechat/users/:type', - { - authRequired: true, - permissionsRequired: { - 'POST': ['view-livechat-manager'], - '*': emptyStringArray, - }, - validateParams: { - GET: isLivechatUsersManagerGETProps, - POST: isPOSTLivechatUsersTypeProps, - }, - }, - { - async get() { - check(this.urlParams, { - type: String, - }); - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - const { text } = this.queryParams; - - if (this.urlParams.type === 'agent') { - if (!(await hasAtLeastOnePermissionAsync(this.userId, ['transfer-livechat-guest', 'edit-omnichannel-contact']))) { - return API.v1.forbidden(); - } - - const { onlyAvailable, excludeId, showIdleAgents } = this.queryParams; - return API.v1.success( - await findAgents({ - text, - onlyAvailable, - excludeId, - showIdleAgents, - pagination: { - offset, - count, - sort, - }, - }), - ); - } - if (this.urlParams.type === 'manager') { - if (!(await hasAtLeastOnePermissionAsync(this.userId, ['view-livechat-manager']))) { - return API.v1.forbidden(); - } - - return API.v1.success( - await findManagers({ - text, - pagination: { - offset, - count, - sort, - }, - }), - ); - } - throw new Error('Invalid type'); - }, - async post() { - if (this.urlParams.type === 'agent') { - const user = await addAgent(this.bodyParams.username); - if (user) { - return API.v1.success({ user }); - } - } else if (this.urlParams.type === 'manager') { - const user = await addManager(this.bodyParams.username); - if (user) { - return API.v1.success({ user }); - } - } else { - throw new Error('Invalid type'); - } - - return API.v1.failure(); - }, - }, -); - -API.v1.addRoute( - 'livechat/users/:type/:_id', - { authRequired: true, permissionsRequired: ['view-livechat-manager'] }, - { - async get() { - if (!['agent', 'manager'].includes(this.urlParams.type)) { - throw new Error('Invalid type'); - } - const role = this.urlParams.type === 'agent' ? 'livechat-agent' : 'livechat-manager'; - - const user = await Users.findOneByIdAndRole(this.urlParams._id, role, { - projection: { _id: 1, username: 1, name: 1, status: 1, statusLivechat: 1, emails: 1, livechat: 1 }, - }); - - // TODO: throw error instead of returning null - return API.v1.success({ user }); - }, - async delete() { - if (this.urlParams.type === 'agent') { - if (await removeAgent(this.urlParams._id)) { - return API.v1.success(); - } - } else if (this.urlParams.type === 'manager') { - if (await removeManager(this.urlParams._id)) { - return API.v1.success(); - } - } else { - throw new Error('Invalid type'); - } - - return API.v1.failure(); - }, - }, -); diff --git a/apps/meteor/app/livechat/imports/server/rest/visitors.ts b/apps/meteor/app/livechat/imports/server/rest/visitors.ts deleted file mode 100644 index 5504d85b699f8..0000000000000 --- a/apps/meteor/app/livechat/imports/server/rest/visitors.ts +++ /dev/null @@ -1,195 +0,0 @@ -import { Messages, LivechatRooms } from '@rocket.chat/models'; -import { - isLivechatVisitorsInfoProps, - isGETLivechatVisitorsPagesVisitedRoomIdParams, - isGETLivechatVisitorsChatHistoryRoomRoomIdVisitorVisitorIdParams, - isGETLivechatVisitorsSearchChatsRoomRoomIdVisitorVisitorIdParams, - isGETLivechatVisitorsAutocompleteParams, - isLivechatRidMessagesProps, - isGETLivechatVisitorsSearch, -} from '@rocket.chat/rest-typings'; -import { escapeRegExp } from '@rocket.chat/string-helpers'; - -import { API } from '../../../../api/server'; -import { getPaginationItems } from '../../../../api/server/helpers/getPaginationItems'; -import { canAccessRoomAsync } from '../../../../authorization/server'; -import { normalizeMessagesForUser } from '../../../../utils/server/lib/normalizeMessagesForUser'; -import { - findVisitorInfo, - findVisitedPages, - findChatHistory, - searchChats, - findVisitorsToAutocomplete, - findVisitorsByEmailOrPhoneOrNameOrUsernameOrCustomField, -} from '../../../server/api/lib/visitors'; - -API.v1.addRoute( - 'livechat/visitors.info', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isLivechatVisitorsInfoProps }, - { - async get() { - const visitor = await findVisitorInfo({ visitorId: this.queryParams.visitorId }); - return API.v1.success(visitor); - }, - }, -); - -API.v1.addRoute( - 'livechat/visitors.pagesVisited/:roomId', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isGETLivechatVisitorsPagesVisitedRoomIdParams }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - - const pages = await findVisitedPages({ - roomId: this.urlParams.roomId, - pagination: { - offset, - count, - sort, - }, - }); - return API.v1.success(pages); - }, - }, -); - -API.v1.addRoute( - 'livechat/visitors.chatHistory/room/:roomId/visitor/:visitorId', - { - authRequired: true, - permissionsRequired: ['view-l-room'], - validateParams: isGETLivechatVisitorsChatHistoryRoomRoomIdVisitorVisitorIdParams, - }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - const history = await findChatHistory({ - userId: this.userId, - roomId: this.urlParams.roomId, - visitorId: this.urlParams.visitorId, - pagination: { - offset, - count, - sort, - }, - }); - - return API.v1.success(history); - }, - }, -); - -API.v1.addRoute( - 'livechat/visitors.searchChats/room/:roomId/visitor/:visitorId', - { - authRequired: true, - permissionsRequired: ['view-l-room'], - validateParams: isGETLivechatVisitorsSearchChatsRoomRoomIdVisitorVisitorIdParams, - }, - { - async get() { - const { roomId, visitorId } = this.urlParams; - const { searchText, closedChatsOnly, servedChatsOnly, source } = this.queryParams; - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - const history = await searchChats({ - userId: this.userId, - roomId, - visitorId, - searchText, - closedChatsOnly, - servedChatsOnly, - source, - pagination: { - offset, - count, - sort, - }, - }); - return API.v1.success(history); - }, - }, -); - -API.v1.addRoute( - 'livechat/visitors.autocomplete', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isGETLivechatVisitorsAutocompleteParams }, - { - async get() { - const { selector } = this.queryParams; - - return API.v1.success( - await findVisitorsToAutocomplete({ - selector: JSON.parse(selector), - }), - ); - }, - }, -); - -API.v1.addRoute( - 'livechat/visitors.search', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isGETLivechatVisitorsSearch }, - { - async get() { - const { term } = this.queryParams; - - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - - const nameOrUsername = term ? new RegExp(escapeRegExp(term), 'i') : undefined; - - return API.v1.success( - await findVisitorsByEmailOrPhoneOrNameOrUsernameOrCustomField({ - emailOrPhone: term, - nameOrUsername, - pagination: { - offset, - count, - sort, - }, - }), - ); - }, - }, -); - -API.v1.addRoute( - 'livechat/:rid/messages', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isLivechatRidMessagesProps }, - { - async get() { - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - const { searchTerm } = this.queryParams; - - const room = await LivechatRooms.findOneById(this.urlParams.rid); - - if (!room) { - throw new Error('invalid-room'); - } - - if (!(await canAccessRoomAsync(room, this.user))) { - throw new Error('not-allowed'); - } - - const { cursor, totalCount } = Messages.findLivechatClosedMessages(this.urlParams.rid, searchTerm, { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - }); - - const [messages, total] = await Promise.all([cursor.toArray(), totalCount]); - - return API.v1.success({ - messages: await normalizeMessagesForUser(messages, this.userId), - offset, - count, - total, - }); - }, - }, -); diff --git a/apps/meteor/app/livechat/lib/stream/constants.ts b/apps/meteor/app/livechat/lib/stream/constants.ts deleted file mode 100644 index 17c85f566f445..0000000000000 --- a/apps/meteor/app/livechat/lib/stream/constants.ts +++ /dev/null @@ -1 +0,0 @@ -export const LIVECHAT_INQUIRY_QUEUE_STREAM_OBSERVER = 'livechat-inquiry-queue-observer'; diff --git a/apps/meteor/app/livechat/server/api.ts b/apps/meteor/app/livechat/server/api.ts deleted file mode 100644 index 9227a85089386..0000000000000 --- a/apps/meteor/app/livechat/server/api.ts +++ /dev/null @@ -1,14 +0,0 @@ -import '../imports/server/rest/agent'; -import '../imports/server/rest/departments'; -import '../imports/server/rest/sms'; -import '../imports/server/rest/users'; -import '../imports/server/rest/upload'; -import '../imports/server/rest/inquiries'; -import '../imports/server/rest/rooms'; -import '../imports/server/rest/appearance'; -import '../imports/server/rest/triggers'; -import '../imports/server/rest/integrations'; -import '../imports/server/rest/visitors'; -import '../imports/server/rest/dashboards'; -import '../imports/server/rest/queue'; -import '../imports/server/rest/businessHours'; diff --git a/apps/meteor/app/livechat/server/api/lib/businessHours.ts b/apps/meteor/app/livechat/server/api/lib/businessHours.ts deleted file mode 100644 index 898e5ed9db3ed..0000000000000 --- a/apps/meteor/app/livechat/server/api/lib/businessHours.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { ILivechatBusinessHour } from '@rocket.chat/core-typings'; - -import { businessHourManager } from '../../business-hour'; - -export async function findLivechatBusinessHour(id?: string, type?: string): Promise> { - return { - businessHour: (await businessHourManager.getBusinessHour(id, type)) as ILivechatBusinessHour, - }; -} diff --git a/apps/meteor/app/livechat/server/api/lib/departments.ts b/apps/meteor/app/livechat/server/api/lib/departments.ts deleted file mode 100644 index cf430e3ad8561..0000000000000 --- a/apps/meteor/app/livechat/server/api/lib/departments.ts +++ /dev/null @@ -1,197 +0,0 @@ -import type { ILivechatDepartment, ILivechatDepartmentAgents } from '@rocket.chat/core-typings'; -import { LivechatDepartment, LivechatDepartmentAgents } from '@rocket.chat/models'; -import { applyDepartmentRestrictions } from '@rocket.chat/omni-core'; -import type { PaginatedResult } from '@rocket.chat/rest-typings'; -import { escapeRegExp } from '@rocket.chat/string-helpers'; -import type { Document, Filter, FilterOperators, FindOptions } from 'mongodb'; - -import { hasPermissionAsync } from '../../../../authorization/server/functions/hasPermission'; - -type Pagination = { pagination: { offset: number; count: number; sort: FindOptions['sort'] } }; -type FindDepartmentParams = { - userId: string; - onlyMyDepartments?: boolean; - text?: string; - enabled?: boolean; - excludeDepartmentId?: string; - showArchived?: boolean; -} & Pagination; -type FindDepartmentByIdParams = { - userId: string; - departmentId: string; - includeAgents?: boolean; - onlyMyDepartments?: boolean; -}; -type FindDepartmentToAutocompleteParams = { - uid: string; - selector: { - exceptions: string[]; - conditions: Filter; - term: string; - }; - onlyMyDepartments?: boolean; - showArchived?: boolean; -}; -type FindDepartmentAgentsParams = { - userId: string; - departmentId: string; -} & Pagination; - -export async function findDepartments({ - userId, - onlyMyDepartments = false, - text, - enabled, - excludeDepartmentId, - showArchived = false, - pagination: { offset, count, sort }, -}: FindDepartmentParams): Promise> { - let query: FilterOperators = { - $or: [{ type: { $eq: 'd' } }, { type: { $exists: false } }], - ...(!showArchived && { archived: { $ne: !showArchived } }), - ...(enabled && { enabled: Boolean(enabled) }), - ...(text && { name: new RegExp(escapeRegExp(text), 'i') }), - ...(excludeDepartmentId && { _id: { $ne: excludeDepartmentId } }), - }; - - if (onlyMyDepartments) { - query = await applyDepartmentRestrictions(query, userId); - } - - const { cursor, totalCount } = LivechatDepartment.findPaginated(query, { - sort: sort || { name: 1 }, - skip: offset, - limit: count, - }); - - const [departments, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - departments, - count: departments.length, - offset, - total, - }; -} - -export async function findArchivedDepartments({ - userId, - onlyMyDepartments = false, - text, - excludeDepartmentId, - pagination: { offset, count, sort }, -}: FindDepartmentParams): Promise> { - let query: FilterOperators = { - $or: [{ type: { $eq: 'd' } }, { type: { $exists: false } }], - archived: { $eq: true }, - ...(text && { name: new RegExp(escapeRegExp(text), 'i') }), - ...(excludeDepartmentId && { _id: { $ne: excludeDepartmentId } }), - }; - - if (onlyMyDepartments) { - query = await applyDepartmentRestrictions(query, userId); - } - - const { cursor, totalCount } = LivechatDepartment.findPaginated(query, { - sort: sort || { name: 1 }, - skip: offset, - limit: count, - }); - - const [departments, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - departments, - count: departments.length, - offset, - total, - }; -} - -export async function findDepartmentById({ - userId, - departmentId, - includeAgents = true, - onlyMyDepartments = false, -}: FindDepartmentByIdParams): Promise<{ - department: ILivechatDepartment | null; - agents?: ILivechatDepartmentAgents[]; -}> { - const canViewLivechatDepartments = includeAgents && (await hasPermissionAsync(userId, 'view-livechat-departments')); - - let query: FilterOperators = { _id: departmentId }; - - if (onlyMyDepartments) { - query = await applyDepartmentRestrictions(query, userId); - } - - const result = { - department: await LivechatDepartment.findOne(query), - ...(includeAgents && - canViewLivechatDepartments && { - agents: await LivechatDepartmentAgents.findByDepartmentId(departmentId).toArray(), - }), - }; - - return result; -} - -export async function findDepartmentsToAutocomplete({ - uid, - selector, - onlyMyDepartments = false, - showArchived = false, -}: FindDepartmentToAutocompleteParams): Promise<{ items: ILivechatDepartment[] }> { - const { exceptions = [] } = selector; - let { conditions = {} } = selector; - - if (onlyMyDepartments) { - conditions = await applyDepartmentRestrictions(conditions, uid); - } - - const conditionsWithArchived = { archived: { $ne: !showArchived }, ...conditions }; - - const items = await LivechatDepartment.findByNameRegexWithExceptionsAndConditions(selector.term, exceptions, conditionsWithArchived, { - projection: { - _id: 1, - name: 1, - }, - sort: { - name: 1, - }, - }).toArray(); - return { - items, - }; -} - -export async function findDepartmentAgents({ - departmentId, - pagination: { offset, count, sort }, -}: FindDepartmentAgentsParams): Promise> { - const { cursor, totalCount } = LivechatDepartmentAgents.findAgentsByDepartmentId(departmentId, { - sort: sort || { username: 1 }, - skip: offset, - limit: count, - }); - - const [agents, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - agents, - count: agents.length, - offset, - total, - }; -} - -export async function findDepartmentsBetweenIds({ - ids, - fields, -}: { - ids: string[]; - fields: Record; -}): Promise<{ departments: ILivechatDepartment[] }> { - const departments = await LivechatDepartment.findInIds(ids, { projection: fields }).toArray(); - return { departments }; -} diff --git a/apps/meteor/app/livechat/server/api/lib/inquiries.ts b/apps/meteor/app/livechat/server/api/lib/inquiries.ts deleted file mode 100644 index fb923b1e000b2..0000000000000 --- a/apps/meteor/app/livechat/server/api/lib/inquiries.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { LivechatInquiryStatus } from '@rocket.chat/core-typings'; -import type { ILivechatInquiryRecord, IRoom, IUser } from '@rocket.chat/core-typings'; -import { LivechatDepartmentAgents, LivechatDepartment, LivechatInquiry } from '@rocket.chat/models'; -import type { PaginatedResult } from '@rocket.chat/rest-typings'; -import type { Filter } from 'mongodb'; - -import { getOmniChatSortQuery } from '../../../lib/inquiries'; -import { getInquirySortMechanismSetting } from '../../lib/settings'; - -const agentDepartments = async (userId: IUser['_id']): Promise => { - const agentDepartments = (await LivechatDepartmentAgents.findByAgentId(userId, { projection: { departmentId: 1 } }).toArray()).map( - ({ departmentId }) => departmentId, - ); - return (await LivechatDepartment.findEnabledInIds(agentDepartments, { projection: { _id: 1 } }).toArray()).map(({ _id }) => _id); -}; - -const applyDepartmentRestrictions = async ( - userId: IUser['_id'], - filterDepartment?: string, -): Promise<{ $in: string[] } | { $exists: false } | string> => { - const allowedDepartments = await agentDepartments(userId); - if (allowedDepartments && Array.isArray(allowedDepartments) && allowedDepartments.length > 0) { - if (!filterDepartment) { - return { $in: allowedDepartments }; - } - - if (!allowedDepartments.includes(filterDepartment)) { - throw new Error('error-not-authorized'); - } - return filterDepartment; - } - - return { $exists: false }; -}; - -export async function findInquiries({ - userId, - department: filterDepartment, - status, - pagination: { offset, count, sort }, -}: { - userId: IUser['_id']; - department?: string; - status?: LivechatInquiryStatus; - pagination: { offset: number; count: number; sort: Record }; -}): Promise }>> { - const department = await applyDepartmentRestrictions(userId, filterDepartment); - const defaultSort = getOmniChatSortQuery(getInquirySortMechanismSetting()); - const options = { - limit: count, - skip: offset, - sort: { ...sort, ...defaultSort }, - }; - - const filter: Filter = { - // V in Enum only works for numeric enums - ...(status && Object.values(LivechatInquiryStatus).includes(status) && { status }), - $or: [ - // Cases where this user is the default agent - { - 'defaultAgent': { $exists: true }, - 'defaultAgent.agentId': userId, - }, - // Cases with no default agent assigned yet, AND either: - // - belongs to one of user's departments, or - // - has no department (public queue) - { - defaultAgent: { $exists: false }, - $or: [...(department ? [{ department }] : []), { department: { $exists: false } }], - }, - ], - }; - - const { cursor, totalCount } = LivechatInquiry.findPaginated(filter, options); - - const [inquiries, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - inquiries, - count: inquiries.length, - offset, - total, - }; -} - -export async function findOneInquiryByRoomId({ roomId }: { roomId: IRoom['_id'] }): Promise<{ inquiry: ILivechatInquiryRecord | null }> { - return { - inquiry: await LivechatInquiry.findOneByRoomId(roomId, {}), - }; -} diff --git a/apps/meteor/app/livechat/server/api/lib/livechat.ts b/apps/meteor/app/livechat/server/api/lib/livechat.ts deleted file mode 100644 index 4390137e95a28..0000000000000 --- a/apps/meteor/app/livechat/server/api/lib/livechat.ts +++ /dev/null @@ -1,196 +0,0 @@ -import type { ILivechatAgent, ILivechatDepartment, ILivechatTrigger, ILivechatVisitor, IOmnichannelRoom } from '@rocket.chat/core-typings'; -import { License } from '@rocket.chat/license'; -import { EmojiCustom, LivechatTrigger, LivechatVisitors, LivechatRooms, LivechatDepartment } from '@rocket.chat/models'; -import { makeFunction } from '@rocket.chat/patch-injection'; -import { Meteor } from 'meteor/meteor'; - -import { callbacks } from '../../../../../server/lib/callbacks'; -import { normalizeAgent } from '../../lib/Helper'; -import { getInitSettings } from '../../lib/settings'; - -async function findTriggers(): Promise[]> { - const triggers = await LivechatTrigger.findEnabled().toArray(); - const hasLicense = License.hasModule('livechat-enterprise'); - const premiumActions = ['use-external-service']; - - return triggers - .filter(({ actions }) => hasLicense || actions.some((c) => !premiumActions.includes(c.name))) - .map(({ _id, actions, conditions, runOnce }) => ({ - _id, - actions, - conditions, - runOnce, - })); -} - -export type CheckUnitsFromUser = { - userId?: string; - businessUnit?: string; -}; - -export const checkUnitsFromUser = makeFunction(async (_params: CheckUnitsFromUser): Promise => undefined); - -async function findDepartments( - businessUnit?: string, - userId?: string, -): Promise[]> { - // TODO: check this function usage - await checkUnitsFromUser({ userId, businessUnit }); - - return LivechatDepartment.findEnabledWithAgentsAndBusinessUnit< - Pick - >(businessUnit, { - _id: 1, - name: 1, - showOnRegistration: 1, - showOnOfflineForm: 1, - departmentsAllowedToForward: 1, - }).toArray(); -} - -export function findGuest(token: string): Promise { - return LivechatVisitors.getVisitorByToken(token); -} - -export function findGuestWithoutActivity(token: string): Promise { - return LivechatVisitors.getVisitorByToken(token, { projection: { name: 1, username: 1, token: 1, visitorEmails: 1, department: 1 } }); -} - -export async function findRoom(token: string, rid?: string): Promise { - const fields = { - t: 1, - departmentId: 1, - servedBy: 1, - open: 1, - v: 1, - ts: 1, - }; - - if (!rid) { - return LivechatRooms.findOneByVisitorToken(token, fields); - } - - return LivechatRooms.findOneByIdAndVisitorToken(rid, token, fields); -} - -export async function findOpenRoom(token: string, departmentId?: string, callerId?: string): Promise { - const options = { - projection: { - departmentId: 1, - servedBy: 1, - open: 1, - }, - }; - - const extraQuery = await callbacks.run('livechat.applyRoomRestrictions', {}, { userId: callerId }); - const rooms = departmentId - ? await LivechatRooms.findOpenByVisitorTokenAndDepartmentId(token, departmentId, options, extraQuery).toArray() - : await LivechatRooms.findOpenByVisitorToken(token, options, extraQuery).toArray(); - if (rooms && rooms.length > 0) { - return rooms[0]; - } -} - -export async function findAgent(agentId?: string): Promise { - return normalizeAgent(agentId); -} - -export function normalizeHttpHeaderData(headers: Headers = new Headers()): { - httpHeaders: Record; -} { - const httpHeaders = Object.fromEntries(headers.entries()); - return { httpHeaders }; -} - -export async function settings({ businessUnit = '', userId }: { businessUnit?: string; userId?: string } = {}): Promise< - Record -> { - const [initSettings, triggers, departments, emojis] = await Promise.all([ - getInitSettings(), - findTriggers(), - findDepartments(businessUnit, userId), - EmojiCustom.find().toArray(), - ]); - const sound = `${Meteor.absoluteUrl()}sounds/chime.mp3`; - return { - enabled: initSettings.Livechat_enabled, - settings: { - registrationForm: initSettings.Livechat_registration_form, - allowSwitchingDepartments: initSettings.Livechat_allow_switching_departments, - nameFieldRegistrationForm: initSettings.Livechat_name_field_registration_form, - emailFieldRegistrationForm: initSettings.Livechat_email_field_registration_form, - displayOfflineForm: initSettings.Livechat_display_offline_form, - videoCall: initSettings.Omnichannel_call_provider === 'default-provider', - fileUpload: initSettings.Livechat_fileupload_enabled && initSettings.FileUpload_Enabled, - language: initSettings.Language, - transcript: initSettings.Livechat_enable_transcript, - historyMonitorType: initSettings.Livechat_history_monitor_type, - forceAcceptDataProcessingConsent: initSettings.Livechat_force_accept_data_processing_consent, - showConnecting: initSettings.Livechat_Show_Connecting, - agentHiddenInfo: initSettings.Livechat_show_agent_info === false, - clearLocalStorageWhenChatEnded: initSettings.Livechat_clear_local_storage_when_chat_ended, - limitTextLength: - initSettings.Livechat_enable_message_character_limit && - (initSettings.Livechat_message_character_limit || initSettings.Message_MaxAllowedSize), - hiddenSystemMessages: initSettings.Livechat_hide_system_messages, - livechatLogo: initSettings.Assets_livechat_widget_logo, - hideWatermark: initSettings.Livechat_hide_watermark || false, - visitorsCanCloseChat: initSettings.Omnichannel_allow_visitors_to_close_conversation, - }, - theme: { - title: initSettings.Livechat_title, - color: initSettings.Livechat_title_color, - offlineTitle: initSettings.Livechat_offline_title, - offlineColor: initSettings.Livechat_offline_title_color, - position: initSettings.Livechat_widget_position || 'right', - background: initSettings.Livechat_background, - hideExpandChat: initSettings.Livechat_hide_expand_chat, - actionLinks: { - jitsi: [ - { icon: 'icon-videocam', i18nLabel: 'Accept' }, - { icon: 'icon-cancel', i18nLabel: 'Decline' }, - ], - }, - }, - messages: { - offlineMessage: initSettings.Livechat_offline_message, - offlineSuccessMessage: initSettings.Livechat_offline_success_message, - offlineUnavailableMessage: initSettings.Livechat_offline_form_unavailable, - conversationFinishedMessage: initSettings.Livechat_conversation_finished_message, - conversationFinishedText: initSettings.Livechat_conversation_finished_text, - transcriptMessage: initSettings.Livechat_transcript_message, - registrationFormMessage: initSettings.Livechat_registration_form_message, - dataProcessingConsentText: initSettings.Livechat_data_processing_consent_text, - }, - survey: { - items: ['satisfaction', 'agentKnowledge', 'agentResposiveness', 'agentFriendliness'], - values: ['1', '2', '3', '4', '5'], - }, - triggers, - departments, - resources: { - sound, - emojis, - }, - }; -} - -export const getExtraConfigInfo = makeFunction( - async (options: { - room?: IOmnichannelRoom; - }): Promise<{ - queueInfo?: unknown; - customFields?: { - options?: string[] | undefined; - _id: string; - label: string; - regexp: string | undefined; - required: boolean; - type: string | undefined; - defaultValue: string | null; - }[]; - room?: IOmnichannelRoom; - }> => options, -); - -export const onCheckRoomParams = makeFunction((params: any) => params); diff --git a/apps/meteor/app/livechat/server/api/lib/rooms.ts b/apps/meteor/app/livechat/server/api/lib/rooms.ts deleted file mode 100644 index 5632a56d6411d..0000000000000 --- a/apps/meteor/app/livechat/server/api/lib/rooms.ts +++ /dev/null @@ -1,92 +0,0 @@ -import type { ILivechatDepartment, IOmnichannelRoom } from '@rocket.chat/core-typings'; -import { LivechatRooms, LivechatDepartment } from '@rocket.chat/models'; -import type { PaginatedResult } from '@rocket.chat/rest-typings'; - -import { callbacks } from '../../../../../server/lib/callbacks'; - -export async function findRooms({ - agents, - roomName, - departmentId, - open, - createdAt, - closedAt, - tags, - customFields, - onhold, - queued, - units, - query, - options: { offset, count, fields, sort }, - callerId, -}: { - agents?: Array; - roomName?: string; - departmentId?: string; - open?: boolean; - createdAt?: { - start?: string | undefined; - end?: string | undefined; - }; - closedAt?: { - start?: string | undefined; - end?: string | undefined; - }; - tags?: Array; - customFields?: Record; - onhold?: string | boolean; - queued?: string | boolean; - units?: Array; - query?: Record; - options: { offset: number; count: number; fields: Record; sort: Record }; - callerId: string; -}): Promise }>> { - const extraQueryBase = await callbacks.run('livechat.applyRoomRestrictions', {}, { unitsFilter: units, userId: callerId }); - const extraQuery = { ...extraQueryBase, ...(query || {}) }; - const { cursor, totalCount } = LivechatRooms.findRoomsWithCriteria({ - agents, - roomName, - departmentId, - open, - createdAt, - closedAt, - tags, - customFields, - onhold: ['t', 'true', '1'].includes(`${onhold}`), - queued: ['t', 'true', '1'].includes(`${queued}`), - options: { - sort: sort || { ts: -1 }, - offset, - count, - fields, - }, - extraQuery, - }); - - const [rooms, total] = await Promise.all([cursor.toArray(), totalCount]); - - const isRoomWithDepartmentId = (depId: string | undefined): depId is string => !!depId; - - const departmentsIds = [...new Set(rooms.map((room) => room.departmentId).filter(isRoomWithDepartmentId))]; - if (departmentsIds.length) { - const departments = await LivechatDepartment.findInIds(departmentsIds, { - projection: { name: 1 }, - }).toArray(); - - rooms.forEach((room: IOmnichannelRoom & { department?: ILivechatDepartment }) => { - if (!room.departmentId) { - return; - } - const department = departments.find((dept) => dept._id === room.departmentId); - if (department) { - room.department = department; - } - }); - } - return { - rooms, - count: rooms.length, - offset, - total, - }; -} diff --git a/apps/meteor/app/livechat/server/api/lib/transfer.ts b/apps/meteor/app/livechat/server/api/lib/transfer.ts deleted file mode 100644 index d01d85402cae5..0000000000000 --- a/apps/meteor/app/livechat/server/api/lib/transfer.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { IOmnichannelSystemMessage } from '@rocket.chat/core-typings'; -import { Messages } from '@rocket.chat/models'; -import type { PaginatedResult } from '@rocket.chat/rest-typings'; - -const normalizeTransferHistory = ({ transferData }: IOmnichannelSystemMessage): IOmnichannelSystemMessage['transferData'] => transferData; - -const removeNulls = (value: S | undefined): value is S => value != null; - -export async function findLivechatTransferHistory({ - rid, - pagination: { offset, count, sort }, -}: { - rid: string; - pagination: { offset: number; count: number; sort: Record }; -}): Promise> { - const { cursor, totalCount } = Messages.findPaginated( - { rid, t: 'livechat_transfer_history' }, - { - projection: { transferData: 1 }, - sort: sort || { ts: 1 }, - skip: offset, - limit: count, - }, - ); - - const [history, total] = await Promise.all([cursor.map(normalizeTransferHistory).toArray(), totalCount]); - - return { - history: history.filter(removeNulls), - count: history.length, - offset, - total, - }; -} diff --git a/apps/meteor/app/livechat/server/api/lib/triggers.ts b/apps/meteor/app/livechat/server/api/lib/triggers.ts deleted file mode 100644 index 4cbafcb0dc737..0000000000000 --- a/apps/meteor/app/livechat/server/api/lib/triggers.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { ILivechatTrigger } from '@rocket.chat/core-typings'; -import { LivechatTrigger } from '@rocket.chat/models'; -import type { PaginatedResult } from '@rocket.chat/rest-typings'; - -export async function findTriggers({ - pagination: { offset, count, sort }, -}: { - pagination: { offset: number; count: number; sort: Record }; -}): Promise }>> { - const { cursor, totalCount } = LivechatTrigger.findPaginated( - {}, - { - sort: sort || { name: 1 }, - skip: offset, - limit: count, - }, - ); - - const [triggers, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - triggers, - count: triggers.length, - offset, - total, - }; -} - -export async function findTriggerById({ triggerId }: { triggerId: string }): Promise { - return LivechatTrigger.findOneById(triggerId); -} - -export async function deleteTrigger({ triggerId }: { triggerId: string }): Promise { - await LivechatTrigger.removeById(triggerId); -} diff --git a/apps/meteor/app/livechat/server/api/lib/visitors.ts b/apps/meteor/app/livechat/server/api/lib/visitors.ts deleted file mode 100644 index c302141aded02..0000000000000 --- a/apps/meteor/app/livechat/server/api/lib/visitors.ts +++ /dev/null @@ -1,216 +0,0 @@ -import type { ILivechatVisitor, IMessage, IOmnichannelRoom, IRoom, IUser, IVisitor } from '@rocket.chat/core-typings'; -import { LivechatVisitors, Messages, LivechatRooms, LivechatCustomField } from '@rocket.chat/models'; -import type { FindOptions } from 'mongodb'; - -import { callbacks } from '../../../../../server/lib/callbacks'; -import { canAccessRoomAsync } from '../../../../authorization/server/functions/canAccessRoom'; - -export async function findVisitorInfo({ visitorId }: { visitorId: IVisitor['_id'] }) { - const visitor = await LivechatVisitors.findOneEnabledById(visitorId, { projection: { token: 0 } }); - if (!visitor) { - throw new Error('visitor-not-found'); - } - - return { - visitor, - }; -} - -export async function findVisitedPages({ - roomId, - pagination: { offset, count, sort }, -}: { - roomId: IRoom['_id']; - pagination: { offset: number; count: number; sort: FindOptions['sort'] }; -}) { - const room = await LivechatRooms.findOneById(roomId); - if (!room) { - throw new Error('invalid-room'); - } - const { cursor, totalCount } = Messages.findPaginatedByRoomIdAndType(room._id, 'livechat_navigation_history', { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - }); - - const [pages, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - pages, - count: pages.length, - offset, - total, - }; -} - -export async function findChatHistory({ - userId, - roomId, - visitorId, - pagination: { offset, count, sort }, -}: { - userId: IUser['_id']; - roomId: IRoom['_id']; - visitorId: IVisitor['_id']; - pagination: { offset: number; count: number; sort: FindOptions['sort'] }; -}) { - const room = await LivechatRooms.findOneById(roomId); - if (!room) { - throw new Error('invalid-room'); - } - if (!(await canAccessRoomAsync(room, { _id: userId }))) { - throw new Error('error-not-allowed'); - } - - const extraQuery = await callbacks.run('livechat.applyRoomRestrictions', {}, { userId }); - const { cursor, totalCount } = LivechatRooms.findPaginatedByVisitorId( - visitorId, - { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - }, - extraQuery, - ); - - const [history, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - history, - count: history.length, - offset, - total, - }; -} - -export async function searchChats({ - userId, - roomId, - visitorId, - searchText, - closedChatsOnly, - servedChatsOnly: served, - source, - pagination: { offset, count, sort }, -}: { - userId: IUser['_id']; - roomId: IRoom['_id']; - visitorId: IVisitor['_id']; - searchText?: string; - closedChatsOnly?: string; - servedChatsOnly?: string; - source?: string; - pagination: { offset: number; count: number; sort: FindOptions['sort'] }; -}) { - const room = await LivechatRooms.findOneById(roomId); - if (!room) { - throw new Error('invalid-room'); - } - - if (!(await canAccessRoomAsync(room, { _id: userId }))) { - throw new Error('error-not-allowed'); - } - - const options = { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - }; - - const [total] = await LivechatRooms.findRoomsByVisitorIdAndMessageWithCriteria({ - visitorId, - open: closedChatsOnly !== 'true', - served: served === 'true', - searchText, - onlyCount: true, - source, - }).toArray(); - const cursor = await LivechatRooms.findRoomsByVisitorIdAndMessageWithCriteria({ - visitorId, - open: closedChatsOnly !== 'true', - served: served === 'true', - searchText, - options, - source, - }); - - const history = await cursor.toArray(); - - return { - history, - count: history.length, - offset, - total: total?.count ?? 0, - }; -} - -export async function findVisitorsToAutocomplete({ - selector, -}: { - selector: { - exceptions?: ILivechatVisitor['_id'][]; - conditions?: Record; - term: string; - }; -}) { - const { exceptions = [], conditions = {} } = selector; - - const options: FindOptions = { - projection: { - _id: 1, - name: 1, - username: 1, - }, - limit: 10, - sort: { - name: 1, - }, - }; - - const items = await LivechatVisitors.findByNameRegexWithExceptionsAndConditions(selector.term, exceptions, conditions, options).toArray(); - return { - items, - }; -} - -export async function findVisitorsByEmailOrPhoneOrNameOrUsernameOrCustomField({ - emailOrPhone, - nameOrUsername, - pagination: { offset, count, sort }, -}: { - emailOrPhone?: string; - nameOrUsername?: RegExp; - pagination: { offset: number; count: number; sort: FindOptions['sort'] }; -}) { - const allowedCF = await LivechatCustomField.findMatchingCustomFields('visitor', true, { projection: { _id: 1 } }) - .map((cf) => cf._id) - .toArray(); - - const { cursor, totalCount } = await LivechatVisitors.findPaginatedVisitorsByEmailOrPhoneOrNameOrUsernameOrCustomField( - emailOrPhone, - nameOrUsername, - allowedCF, - { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - projection: { - username: 1, - name: 1, - phone: 1, - livechatData: 1, - visitorEmails: 1, - lastChat: 1, - }, - }, - ); - - const [visitors, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - visitors, - count: visitors.length, - offset, - total, - }; -} diff --git a/apps/meteor/app/livechat/server/api/rest.ts b/apps/meteor/app/livechat/server/api/rest.ts deleted file mode 100644 index 0689e22fda5d3..0000000000000 --- a/apps/meteor/app/livechat/server/api/rest.ts +++ /dev/null @@ -1,14 +0,0 @@ -import './v1/config'; -import './v1/visitor'; -import './v1/transcript'; -import './v1/offlineMessage'; -import './v1/pageVisited'; -import './v1/agent'; -import './v1/message'; -import './v1/customField'; -import './v1/room'; -import './v1/transfer'; -import './v1/contact'; -import './v1/webhooks'; -import './v1/integration'; -import './v1/statistics'; diff --git a/apps/meteor/app/livechat/server/api/v1/agent.ts b/apps/meteor/app/livechat/server/api/v1/agent.ts deleted file mode 100644 index 3c271e832b07f..0000000000000 --- a/apps/meteor/app/livechat/server/api/v1/agent.ts +++ /dev/null @@ -1,170 +0,0 @@ -import type { ILivechatAgent } from '@rocket.chat/core-typings'; -import { ILivechatAgentStatus } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; -import { - isGETAgentNextToken, - isPOSTLivechatAgentSaveInfoParams, - isPOSTLivechatAgentStatusProps, - POSTLivechatAgentSaveInfoSuccessResponse, - validateBadRequestErrorResponse, - validateForbiddenErrorResponse, - validateUnauthorizedErrorResponse, -} from '@rocket.chat/rest-typings'; - -import { API } from '../../../../api/server'; -import type { ExtractRoutesFromAPI } from '../../../../api/server/ApiClass'; -import { hasPermissionAsync } from '../../../../authorization/server/functions/hasPermission'; -import { hasRoleAsync } from '../../../../authorization/server/functions/hasRole'; -import { RoutingManager } from '../../lib/RoutingManager'; -import { getRequiredDepartment } from '../../lib/departmentsLib'; -import { saveAgentInfo } from '../../lib/omni-users'; -import { setUserStatusLivechat, allowAgentChangeServiceStatus } from '../../lib/utils'; -import { findRoom, findGuest, findAgent, findOpenRoom } from '../lib/livechat'; - -API.v1.addRoute('livechat/agent.info/:rid/:token', { - async get() { - const visitor = await findGuest(this.urlParams.token); - if (!visitor) { - throw new Error('invalid-token'); - } - - const room = await findRoom(this.urlParams.token, this.urlParams.rid); - if (!room) { - throw new Error('invalid-room'); - } - - const agent = room?.servedBy && (await findAgent(room.servedBy._id)); - if (!agent) { - throw new Error('invalid-agent'); - } - - return API.v1.success({ agent }); - }, -}); - -API.v1.addRoute( - 'livechat/agent.next/:token', - { validateParams: isGETAgentNextToken }, - { - async get() { - const { token } = this.urlParams; - const room = await findOpenRoom(token, undefined, this.userId); - if (room) { - return API.v1.success(); - } - - let { department } = this.queryParams; - if (!department) { - const requireDepartment = await getRequiredDepartment(); - if (requireDepartment) { - department = requireDepartment._id; - } - } - - const agentData = await RoutingManager.getNextAgent(department); - if (!agentData) { - throw new Error('agent-not-found'); - } - - const agent = await findAgent(agentData.agentId); - if (!agent) { - throw new Error('invalid-agent'); - } - - return API.v1.success({ agent }); - }, - }, -); - -API.v1.addRoute( - 'livechat/agent.status', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isPOSTLivechatAgentStatusProps }, - { - async post() { - const { status, agentId: inputAgentId } = this.bodyParams; - - const agentId = inputAgentId || this.userId; - - const agent = await Users.findOneAgentById>(agentId, { - projection: { - status: 1, - statusLivechat: 1, - active: 1, - }, - }); - if (!agent) { - return API.v1.notFound('Agent not found'); - } - - if (!agent.active) { - return API.v1.failure('error-user-deactivated'); - } - - const newStatus: ILivechatAgentStatus = - status || - (agent.statusLivechat === ILivechatAgentStatus.AVAILABLE ? ILivechatAgentStatus.NOT_AVAILABLE : ILivechatAgentStatus.AVAILABLE); - if (newStatus === agent.statusLivechat) { - return API.v1.success({ status: agent.statusLivechat }); - } - - const canChangeStatus = await allowAgentChangeServiceStatus(newStatus, agentId); - - if (agentId !== this.userId) { - if (!(await hasPermissionAsync(this.userId, 'manage-livechat-agents'))) { - return API.v1.forbidden(); - } - - // Silent fail for admins when BH is closed - // Next version we'll update this to return an error - // And update the FE accordingly - if (canChangeStatus) { - await setUserStatusLivechat(agentId, newStatus); - return API.v1.success({ status: newStatus }); - } - - return API.v1.success({ status: agent.statusLivechat }); - } - - if (!canChangeStatus) { - return API.v1.failure('error-business-hours-are-closed'); - } - - await setUserStatusLivechat(agentId, newStatus); - - return API.v1.success({ status: newStatus }); - }, - }, -); - -const livechatAgentsEndpoints = API.v1.post( - 'livechat/agents.saveInfo', - { - response: { - 200: POSTLivechatAgentSaveInfoSuccessResponse, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - authRequired: true, - permissionsRequired: ['manage-livechat-agents'], - body: isPOSTLivechatAgentSaveInfoParams, - }, - async function action() { - const { agentId, agentData, agentDepartments } = this.bodyParams; - - if (!(await hasRoleAsync(agentId, 'livechat-agent'))) { - return API.v1.failure('error-user-is-not-agent'); - } - - await saveAgentInfo(agentId, agentData, agentDepartments); - - return API.v1.success(); - }, -); - -type LivechatAgentsEndpoints = ExtractRoutesFromAPI; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends LivechatAgentsEndpoints {} -} diff --git a/apps/meteor/app/livechat/server/api/v1/offlineMessage.ts b/apps/meteor/app/livechat/server/api/v1/offlineMessage.ts deleted file mode 100644 index f6fb29d174423..0000000000000 --- a/apps/meteor/app/livechat/server/api/v1/offlineMessage.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { isPOSTLivechatOfflineMessageParams } from '@rocket.chat/rest-typings'; - -import { i18n } from '../../../../../server/lib/i18n'; -import { API } from '../../../../api/server'; -import { sendOfflineMessage } from '../../lib/messages'; - -API.v1.addRoute( - 'livechat/offline.message', - { - validateParams: isPOSTLivechatOfflineMessageParams, - rateLimiterOptions: { numRequestsAllowed: 1, intervalTimeInMS: 5000 }, - }, - { - async post() { - const { name, email, message, department, host } = this.bodyParams; - try { - await sendOfflineMessage({ name, email, message, department, host }); - return API.v1.success({ message: i18n.t('Livechat_offline_message_sent') }); - } catch (e) { - return API.v1.failure(i18n.t('Error_sending_livechat_offline_message')); - } - }, - }, -); diff --git a/apps/meteor/app/livechat/server/api/v1/room.ts b/apps/meteor/app/livechat/server/api/v1/room.ts deleted file mode 100644 index 146c119dee02f..0000000000000 --- a/apps/meteor/app/livechat/server/api/v1/room.ts +++ /dev/null @@ -1,541 +0,0 @@ -import { Omnichannel } from '@rocket.chat/core-services'; -import type { - ILivechatAgent, - IOmnichannelInquiryExtraData, - IOmnichannelRoom, - IUser, - SelectedAgent, - TransferByData, - TransferData, -} from '@rocket.chat/core-typings'; -import { isOmnichannelRoom, OmnichannelSourceType } from '@rocket.chat/core-typings'; -import { LivechatVisitors, Users, LivechatRooms } from '@rocket.chat/models'; -import { - isLiveChatRoomForwardProps, - isPOSTLivechatRoomCloseParams, - isPOSTLivechatRoomSurveyParams, - isLiveChatRoomJoinProps, - isLiveChatRoomSaveInfoProps, - isPOSTLivechatRoomCloseByUserParams, - isPOSTLivechatRoomsCloseAll, - isPOSTLivechatRoomsCloseAllSuccessResponse, - POSTLivechatRemoveRoomSuccess, - isPOSTLivechatRemoveRoomParams, - validateBadRequestErrorResponse, - validateUnauthorizedErrorResponse, - validateForbiddenErrorResponse, - ajv, -} from '@rocket.chat/rest-typings'; -import { isPOSTLivechatVisitorDepartmentTransferParams } from '@rocket.chat/rest-typings/src/v1/omnichannel'; -import { check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { callbacks } from '../../../../../server/lib/callbacks'; -import { i18n } from '../../../../../server/lib/i18n'; -import { API } from '../../../../api/server'; -import type { ExtractRoutesFromAPI } from '../../../../api/server/ApiClass'; -import { isWidget } from '../../../../api/server/helpers/isWidget'; -import { canAccessRoomAsync } from '../../../../authorization/server'; -import { hasPermissionAsync } from '../../../../authorization/server/functions/hasPermission'; -import { addUserToRoom } from '../../../../lib/server/functions/addUserToRoom'; -import { closeLivechatRoom } from '../../../../lib/server/functions/closeLivechatRoom'; -import { settings as rcSettings } from '../../../../settings/server'; -import { normalizeTransferredByData } from '../../lib/Helper'; -import { closeRoom } from '../../lib/closeRoom'; -import { saveGuest } from '../../lib/guests'; -import type { CloseRoomParams } from '../../lib/localTypes'; -import { livechatLogger } from '../../lib/logger'; -import { createRoom, removeOmnichannelRoom, saveRoomInfo } from '../../lib/rooms'; -import { transfer } from '../../lib/transfer'; -import { findGuest, findRoom, settings, findAgent, onCheckRoomParams } from '../lib/livechat'; - -const isAgentWithInfo = (agentObj: ILivechatAgent | { hiddenInfo: boolean }): agentObj is ILivechatAgent => !('hiddenInfo' in agentObj); - -API.v1.addRoute( - 'livechat/room', - { - rateLimiterOptions: { - numRequestsAllowed: 5, - intervalTimeInMS: 60000, - }, - }, - { - async get() { - // I'll temporary use check for validation, as validateParams doesnt support what's being done here - const extraCheckParams = onCheckRoomParams({ - token: String, - rid: Match.Maybe(String), - agentId: Match.Maybe(String), - }); - - check(this.queryParams, extraCheckParams); - - const { token, rid, agentId, ...extraParams } = this.queryParams; - - const guest = token && (await findGuest(token)); - if (!guest) { - throw new Error('invalid-token'); - } - - if (!rid) { - const room = await LivechatRooms.findOneOpenByVisitorToken(token, {}); - if (room) { - return API.v1.success({ room, newRoom: false }); - } - - let agent: SelectedAgent | undefined; - const agentObj = agentId && (await findAgent(agentId)); - if (agentObj) { - if (isAgentWithInfo(agentObj)) { - const { username = undefined } = agentObj; - agent = { agentId, username }; - } else { - agent = { agentId }; - } - } - - const roomInfo = { - source: { - ...(isWidget(this.request.headers) - ? { type: OmnichannelSourceType.WIDGET, destination: this.request.headers.get('host')! } - : { type: OmnichannelSourceType.API }), - }, - }; - - const newRoom = await createRoom({ - visitor: guest, - roomInfo, - agent, - extraData: extraParams as IOmnichannelInquiryExtraData, - }); - - return API.v1.success({ - room: newRoom, - newRoom: true, - }); - } - - const froom = await LivechatRooms.findOneOpenByRoomIdAndVisitorToken(rid, token, {}); - if (!froom) { - throw new Error('invalid-room'); - } - - return API.v1.success({ room: froom, newRoom: false }); - }, - }, -); - -// Note: use this route if a visitor is closing a room -// If a RC user(like eg agent) is closing a room, use the `livechat/room.closeByUser` route -API.v1.addRoute( - 'livechat/room.close', - { validateParams: isPOSTLivechatRoomCloseParams }, - { - async post() { - const { rid, token } = this.bodyParams; - - if (!rcSettings.get('Omnichannel_allow_visitors_to_close_conversation')) { - throw new Error('error-not-allowed-to-close-conversation'); - } - - const visitor = await findGuest(token); - if (!visitor) { - throw new Error('invalid-token'); - } - - const room = await findRoom(token, rid); - if (!room) { - throw new Error('invalid-room'); - } - - if (!room.open) { - throw new Error('room-closed'); - } - - const language = rcSettings.get('Language') || 'en'; - const comment = i18n.t('Closed_by_visitor', { lng: language }); - - const options: CloseRoomParams['options'] = {}; - if (room.servedBy) { - const servingAgent: Pick | null = - await Users.findOneById(room.servedBy._id, { - projection: { - name: 1, - username: 1, - utcOffset: 1, - settings: 1, - language: 1, - }, - }); - - if (servingAgent?.settings?.preferences?.omnichannelTranscriptPDF) { - options.pdfTranscript = { - requestedBy: servingAgent._id, - }; - } - - // We'll send the transcript by email only if the setting is disabled (that means, we're not asking the user if he wants to receive the transcript by email) - // And the agent has the preference enabled to send the transcript by email and the visitor has an email address - // When Livechat_enable_transcript is enabled, the email will be sent via livechat/transcript route - if ( - !rcSettings.get('Livechat_enable_transcript') && - servingAgent?.settings?.preferences?.omnichannelTranscriptEmail && - visitor.visitorEmails?.length && - visitor.visitorEmails?.[0]?.address - ) { - const visitorEmail = visitor.visitorEmails?.[0]?.address; - - const language = servingAgent.language || rcSettings.get('Language') || 'en'; - const t = i18n.getFixedT(language); - const subject = t('Transcript_of_your_livechat_conversation'); - - options.emailTranscript = { - sendToVisitor: true, - requestData: { - email: visitorEmail, - requestedAt: new Date(), - requestedBy: servingAgent, - subject, - }, - }; - } - } - - await closeRoom({ visitor, room, comment, options }); - - return API.v1.success({ rid, comment }); - }, - }, -); - -API.v1.addRoute( - 'livechat/room.closeByUser', - { - validateParams: isPOSTLivechatRoomCloseByUserParams, - authRequired: true, - permissionsRequired: ['close-livechat-room'], - }, - { - async post() { - const { rid, comment, tags, generateTranscriptPdf, transcriptEmail, forceClose } = this.bodyParams; - - const allowForceClose = rcSettings.get('Omnichannel_allow_force_close_conversations'); - const isForceClosing = allowForceClose && forceClose; - - if (isForceClosing) { - livechatLogger.warn({ msg: 'Force closing a conversation', user: this.userId, room: rid }); - } - - await closeLivechatRoom(this.user, rid, { - comment, - tags, - generateTranscriptPdf, - transcriptEmail, - forceClose: isForceClosing, - }); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'livechat/room.survey', - { validateParams: isPOSTLivechatRoomSurveyParams }, - { - async post() { - const { rid, token, data } = this.bodyParams; - - const visitor = await findGuest(token); - if (!visitor) { - throw new Error('invalid-token'); - } - - const room = await findRoom(token, rid); - if (!room) { - throw new Error('invalid-room'); - } - - const config = await settings(); - if (!config.survey?.items || !config.survey.values) { - throw new Error('invalid-livechat-config'); - } - - const updateData: { [k: string]: string } = {}; - for (const item of data) { - if ((config.survey.items.includes(item.name) && config.survey.values.includes(item.value)) || item.name === 'additionalFeedback') { - updateData[item.name] = item.value; - } - } - - if (Object.keys(updateData).length === 0) { - throw new Error('invalid-data'); - } - - if (!(await LivechatRooms.updateSurveyFeedbackById(room._id, updateData))) { - return API.v1.failure(); - } - - return API.v1.success({ rid, data: updateData }); - }, - }, -); - -API.v1.addRoute( - 'livechat/room.forward', - { authRequired: true, permissionsRequired: ['view-l-room', 'transfer-livechat-guest'], validateParams: isLiveChatRoomForwardProps }, - { - async post() { - const transferData = this.bodyParams as typeof this.bodyParams & { - transferredBy: TransferByData; - transferredTo?: { _id: string; username?: string; name?: string }; - }; - - const room = await LivechatRooms.findOneById(this.bodyParams.roomId); - if (room?.t !== 'l') { - throw new Error('error-invalid-room'); - } - - if (!room.open) { - throw new Error('This_conversation_is_already_closed'); - } - - if (!(await Omnichannel.isWithinMACLimit(room))) { - throw new Error('error-mac-limit-reached'); - } - - const guest = await LivechatVisitors.findOneEnabledById(room.v?._id); - if (!guest) { - throw new Error('error-invalid-visitor'); - } - - transferData.transferredBy = normalizeTransferredByData(this.user, room); - if (transferData.userId) { - const userToTransfer = await Users.findOneById(transferData.userId); - if (userToTransfer) { - transferData.transferredTo = { - _id: userToTransfer._id, - username: userToTransfer.username, - name: userToTransfer.name, - }; - } - } - - const chatForwardedResult = await transfer(room, guest, transferData); - if (!chatForwardedResult) { - throw new Error('error-forwarding-chat'); - } - - return API.v1.success(); - }, - }, -); - -const livechatVisitorDepartmentTransfer = API.v1.post( - 'livechat/visitor/department.transfer', - { - response: { - 200: ajv.compile({ - type: 'object', - properties: { - success: { - type: 'boolean', - enum: [true], - }, - }, - required: ['success'], - additionalProperties: false, - }), - 400: validateBadRequestErrorResponse, - }, - body: isPOSTLivechatVisitorDepartmentTransferParams, - }, - async function action() { - const { rid, token, department } = this.bodyParams; - - const visitor = await findGuest(token); - if (!visitor) { - return API.v1.failure('invalid-token'); - } - const room = await LivechatRooms.findOneById(rid); - - if (room?.t !== 'l') { - return API.v1.failure('error-invalid-room'); - } - - if (!room.open) { - return API.v1.failure('This_conversation_is_already_closed'); - } - - // As this is a visitor endpoint, we should not show the mac limit error - if (!(await Omnichannel.isWithinMACLimit(room))) { - return API.v1.failure('error-transefing-chat'); - } - - const guest = await LivechatVisitors.findOneEnabledById(room.v?._id); - if (!guest) { - return API.v1.failure('error-invalid-visitor'); - } - - const transferredBy = normalizeTransferredByData( - { _id: guest._id, username: guest.username, name: guest.name, userType: 'visitor' }, - room, - ); - - const transferData: TransferData = { transferredBy, departmentId: department }; - - const chatForwardedResult = await transfer(room, guest, transferData); - if (!chatForwardedResult) { - return API.v1.failure('error-transfering-chat'); - } - - return API.v1.success(); - }, -); - -type LivechatAnalyticsEndpoints = ExtractRoutesFromAPI; -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends LivechatAnalyticsEndpoints {} -} - -API.v1.addRoute( - 'livechat/room.join', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isLiveChatRoomJoinProps }, - { - async get() { - const { roomId } = this.queryParams; - - const { user } = this; - - if (!user) { - throw new Error('error-invalid-user'); - } - - const room = await LivechatRooms.findOneById(roomId); - - if (!room) { - throw new Error('error-invalid-room'); - } - - if (!room.open) { - throw new Error('room-closed'); - } - - if (!(await Omnichannel.isWithinMACLimit(room))) { - throw new Error('error-mac-limit-reached'); - } - - if (!(await canAccessRoomAsync(room, user))) { - throw new Error('error-not-allowed'); - } - - await addUserToRoom(roomId, user); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'livechat/room.saveInfo', - { authRequired: true, permissionsRequired: ['view-l-room'], validateParams: isLiveChatRoomSaveInfoProps }, - { - async post() { - const { roomData, guestData } = this.bodyParams; - const room = await LivechatRooms.findOneById(roomData._id); - if (!room || !isOmnichannelRoom(room)) { - throw new Error('error-invalid-room'); - } - - if ( - (!room.servedBy || room.servedBy._id !== this.userId) && - !(await hasPermissionAsync(this.userId, 'save-others-livechat-room-info')) - ) { - return API.v1.forbidden(); - } - - if (room.sms) { - delete guestData.phone; - } - - // We want this both operations to be concurrent, so we have to go with Promise.allSettled - const result = await Promise.allSettled([saveGuest(guestData, this.userId), saveRoomInfo(roomData)]); - - const firstError = result.find((item) => item.status === 'rejected'); - if (firstError) { - throw new Error(firstError.reason.error); - } - - await callbacks.run('livechat.saveInfo', await LivechatRooms.findOneById(roomData._id), { - user: this.user, - oldRoom: room, - }); - - return API.v1.success(); - }, - }, -); - -const livechatRoomsEndpoints = API.v1 - .post( - 'livechat/rooms.delete', - { - response: { - 200: POSTLivechatRemoveRoomSuccess, - 400: validateBadRequestErrorResponse, - 401: validateUnauthorizedErrorResponse, - 403: validateForbiddenErrorResponse, - }, - authRequired: true, - permissionsRequired: ['remove-closed-livechat-room'], - body: isPOSTLivechatRemoveRoomParams, - }, - async function action() { - const { roomId } = this.bodyParams; - - try { - await removeOmnichannelRoom(roomId); - return API.v1.success(); - } catch (error: unknown) { - if (error instanceof Meteor.Error) { - return API.v1.failure(error.reason); - } - - return API.v1.failure('error-removing-room'); - } - }, - ) - .post( - 'livechat/rooms.removeAllClosedRooms', - { - response: { - 200: isPOSTLivechatRoomsCloseAllSuccessResponse, - }, - authRequired: true, - permissionsRequired: ['remove-closed-livechat-rooms'], - body: isPOSTLivechatRoomsCloseAll, - }, - async function action() { - livechatLogger.info({ msg: 'User is removing all closed rooms', userId: this.userId }); - - const params = this.bodyParams; - - const extraQuery = await callbacks.run('livechat.applyRoomRestrictions', {}, { userId: this.userId }); - const promises: Promise[] = []; - await LivechatRooms.findClosedRooms(params?.departmentIds, {}, extraQuery).forEach(({ _id }: IOmnichannelRoom) => { - promises.push(removeOmnichannelRoom(_id)); - }); - await Promise.all(promises); - - livechatLogger.info({ msg: 'User removed closed rooms', userId: this.userId, removedRooms: promises.length }); - return API.v1.success({ removedRooms: promises.length }); - }, - ); - -type LivechatRoomsEndpoints = ExtractRoutesFromAPI; - -declare module '@rocket.chat/rest-typings' { - // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface - interface Endpoints extends LivechatRoomsEndpoints {} -} diff --git a/apps/meteor/app/livechat/server/api/v1/statistics.ts b/apps/meteor/app/livechat/server/api/v1/statistics.ts deleted file mode 100644 index 8289e01e21bb0..0000000000000 --- a/apps/meteor/app/livechat/server/api/v1/statistics.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { Users } from '@rocket.chat/models'; -import { isLivechatAnalyticsAgentOverviewProps, isLivechatAnalyticsOverviewProps } from '@rocket.chat/rest-typings'; - -import { API } from '../../../../api/server'; -import { settings } from '../../../../settings/server'; -import { getAgentOverviewDataCached, getAnalyticsOverviewDataCached } from '../../lib/AnalyticsTyped'; - -API.v1.addRoute( - 'livechat/analytics/agent-overview', - { - authRequired: true, - permissionsRequired: ['view-livechat-manager'], - validateParams: isLivechatAnalyticsAgentOverviewProps, - }, - { - async get() { - const { name, departmentId, from, to } = this.queryParams; - - if (!name) { - throw new Error('invalid-chart-name'); - } - - const user = await Users.findOneById(this.userId, { projection: { _id: 1, utcOffset: 1 } }); - return API.v1.success( - await getAgentOverviewDataCached({ - departmentId, - utcOffset: user?.utcOffset || 0, - daterange: { from, to }, - chartOptions: { name }, - executedBy: this.userId, - }), - ); - }, - }, -); - -API.v1.addRoute( - 'livechat/analytics/overview', - { - authRequired: true, - permissionsRequired: ['view-livechat-manager'], - validateParams: isLivechatAnalyticsOverviewProps, - }, - { - async get() { - const { name, departmentId, from, to } = this.queryParams; - - if (!name) { - throw new Error('invalid-chart-name'); - } - - const user = await Users.findOneById(this.userId, { projection: { _id: 1, utcOffset: 1 } }); - const language = user?.language || settings.get('Language') || 'en'; - - return API.v1.success( - await getAnalyticsOverviewDataCached({ - departmentId, - utcOffset: user?.utcOffset || 0, - daterange: { from, to }, - analyticsOptions: { name }, - language, - executedBy: this.userId, - }), - ); - }, - }, -); diff --git a/apps/meteor/app/livechat/server/api/v1/transcript.ts b/apps/meteor/app/livechat/server/api/v1/transcript.ts deleted file mode 100644 index dee730df84636..0000000000000 --- a/apps/meteor/app/livechat/server/api/v1/transcript.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { Omnichannel } from '@rocket.chat/core-services'; -import type { IOmnichannelRoom } from '@rocket.chat/core-typings'; -import { LivechatRooms, Users } from '@rocket.chat/models'; -import { isPOSTLivechatTranscriptParams, isPOSTLivechatTranscriptRequestParams } from '@rocket.chat/rest-typings'; - -import { i18n } from '../../../../../server/lib/i18n'; -import { API } from '../../../../api/server'; -import { sendTranscript, requestTranscript } from '../../lib/sendTranscript'; - -API.v1.addRoute( - 'livechat/transcript', - { validateParams: isPOSTLivechatTranscriptParams }, - { - async post() { - const { token, rid, email } = this.bodyParams; - if (!(await sendTranscript({ token, rid, email }))) { - return API.v1.failure({ message: i18n.t('Error_sending_livechat_transcript') }); - } - - return API.v1.success({ message: i18n.t('Livechat_transcript_sent') }); - }, - }, -); - -API.v1.addRoute( - 'livechat/transcript/:rid', - { - authRequired: true, - permissionsRequired: ['send-omnichannel-chat-transcript'], - validateParams: { - POST: isPOSTLivechatTranscriptRequestParams, - }, - }, - { - async delete() { - const { rid } = this.urlParams; - const room = await LivechatRooms.findOneById>(rid, { - projection: { open: 1, transcriptRequest: 1, v: 1 }, - }); - - if (!room?.open) { - throw new Error('error-invalid-room'); - } - if (!room.transcriptRequest) { - throw new Error('error-transcript-not-requested'); - } - - if (!(await Omnichannel.isWithinMACLimit(room))) { - throw new Error('error-mac-limit-reached'); - } - - await LivechatRooms.unsetEmailTranscriptRequestedByRoomId(rid); - - return API.v1.success(); - }, - async post() { - const { rid } = this.urlParams; - const { email, subject } = this.bodyParams; - - const user = await Users.findOneById(this.userId, { - projection: { _id: 1, username: 1, name: 1, utcOffset: 1 }, - }); - - if (!user) { - throw new Error('error-invalid-user'); - } - - await requestTranscript({ rid, email, subject, user }); - - return API.v1.success(); - }, - }, -); diff --git a/apps/meteor/app/livechat/server/api/v1/transfer.ts b/apps/meteor/app/livechat/server/api/v1/transfer.ts deleted file mode 100644 index 8d1b33fdcc3d0..0000000000000 --- a/apps/meteor/app/livechat/server/api/v1/transfer.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { LivechatRooms } from '@rocket.chat/models'; - -import { API } from '../../../../api/server'; -import { getPaginationItems } from '../../../../api/server/helpers/getPaginationItems'; -import { findLivechatTransferHistory } from '../lib/transfer'; - -API.v1.addRoute( - 'livechat/transfer.history/:rid', - { authRequired: true, permissionsRequired: ['view-livechat-rooms'] }, - { - async get() { - const { rid } = this.urlParams; - - const room = await LivechatRooms.findOneById(rid, { projection: { _id: 1 } }); - if (!room) { - throw new Error('invalid-room'); - } - const { offset, count } = await getPaginationItems(this.queryParams); - const { sort } = await this.parseJsonQuery(); - - const history = await findLivechatTransferHistory({ - rid, - pagination: { - offset, - count, - sort, - }, - }); - - return API.v1.success(history); - }, - }, -); diff --git a/apps/meteor/app/livechat/server/api/v1/webhooks.ts b/apps/meteor/app/livechat/server/api/v1/webhooks.ts deleted file mode 100644 index 276a910502d69..0000000000000 --- a/apps/meteor/app/livechat/server/api/v1/webhooks.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { Logger } from '@rocket.chat/logger'; -import type { ExtendedFetchOptions } from '@rocket.chat/server-fetch'; -import { serverFetch as fetch } from '@rocket.chat/server-fetch'; - -import { API } from '../../../../api/server'; -import { settings } from '../../../../settings/server'; - -const logger = new Logger('WebhookTest'); - -API.v1.addRoute( - 'livechat/webhook.test', - { authRequired: true, permissionsRequired: ['view-livechat-webhooks'] }, - { - async post() { - const sampleData = { - type: 'LivechatSession', - _id: 'fasd6f5a4sd6f8a4sdf', - label: 'title', - topic: 'asiodojf', - createdAt: new Date(), - lastMessageAt: new Date(), - tags: ['tag1', 'tag2', 'tag3'], - customFields: { - productId: '123456', - }, - visitor: { - _id: '', - name: 'visitor name', - username: 'visitor-username', - department: 'department', - email: 'email@address.com', - phone: '192873192873', - ip: '123.456.7.89', - browser: 'Chrome', - os: 'Linux', - customFields: { - customerId: '123456', - }, - }, - agent: { - _id: 'asdf89as6df8', - username: 'agent.username', - name: 'Agent Name', - email: 'agent@email.com', - }, - messages: [ - { - username: 'visitor-username', - msg: 'message content', - ts: new Date(), - }, - { - username: 'agent.username', - agentId: 'asdf89as6df8', - msg: 'message content from agent', - ts: new Date(), - }, - ], - }; - const options = { - method: 'POST', - headers: { - 'X-RocketChat-Livechat-Token': settings.get('Livechat_secret_token'), - 'Accept': 'application/json', - }, - body: sampleData, - // SECURITY: Webhooks can only be configured by users with enough privileges. It's ok to disable this check here. - ignoreSsrfValidation: true, - size: 10 * 1024 * 1024, - } as ExtendedFetchOptions; - - const webhookUrl = settings.get('Livechat_webhookUrl'); - - if (!webhookUrl) { - return API.v1.failure('Webhook_URL_not_set'); - } - - try { - logger.debug({ msg: 'Testing webhook', webhookUrl }); - const request = await fetch(webhookUrl, options); - const response = await request.text(); - - logger.debug({ msg: 'Webhook response', response }); - if (request.status === 200) { - return API.v1.success(); - } - - throw new Error('Invalid status code'); - } catch (error) { - logger.error({ msg: 'Error testing webhook', err: error }); - throw new Error('error-invalid-webhook-response'); - } - }, - }, -); diff --git a/apps/meteor/app/livechat/server/business-hour/Helper.ts b/apps/meteor/app/livechat/server/business-hour/Helper.ts deleted file mode 100644 index b18863ead06aa..0000000000000 --- a/apps/meteor/app/livechat/server/business-hour/Helper.ts +++ /dev/null @@ -1,106 +0,0 @@ -import type { ILivechatBusinessHour } from '@rocket.chat/core-typings'; -import { ILivechatAgentStatus, LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; -import { LivechatBusinessHours, Users } from '@rocket.chat/models'; -import moment from 'moment'; - -import { createDefaultBusinessHourRow } from './LivechatBusinessHours'; -import { filterBusinessHoursThatMustBeOpened } from './filterBusinessHoursThatMustBeOpened'; -import { notifyOnUserChangeAsync } from '../../../lib/server/lib/notifyListener'; -import { businessHourLogger } from '../lib/logger'; - -export { filterBusinessHoursThatMustBeOpened }; - -export const filterBusinessHoursThatMustBeOpenedByDay = async ( - businessHours: ILivechatBusinessHour[], - day: string, // Format: moment.format('dddd') -): Promise[]> => { - return filterBusinessHoursThatMustBeOpened( - businessHours.filter((businessHour) => - businessHour.workHours.some((workHour) => workHour.start.utc.dayOfWeek === day || workHour.finish.utc.dayOfWeek === day), - ), - ); -}; - -export const openBusinessHourDefault = async (): Promise => { - try { - await Users.removeBusinessHoursFromAllUsers(); - const currentTime = moment(moment().format('dddd:HH:mm'), 'dddd:HH:mm'); - const day = currentTime.format('dddd'); - const activeBusinessHours = await LivechatBusinessHours.findDefaultActiveAndOpenBusinessHoursByDay(day, { - projection: { - workHours: 1, - timezone: 1, - type: 1, - active: 1, - }, - }); - - const businessHoursToOpenIds = (await filterBusinessHoursThatMustBeOpened(activeBusinessHours)).map((businessHour) => businessHour._id); - businessHourLogger.debug({ msg: 'Opening default business hours', businessHoursToOpenIds }); - await Users.openAgentsBusinessHoursByBusinessHourId(businessHoursToOpenIds); - if (businessHoursToOpenIds.length) { - await makeOnlineAgentsAvailable(); - } - await makeAgentsUnavailableBasedOnBusinessHour(); - } catch (err) { - businessHourLogger.error({ msg: 'Error while opening default business hours', err }); - } -}; - -export const createDefaultBusinessHourIfNotExists = async (): Promise => { - if ((await LivechatBusinessHours.countDocuments({ type: LivechatBusinessHourTypes.DEFAULT })) === 0) { - await LivechatBusinessHours.insertOne(createDefaultBusinessHourRow()); - } -}; - -export async function makeAgentsUnavailableBasedOnBusinessHour(agentIds?: string[]) { - const results = await Users.findAgentsAvailableWithoutBusinessHours(agentIds).toArray(); - - const update = await Users.updateLivechatStatusByAgentIds( - results.map(({ _id }) => _id), - ILivechatAgentStatus.NOT_AVAILABLE, - ); - - if (update.modifiedCount === 0) { - return; - } - - void notifyOnUserChangeAsync(async () => - results.map(({ _id, openBusinessHours }) => { - return { - id: _id, - clientAction: 'updated', - diff: { - statusLivechat: 'not-available', - openBusinessHours, - }, - }; - }), - ); -} - -export async function makeOnlineAgentsAvailable(agentIds?: string[]) { - const results = await Users.findOnlineButNotAvailableAgents(agentIds).toArray(); - - const update = await Users.updateLivechatStatusByAgentIds( - results.map(({ _id }) => _id), - ILivechatAgentStatus.AVAILABLE, - ); - - if (update.modifiedCount === 0) { - return; - } - - void notifyOnUserChangeAsync(async () => - results.map(({ _id, openBusinessHours }) => { - return { - id: _id, - clientAction: 'updated', - diff: { - statusLivechat: 'available', - openBusinessHours, - }, - }; - }), - ); -} diff --git a/apps/meteor/app/livechat/server/business-hour/index.ts b/apps/meteor/app/livechat/server/business-hour/index.ts deleted file mode 100644 index 95540bb44e9aa..0000000000000 --- a/apps/meteor/app/livechat/server/business-hour/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { cronJobs } from '@rocket.chat/cron'; -import { Accounts } from 'meteor/accounts-base'; -import { Meteor } from 'meteor/meteor'; - -import { BusinessHourManager } from './BusinessHourManager'; -import { DefaultBusinessHour } from './Default'; -import { SingleBusinessHourBehavior } from './Single'; -import { callbacks } from '../../../../server/lib/callbacks'; - -export const businessHourManager = new BusinessHourManager(cronJobs); - -Meteor.startup(async () => { - const { BusinessHourBehaviorClass } = await callbacks.run('on-business-hour-start', { - BusinessHourBehaviorClass: SingleBusinessHourBehavior, - }); - businessHourManager.registerBusinessHourBehavior(new BusinessHourBehaviorClass()); - businessHourManager.registerBusinessHourType(new DefaultBusinessHour()); - - Accounts.onLogin(({ user }: { user: IUser }) => { - void (user?.roles?.includes('livechat-agent') && !user?.roles?.includes('bot') && businessHourManager.onLogin(user._id)); - }); -}); diff --git a/apps/meteor/app/livechat/server/hooks/afterUserActions.ts b/apps/meteor/app/livechat/server/hooks/afterUserActions.ts deleted file mode 100644 index 3b70b836d7ea6..0000000000000 --- a/apps/meteor/app/livechat/server/hooks/afterUserActions.ts +++ /dev/null @@ -1,52 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; - -import { callbacks } from '../../../../server/lib/callbacks'; -import { afterAgentUserActivated, afterAgentAdded, afterRemoveAgent } from '../lib/hooks'; - -type IAfterSaveUserProps = { - user: IUser; - oldUser: IUser | null; -}; - -const wasAgent = (user: Pick | null) => user?.roles?.includes('livechat-agent'); -const isAgent = (user: Pick | null) => user?.roles?.includes('livechat-agent'); - -const handleAgentUpdated = async (userData: IAfterSaveUserProps) => { - const { user: newUser, oldUser } = userData; - - if (wasAgent(oldUser) && !isAgent(newUser)) { - await afterRemoveAgent(newUser); - } - - if (!wasAgent(oldUser) && isAgent(newUser)) { - await afterAgentAdded(newUser); - } -}; - -const handleAgentCreated = async (user: IUser) => { - // created === no prev roles :) - if (isAgent(user)) { - await afterAgentAdded(user); - } -}; - -const handleDeactivateUser = async (user: IUser) => { - if (wasAgent(user)) { - await Users.makeAgentUnavailable(user._id); - } -}; - -const handleActivateUser = async (user: IUser) => { - if (isAgent(user) && user.username) { - await afterAgentUserActivated(user); - } -}; - -callbacks.add('afterCreateUser', handleAgentCreated, callbacks.priority.LOW, 'livechat-after-create-user-update-agent'); - -callbacks.add('afterSaveUser', handleAgentUpdated, callbacks.priority.LOW, 'livechat-after-save-user-update-agent'); - -callbacks.add('afterDeactivateUser', handleDeactivateUser, callbacks.priority.LOW, 'livechat-after-deactivate-user-remove-agent'); - -callbacks.add('afterActivateUser', handleActivateUser, callbacks.priority.LOW, 'livechat-after-activate-user-add-agent'); diff --git a/apps/meteor/app/livechat/server/hooks/offlineMessage.ts b/apps/meteor/app/livechat/server/hooks/offlineMessage.ts deleted file mode 100644 index 0496d7da1a9e4..0000000000000 --- a/apps/meteor/app/livechat/server/hooks/offlineMessage.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { callbacks } from '../../../../server/lib/callbacks'; -import { settings } from '../../../settings/server'; -import { sendRequest } from '../lib/webhooks'; - -callbacks.add( - 'livechat.offlineMessage', - async (data) => { - if (!settings.get('Livechat_webhook_on_offline_msg')) { - return data; - } - - const postData = { - type: 'LivechatOfflineMessage', - sentAt: new Date(), - visitor: { - name: data.name, - email: data.email, - }, - message: data.message, - }; - - await sendRequest(postData); - }, - callbacks.priority.MEDIUM, - 'livechat-send-email-offline-message', -); diff --git a/apps/meteor/app/livechat/server/index.ts b/apps/meteor/app/livechat/server/index.ts deleted file mode 100644 index 6b1e5b1636746..0000000000000 --- a/apps/meteor/app/livechat/server/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import './livechat'; -import './startup'; -import './hooks/leadCapture'; -import './hooks/markRoomResponded'; -import './hooks/offlineMessage'; -import './hooks/offlineMessageToChannel'; -import './hooks/saveAnalyticsData'; -import './hooks/sendToCRM'; -import './hooks/processRoomAbandonment'; -import './hooks/saveLastVisitorMessageTs'; -import './hooks/markRoomNotResponded'; -import './hooks/sendEmailTranscriptOnClose'; -import './hooks/saveLastMessageToInquiry'; -import './hooks/afterUserActions'; -import './hooks/afterAgentRemoved'; -import './hooks/afterSaveOmnichannelMessage'; -import './methods/sendMessageLivechat'; -import './methods/sendFileLivechatMessage'; -import './lib/QueueManager'; -import './lib/RoutingManager'; -import './lib/routing/External'; -import './lib/routing/ManualSelection'; -import './lib/routing/AutoSelection'; -import './lib/stream/agentStatus'; -import './sendMessageBySMS'; -import './api'; -import './api/rest'; diff --git a/apps/meteor/app/livechat/server/lib/Helper.ts b/apps/meteor/app/livechat/server/lib/Helper.ts deleted file mode 100644 index 89bdd382efd39..0000000000000 --- a/apps/meteor/app/livechat/server/lib/Helper.ts +++ /dev/null @@ -1,964 +0,0 @@ -import { Apps, AppEvents } from '@rocket.chat/apps'; -import { LivechatTransferEventType } from '@rocket.chat/apps-engine/definition/livechat'; -import { api, Message, Omnichannel } from '@rocket.chat/core-services'; -import type { - ILivechatVisitor, - IOmnichannelRoom, - SelectedAgent, - ISubscription, - ILivechatInquiryRecord, - IUser, - TransferData, - ILivechatDepartmentAgents, - TransferByData, - ILivechatAgent, - ILivechatDepartment, - IOmnichannelRoomInfo, - IOmnichannelInquiryExtraData, - IOmnichannelRoomExtraData, - ILivechatContact, -} from '@rocket.chat/core-typings'; -import { LivechatInquiryStatus, OmnichannelSourceType, DEFAULT_SLA_CONFIG, UserStatus } from '@rocket.chat/core-typings'; -import { LivechatPriorityWeight } from '@rocket.chat/core-typings/src/ILivechatPriority'; -import { Logger } from '@rocket.chat/logger'; -import type { InsertionModel } from '@rocket.chat/model-typings'; -import { - LivechatDepartmentAgents, - LivechatInquiry, - LivechatRooms, - LivechatDepartment, - Subscriptions, - Users, - LivechatContacts, -} from '@rocket.chat/models'; -import { removeEmpty, validateEmail as validatorFunc } from '@rocket.chat/tools'; -import { Match, check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; -import type { ClientSession } from 'mongodb'; -import { ObjectId } from 'mongodb'; - -import { queueInquiry, saveQueueInquiry } from './QueueManager'; -import { RoutingManager } from './RoutingManager'; -import { isVerifiedChannelInSource } from './contacts/isVerifiedChannelInSource'; -import { migrateVisitorIfMissingContact } from './contacts/migrateVisitorIfMissingContact'; -import { afterRoomQueued, beforeNewRoom } from './hooks'; -import { checkOnlineAgents, getOnlineAgents } from './service-status'; -import { saveTransferHistory } from './transfer'; -import { callbacks } from '../../../../server/lib/callbacks'; -import { i18n } from '../../../../server/lib/i18n'; -import { hasRoleAsync } from '../../../authorization/server/functions/hasRole'; -import { sendNotification } from '../../../lib/server'; -import { - notifyOnLivechatDepartmentAgentChanged, - notifyOnLivechatDepartmentAgentChangedByAgentsAndDepartmentId, - notifyOnSubscriptionChangedById, - notifyOnSubscriptionChangedByRoomId, - notifyOnSubscriptionChanged, - notifyOnRoomChangedById, - notifyOnLivechatInquiryChangedByRoom, -} from '../../../lib/server/lib/notifyListener'; -import { settings } from '../../../settings/server'; - -const logger = new Logger('LivechatHelper'); -export const allowAgentSkipQueue = (agent: SelectedAgent) => { - check( - agent, - Match.ObjectIncluding({ - agentId: String, - }), - ); - - return hasRoleAsync(agent.agentId, 'bot'); -}; -export const prepareLivechatRoom = async ( - rid: string, - guest: ILivechatVisitor, - roomInfo: IOmnichannelRoomInfo = { source: { type: OmnichannelSourceType.OTHER } }, - extraData?: IOmnichannelRoomExtraData, -): Promise> => { - check(rid, String); - check( - guest, - Match.ObjectIncluding({ - _id: String, - username: String, - status: Match.Maybe(String), - department: Match.Maybe(String), - }), - ); - - const extraRoomInfo = await beforeNewRoom(roomInfo, extraData); - const { _id, username, token, department: departmentId, status = 'online' } = guest; - const newRoomAt = new Date(); - const source = extraRoomInfo.source || roomInfo.source; - - if (settings.get('Livechat_Require_Contact_Verification') === 'always') { - await LivechatContacts.setChannelVerifiedStatus({ visitorId: _id, source }, false); - } - - const contactId = await migrateVisitorIfMissingContact(_id, source); - const contact = - contactId && - (await LivechatContacts.findOneEnabledById>(contactId, { - projection: { name: 1, channels: 1, activity: 1 }, - })); - if (!contact) { - throw new Error('error-invalid-contact'); - } - const verified = Boolean(contact.channels.some((channel) => isVerifiedChannelInSource(channel, _id, source))); - - const activity = guest.activity || contact.activity; - logger.debug({ - msg: 'Creating livechat room for visitor', - visitor: { _id, username, departmentId, status, activity }, - }); - - // TODO: Solve `u` missing issue - return { - _id: rid, - msgs: 0, - usersCount: 1, - lm: newRoomAt, - fname: contact.name, - t: 'l' as const, - ts: newRoomAt, - departmentId, - v: { - _id, - username, - token, - status, - ...(activity?.length && { activity }), - }, - contactId, - cl: false, - open: true, - waitingResponse: true, - verified, - // this should be overridden by extraRoomInfo when provided - // in case it's not provided, we'll use this "default" type - source: { - type: OmnichannelSourceType.OTHER, - alias: 'unknown', - }, - queuedAt: newRoomAt, - priorityWeight: LivechatPriorityWeight.NOT_SPECIFIED, - estimatedWaitingTimeQueue: DEFAULT_SLA_CONFIG.ESTIMATED_WAITING_TIME_QUEUE, - ...extraRoomInfo, - // marker field for unique index - only new rooms have this field (see #39087) - // allows index creation to succeed even if old duplicates exist - _enforceSingleRoom: true, - } as InsertionModel; -}; - -export const createLivechatRoom = async (room: InsertionModel, session: ClientSession) => { - const result = await LivechatRooms.findOneAndUpdate( - removeEmpty(room), - { - $set: {}, - }, - { - upsert: true, - returnDocument: 'after', - session, - }, - ); - - if (!result) { - throw new Error('Room not created'); - } - - return result; -}; - -export const createLivechatInquiry = async ({ - rid, - name, - guest, - message, - initialStatus, - extraData, - session, -}: { - rid: string; - name?: string; - guest?: Pick; - message?: string; - initialStatus?: LivechatInquiryStatus; - extraData?: IOmnichannelInquiryExtraData; - session?: ClientSession; -}) => { - check(rid, String); - check(name, String); - check( - guest, - Match.ObjectIncluding({ - _id: String, - username: String, - status: Match.Maybe(String), - department: Match.Maybe(String), - activity: Match.Maybe([String]), - }), - ); - - const extraInquiryInfo = await callbacks.run('livechat.beforeInquiry', extraData); - - const { _id, username, token, department, status = UserStatus.ONLINE } = guest; - const inquirySource = extraData?.source || { type: OmnichannelSourceType.OTHER }; - const activity = - guest.activity || - (await LivechatContacts.findOneByVisitor({ visitorId: guest._id, source: inquirySource }, { projection: { activity: 1 } }))?.activity; - - const ts = new Date(); - - logger.debug({ - msg: 'Creating livechat inquiry for visitor', - visitor: { _id, username, department, status, activity }, - }); - - const result = await LivechatInquiry.findOneAndUpdate( - removeEmpty({ - rid, - name, - ts, - department, - message: message ?? '', - status: initialStatus || LivechatInquiryStatus.READY, - v: { - _id, - username, - token, - status, - ...(activity?.length && { activity }), - }, - t: 'l', - priorityWeight: LivechatPriorityWeight.NOT_SPECIFIED, - estimatedWaitingTimeQueue: DEFAULT_SLA_CONFIG.ESTIMATED_WAITING_TIME_QUEUE, - - ...extraInquiryInfo, - }), - { - $set: { - _id: new ObjectId().toHexString(), - }, - }, - { - upsert: true, - returnDocument: 'after', - session, - }, - ); - logger.debug({ - msg: 'Inquiry created for visitor', - inquiryId: result, - visitorId: _id, - }); - - if (!result) { - throw new Error('Inquiry not created'); - } - - return result; -}; - -export const createLivechatSubscription = async ( - rid: string, - name: string, - guest: Pick, - agent: SelectedAgent, - department?: string, -) => { - check(rid, String); - check(name, String); - check( - guest, - Match.ObjectIncluding({ - _id: String, - username: String, - status: Match.Maybe(String), - }), - ); - check( - agent, - Match.ObjectIncluding({ - agentId: String, - username: String, - }), - ); - - const existingSubscription = await Subscriptions.findOneByRoomIdAndUserId(rid, agent.agentId); - if (existingSubscription?._id) { - return existingSubscription; - } - - const { _id, username, token, status = UserStatus.ONLINE } = guest; - - const subscriptionData: InsertionModel = { - rid, - name, - fname: name, - alert: true, - open: true, - unread: 1, - userMentions: 1, - groupMentions: 0, - u: { - _id: agent.agentId, - username: agent.username, - }, - t: 'l', - desktopNotifications: 'all', - mobilePushNotifications: 'all', - emailNotifications: 'all', - v: { - _id, - username, - token, - status, - }, - ts: new Date(), - ...(department && { department }), - } as InsertionModel; - - const response = await Subscriptions.insertOne(subscriptionData); - - if (response?.insertedId) { - void notifyOnSubscriptionChangedById(response.insertedId, 'inserted'); - } - - return response; -}; - -export const removeAgentFromSubscription = async (rid: string, { _id, username }: Pick) => { - const room = await LivechatRooms.findOneById(rid); - const user = await Users.findOneById(_id); - - if (!room || !user) { - return; - } - - const deletedSubscription = await Subscriptions.removeByRoomIdAndUserId(rid, _id); - if (deletedSubscription) { - void notifyOnSubscriptionChanged(deletedSubscription, 'removed'); - } - - await Message.saveSystemMessage('ul', rid, username || '', { _id: user._id, username: user.username, name: user.name }); - - setImmediate(() => { - void Apps.self?.triggerEvent(AppEvents.IPostLivechatAgentUnassigned, { room, user }); - }); -}; - -export const parseAgentCustomFields = (customFields?: Record) => { - if (!customFields) { - return; - } - - const externalCustomFields = () => { - const accountCustomFields = settings.get('Accounts_CustomFields'); - if (!accountCustomFields || accountCustomFields.trim() === '') { - return []; - } - - try { - const parseCustomFields = JSON.parse(accountCustomFields); - return Object.keys(parseCustomFields).filter((customFieldKey) => parseCustomFields[customFieldKey].sendToIntegrations === true); - } catch (error) { - logger.error({ msg: 'Error parsing agent custom fields', err: error }); - return []; - } - }; - - const externalCF = externalCustomFields(); - return Object.keys(customFields).reduce( - (newObj, key) => (externalCF.includes(key) ? { ...newObj, [key]: customFields[key] } : newObj), - {}, - ); -}; - -export const normalizeAgent = async (agentId?: string) => { - if (!agentId) { - return; - } - - if (!settings.get('Livechat_show_agent_info')) { - return { hiddenInfo: true }; - } - - const agent = await Users.getAgentInfo(agentId, settings.get('Livechat_show_agent_email')); - if (!agent) { - return; - } - - const { customFields: agentCustomFields, ...extraData } = agent; - const customFields = parseAgentCustomFields(agentCustomFields); - - return Object.assign(extraData, { ...(customFields && { customFields }) }) as ILivechatAgent; -}; - -export const dispatchAgentDelegated = async (rid: string, agentId?: string) => { - const agent = await normalizeAgent(agentId); - - void api.broadcast('omnichannel.room', rid, { - type: 'agentData', - data: agent, - }); -}; - -/** - * @deprecated - */ - -export const dispatchInquiryQueued = async (inquiry: ILivechatInquiryRecord, agent?: SelectedAgent | null) => { - if (!inquiry?._id) { - return; - } - logger.debug({ - msg: 'Notifying agents of queued inquiry', - inquiryId: inquiry._id, - agentId: agent?.agentId, - }); - - const { department, rid, v } = inquiry; - const room = await LivechatRooms.findOneById(rid); - if (!room) { - return; - } - - void afterRoomQueued(room); - - if (RoutingManager.getConfig()?.autoAssignAgent) { - return; - } - - if (agent && (await allowAgentSkipQueue(agent))) { - return; - } - - await saveQueueInquiry(inquiry); - - // Alert only the online agents of the queued request - const onlineAgents = await getOnlineAgents(department, agent); - if (!onlineAgents) { - logger.debug({ msg: 'Cannot notify agents of queued inquiry. No online agents found' }); - return; - } - - const notificationUserName = v && (v.name || v.username); - - for await (const agent of onlineAgents) { - const { _id, active, emails, language, status, statusConnection, username } = agent; - await sendNotification({ - // fake a subscription in order to make use of the function defined above - subscription: { - rid, - u: { - _id, - }, - receiver: [ - { - active, - emails, - language, - status, - statusConnection, - username, - }, - ], - name: '', - }, - sender: v, - hasMentionToAll: true, // consider all agents to be in the room - hasReplyToThread: false, - disableAllMessageNotifications: false, - hasMentionToHere: false, - message: { _id: '', u: v, msg: '' }, - // we should use server's language for this type of messages instead of user's - notificationMessage: i18n.t('User_started_a_new_conversation', { username: notificationUserName, lng: language }), - room: Object.assign(room, { name: i18n.t('New_chat_in_queue', { lng: language }) }), - mentionIds: [], - }); - } -}; - -export const forwardRoomToAgent = async (room: IOmnichannelRoom, transferData: TransferData) => { - if (!room?.open) { - return false; - } - - logger.debug({ - msg: 'Forwarding room to agent', - roomId: room._id, - userId: transferData.userId, - }); - - const { userId: agentId, clientAction } = transferData; - if (!agentId) { - throw new Error('error-invalid-agent'); - } - const user = await Users.findOneOnlineAgentById( - agentId, - settings.get('Livechat_enabled_when_agent_idle'), - settings.get('Livechat_accept_chats_with_no_agents'), - {}, - ); - if (!user) { - logger.debug({ - msg: 'Agent is offline. Cannot forward', - agentId, - }); - throw new Error('error-user-is-offline'); - } - - const { _id: rid, servedBy: oldServedBy } = room; - const inquiry = await LivechatInquiry.findOneByRoomId(rid, {}); - if (!inquiry) { - logger.debug({ - msg: 'No inquiries found for room. Cannot forward', - roomId: room._id, - }); - throw new Error('error-invalid-inquiry'); - } - - if (oldServedBy && agentId === oldServedBy._id) { - throw new Error('error-selected-agent-room-agent-are-same'); - } - - const { username } = user; - const agent = { agentId, username }; - // Remove department from inquiry to make sure the routing algorithm treat this as forwarding to agent and not as forwarding to department - delete inquiry.department; - // There are some Enterprise features that may interrupt the forwarding process - // Due to that we need to check whether the agent has been changed or not - logger.debug({ - msg: 'Forwarding inquiry to agent', - inquiryId: inquiry._id, - agentId: agent.agentId, - }); - const roomTaken = await RoutingManager.takeInquiry( - inquiry, - agent, - { - ...(clientAction && { clientAction }), - }, - room, - ); - if (!roomTaken) { - logger.debug({ - msg: 'Cannot forward inquiry', - inquiryId: inquiry._id, - }); - return false; - } - - await saveTransferHistory(room, transferData); - - const { servedBy } = roomTaken; - if (servedBy) { - if (oldServedBy && servedBy._id !== oldServedBy._id) { - await RoutingManager.removeAllRoomSubscriptions(room, servedBy); - } - - setImmediate(() => { - void Apps.self?.triggerEvent(AppEvents.IPostLivechatRoomTransferred, { - type: LivechatTransferEventType.AGENT, - room: rid, - from: oldServedBy?._id, - to: servedBy._id, - }); - }); - } - - logger.debug({ - msg: 'Inquiry taken by agent after forwarding', - inquiryId: inquiry._id, - agentId: agent.agentId, - }); - await callbacks.run('livechat.afterForwardChatToAgent', { rid, servedBy, oldServedBy }); - return true; -}; - -export const updateChatDepartment = async ({ - rid, - newDepartmentId, - oldDepartmentId, -}: { - rid: string; - newDepartmentId: string; - oldDepartmentId?: string; -}) => { - const responses = await Promise.all([ - LivechatRooms.changeDepartmentIdByRoomId(rid, newDepartmentId), - LivechatInquiry.changeDepartmentIdByRoomId(rid, newDepartmentId), - Subscriptions.changeDepartmentByRoomId(rid, newDepartmentId), - ]); - - if (responses[0].modifiedCount) { - void notifyOnRoomChangedById(rid); - } - if (responses[1].modifiedCount) { - void notifyOnLivechatInquiryChangedByRoom(rid); - } - if (responses[2].modifiedCount) { - void notifyOnSubscriptionChangedByRoomId(rid); - } - - setImmediate(() => { - void Apps.self?.triggerEvent(AppEvents.IPostLivechatRoomTransferred, { - type: LivechatTransferEventType.DEPARTMENT, - room: rid, - from: oldDepartmentId, - to: newDepartmentId, - }); - }); - - return callbacks.run('livechat.afterForwardChatToDepartment', { - rid, - newDepartmentId, - oldDepartmentId, - }); -}; - -export const forwardRoomToDepartment = async (room: IOmnichannelRoom, guest: ILivechatVisitor, transferData: TransferData) => { - if (!room?.open) { - return false; - } - logger.debug({ - msg: 'Attempting to forward room to department', - roomId: room._id, - departmentId: transferData.departmentId, - }); - - await callbacks.run('livechat.beforeForwardRoomToDepartment', { room, transferData }); - const { _id: rid, servedBy: oldServedBy, departmentId: oldDepartmentId } = room; - let agent = null; - - const inquiry = await LivechatInquiry.findOneByRoomId(rid, {}); - if (!inquiry) { - logger.debug({ - msg: 'Cannot forward room. No inquiries found', - roomId: room._id, - }); - throw new Error('error-transferring-inquiry'); - } - - const { departmentId } = transferData; - if (!departmentId) { - logger.debug({ - msg: 'Cannot forward room. No departmentId provided', - roomId: room._id, - }); - throw new Error('error-transferring-inquiry-no-department'); - } - if (oldDepartmentId === departmentId) { - throw new Error('error-forwarding-chat-same-department'); - } - - const { userId: agentId, clientAction } = transferData; - if (agentId) { - logger.debug({ - msg: 'Forwarding room to department and user', - roomId: room._id, - departmentId, - agentId, - }); - const user = await Users.findOneOnlineAgentById( - agentId, - settings.get('Livechat_enabled_when_agent_idle'), - settings.get('Livechat_accept_chats_with_no_agents'), - {}, - ); - if (!user) { - throw new Error('error-user-is-offline'); - } - const isInDepartment = await LivechatDepartmentAgents.findOneByAgentIdAndDepartmentId(agentId, departmentId, { - projection: { _id: 1 }, - }); - if (!isInDepartment) { - throw new Error('error-user-not-belong-to-department'); - } - const { username } = user; - agent = { agentId, username }; - } - - const department = await LivechatDepartment.findOneById< - Pick - >(departmentId, { - projection: { - allowReceiveForwardOffline: 1, - fallbackForwardDepartment: 1, - name: 1, - }, - }); - - // Cases: - // 1. Routing is manual - // 2. Server is out of macs - // 3. Department allows to forward when offline and department is offline - // 4. Department is online && waiting queue is enabled - const onlineAgents = await checkOnlineAgents(departmentId); - const isWaitingQueueEnabled = settings.get('Livechat_waiting_queue'); - if ( - !RoutingManager.getConfig()?.autoAssignAgent || - !(await Omnichannel.isWithinMACLimit(room)) || - (department?.allowReceiveForwardOffline && !onlineAgents) || - (isWaitingQueueEnabled && onlineAgents) - ) { - logger.debug({ - msg: 'Room will be on department queue', - roomId: room._id, - departmentId, - departmentAllowOffline: department?.allowReceiveForwardOffline, - areAgentsOnline: onlineAgents, - isWaitingQueueEnabled, - }); - await saveTransferHistory(room, transferData); - return RoutingManager.unassignAgent(inquiry, departmentId, true, agent); - } - - // Fake the department to forward the inquiry - Case the forward process does not success - // the inquiry will stay in the same original department - inquiry.department = departmentId; - const roomTaken = await RoutingManager.delegateInquiry( - inquiry, - agent, - { - forwardingToDepartment: { oldDepartmentId }, - ...(clientAction && { clientAction }), - }, - room, - ); - if (!roomTaken) { - logger.debug({ - msg: 'Cannot forward room. Unable to delegate inquiry', - roomId: room._id, - }); - return false; - } - - const { servedBy, chatQueued } = roomTaken; - if (!chatQueued && oldServedBy && oldServedBy._id === servedBy?._id) { - if (!department?.fallbackForwardDepartment?.length) { - logger.debug({ - msg: 'Cannot forward room. Chat assigned to agent instead', - roomId: room._id, - agentId: servedBy._id, - previousAgentId: oldServedBy._id, - }); - throw new Error('error-no-agents-available-for-service-on-department'); - } - - if (!transferData.originalDepartmentName) { - transferData.originalDepartmentName = department.name; - } - // if a chat has a fallback department, attempt to redirect chat to there [EE] - const transferSuccess = !!(await callbacks.run('livechat:onTransferFailure', room, { guest, transferData, department })); - // On CE theres no callback so it will return the room - if (typeof transferSuccess !== 'boolean' || !transferSuccess) { - logger.debug({ - msg: 'Cannot forward room. Unable to delegate inquiry', - roomId: room._id, - }); - return false; - } - - return true; - } - - // Send just 1 message to the room to inform the user that the chat was transferred - if (transferData.usingFallbackDep) { - const { _id, username } = transferData.transferredBy; - await Message.saveSystemMessage( - 'livechat_transfer_history_fallback', - room._id, - '', - { _id, username }, - { - ...(transferData.transferredBy.userType === 'visitor' && { token: room.v.token }), - transferData: { - ...transferData, - prevDepartment: transferData.originalDepartmentName, - }, - }, - ); - } - - await saveTransferHistory(room, transferData); - if (oldServedBy) { - // if chat is queued then we don't ignore the new servedBy agent bcs at this - // point the chat is not assigned to him/her and it is still in the queue - await RoutingManager.removeAllRoomSubscriptions(room, !chatQueued ? servedBy : undefined); - } - - await updateChatDepartment({ rid, newDepartmentId: departmentId, oldDepartmentId }); - - if (chatQueued) { - logger.debug({ - msg: 'Forwarding successful. Marking inquiry as ready', - inquiryId: inquiry._id, - }); - await LivechatInquiry.readyInquiry(inquiry._id); - await LivechatRooms.removeAgentByRoomId(rid); - await dispatchAgentDelegated(rid); - const newInquiry = await LivechatInquiry.findOneById(inquiry._id); - if (!newInquiry) { - logger.debug({ - msg: 'Inquiry not found after forwarding', - inquiryId: inquiry._id, - }); - throw new Error('error-invalid-inquiry'); - } - - await queueInquiry(newInquiry); - logger.debug({ - msg: 'Inquiry queued successfully after forwarding', - inquiryId: inquiry._id, - }); - } - - return true; -}; - -type MakePropertyOptional = Omit & { [P in K]?: T[P] }; - -export const normalizeTransferredByData = ( - transferredBy: MakePropertyOptional, - room: IOmnichannelRoom, -): TransferByData => { - if (!transferredBy || !room) { - throw new Error('You must provide "transferredBy" and "room" params to "getTransferredByData"'); - } - const { servedBy: { _id: agentId } = {} } = room; - const { _id, username, name, userType: transferType } = transferredBy; - const userType = transferType || (_id === agentId ? 'agent' : 'user'); - return { - _id, - username, - ...(name && { name }), - userType, - }; -}; - -const parseFromIntOrStr = (value: string | number) => { - if (typeof value === 'number') { - return value; - } - return parseInt(value); -}; - -export const updateDepartmentAgents = async ( - departmentId: string, - agents: { - upsert?: (Pick & { count?: number; order?: number })[]; - remove?: Pick[]; - }, - departmentEnabled: boolean, -) => { - check(departmentId, String); - check(agents, { - upsert: Match.Maybe([ - Match.ObjectIncluding({ - agentId: String, - username: Match.Maybe(String), - count: Match.Maybe(Match.Integer), - order: Match.Maybe(Match.Integer), - }), - ]), - remove: Match.Maybe([ - Match.ObjectIncluding({ - agentId: String, - username: Match.Maybe(String), - count: Match.Maybe(Match.Integer), - order: Match.Maybe(Match.Integer), - }), - ]), - }); - - const { upsert = [], remove = [] } = agents; - - const agentsUpdated = []; - const agentsRemoved = remove.map(({ agentId }: { agentId: string }) => agentId); - const agentsAdded = []; - - if (agentsRemoved.length > 0) { - const removedIds = await LivechatDepartmentAgents.findByAgentsAndDepartmentId(agentsRemoved, departmentId, { - projection: { agentId: 1 }, - }).toArray(); - - const { deletedCount } = await LivechatDepartmentAgents.removeByIds(removedIds.map(({ _id }) => _id)); - - if (deletedCount > 0) { - removedIds.forEach(({ _id, agentId }) => { - void notifyOnLivechatDepartmentAgentChanged( - { - _id, - agentId, - departmentId, - }, - 'removed', - ); - }); - } - - callbacks.runAsync('livechat.removeAgentDepartment', { departmentId, agentsId: agentsRemoved }); - } - - for await (const agent of upsert) { - const agentFromDb = await Users.findOneById(agent.agentId, { projection: { _id: 1, username: 1 } }); - if (!agentFromDb) { - continue; - } - - const livechatDepartmentAgent = await LivechatDepartmentAgents.saveAgent({ - agentId: agent.agentId, - departmentId, - username: agentFromDb.username || '', - count: agent.count ? parseFromIntOrStr(agent.count) : 0, - order: agent.order ? parseFromIntOrStr(agent.order) : 0, - departmentEnabled, - }); - - if (livechatDepartmentAgent.upsertedId) { - void notifyOnLivechatDepartmentAgentChanged( - { - _id: livechatDepartmentAgent.upsertedId as any, - agentId: agent.agentId, - departmentId, - }, - 'inserted', - ); - } else { - agentsUpdated.push(agent.agentId); - } - - agentsAdded.push(agent.agentId); - } - - if (agentsAdded.length > 0) { - callbacks.runAsync('livechat.saveAgentDepartment', { - departmentId, - agentsId: agentsAdded, - }); - } - - if (agentsUpdated.length > 0) { - void notifyOnLivechatDepartmentAgentChangedByAgentsAndDepartmentId(agentsUpdated, departmentId); - } - - if (agentsRemoved.length > 0 || agentsAdded.length > 0) { - const numAgents = await LivechatDepartmentAgents.countByDepartmentId(departmentId); - await LivechatDepartment.updateNumAgentsById(departmentId, numAgents); - } - - return true; -}; - -export const validateEmail = (email: string) => { - if (!validatorFunc(email)) { - throw new Meteor.Error('error-invalid-email', `Invalid email ${email}`, { - function: 'Livechat.validateEmail', - email, - }); - } - return true; -}; diff --git a/apps/meteor/app/livechat/server/lib/analytics/dashboards.ts b/apps/meteor/app/livechat/server/lib/analytics/dashboards.ts deleted file mode 100644 index d02cf20f87262..0000000000000 --- a/apps/meteor/app/livechat/server/lib/analytics/dashboards.ts +++ /dev/null @@ -1,395 +0,0 @@ -import { OmnichannelAnalytics } from '@rocket.chat/core-services'; -import type { IUser } from '@rocket.chat/core-typings'; -import { LivechatRooms, Users, LivechatVisitors, LivechatAgentActivity } from '@rocket.chat/models'; -import mem from 'mem'; -import moment from 'moment'; - -import { secondsToHHMMSS } from '../../../../../lib/utils/secondsToHHMMSS'; -import { settings } from '../../../../settings/server'; -import { getAnalyticsOverviewDataCachedForRealtime } from '../AnalyticsTyped'; -import { - findPercentageOfAbandonedRoomsAsync, - findAllAverageOfChatDurationTimeAsync, - findAllAverageWaitingTimeAsync, - findAllNumberOfAbandonedRoomsAsync, - findAllAverageServiceTimeAsync, -} from './departments'; - -const findAllChatsStatusAsync = async ({ start, end, departmentId = undefined }: { start: Date; end: Date; departmentId?: string }) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - return { - open: await LivechatRooms.countAllOpenChatsBetweenDate({ start, end, departmentId }), - closed: await LivechatRooms.countAllClosedChatsBetweenDate({ start, end, departmentId }), - queued: await LivechatRooms.countAllQueuedChatsBetweenDate({ start, end, departmentId }), - onhold: await LivechatRooms.getOnHoldConversationsBetweenDate(start, end, departmentId), - }; -}; - -const getProductivityMetricsAsync = async ({ - start, - end, - departmentId = undefined, - user, -}: { - start: string; - end: string; - departmentId?: string; - user: IUser; -}) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const totalizers = - (await OmnichannelAnalytics.getAnalyticsOverviewData({ - daterange: { - from: start, - to: end, - }, - analyticsOptions: { - name: 'Productivity', - }, - departmentId, - utcOffset: user?.utcOffset, - language: user?.language || settings.get('Language') || 'en', - executedBy: user._id, - })) || []; - const averageWaitingTime = await findAllAverageWaitingTimeAsync({ - start: new Date(start), - end: new Date(end), - departmentId, - }); - - const totalOfWaitingTime = averageWaitingTime.departments.length; - - const sumOfWaitingTime = averageWaitingTime.departments.reduce((acc: number, serviceTime: { averageWaitingTimeInSeconds: number }) => { - acc += serviceTime.averageWaitingTimeInSeconds; - return acc; - }, 0); - const totalOfAvarageWaitingTime = totalOfWaitingTime === 0 ? 0 : sumOfWaitingTime / totalOfWaitingTime; - - return { - totalizers: [...totalizers, { title: 'Avg_of_waiting_time', value: secondsToHHMMSS(totalOfAvarageWaitingTime) }], - }; -}; - -const getAgentsProductivityMetricsAsync = async ({ - start, - end, - departmentId = undefined, - user, -}: { - start: string; - end: string; - departmentId?: string; - user: IUser; -}) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - // TODO: check type of date - const averageOfAvailableServiceTime = ( - await LivechatAgentActivity.findAllAverageAvailableServiceTime({ - date: parseInt(moment(start).format('YYYYMMDD')) as any, - departmentId, - }) - )[0]; - const averageOfServiceTime = await findAllAverageServiceTimeAsync({ - start: new Date(start), - end: new Date(end), - departmentId, - }); - const totalizers = - (await OmnichannelAnalytics.getAnalyticsOverviewData({ - daterange: { - from: start, - to: end, - }, - analyticsOptions: { - name: 'Conversations', - }, - departmentId, - utcOffset: user.utcOffset, - language: user.language || settings.get('Language') || 'en', - executedBy: user._id, - })) || []; - - const totalOfServiceTime = averageOfServiceTime.departments.length; - - const sumOfServiceTime = averageOfServiceTime.departments.reduce( - ( - acc: number, - serviceTime: { - averageServiceTimeInSeconds: number; - }, - ) => { - acc += serviceTime.averageServiceTimeInSeconds; - return acc; - }, - 0, - ); - const totalOfAverageAvailableServiceTime = averageOfAvailableServiceTime - ? averageOfAvailableServiceTime.averageAvailableServiceTimeInSeconds - : 0; - const totalOfAverageServiceTime = totalOfServiceTime === 0 ? 0 : sumOfServiceTime / totalOfServiceTime; - - return { - totalizers: [ - ...totalizers.filter((metric: { title: string }) => metric.title === 'Busiest_time'), - { - title: 'Avg_of_available_service_time', - value: secondsToHHMMSS(totalOfAverageAvailableServiceTime), - }, - { title: 'Avg_of_service_time', value: secondsToHHMMSS(totalOfAverageServiceTime) }, - ], - }; -}; - -const getChatsMetricsAsync = async ({ start, end, departmentId = undefined }: { start: Date; end: Date; departmentId?: string }) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const abandonedRooms = await findAllNumberOfAbandonedRoomsAsync({ - start, - end, - departmentId, - }); - const averageOfAbandonedRooms = await findPercentageOfAbandonedRoomsAsync({ - start, - end, - departmentId, - }); - const averageOfChatDurationTime = await findAllAverageOfChatDurationTimeAsync({ - start, - end, - departmentId, - }); - - const totalOfAbandonedRooms = averageOfAbandonedRooms.departments.length; - const totalOfChatDurationTime = averageOfChatDurationTime.departments.length; - - const sumOfPercentageOfAbandonedRooms = averageOfAbandonedRooms.departments.reduce( - ( - acc: number, - abandonedRoom: { - percentageOfAbandonedChats: number; - }, - ) => { - acc += abandonedRoom.percentageOfAbandonedChats; - return acc; - }, - 0, - ); - const sumOfChatDurationTime = averageOfChatDurationTime.departments.reduce( - ( - acc: number, - chatDurationTime: { - averageChatDurationTimeInSeconds: number; - }, - ) => { - acc += chatDurationTime.averageChatDurationTimeInSeconds; - return acc; - }, - 0, - ); - const totalAbandonedRooms = abandonedRooms.departments.reduce( - ( - acc: number, - item: { - abandonedRooms: number; - }, - ) => { - acc += item.abandonedRooms; - return acc; - }, - 0, - ); - - const totalOfAverageAbandonedRooms = totalOfAbandonedRooms === 0 ? 0 : sumOfPercentageOfAbandonedRooms / totalOfAbandonedRooms; - const totalOfAverageChatDurationTime = totalOfChatDurationTime === 0 ? 0 : sumOfChatDurationTime / totalOfChatDurationTime; - - return { - totalizers: [ - { title: 'Total_abandoned_chats', value: totalAbandonedRooms }, - { title: 'Avg_of_abandoned_chats', value: `${totalOfAverageAbandonedRooms}%` }, - { - title: 'Avg_of_chat_duration_time', - value: secondsToHHMMSS(totalOfAverageChatDurationTime), - }, - ], - }; -}; - -const getConversationsMetricsAsync = async ({ - start, - end, - departmentId, - user, -}: { - start: string; - end: string; - departmentId?: string; - user: IUser; -}) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const totalizers = - (await getAnalyticsOverviewDataCachedForRealtime({ - daterange: { - from: start, - to: end, - }, - analyticsOptions: { - name: 'Conversations', - }, - ...(departmentId && departmentId !== 'undefined' && { departmentId }), - utcOffset: user.utcOffset, - language: user.language || settings.get('Language') || 'en', - executedBy: user._id, - })) || []; - const metrics = ['Total_conversations', 'Open_conversations', 'On_Hold_conversations', 'Total_messages']; - const visitorsCount = await LivechatVisitors.countVisitorsBetweenDate({ - start: new Date(start), - end: new Date(end), - department: departmentId, - }); - return { - totalizers: [ - ...totalizers.filter((metric: { title: string }) => metrics.includes(metric.title)), - { title: 'Total_visitors', value: visitorsCount }, - ], - }; -}; - -const findAllChatMetricsByAgentAsync = async ({ - start, - end, - departmentId = undefined, -}: { - start: Date; - end: Date; - departmentId?: string; -}) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const open = await LivechatRooms.countAllOpenChatsByAgentBetweenDate({ - start, - end, - departmentId, - }); - const closed = await LivechatRooms.countAllClosedChatsByAgentBetweenDate({ - start, - end, - departmentId, - }); - const onhold = await LivechatRooms.countAllOnHoldChatsByAgentBetweenDate({ - start, - end, - departmentId, - }); - - const result: Record = {}; - (open || []).forEach((agent: { chats: number; _id: string }) => { - result[agent._id] = { open: agent.chats, closed: 0, onhold: 0 }; - }); - (closed || []).forEach((agent: { _id: string; chats: number }) => { - result[agent._id] = { - open: result[agent._id] ? result[agent._id].open : 0, - closed: agent.chats, - }; - }); - - (onhold || []).forEach((agent: { _id: string; chats: number }) => { - result[agent._id] = { - ...result[agent._id], - onhold: agent.chats, - }; - }); - return result; -}; - -const findAllAgentsStatusAsync = async ({ departmentId = undefined }: { departmentId?: string }) => - (await Users.countAllAgentsStatus({ departmentId }))[0]; - -const findAllChatMetricsByDepartmentAsync = async ({ - start, - end, - departmentId = undefined, -}: { - start: Date; - end: Date; - departmentId?: string; -}) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const open = await LivechatRooms.countAllOpenChatsByDepartmentBetweenDate({ - start, - end, - departmentId, - }); - const closed = await LivechatRooms.countAllClosedChatsByDepartmentBetweenDate({ - start, - end, - departmentId, - }); - const result: Record = {}; - (open || []).forEach((department: { name: string; chats: number }) => { - result[department.name] = { open: department.chats, closed: 0 }; - }); - (closed || []).forEach((department: { name: string; chats: number }) => { - result[department.name] = { - open: result[department.name] ? result[department.name].open : 0, - closed: department.chats, - }; - }); - return result; -}; - -const findAllResponseTimeMetricsAsync = async ({ - start, - end, - departmentId = undefined, -}: { - start: Date; - end: Date; - departmentId?: string; -}) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const responseTimes = (await LivechatRooms.calculateResponseTimingsBetweenDates({ start, end, departmentId }))[0]; - const reactionTimes = (await LivechatRooms.calculateReactionTimingsBetweenDates({ start, end, departmentId }))[0]; - const durationTimings = (await LivechatRooms.calculateDurationTimingsBetweenDates({ start, end, departmentId }))[0]; - - return { - response: { - avg: responseTimes ? responseTimes.avg : 0, - longest: responseTimes ? responseTimes.longest : 0, - }, - reaction: { - avg: reactionTimes ? reactionTimes.avg : 0, - longest: reactionTimes ? reactionTimes.longest : 0, - }, - chatDuration: { - avg: durationTimings ? durationTimings.avg : 0, - longest: durationTimings ? durationTimings.longest : 0, - }, - }; -}; - -export const getConversationsMetricsAsyncCached = mem(getConversationsMetricsAsync, { maxAge: 5000, cacheKey: JSON.stringify }); -export const getAgentsProductivityMetricsAsyncCached = mem(getAgentsProductivityMetricsAsync, { maxAge: 5000, cacheKey: JSON.stringify }); -export const getChatsMetricsAsyncCached = mem(getChatsMetricsAsync, { maxAge: 5000, cacheKey: JSON.stringify }); -export const getProductivityMetricsAsyncCached = mem(getProductivityMetricsAsync, { maxAge: 5000, cacheKey: JSON.stringify }); -export const findAllChatsStatusAsyncCached = mem(findAllChatsStatusAsync, { maxAge: 5000, cacheKey: JSON.stringify }); -export const findAllChatMetricsByAgentAsyncCached = mem(findAllChatMetricsByAgentAsync, { maxAge: 5000, cacheKey: JSON.stringify }); -export const findAllAgentsStatusAsyncCached = mem(findAllAgentsStatusAsync, { maxAge: 5000, cacheKey: JSON.stringify }); -export const findAllChatMetricsByDepartmentAsyncCached = mem(findAllChatMetricsByDepartmentAsync, { - maxAge: 5000, - cacheKey: JSON.stringify, -}); -export const findAllResponseTimeMetricsAsyncCached = mem(findAllResponseTimeMetricsAsync, { maxAge: 5000, cacheKey: JSON.stringify }); diff --git a/apps/meteor/app/livechat/server/lib/analytics/departments.ts b/apps/meteor/app/livechat/server/lib/analytics/departments.ts deleted file mode 100644 index f505c6f17f9d0..0000000000000 --- a/apps/meteor/app/livechat/server/lib/analytics/departments.ts +++ /dev/null @@ -1,192 +0,0 @@ -import { LivechatRooms, Messages } from '@rocket.chat/models'; - -import { settings } from '../../../../settings/server'; - -type Params = { - start: Date; - end: Date; - options?: any; - departmentId?: string; -}; - -export const findAllRoomsAsync = async ({ start, end, answered, departmentId, options = {} }: Params & { answered?: boolean }) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const total = await LivechatRooms.findAllRooms({ - start, - answered, - end, - departmentId, - onlyCount: true, - }).toArray(); - return { - departments: await LivechatRooms.findAllRooms({ - start, - answered, - end, - departmentId, - options, - }).toArray(), - total: total.length ? total[0].total : 0, - }; -}; - -export const findAllAverageOfChatDurationTimeAsync = async ({ start, end, departmentId, options = {} }: Params) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const total = await LivechatRooms.findAllAverageOfChatDurationTime({ - start, - end, - departmentId, - onlyCount: true, - }).toArray(); - return { - departments: await LivechatRooms.findAllAverageOfChatDurationTime({ - start, - end, - departmentId, - options, - }).toArray(), - total: total.length ? total[0].total : 0, - }; -}; - -export const findAllAverageServiceTimeAsync = async ({ start, end, departmentId, options = {} }: Params) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const total = await LivechatRooms.findAllAverageOfServiceTime({ - start, - end, - departmentId, - onlyCount: true, - }).toArray(); - return { - departments: await LivechatRooms.findAllAverageOfServiceTime({ - start, - end, - departmentId, - options, - }).toArray(), - total: total.length ? total[0].total : 0, - }; -}; - -export const findAllServiceTimeAsync = async ({ start, end, departmentId, options = {} }: Params) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const total = await LivechatRooms.findAllServiceTime({ - start, - end, - departmentId, - onlyCount: true, - }).toArray(); - return { - departments: await LivechatRooms.findAllServiceTime({ - start, - end, - departmentId, - options, - }).toArray(), - total: total.length ? total[0].total : 0, - }; -}; - -export const findAllAverageWaitingTimeAsync = async ({ start, end, departmentId, options = {} }: Params) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const total = await LivechatRooms.findAllAverageWaitingTime({ - start, - end, - departmentId, - onlyCount: true, - }).toArray(); - return { - departments: await LivechatRooms.findAllAverageWaitingTime({ - start, - end, - departmentId, - options, - }).toArray(), - total: total.length ? total[0].total : 0, - }; -}; - -export const findAllNumberOfTransferredRoomsAsync = async ({ start, end, departmentId, options = {} }: Params) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const total = await Messages.findAllNumberOfTransferredRooms({ - start, - end, - departmentId, - onlyCount: true, - }).toArray(); - return { - departments: await Messages.findAllNumberOfTransferredRooms({ - start, - end, - departmentId, - options, - }).toArray(), - total: total.length ? total[0].total : 0, - }; -}; - -export const findAllNumberOfAbandonedRoomsAsync = async ({ start, end, departmentId, options = {} }: Params) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const total = await ( - await LivechatRooms.findAllNumberOfAbandonedRooms({ - start, - end, - departmentId, - inactivityTimeout: settings.get('Livechat_visitor_inactivity_timeout'), - onlyCount: true, - }) - ).toArray(); - return { - departments: await ( - await LivechatRooms.findAllNumberOfAbandonedRooms({ - start, - end, - departmentId, - inactivityTimeout: settings.get('Livechat_visitor_inactivity_timeout'), - options, - }) - ).toArray(), - total: total.length ? total[0].total : 0, - }; -}; - -export const findPercentageOfAbandonedRoomsAsync = async ({ start, end, departmentId, options = {} }: Params) => { - if (!start || !end) { - throw new Error('"start" and "end" must be provided'); - } - const total = await ( - await LivechatRooms.findPercentageOfAbandonedRooms({ - start, - end, - departmentId, - inactivityTimeout: settings.get('Livechat_visitor_inactivity_timeout'), - onlyCount: true, - }) - ).toArray(); - return { - departments: await ( - await LivechatRooms.findPercentageOfAbandonedRooms({ - start, - end, - departmentId, - inactivityTimeout: settings.get('Livechat_visitor_inactivity_timeout'), - options, - }) - ).toArray(), - total: total.length ? total[0].total : 0, - }; -}; diff --git a/apps/meteor/app/livechat/server/lib/messages.ts b/apps/meteor/app/livechat/server/lib/messages.ts deleted file mode 100644 index 558aecde98f5c..0000000000000 --- a/apps/meteor/app/livechat/server/lib/messages.ts +++ /dev/null @@ -1,151 +0,0 @@ -import dns from 'node:dns'; -import * as util from 'node:util'; - -import type { ILivechatVisitor, AtLeast, IMessage, IUser, IOmnichannelRoomInfo, SelectedAgent } from '@rocket.chat/core-typings'; -import { LivechatDepartment, Messages } from '@rocket.chat/models'; - -import type { ILivechatMessage } from './localTypes'; -import { getRoom } from './rooms'; -import { showConnecting } from './utils'; -import { callbacks } from '../../../../server/lib/callbacks'; -import { deleteMessage as deleteMessageFunc } from '../../../lib/server/functions/deleteMessage'; -import { sendMessage as sendMessageFunc } from '../../../lib/server/functions/sendMessage'; -import { updateMessage as updateMessageFunc } from '../../../lib/server/functions/updateMessage'; -import * as Mailer from '../../../mailer/server/api'; -import { settings } from '../../../settings/server'; - -const dnsResolveMx = util.promisify(dns.resolveMx); - -type OfflineMessageData = { - message: string; - name: string; - email: string; - department?: string; - host?: string; -}; - -export async function sendOfflineMessage(data: OfflineMessageData) { - if (!settings.get('Livechat_display_offline_form')) { - throw new Error('error-offline-form-disabled'); - } - - const { message, name, email, department, host } = data; - - if (!email) { - throw new Error('error-invalid-email'); - } - - const emailMessage = `${message}`.replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1
$2'); - - let html = '

New livechat message

'; - if (host && host !== '') { - html = html.concat(`

Sent from: ${host}

`); - } - html = html.concat(` -

Visitor name: ${name}

-

Visitor email: ${email}

-

Message:
${emailMessage}

`); - - const fromEmail = settings.get('From_Email').match(/\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b/i); - - let from: string; - if (fromEmail) { - from = fromEmail[0]; - } else { - from = settings.get('From_Email'); - } - - if (settings.get('Livechat_validate_offline_email')) { - const emailDomain = email.substr(email.lastIndexOf('@') + 1); - - try { - await dnsResolveMx(emailDomain); - } catch (e) { - throw new Meteor.Error('error-invalid-email-address'); - } - } - - // TODO Block offline form if Livechat_offline_email is undefined - // (it does not make sense to have an offline form that does nothing) - // `this.sendEmail` will throw an error if the email is invalid - // thus this breaks livechat, since the "to" email is invalid, and that returns an [invalid email] error to the livechat client - let emailTo = settings.get('Livechat_offline_email'); - if (department && department !== '') { - const dep = await LivechatDepartment.findOneByIdOrName(department, { projection: { email: 1 } }); - if (dep) { - emailTo = dep.email || emailTo; - } - } - - const fromText = `${name} - ${email} <${from}>`; - const replyTo = `${name} <${email}>`; - const subject = `Livechat offline message from ${name}: ${`${emailMessage}`.substring(0, 20)}`; - await Mailer.send({ - to: emailTo, - from: fromText, - replyTo, - subject, - html, - }); - - setImmediate(() => { - void callbacks.run('livechat.offlineMessage', data); - }); -} - -export async function updateMessage({ guest, message }: { guest: ILivechatVisitor; message: AtLeast }) { - // TODO: Remove check - check(message, Match.ObjectIncluding({ _id: String })); - - const originalMessage = await Messages.findOneById>(message._id, { projection: { u: 1 } }); - if (!originalMessage?._id) { - return; - } - - // TODO: shouldn't this happen inside updateMessageFunc? - const editAllowed = settings.get('Message_AllowEditing'); - const editOwn = originalMessage.u && originalMessage.u._id === guest._id; - - if (!editAllowed || !editOwn) { - throw new Error('error-action-not-allowed'); - } - - // TODO: Apps sends an `any` object and apparently we just check for _id being present - // while updateMessage expects AtLeast - await updateMessageFunc(message, guest as unknown as IUser); - - return true; -} - -export async function deleteMessage({ guest, message }: { guest: ILivechatVisitor; message: IMessage }) { - const deleteAllowed = settings.get('Message_AllowDeleting'); - const editOwn = message.u && message.u._id === guest._id; - - if (!deleteAllowed || !editOwn) { - throw new Error('error-action-not-allowed'); - } - - // TODO: we shouldn't do this :( - await deleteMessageFunc(message, guest as unknown as IUser); - - return true; -} - -export async function sendMessage({ - guest, - message, - roomInfo, - agent, -}: { - guest: ILivechatVisitor; - message: ILivechatMessage; - roomInfo: IOmnichannelRoomInfo; - agent?: SelectedAgent; -}) { - const { room, newRoom } = await getRoom(guest, message, roomInfo, agent); - return { - ...(await sendMessageFunc(guest, { ...message, token: guest.token, ...(guest.name && { alias: guest.name }) }, room)), - newRoom, - showConnecting: showConnecting(), - }; -} diff --git a/apps/meteor/app/livechat/server/lib/rooms.ts b/apps/meteor/app/livechat/server/lib/rooms.ts deleted file mode 100644 index 90755eb5bf002..0000000000000 --- a/apps/meteor/app/livechat/server/lib/rooms.ts +++ /dev/null @@ -1,313 +0,0 @@ -import { AppEvents, Apps } from '@rocket.chat/apps'; -import { Omnichannel } from '@rocket.chat/core-services'; -import type { - ILivechatVisitor, - IMessage, - IOmnichannelRoomInfo, - SelectedAgent, - IOmnichannelRoomExtraData, - IOmnichannelRoom, - TransferData, -} from '@rocket.chat/core-typings'; -import { isOmnichannelRoom } from '@rocket.chat/core-typings'; -import { - LivechatRooms, - LivechatContacts, - Messages, - LivechatCustomField, - LivechatInquiry, - Rooms, - Subscriptions, - Users, - ReadReceipts, - ReadReceiptsArchive, -} from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { normalizeTransferredByData } from './Helper'; -import { QueueManager } from './QueueManager'; -import { RoutingManager } from './RoutingManager'; -import { Visitors } from './Visitors'; -import { getRequiredDepartment } from './departmentsLib'; -import { checkDefaultAgentOnNewRoom } from './hooks'; -import { livechatLogger } from './logger'; -import { saveTransferHistory } from './transfer'; -import { trim } from '../../../../lib/utils/stringUtils'; -import { callbacks } from '../../../../server/lib/callbacks'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { - notifyOnLivechatInquiryChangedByRoom, - notifyOnSubscriptionChangedByRoomId, - notifyOnRoomChangedById, - notifyOnLivechatInquiryChanged, - notifyOnSubscriptionChanged, - notifyOnRoomChanged, -} from '../../../lib/server/lib/notifyListener'; -import { settings } from '../../../settings/server'; -import { i18n } from '../../../utils/lib/i18n'; - -export async function getRoom( - guest: ILivechatVisitor, - message: Pick, - roomInfo: IOmnichannelRoomInfo, - agent?: SelectedAgent, - extraData?: IOmnichannelRoomExtraData, -) { - if (!settings.get('Livechat_enabled')) { - throw new Meteor.Error('error-omnichannel-is-disabled'); - } - livechatLogger.debug({ msg: 'Attempting to find or create a room for visitor', visitorId: guest._id }); - const room = await LivechatRooms.findOneById(message.rid); - - if (room?.v._id && (await LivechatContacts.isChannelBlocked(Visitors.makeVisitorAssociation(room.v._id, room.source)))) { - throw new Error('error-contact-channel-blocked'); - } - - if (!room?.open) { - livechatLogger.debug({ msg: 'Last room for visitor closed. Creating new one', visitorId: guest._id }); - } - - if (!room?.open) { - return { - room: await createRoom({ visitor: guest, message: message.msg, roomInfo, agent, extraData }), - newRoom: true, - }; - } - - if (room.v.token !== guest.token) { - livechatLogger.debug({ msg: 'Visitor trying to access another visitor room', visitorId: guest._id }); - throw new Meteor.Error('cannot-access-room'); - } - - return { room, newRoom: false }; -} - -export async function createRoom({ - visitor, - message, - rid, - roomInfo, - agent, - extraData, -}: { - visitor: ILivechatVisitor; - message?: string; - rid?: string; - roomInfo: IOmnichannelRoomInfo; - agent?: SelectedAgent; - extraData?: IOmnichannelRoomExtraData; -}) { - if (!settings.get('Livechat_enabled')) { - throw new Meteor.Error('error-omnichannel-is-disabled'); - } - - if (await LivechatContacts.isChannelBlocked(Visitors.makeVisitorAssociation(visitor._id, roomInfo.source))) { - throw new Error('error-contact-channel-blocked'); - } - - const defaultAgent = await checkDefaultAgentOnNewRoom(agent, { - visitorId: visitor._id, - source: roomInfo.source, - }); - - // if no department selected verify if there is at least one active and pick the first - if (!defaultAgent && !visitor.department) { - const department = await getRequiredDepartment(); - livechatLogger.debug({ msg: 'No department or default agent selected for visitor', visitorId: visitor._id }); - - if (department) { - livechatLogger.debug({ msg: 'Assigning visitor to department', visitorId: visitor._id, departmentId: department._id }); - visitor.department = department._id; - } - } - - // delegate room creation to QueueManager - livechatLogger.debug({ msg: 'Calling QueueManager to request a room for visitor', visitorId: visitor._id }); - - const room = await QueueManager.requestRoom({ - guest: visitor, - message, - rid, - roomInfo, - agent: defaultAgent, - extraData, - }); - - livechatLogger.debug({ msg: 'Room obtained for visitor', visitorId: visitor._id, roomId: room._id }); - - await Messages.setRoomIdByToken(visitor.token, room._id); - - return room; -} - -export async function saveRoomInfo( - roomData: { - _id: string; - topic?: string; - tags?: string[]; - livechatData?: { [k: string]: string }; - // For priority and SLA, if the value is blank (ie ""), then system will remove the priority or SLA from the room - priorityId?: string; - slaId?: string; - }, - guestData?: { - _id: string; - name?: string; - email?: string; - phone?: string; - livechatData?: { [k: string]: string }; - }, - userId?: string, -) { - livechatLogger.debug({ msg: 'Saving room information', roomId: roomData._id }); - const { livechatData = {} } = roomData; - const customFields: Record = {}; - - if ((!userId || (await hasPermissionAsync(userId, 'edit-livechat-room-customfields'))) && Object.keys(livechatData).length) { - const fields = LivechatCustomField.findByScope('room'); - for await (const field of fields) { - if (!livechatData.hasOwnProperty(field._id)) { - continue; - } - const value = trim(livechatData[field._id]); - if (value !== '' && field.regexp !== undefined && field.regexp !== '') { - const regexp = new RegExp(field.regexp); - if (!regexp.test(value)) { - throw new Meteor.Error(i18n.t('error-invalid-custom-field-value', { field: field.label })); - } - } - customFields[field._id] = value; - } - roomData.livechatData = customFields; - livechatLogger.debug({ - msg: 'About to update custom fields on room', - roomId: roomData._id, - customFieldCount: Object.keys(customFields).length, - }); - } - - await LivechatRooms.saveRoomById(roomData); - - setImmediate(() => { - void Apps.self?.triggerEvent(AppEvents.IPostLivechatRoomSaved, roomData._id); - }); - - if (guestData?.name?.trim().length) { - const { _id: rid } = roomData; - const { name } = guestData; - - const responses = await Promise.all([ - Rooms.setFnameById(rid, name), - LivechatInquiry.setNameByRoomId(rid, name), - Subscriptions.updateDisplayNameByRoomId(rid, name), - ]); - - if (responses[1]?.modifiedCount) { - void notifyOnLivechatInquiryChangedByRoom(rid, 'updated', { name }); - } - - if (responses[2]?.modifiedCount) { - await notifyOnSubscriptionChangedByRoomId(rid); - } - } - - void notifyOnRoomChangedById(roomData._id); - - return true; -} - -export async function returnRoomAsInquiry(room: IOmnichannelRoom, departmentId?: string, overrideTransferData: Partial = {}) { - livechatLogger.debug({ msg: 'Transferring room to queue', scope: departmentId ? 'department' : undefined, room }); - if (!room.open) { - throw new Meteor.Error('room-closed', 'Room closed'); - } - - if (room.onHold) { - throw new Meteor.Error('error-room-onHold'); - } - - if (!(await Omnichannel.isWithinMACLimit(room))) { - throw new Meteor.Error('error-mac-limit-reached'); - } - - if (!room.servedBy) { - return false; - } - - const user = await Users.findOneById(room.servedBy._id); - if (!user?._id) { - throw new Meteor.Error('error-invalid-user'); - } - - const inquiry = await LivechatInquiry.findOne({ rid: room._id }); - if (!inquiry) { - return false; - } - - // update inquiry's last message with room's last message to correctly display in the queue - // because we stop updating the inquiry when it's been taken - if (room.lastMessage) { - await LivechatInquiry.setLastMessageById(inquiry._id, room.lastMessage); - } - - const transferredBy = normalizeTransferredByData(user, room); - livechatLogger.debug({ msg: 'Transferring room by user', roomId: room._id, transferredBy: transferredBy._id }); - const transferData = { scope: 'queue' as const, departmentId, transferredBy, ...overrideTransferData }; - try { - await saveTransferHistory(room, transferData); - await RoutingManager.unassignAgent(inquiry, departmentId); - } catch (err) { - livechatLogger.error({ err }); - throw new Meteor.Error('error-returning-inquiry'); - } - - callbacks.runAsync('livechat:afterReturnRoomAsInquiry', { room }); - - return true; -} - -export async function removeOmnichannelRoom(rid: string) { - livechatLogger.debug({ msg: 'Deleting room', roomId: rid }); - check(rid, String); - const room = await LivechatRooms.findOneById(rid); - if (!room) { - throw new Meteor.Error('error-invalid-room', 'Invalid room'); - } - - if (!isOmnichannelRoom(room)) { - throw new Meteor.Error('error-this-is-not-a-livechat-room'); - } - - if (room.open) { - throw new Meteor.Error('error-room-is-not-closed'); - } - - const inquiry = await LivechatInquiry.findOneByRoomId(rid); - - const result = await Promise.allSettled([ - Messages.removeByRoomId(rid), - ReadReceipts.removeByRoomId(rid), - Subscriptions.removeByRoomId(rid, { - async onTrash(doc) { - void notifyOnSubscriptionChanged(doc, 'removed'); - }, - }), - LivechatInquiry.removeByRoomId(rid), - LivechatRooms.removeById(rid), - ReadReceiptsArchive.removeByRoomId(rid), - ]); - - if (result[3]?.status === 'fulfilled' && result[3].value?.deletedCount && inquiry) { - void notifyOnLivechatInquiryChanged(inquiry, 'removed'); - } - if (result[4]?.status === 'fulfilled' && result[4].value?.deletedCount) { - void notifyOnRoomChanged(room, 'removed'); - } - - for (const r of result) { - if (r.status === 'rejected') { - livechatLogger.error({ msg: 'Error removing room', roomId: rid, err: r.reason }); - throw new Meteor.Error('error-removing-room', 'Error removing room'); - } - } -} diff --git a/apps/meteor/app/livechat/server/lib/settings.ts b/apps/meteor/app/livechat/server/lib/settings.ts deleted file mode 100644 index f4a917b966d7a..0000000000000 --- a/apps/meteor/app/livechat/server/lib/settings.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { OmnichannelSortingMechanismSettingType } from '@rocket.chat/core-typings'; - -import { showConnecting } from './utils'; -import { settings } from '../../../settings/server'; - -export const getInquirySortMechanismSetting = (): OmnichannelSortingMechanismSettingType => - settings.get('Omnichannel_sorting_mechanism') || OmnichannelSortingMechanismSettingType.Timestamp; - -export async function getInitSettings() { - const validSettings = [ - 'Livechat_title', - 'Livechat_title_color', - 'Livechat_enable_message_character_limit', - 'Livechat_message_character_limit', - 'Message_MaxAllowedSize', - 'Livechat_enabled', - 'Livechat_registration_form', - 'Livechat_allow_switching_departments', - 'Livechat_offline_title', - 'Livechat_offline_title_color', - 'Livechat_offline_message', - 'Livechat_offline_success_message', - 'Livechat_offline_form_unavailable', - 'Livechat_display_offline_form', - 'Omnichannel_call_provider', - 'Language', - 'Livechat_enable_transcript', - 'Livechat_transcript_message', - 'Livechat_fileupload_enabled', - 'FileUpload_Enabled', - 'Livechat_conversation_finished_message', - 'Livechat_conversation_finished_text', - 'Livechat_name_field_registration_form', - 'Livechat_email_field_registration_form', - 'Livechat_registration_form_message', - 'Livechat_force_accept_data_processing_consent', - 'Livechat_data_processing_consent_text', - 'Livechat_show_agent_info', - 'Livechat_clear_local_storage_when_chat_ended', - 'Livechat_history_monitor_type', - 'Livechat_hide_system_messages', - 'Livechat_widget_position', - 'Livechat_background', - 'Assets_livechat_widget_logo', - 'Livechat_hide_watermark', - 'Omnichannel_allow_visitors_to_close_conversation', - 'Livechat_hide_expand_chat', - ] as const; - - type SettingTypes = (typeof validSettings)[number] | 'Livechat_Show_Connecting'; - - const rcSettings = validSettings.reduce>((acc, setting) => { - acc[setting] = settings.get(setting); - return acc; - }, {} as any); - - rcSettings.Livechat_Show_Connecting = showConnecting(); - - return rcSettings; -} diff --git a/apps/meteor/app/livechat/server/lib/transfer.ts b/apps/meteor/app/livechat/server/lib/transfer.ts deleted file mode 100644 index 61d8af806c4ca..0000000000000 --- a/apps/meteor/app/livechat/server/lib/transfer.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { Message } from '@rocket.chat/core-services'; -import type { ILivechatDepartment, ILivechatVisitor, IOmnichannelRoom, TransferData } from '@rocket.chat/core-typings'; -import { Users, LivechatRooms, LivechatVisitors, LivechatDepartment } from '@rocket.chat/models'; - -import { normalizeTransferredByData } from './Helper'; -import { RoutingManager } from './RoutingManager'; -import { livechatLogger } from './logger'; - -export async function saveTransferHistory(room: IOmnichannelRoom, transferData: TransferData) { - const { departmentId: previousDepartment } = room; - const { department: nextDepartment, transferredBy, transferredTo, scope, comment } = transferData; - - check( - transferredBy, - Match.ObjectIncluding({ - _id: String, - username: String, - name: Match.Maybe(String), - userType: String, - }), - ); - - const { _id, username } = transferredBy; - const scopeData = scope || (nextDepartment ? 'department' : 'agent'); - livechatLogger.info({ msg: 'Storing new chat transfer', roomId: room._id, transferredBy: _id, scope: scopeData }); - - const transferMessage = { - ...(transferData.transferredBy.userType === 'visitor' && { token: room.v.token }), - transferData: { - transferredBy, - ts: new Date(), - scope: scopeData, - comment, - ...(previousDepartment && { previousDepartment }), - ...(nextDepartment && { nextDepartment }), - ...(transferredTo && { transferredTo }), - }, - }; - - await Message.saveSystemMessageAndNotifyUser('livechat_transfer_history', room._id, '', { _id, username }, transferMessage); -} - -export async function forwardOpenChats(userId: string) { - livechatLogger.debug({ msg: 'Transferring open chats for user', userId }); - const user = await Users.findOneById(userId); - if (!user) { - throw new Error('error-invalid-user'); - } - - const { _id, username, name } = user; - for await (const room of LivechatRooms.findOpenByAgent(userId)) { - const guest = await LivechatVisitors.findOneEnabledById(room.v._id); - if (!guest) { - continue; - } - - const transferredBy = normalizeTransferredByData({ _id, username, name }, room); - await transfer(room, guest, { - transferredBy, - departmentId: guest.department, - }); - } -} - -export async function transfer(room: IOmnichannelRoom, guest: ILivechatVisitor, transferData: TransferData) { - livechatLogger.debug({ msg: 'Transferring room', roomId: room._id, transferredBy: transferData?.transferredBy?._id }); - if (room.onHold) { - throw new Error('error-room-onHold'); - } - - if (transferData.departmentId) { - const department = await LivechatDepartment.findOneById>(transferData.departmentId, { - projection: { name: 1 }, - }); - if (!department) { - throw new Error('error-invalid-department'); - } - - transferData.department = department; - livechatLogger.debug({ msg: 'Transferring room to department', roomId: room._id, departmentId: transferData.department?._id }); - } - - return RoutingManager.transferRoom(room, guest, transferData); -} diff --git a/apps/meteor/app/livechat/server/lib/utils.ts b/apps/meteor/app/livechat/server/lib/utils.ts deleted file mode 100644 index 45e5d58e1dc4b..0000000000000 --- a/apps/meteor/app/livechat/server/lib/utils.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { ILivechatAgentStatus } from '@rocket.chat/core-typings'; -import type { ILivechatAgent, IUser } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; -import type { Filter } from 'mongodb'; - -import { RoutingManager } from './RoutingManager'; -import type { AKeyOf } from './localTypes'; -import { callbacks } from '../../../../server/lib/callbacks'; -import { notifyOnUserChange } from '../../../lib/server/lib/notifyListener'; -import { businessHourManager } from '../business-hour'; - -export function showConnecting() { - return RoutingManager.getConfig()?.showConnecting || false; -} - -export async function setUserStatusLivechat(userId: string, status: ILivechatAgentStatus) { - const user = await Users.setLivechatStatus(userId, status); - // TODO: shouldnt this callback run if the modified count is > 0 too? - callbacks.runAsync('livechat.setUserStatusLivechat', { userId, status }); - - if (user.modifiedCount > 0) { - void notifyOnUserChange({ - id: userId, - clientAction: 'updated', - diff: { - statusLivechat: status, - livechatStatusSystemModified: false, - }, - }); - } - - return user; -} - -export async function setUserStatusLivechatIf( - userId: string, - status: ILivechatAgentStatus, - condition?: Filter, - fields?: AKeyOf, -) { - const result = await Users.setLivechatStatusIf(userId, status, condition, fields); - - if (result.modifiedCount > 0) { - void notifyOnUserChange({ - id: userId, - clientAction: 'updated', - diff: { ...fields, statusLivechat: status }, - }); - } - - // TODO: shouldnt this callback run if the modified count is > 0 too? - callbacks.runAsync('livechat.setUserStatusLivechat', { userId, status }); - return result; -} - -export async function allowAgentChangeServiceStatus(statusLivechat: ILivechatAgentStatus, agentId: string) { - if (statusLivechat !== ILivechatAgentStatus.AVAILABLE) { - return true; - } - - return businessHourManager.allowAgentChangeServiceStatus(agentId); -} diff --git a/apps/meteor/app/livechat/server/lib/webhooks.ts b/apps/meteor/app/livechat/server/lib/webhooks.ts deleted file mode 100644 index de49a6bb0cae7..0000000000000 --- a/apps/meteor/app/livechat/server/lib/webhooks.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { serverFetch as fetch } from '@rocket.chat/server-fetch'; -import type { Response } from '@rocket.chat/server-fetch'; - -import { webhooksLogger } from './logger'; -import { metrics } from '../../../metrics/server'; -import { settings } from '../../../settings/server'; - -const isRetryable = (status: number): boolean => status >= 500 || status === 429; - -export async function sendRequest( - postData: { - type: string; - [key: string]: any; - }, - attempts = 5, - cb?: (response: Response) => Promise, -) { - const timeout = settings.get('Livechat_http_timeout'); - const secretToken = settings.get('Livechat_secret_token'); - const webhookUrl = settings.get('Livechat_webhookUrl'); - try { - webhooksLogger.debug({ msg: 'Sending webhook request', postData }); - const result = await fetch(webhookUrl, { - method: 'POST', - headers: { - ...(secretToken && { 'X-RocketChat-Livechat-Token': secretToken }), - }, - body: postData, - timeout, - // SECURITY: Webhooks can only be configured by users with enough privileges. It's ok to disable this check here. - ignoreSsrfValidation: true, - size: 10 * 1024 * 1024, - }); - - if (result.status === 200) { - metrics.totalLivechatWebhooksSuccess.inc(); - metrics.totalLivechatWebhooksSuccessTotal.inc(); - await cb?.(result); - return result; - } - - if (!isRetryable(result.status)) { - webhooksLogger.error({ - msg: 'Non-retryable error response from webhook', - webhookUrl, - status: result.status, - response: await result.text(), - }); - metrics.totalLivechatWebhooksFailures.inc(); - metrics.totalLivechatWebhooksFailuresTotal.inc(); - return; - } - - metrics.totalLivechatWebhooksFailures.inc(); - metrics.totalLivechatWebhooksFailuresTotal.inc(); - throw new Error(await result.text()); - } catch (err) { - const retryAfter = timeout * 4; - webhooksLogger.debug({ - msg: 'Error response on retry', - attempt: 6 - attempts, - err, - newAttemptAfterSeconds: retryAfter / 1000, - webhookUrl, - }); - const remainingAttempts = attempts - 1; - // try 5 times after 20 seconds each - if (!remainingAttempts) { - webhooksLogger.error({ msg: 'Omnichannel webhook call failed. Max attempts reached' }); - return; - } - - setTimeout(async () => { - await sendRequest(postData, remainingAttempts, cb); - }, retryAfter); - } -} diff --git a/apps/meteor/app/livechat/server/livechat.ts b/apps/meteor/app/livechat/server/livechat.ts deleted file mode 100644 index 70dd67257650d..0000000000000 --- a/apps/meteor/app/livechat/server/livechat.ts +++ /dev/null @@ -1,73 +0,0 @@ -import url from 'node:url'; - -import jsdom from 'jsdom'; -import mem from 'mem'; -import { WebApp } from 'meteor/webapp'; - -import { settings } from '../../settings/server'; -import { addServerUrlToIndex } from '../lib/Assets'; - -const indexHtmlWithServerURL = await Assets.getTextAsync('livechat/index.html'); - -function parseExtraAttributes(widgetData: string): string { - const liveChatAdditionalScripts = settings.get('Livechat_AdditionalWidgetScripts'); - const additionalClass = settings.get('Livechat_WidgetLayoutClasses'); - - if (liveChatAdditionalScripts == null || additionalClass == null) { - return widgetData; - } - - const domParser = new jsdom.JSDOM(widgetData); - const doc = domParser.window.document; - const head = doc.querySelector('head'); - const body = doc.querySelector('body'); - - liveChatAdditionalScripts.split(',').forEach((script) => { - const scriptElement = doc.createElement('script'); - scriptElement.src = script; - body?.appendChild(scriptElement); - }); - - additionalClass.split(',').forEach((css) => { - const linkElement = doc.createElement('link'); - linkElement.rel = 'stylesheet'; - linkElement.href = css; - head?.appendChild(linkElement); - }); - - return doc.documentElement.innerHTML; -} - -const memoizedParseExtraAttributes = mem(parseExtraAttributes, { - maxAge: process.env.TEST_MODE === 'true' || process.env.TEST_MODE === 'api' ? 1 : 60000, -}); - -WebApp.connectHandlers.use('/livechat', (req, res, next) => { - if (!req.url) { - return next(); - } - - const reqUrl = url.parse(req.url); - if (reqUrl.pathname !== '/') { - return next(); - } - - res.setHeader('content-type', 'text/html; charset=utf-8'); - const domainWhiteListSetting = settings.get('Livechat_AllowedDomainsList'); - let domainWhiteList = []; - if (req.headers.referer && domainWhiteListSetting.trim()) { - domainWhiteList = domainWhiteListSetting.split(',').map((domain) => domain.trim()); - const referer = url.parse(req.headers.referer); - if (referer.host && !domainWhiteList.includes(referer.host)) { - res.setHeader('Content-Security-Policy', "frame-ancestors 'none'"); - return next(); - } - res.setHeader('Content-Security-Policy', `frame-ancestors ${referer.protocol}//${referer.host}`); - } else { - // TODO need to remove inline scripts from this route to be able to enable CSP here as well - res.removeHeader('Content-Security-Policy'); - } - - res.write(memoizedParseExtraAttributes(addServerUrlToIndex(indexHtmlWithServerURL || ''))); - res.end(); -}); diff --git a/apps/meteor/app/livechat/server/methods/saveBusinessHour.ts b/apps/meteor/app/livechat/server/methods/saveBusinessHour.ts deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/apps/meteor/app/livechat/server/startup.ts b/apps/meteor/app/livechat/server/startup.ts deleted file mode 100644 index 1ba15a5e0baeb..0000000000000 --- a/apps/meteor/app/livechat/server/startup.ts +++ /dev/null @@ -1,148 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { ILivechatAgentStatus, isOmnichannelRoom } from '@rocket.chat/core-typings'; -import { Logger } from '@rocket.chat/logger'; -import { LivechatContacts, LivechatRooms } from '@rocket.chat/models'; -import { registerGuest } from '@rocket.chat/omni-core'; -import { validateEmail, wrapExceptions } from '@rocket.chat/tools'; -import { Accounts } from 'meteor/accounts-base'; -import { Meteor } from 'meteor/meteor'; - -import { businessHourManager } from './business-hour'; -import { createDefaultBusinessHourIfNotExists } from './business-hour/Helper'; -import { setUserStatusLivechatIf } from './lib/utils'; -import { LivechatAgentActivityMonitor } from './statistics/LivechatAgentActivityMonitor'; -import { callbacks } from '../../../server/lib/callbacks'; -import { beforeLeaveRoomCallback } from '../../../server/lib/callbacks/beforeLeaveRoomCallback'; -import { i18n } from '../../../server/lib/i18n'; -import { roomCoordinator } from '../../../server/lib/rooms/roomCoordinator'; -import { maybeMigrateLivechatRoom } from '../../api/server/lib/maybeMigrateLivechatRoom'; -import { hasPermissionAsync } from '../../authorization/server/functions/hasPermission'; -import { notifyOnUserChange } from '../../lib/server/lib/notifyListener'; -import { settings } from '../../settings/server'; -import './roomAccessValidator.internalService'; -import { ContactMerger, type FieldAndValue } from './lib/contacts/ContactMerger'; - -const logger = new Logger('LivechatStartup'); - -// TODO this patch is temporary because `ContactMerger` still a lot of dependencies, so it is not suitable to be moved to omni-core package -// TODO add tests covering the ContactMerger usage -registerGuest.patch(async (originalFn, newData, options) => { - const visitor = await originalFn(newData, options); - if (!visitor) { - return null; - } - - const { name, phone, email, username } = newData; - - const validatedEmail = - email && - wrapExceptions(() => { - const trimmedEmail = email.trim().toLowerCase(); - validateEmail(trimmedEmail); - return trimmedEmail; - }).suppress(); - - const fields = [ - { type: 'name', value: name }, - { type: 'phone', value: phone?.number }, - { type: 'email', value: validatedEmail }, - { type: 'username', value: username || visitor.username }, - ].filter((field) => Boolean(field.value)) as FieldAndValue[]; - - if (!fields.length) { - return null; - } - - // If a visitor was updated who already had contacts, load up the contacts and update that information as well - const contacts = await LivechatContacts.findAllByVisitorId(visitor._id).toArray(); - for await (const contact of contacts) { - await ContactMerger.mergeFieldsIntoContact({ - fields, - contact, - conflictHandlingMode: contact.unknown ? 'overwrite' : 'conflict', - }); - } - - return visitor; -}); - -Meteor.startup(async () => { - roomCoordinator.setRoomFind('l', async (id) => maybeMigrateLivechatRoom(await LivechatRooms.findOneById(id))); - - beforeLeaveRoomCallback.add( - (user, room) => { - if (!isOmnichannelRoom(room)) { - return; - } - throw new Meteor.Error( - i18n.t('You_cant_leave_a_livechat_room_Please_use_the_close_button', { - lng: user.language || settings.get('Language') || 'en', - }), - ); - }, - callbacks.priority.LOW, - 'cant-leave-omnichannel-room', - ); - - callbacks.add( - 'beforeJoinRoom', - async (user, room) => { - if (isOmnichannelRoom(room) && !(await hasPermissionAsync(user._id, 'view-l-room'))) { - throw new Meteor.Error('error-user-is-not-agent', 'User is not an Omnichannel Agent', { - method: 'beforeJoinRoom', - }); - } - - return user; - }, - callbacks.priority.LOW, - 'cant-join-omnichannel-room', - ); - - const monitor = new LivechatAgentActivityMonitor(); - - settings.watch('Troubleshoot_Disable_Livechat_Activity_Monitor', async (value) => { - if (value) { - return monitor.stop(); - } - - await monitor.start(); - }); - await createDefaultBusinessHourIfNotExists(); - - settings.watch( - 'Livechat_enable_business_hours', - async (value) => { - logger.debug({ msg: 'Starting business hour manager', enabled: value }); - if (value) { - await businessHourManager.startManager(); - return; - } - await businessHourManager.stopManager(); - }, - process.env.TEST_MODE === 'true' || process.env.TEST_MODE === 'api' - ? { - debounce: 10, - } - : undefined, - ); - - // Remove when accounts.onLogout is async - Accounts.onLogout(({ user }: { user?: IUser }) => { - if (!user?.roles?.includes('livechat-agent') || user?.roles?.includes('bot')) { - return; - } - - void setUserStatusLivechatIf(user._id, ILivechatAgentStatus.NOT_AVAILABLE, {}, { livechatStatusSystemModified: true }).catch(); - - // TODO: Shouldn't this notifier be the same as the one inside setUserStatusLivechatIf? - void notifyOnUserChange({ - id: user._id, - clientAction: 'updated', - diff: { - statusLivechat: ILivechatAgentStatus.NOT_AVAILABLE, - livechatStatusSystemModified: true, - }, - }); - }); -}); diff --git a/apps/meteor/app/logger/README.md b/apps/meteor/app/logger/README.md deleted file mode 100644 index b812f649c7cb7..0000000000000 --- a/apps/meteor/app/logger/README.md +++ /dev/null @@ -1,79 +0,0 @@ -# Logger - -Constructor -```javascript -new Logger(name, options); -``` - -options -* **sections**: An object of sections -* **methods**: An object of new methods - -Example -```javascript -const logger = new Logger('LDAP', { - sections: { - connection: 'Connection', - bind: 'Bind', - search: 'Search', - auth: 'Auth' - } -}); -``` - -Usage -```javascript -logger.info('connecting'); -// LDAP ➔ info connecting - -logger.connection.info('connecting'); -// LDAP ➔ Connection.info connecting -``` - -Sections have all avaliable methods methods, the default methods are: -```javascript -debug: - name: 'debug' - color: 'blue' - level: 2 -log: - name: 'info' - color: 'blue' - level: 1 -info: - name: 'info' - color: 'blue' - level: 1 -success: - name: 'info' - color: 'green' - level: 1 -warn: - name: 'warn' - color: 'magenta' - level: 1 -error: - name: 'error' - color: 'red' - level: 0 -``` - -The method **error** will always log the file and line of method execution - - -# LoggerManager (singleton) - -You can enable, disable, or set the log level for all logs here. -You can show the origin package and file/line from all logs here. - -```javascript -LoggerManager.enabled = false; -LoggerManager.showPackage = false; -LoggerManager.showFileAndLine = false; -LoggerManager.logLevel = 0; -``` - -The **LoggerManager** starts disabled, you should enable in some point, if you want to print all logs queued while disabled use: -```javascript -LoggerManager.enable(true); -``` diff --git a/apps/meteor/app/mailer/server/api.ts b/apps/meteor/app/mailer/server/api.ts deleted file mode 100644 index 8fc98f884cb5c..0000000000000 --- a/apps/meteor/app/mailer/server/api.ts +++ /dev/null @@ -1,225 +0,0 @@ -import { AppEvents, Apps } from '@rocket.chat/apps'; -import type { ISetting } from '@rocket.chat/core-typings'; -import { Settings } from '@rocket.chat/models'; -import { escapeHTML } from '@rocket.chat/string-helpers'; -import { validateEmail } from '@rocket.chat/tools'; -import juice from 'juice'; -import { Email } from 'meteor/email'; -import { Meteor } from 'meteor/meteor'; -import { stripHtml } from 'string-strip-html'; -import _ from 'underscore'; - -import { replaceVariables } from './replaceVariables'; -import { strLeft, strRightBack } from '../../../lib/utils/stringUtils'; -import { i18n } from '../../../server/lib/i18n'; -import { notifyOnSettingChanged } from '../../lib/server/lib/notifyListener'; -import { settings } from '../../settings/server'; - -let contentHeader: string | undefined; -let contentFooter: string | undefined; -let body: string | undefined; - -// define server language for email translations -// @TODO: change TAPi18n.__ function to use the server language by default -let lng = 'en'; -settings.watch('Language', (value) => { - lng = value || 'en'; -}); - -export const replacekey = (str: string, key: string, value = ''): string => - str.replace(new RegExp(`(\\[${key}\\]|__${key}__)`, 'igm'), value); - -export const translate = (str: string): string => replaceVariables(str, (_match, key) => i18n.t(key, { lng })); - -export const replace = (str: string, data: { [key: string]: unknown } = {}): string => { - if (!str) { - return ''; - } - - const options = { - Site_Name: settings.get('Site_Name'), - Site_URL: settings.get('Site_Url'), - Site_URL_Slash: settings.get('Site_Url')?.replace(/\/?$/, '/'), - ...(data.name - ? { - fname: strLeft(String(data.name), ' '), - lname: strRightBack(String(data.name), ' '), - } - : {}), - ...data, - }; - - return Object.entries(options).reduce((ret, [key, value]) => replacekey(ret, key, value), translate(str)); -}; - -const nonEscapeKeys = ['room_path']; - -export const replaceEscaped = (str: string, data: { [key: string]: unknown } = {}): string => { - const siteName = settings.get('Site_Name'); - const siteUrl = settings.get('Site_Url'); - - return replace(str, { - Site_Name: siteName ? escapeHTML(siteName) : undefined, - Site_Url: siteUrl ? escapeHTML(siteUrl) : undefined, - ...Object.entries(data).reduce<{ [key: string]: string }>((ret, [key, value]) => { - if (value !== undefined && value !== null) { - ret[key] = nonEscapeKeys.includes(key) ? String(value) : escapeHTML(String(value)); - } - return ret; - }, {}), - }); -}; - -export const wrap = (html: string, data: { [key: string]: unknown } = {}): string => { - if (settings.get('email_plain_text_only')) { - return replace(html, data); - } - - if (!body) { - throw new Error('error-email-body-not-initialized'); - } - - return replaceEscaped(body.replace('{{body}}', html), data); -}; - -export const inlinecss = (html: string): string => { - const css = settings.get('email_style'); - return css ? juice.inlineContent(html, css) : html; -}; - -export const getTemplate = (template: ISetting['_id'], fn: (html: string) => void, escape = true): void => { - let html = ''; - - settings.watch(template, (value) => { - html = value || ''; - fn(escape ? inlinecss(html) : html); - }); - - settings.watch('email_style', () => { - fn(escape ? inlinecss(html) : html); - }); -}; - -export const getTemplateWrapped = (template: ISetting['_id'], fn: (html: string) => void): void => { - let html = ''; - const wrapInlineCSS = _.debounce(() => fn(wrap(inlinecss(html))), 100); - - settings.watch('Email_Header', () => html && wrapInlineCSS()); - settings.watch('Email_Footer', () => html && wrapInlineCSS()); - settings.watch('email_style', () => html && wrapInlineCSS()); - settings.watch(template, (value) => { - html = value || ''; - return html && wrapInlineCSS(); - }); -}; - -settings.watchMultiple(['Email_Header', 'Email_Footer'], () => { - getTemplate( - 'Email_Header', - (value) => { - contentHeader = replace(value || ''); - body = inlinecss(`${contentHeader} {{body}} ${contentFooter}`); - }, - false, - ); - - getTemplate( - 'Email_Footer', - (value) => { - contentFooter = replace(value || ''); - body = inlinecss(`${contentHeader} {{body}} ${contentFooter}`); - }, - false, - ); - - body = inlinecss(`${contentHeader} {{body}} ${contentFooter}`); -}); - -export const checkAddressFormat = (adresses: string | string[]): boolean => - ([] as string[]).concat(adresses).every((address) => validateEmail(address)); - -export const sendNoWrap = async ({ - to, - from, - replyTo, - subject, - html, - text, - headers, -}: { - to: string | string[]; - from: string; - replyTo?: string; - subject: string; - html?: string; - text?: string; - headers?: string; -}) => { - if (!checkAddressFormat(to)) { - throw new Meteor.Error('invalid email'); - } - - if (!text) { - text = html ? stripHtml(html).result : undefined; - } - - if (settings.get('email_plain_text_only')) { - html = undefined; - } - - const value = await Settings.incrementValueById('Triggered_Emails_Count', 1, { returnDocument: 'after' }); - if (value) { - void notifyOnSettingChanged(value); - } - - const email = { to, from, replyTo, subject, html, text, headers }; - - const eventResult = await Apps.self?.triggerEvent(AppEvents.IPreEmailSent, { email }); - - setImmediate(() => Email.sendAsync(eventResult || email).catch((e) => console.error(e))); -}; - -export const send = async ({ - to, - from, - replyTo, - subject, - html, - text, - data, - headers, -}: { - to: string | string[]; - from: string; - replyTo?: string; - subject: string; - html?: string; - text?: string; - headers?: string; - data?: { [key: string]: unknown }; -}): Promise => - sendNoWrap({ - to, - from, - replyTo, - subject: replace(subject, data), - text: (text && replace(text, data)) || (html && stripHtml(replace(html, data)).result) || undefined, - html: html ? wrap(html, data) : undefined, - headers, - }); - -// Needed because of https://github.com/microsoft/TypeScript/issues/36931 -type Assert = (input: string, func: string) => asserts input; -export const checkAddressFormatAndThrow: Assert = (from: string, func: string): asserts from => { - if (checkAddressFormat(from)) { - return; - } - - throw new Meteor.Error('error-invalid-from-address', 'Invalid from address', { - function: func, - }); -}; - -export const getHeader = (): string | undefined => contentHeader; - -export const getFooter = (): string | undefined => contentFooter; diff --git a/apps/meteor/app/markdown/server/index.ts b/apps/meteor/app/markdown/server/index.ts deleted file mode 100644 index 4642c5fcbe9a1..0000000000000 --- a/apps/meteor/app/markdown/server/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Tracker } from 'meteor/tracker'; - -import { callbacks } from '../../../server/lib/callbacks'; -import { createMarkdownMessageRenderer, createMarkdownNotificationRenderer } from '../lib/markdown'; - -export { Markdown } from '../lib/markdown'; - -Meteor.startup(() => { - Tracker.autorun(() => { - const options = { - rootUrl: Meteor.absoluteUrl(), - }; - - const renderMessage = createMarkdownMessageRenderer(options); - callbacks.add('renderMessage', renderMessage, callbacks.priority.HIGH, 'markdown'); - }); - - const renderNotification = createMarkdownNotificationRenderer(); - callbacks.add('renderNotification', renderNotification, callbacks.priority.HIGH, 'filter-markdown'); -}); diff --git a/apps/meteor/app/mentions/server/index.ts b/apps/meteor/app/mentions/server/index.ts deleted file mode 100644 index b16d62185a64e..0000000000000 --- a/apps/meteor/app/mentions/server/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import './getMentionedTeamMembers'; -import './methods/getUserMentionsByChannel'; diff --git a/apps/meteor/app/message-mark-as-unread/server/index.ts b/apps/meteor/app/message-mark-as-unread/server/index.ts deleted file mode 100644 index d9ad8ff7357a0..0000000000000 --- a/apps/meteor/app/message-mark-as-unread/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './unreadMessages'; diff --git a/apps/meteor/app/message-pin/server/index.ts b/apps/meteor/app/message-pin/server/index.ts deleted file mode 100644 index 19a4497a35322..0000000000000 --- a/apps/meteor/app/message-pin/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './pinMessage'; diff --git a/apps/meteor/app/message-star/server/index.ts b/apps/meteor/app/message-star/server/index.ts deleted file mode 100644 index cff8c3818b0e4..0000000000000 --- a/apps/meteor/app/message-star/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './starMessage'; diff --git a/apps/meteor/app/meteor-accounts-saml/server/index.ts b/apps/meteor/app/meteor-accounts-saml/server/index.ts deleted file mode 100644 index 8da4b6cc9c9b9..0000000000000 --- a/apps/meteor/app/meteor-accounts-saml/server/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import './startup'; -import './loginHandler'; -import './listener'; -import './methods/samlLogout'; -import './methods/addSamlService'; diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts deleted file mode 100644 index 0316045acb5c8..0000000000000 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts +++ /dev/null @@ -1,369 +0,0 @@ -import type { SAMLConfiguration } from '@rocket.chat/core-typings'; -import { LoginServiceConfiguration } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { SAMLUtils } from './Utils'; -import { - defaultAuthnContextTemplate, - defaultAuthRequestTemplate, - defaultLogoutResponseTemplate, - defaultLogoutRequestTemplate, - defaultNameIDTemplate, - defaultIdentifierFormat, - defaultAuthnContext, - defaultMetadataTemplate, - defaultMetadataCertificateTemplate, -} from './constants'; -import { SystemLogger } from '../../../../server/lib/logger/system'; -import { - notifyOnLoginServiceConfigurationChanged, - notifyOnLoginServiceConfigurationChangedByService, -} from '../../../lib/server/lib/notifyListener'; -import { settings, settingsRegistry } from '../../../settings/server'; -import type { IServiceProviderOptions } from '../definition/IServiceProviderOptions'; - -const getSamlConfigs = function (service: string): SAMLConfiguration { - const configs: SAMLConfiguration = { - buttonLabelText: settings.get(`${service}_button_label_text`), - buttonLabelColor: settings.get(`${service}_button_label_color`), - buttonColor: settings.get(`${service}_button_color`), - clientConfig: { - provider: settings.get(`${service}_provider`), - }, - entryPoint: settings.get(`${service}_entry_point`), - idpSLORedirectURL: settings.get(`${service}_idp_slo_redirect_url`), - usernameNormalize: settings.get(`${service}_username_normalize`), - immutableProperty: settings.get(`${service}_immutable_property`), - generateUsername: settings.get(`${service}_generate_username`), - debug: settings.get(`${service}_debug`), - nameOverwrite: settings.get(`${service}_name_overwrite`), - mailOverwrite: settings.get(`${service}_mail_overwrite`), - issuer: settings.get(`${service}_issuer`), - logoutBehaviour: settings.get(`${service}_logout_behaviour`), - defaultUserRole: settings.get(`${service}_default_user_role`), - secret: { - privateKey: settings.get(`${service}_private_key`), - publicCert: settings.get(`${service}_public_cert`), - // People often overlook the instruction to remove the header and footer of the certificate on this specific setting, so let's do it for them. - cert: SAMLUtils.normalizeCert((settings.get(`${service}_cert`) as string) || ''), - algorithm: settings.get(`${service}_signature_algorithm`) || 'SHA1', - }, - signatureValidationType: settings.get(`${service}_signature_validation_type`), - validateLogoutRequestSignature: settings.get(`${service}_validate_logout_request_signature`), - validateLogoutResponseSignature: settings.get(`${service}_validate_logout_response_signature`), - userDataFieldMap: settings.get(`${service}_user_data_fieldmap`), - allowedClockDrift: settings.get(`${service}_allowed_clock_drift`), - customAuthnContext: defaultAuthnContext, - authnContextComparison: 'exact', - identifierFormat: defaultIdentifierFormat, - nameIDPolicyTemplate: defaultNameIDTemplate, - authnContextTemplate: defaultAuthnContextTemplate, - authRequestTemplate: defaultAuthRequestTemplate, - logoutResponseTemplate: defaultLogoutResponseTemplate, - logoutRequestTemplate: defaultLogoutRequestTemplate, - metadataCertificateTemplate: defaultMetadataCertificateTemplate, - metadataTemplate: defaultMetadataTemplate, - channelsAttributeUpdate: settings.get(`${service}_channels_update`), - includePrivateChannelsInUpdate: settings.get(`${service}_include_private_channels_update`), - }; - - SAMLUtils.events.emit('loadConfigs', service, configs); - return configs; -}; - -const isValidConfiguration = function (key: string, samlConfigs: SAMLConfiguration): boolean { - const needsCert = samlConfigs.signatureValidationType !== 'None'; - - if (!samlConfigs.secret.cert && needsCert) { - SAMLUtils.log({ msg: 'SAML Configuration missing Custom Certificate setting', key }); - return false; - } - - return true; -}; - -const configureSamlService = function (samlConfigs: Record): IServiceProviderOptions { - let privateCert = null; - let privateKey = null; - const rawCustomAuthnContext = samlConfigs.customAuthnContext; - const normalizedCustomAuthnContext = typeof rawCustomAuthnContext === 'string' ? rawCustomAuthnContext.trim() : rawCustomAuthnContext; - const customAuthnContext = typeof normalizedCustomAuthnContext === 'string' ? normalizedCustomAuthnContext : defaultAuthnContext; - - if (samlConfigs.secret.privateKey && samlConfigs.secret.publicCert) { - privateKey = samlConfigs.secret.privateKey; - privateCert = samlConfigs.secret.publicCert; - } else if (samlConfigs.secret.privateKey || samlConfigs.secret.publicCert) { - SAMLUtils.error('SAML Service: You must specify both cert and key files.'); - } - - SAMLUtils.updateGlobalSettings(samlConfigs); - - return { - provider: samlConfigs.clientConfig.provider, - entryPoint: samlConfigs.entryPoint, - idpSLORedirectURL: samlConfigs.idpSLORedirectURL, - issuer: samlConfigs.issuer, - cert: samlConfigs.secret.cert, - privateCert, - privateKey, - signatureAlgorithm: samlConfigs.secret.algorithm, - customAuthnContext, - authnContextComparison: samlConfigs.authnContextComparison, - defaultUserRole: samlConfigs.defaultUserRole, - allowedClockDrift: parseInt(samlConfigs.allowedClockDrift) || 0, - signatureValidationType: samlConfigs.signatureValidationType, - validateLogoutRequestSignature: samlConfigs.validateLogoutRequestSignature, - validateLogoutResponseSignature: samlConfigs.validateLogoutResponseSignature, - identifierFormat: samlConfigs.identifierFormat, - nameIDPolicyTemplate: samlConfigs.nameIDPolicyTemplate, - authnContextTemplate: samlConfigs.authnContextTemplate, - authRequestTemplate: samlConfigs.authRequestTemplate, - logoutResponseTemplate: samlConfigs.logoutResponseTemplate, - logoutRequestTemplate: samlConfigs.logoutRequestTemplate, - metadataCertificateTemplate: samlConfigs.metadataCertificateTemplate, - metadataTemplate: samlConfigs.metadataTemplate, - callbackUrl: Meteor.absoluteUrl(`_saml/validate/${samlConfigs.clientConfig.provider}`), - }; -}; - -export const loadSamlServiceProviders = async function (): Promise { - const serviceName = 'saml'; - const services = settings.getByRegexp(/^(SAML_Custom_)[a-z]+$/i); - - if (!services) { - return SAMLUtils.setServiceProvidersList([]); - } - - const providers = ( - await Promise.all( - services.map(async ([key, value]) => { - if (value === true) { - const samlConfigs = getSamlConfigs(key); - - if (isValidConfiguration(key, samlConfigs)) { - SAMLUtils.log({ msg: 'Loading SAML Provider', key }); - await LoginServiceConfiguration.createOrUpdateService(serviceName, samlConfigs); - void notifyOnLoginServiceConfigurationChangedByService(serviceName); - return configureSamlService(samlConfigs); - } - - SAMLUtils.logger?.warn({ msg: 'SAML Provider not loaded due to invalid configuration', key }); - } - - const service = await LoginServiceConfiguration.findOneByService(serviceName, { projection: { _id: 1 } }); - if (!service?._id) { - return false; - } - - const { deletedCount } = await LoginServiceConfiguration.removeService(service._id); - if (!deletedCount) { - return false; - } - - void notifyOnLoginServiceConfigurationChanged({ _id: service._id }, 'removed'); - - return false; - }), - ) - ).filter((e) => e) as IServiceProviderOptions[]; - - SAMLUtils.setServiceProvidersList(providers); -}; - -export const addSamlService = function (name: string): void { - SystemLogger.warn({ - msg: 'Adding SAML service is deprecated', - serviceName: name, - }); -}; - -export const addSettings = async function (name: string): Promise { - await settingsRegistry.addGroup('SAML', async function () { - await this.with( - { - tab: 'SAML_Connection', - }, - async function () { - await this.add(`SAML_Custom_${name}`, false, { - type: 'boolean', - i18nLabel: 'Accounts_OAuth_Custom_Enable', - public: true, - }); - await this.add(`SAML_Custom_${name}_provider`, 'provider-name', { - type: 'string', - i18nLabel: 'SAML_Custom_Provider', - public: true, - }); - await this.add(`SAML_Custom_${name}_entry_point`, 'https://example.com/simplesaml/saml2/idp/SSOService.php', { - type: 'string', - i18nLabel: 'SAML_Custom_Entry_point', - }); - await this.add(`SAML_Custom_${name}_idp_slo_redirect_url`, 'https://example.com/simplesaml/saml2/idp/SingleLogoutService.php', { - type: 'string', - i18nLabel: 'SAML_Custom_IDP_SLO_Redirect_URL', - public: true, - }); - await this.add(`SAML_Custom_${name}_issuer`, 'https://your-rocket-chat/_saml/metadata/provider-name', { - type: 'string', - i18nLabel: 'SAML_Custom_Issuer', - }); - await this.add(`SAML_Custom_${name}_debug`, false, { - type: 'boolean', - i18nLabel: 'SAML_Custom_Debug', - }); - - await this.section('SAML_Section_2_Certificate', async function () { - await this.add(`SAML_Custom_${name}_cert`, '', { - type: 'string', - i18nLabel: 'SAML_Custom_Cert', - multiline: true, - secret: true, - }); - await this.add(`SAML_Custom_${name}_public_cert`, '', { - type: 'string', - multiline: true, - i18nLabel: 'SAML_Custom_Public_Cert', - }); - await this.add(`SAML_Custom_${name}_signature_validation_type`, 'All', { - type: 'select', - values: [ - { key: 'None', i18nLabel: 'SAML_Custom_signature_validation_none' }, - { key: 'Response', i18nLabel: 'SAML_Custom_signature_validation_response' }, - { key: 'Assertion', i18nLabel: 'SAML_Custom_signature_validation_assertion' }, - { key: 'Either', i18nLabel: 'SAML_Custom_signature_validation_either' }, - { key: 'All', i18nLabel: 'SAML_Custom_signature_validation_all' }, - ], - i18nLabel: 'SAML_Custom_signature_validation_type', - i18nDescription: 'SAML_Custom_signature_validation_type_description', - }); - await this.add(`SAML_Custom_${name}_validate_logout_request_signature`, true, { - type: 'boolean', - i18nLabel: 'SAML_Custom_validate_logout_request_signature', - }); - await this.add(`SAML_Custom_${name}_validate_logout_response_signature`, true, { - type: 'boolean', - i18nLabel: 'SAML_Custom_validate_logout_response_signature', - }); - await this.add(`SAML_Custom_${name}_private_key`, '', { - type: 'string', - multiline: true, - i18nLabel: 'SAML_Custom_Private_Key', - secret: true, - }); - await this.add(`SAML_Custom_${name}_signature_algorithm`, 'SHA1', { - type: 'select', - values: [ - { key: 'SHA1', i18nLabel: 'SHA1' }, - { key: 'SHA256', i18nLabel: 'SHA256' }, - { key: 'SHA384', i18nLabel: 'SHA384' }, - { key: 'SHA512', i18nLabel: 'SHA512' }, - ], - i18nLabel: 'SAML_Custom_Signature_Algorithm', - i18nDescription: 'SAML_Custom_Signature_Algorithm_description', - secret: true, - }); - }); - }, - ); - - await this.with( - { - tab: 'SAML_General', - }, - async function () { - await this.section('SAML_Section_1_User_Interface', async function () { - await this.add(`SAML_Custom_${name}_button_label_text`, 'SAML', { - type: 'string', - i18nLabel: 'Accounts_OAuth_Custom_Button_Label_Text', - }); - await this.add(`SAML_Custom_${name}_button_label_color`, '#FFFFFF', { - type: 'string', - i18nLabel: 'Accounts_OAuth_Custom_Button_Label_Color', - alert: 'OAuth_button_colors_alert', - }); - await this.add(`SAML_Custom_${name}_button_color`, '#1d74f5', { - type: 'string', - i18nLabel: 'Accounts_OAuth_Custom_Button_Color', - alert: 'OAuth_button_colors_alert', - }); - }); - - await this.section('SAML_Section_3_Behavior', async function () { - // Settings to customize behavior - await this.add(`SAML_Custom_${name}_generate_username`, false, { - type: 'boolean', - i18nLabel: 'SAML_Custom_Generate_Username', - }); - await this.add(`SAML_Custom_${name}_username_normalize`, 'None', { - type: 'select', - values: [ - { key: 'None', i18nLabel: 'SAML_Custom_Username_Normalize_None' }, - { key: 'Lowercase', i18nLabel: 'SAML_Custom_Username_Normalize_Lowercase' }, - ], - i18nLabel: 'SAML_Custom_Username_Normalize', - }); - await this.add(`SAML_Custom_${name}_immutable_property`, 'EMail', { - type: 'select', - values: [ - { key: 'Username', i18nLabel: 'SAML_Custom_Immutable_Property_Username' }, - { key: 'EMail', i18nLabel: 'SAML_Custom_Immutable_Property_EMail' }, - ], - i18nLabel: 'SAML_Custom_Immutable_Property', - }); - await this.add(`SAML_Custom_${name}_name_overwrite`, false, { - type: 'boolean', - i18nLabel: 'SAML_Custom_name_overwrite', - }); - await this.add(`SAML_Custom_${name}_mail_overwrite`, false, { - type: 'boolean', - i18nLabel: 'SAML_Custom_mail_overwrite', - }); - await this.add(`SAML_Custom_${name}_logout_behaviour`, 'SAML', { - type: 'select', - values: [ - { key: 'SAML', i18nLabel: 'SAML_Custom_Logout_Behaviour_Terminate_SAML_Session' }, - { key: 'Local', i18nLabel: 'SAML_Custom_Logout_Behaviour_End_Only_RocketChat' }, - ], - i18nLabel: 'SAML_Custom_Logout_Behaviour', - public: true, - }); - await this.add(`SAML_Custom_${name}_channels_update`, false, { - type: 'boolean', - i18nLabel: 'SAML_Custom_channels_update', - i18nDescription: 'SAML_Custom_channels_update_description', - }); - await this.add(`SAML_Custom_${name}_include_private_channels_update`, false, { - type: 'boolean', - i18nLabel: 'SAML_Custom_include_private_channels_update', - i18nDescription: 'SAML_Custom_include_private_channels_update_description', - }); - - await this.add(`SAML_Custom_${name}_default_user_role`, 'user', { - type: 'string', - i18nLabel: 'SAML_Default_User_Role', - i18nDescription: 'SAML_Default_User_Role_Description', - }); - - await this.add(`SAML_Custom_${name}_allowed_clock_drift`, 0, { - type: 'int', - invalidValue: 0, - i18nLabel: 'SAML_Allowed_Clock_Drift', - i18nDescription: 'SAML_Allowed_Clock_Drift_Description', - }); - }); - - await this.section('SAML_Section_5_Mapping', async function () { - // Data Mapping Settings - await this.add(`SAML_Custom_${name}_user_data_fieldmap`, '{"username":"username", "email":"email", "name": "cn"}', { - type: 'string', - i18nLabel: 'SAML_Custom_user_data_fieldmap', - i18nDescription: 'SAML_Custom_user_data_fieldmap_description', - multiline: true, - }); - }); - }, - ); - - SAMLUtils.events.emit('addSettings', name); - }); -}; diff --git a/apps/meteor/app/meteor-accounts-saml/server/loginHandler.ts b/apps/meteor/app/meteor-accounts-saml/server/loginHandler.ts deleted file mode 100644 index 8b2059489931c..0000000000000 --- a/apps/meteor/app/meteor-accounts-saml/server/loginHandler.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { CredentialTokens } from '@rocket.chat/models'; -import { Accounts } from 'meteor/accounts-base'; -import { Meteor } from 'meteor/meteor'; - -import { SAML } from './lib/SAML'; -import { SAMLUtils } from './lib/Utils'; -import { i18n } from '../../../server/lib/i18n'; -import { SystemLogger } from '../../../server/lib/logger/system'; - -const makeError = (message: string): Record => ({ - type: 'saml', - error: new Meteor.Error(Accounts.LoginCancelledError.numericError, message), -}); - -Accounts.registerLoginHandler('saml', async (loginRequest) => { - if ( - !loginRequest.saml || - !loginRequest.credentialToken || - typeof loginRequest.credentialToken !== 'string' || - SAMLUtils.serviceProviders.length === 0 - ) { - return undefined; - } - - const loginResult = await SAML.retrieveCredential(loginRequest.credentialToken); - - await CredentialTokens.removeById(loginRequest.credentialToken); - SAMLUtils.log({ msg: 'RESULT', loginResult }); - - if (!loginResult) { - return makeError('No matching login attempt found'); - } - - if (!loginResult.profile) { - return makeError('No profile information found'); - } - - try { - const userObject = SAMLUtils.mapProfileToUserObject(loginResult.profile); - const updatedUser = await SAML.insertOrUpdateSAMLUser(userObject); - SAMLUtils.events.emit('updateCustomFields', loginResult, updatedUser); - - return updatedUser; - } catch (err: any) { - SystemLogger.error({ err }); - - let message = err.toString(); - let errorCode = ''; - - if (err instanceof Meteor.Error) { - errorCode = (err.error || err.message) as string; - } else if (err instanceof Error) { - errorCode = err.message; - } - - if (errorCode) { - const localizedMessage = i18n.t(errorCode); - if (localizedMessage && localizedMessage !== errorCode) { - message = localizedMessage; - } - } - - return makeError(message); - } -}); diff --git a/apps/meteor/app/meteor-accounts-saml/server/startup.ts b/apps/meteor/app/meteor-accounts-saml/server/startup.ts deleted file mode 100644 index 721edce08d463..0000000000000 --- a/apps/meteor/app/meteor-accounts-saml/server/startup.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Logger } from '@rocket.chat/logger'; -import debounce from 'lodash.debounce'; -import { Meteor } from 'meteor/meteor'; - -import { SAMLUtils } from './lib/Utils'; -import { loadSamlServiceProviders, addSettings } from './lib/settings'; -import { settings } from '../../settings/server'; - -const logger = new Logger('steffo:meteor-accounts-saml'); -SAMLUtils.setLoggerInstance(logger); - -Meteor.startup(async () => { - await addSettings('Default'); -}); - -settings.watchByRegex(/^SAML_.+/, debounce(loadSamlServiceProviders, 2000)); diff --git a/apps/meteor/app/nextcloud/server/addWebdavServer.ts b/apps/meteor/app/nextcloud/server/addWebdavServer.ts deleted file mode 100644 index 6d3ea80f6d178..0000000000000 --- a/apps/meteor/app/nextcloud/server/addWebdavServer.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Meteor } from 'meteor/meteor'; - -import { callbacks } from '../../../server/lib/callbacks'; -import { SystemLogger } from '../../../server/lib/logger/system'; -import { settings } from '../../settings/server'; -import { addWebdavAccountByToken } from '../../webdav/server/methods/addWebdavAccount'; - -Meteor.startup(() => { - settings.watch('Webdav_Integration_Enabled', (value) => { - if (value) { - return callbacks.add( - 'afterValidateLogin', - async (login) => { - const { user } = login; - const { services } = user; - if (!services?.nextcloud) { - return; - } - const token = { - token_type: 'Bearer', - access_token: services.nextcloud.accessToken, - refresh_token: services.nextcloud.refreshToken, - }; - const data = { - name: 'Nextcloud', - serverURL: `${services.nextcloud.serverURL}/remote.php/webdav/`, - token, - }; - try { - await addWebdavAccountByToken(user._id, data); - } catch (err) { - SystemLogger.error({ err }); - } - }, - callbacks.priority.MEDIUM, - 'add-webdav-server', - ); - } - callbacks.remove('afterValidateLogin', 'add-webdav-server'); - }); -}); diff --git a/apps/meteor/app/nextcloud/server/index.ts b/apps/meteor/app/nextcloud/server/index.ts deleted file mode 100644 index 732ad0a2f4aa0..0000000000000 --- a/apps/meteor/app/nextcloud/server/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import './lib'; -import './addWebdavServer'; diff --git a/apps/meteor/app/nextcloud/server/lib.ts b/apps/meteor/app/nextcloud/server/lib.ts deleted file mode 100644 index 28cf52da57a17..0000000000000 --- a/apps/meteor/app/nextcloud/server/lib.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { OauthConfig } from '@rocket.chat/core-typings'; -import { Meteor } from 'meteor/meteor'; -import _ from 'underscore'; - -import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; -import { settings } from '../../settings/server'; - -const config: OauthConfig = { - serverURL: '', - tokenPath: '/index.php/apps/oauth2/api/v1/token', - tokenSentVia: 'header', - authorizePath: '/index.php/apps/oauth2/authorize', - identityPath: '/ocs/v2.php/cloud/user?format=json', - scope: 'openid', - addAutopublishFields: { - forLoggedInUser: ['services.nextcloud'], - forOtherUsers: ['services.nextcloud.name'], - }, -}; - -const Nextcloud = new CustomOAuth('nextcloud', config); - -const fillServerURL = _.debounce((): void => { - const nextcloudURL = settings.get('Accounts_OAuth_Nextcloud_URL'); - if (!nextcloudURL) { - if (nextcloudURL === undefined) { - return fillServerURL(); - } - return; - } - config.serverURL = nextcloudURL.trim().replace(/\/*$/, ''); - return Nextcloud.configure(config); -}, 1000); - -Meteor.startup(() => { - settings.watch('Accounts_OAuth_Nextcloud_URL', () => fillServerURL()); -}); diff --git a/apps/meteor/app/oauth2-server-config/.gitignore b/apps/meteor/app/oauth2-server-config/.gitignore deleted file mode 100644 index 677a6fc26373d..0000000000000 --- a/apps/meteor/app/oauth2-server-config/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.build* diff --git a/apps/meteor/app/oauth2-server-config/server/index.ts b/apps/meteor/app/oauth2-server-config/server/index.ts deleted file mode 100644 index 3914cac5eaadc..0000000000000 --- a/apps/meteor/app/oauth2-server-config/server/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import './oauth/oauth2-server'; -import './admin/functions/addOAuthApp'; -import './admin/methods/updateOAuthApp'; -import './admin/methods/deleteOAuthApp'; diff --git a/apps/meteor/app/push-notifications/server/index.ts b/apps/meteor/app/push-notifications/server/index.ts deleted file mode 100644 index c42819a559039..0000000000000 --- a/apps/meteor/app/push-notifications/server/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import './methods/saveNotificationSettings'; -import PushNotification from './lib/PushNotification'; - -export { PushNotification }; diff --git a/apps/meteor/app/push/server/index.ts b/apps/meteor/app/push/server/index.ts deleted file mode 100644 index 4cfcaa2da26f7..0000000000000 --- a/apps/meteor/app/push/server/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import './methods'; - -export { Push } from './push'; diff --git a/apps/meteor/app/push/server/methods.ts b/apps/meteor/app/push/server/methods.ts deleted file mode 100644 index 43514d0f14735..0000000000000 --- a/apps/meteor/app/push/server/methods.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { Push } from '@rocket.chat/core-services'; -import type { IPushToken } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { PushToken } from '@rocket.chat/models'; -import { Accounts } from 'meteor/accounts-base'; -import { Match, check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { logger } from './logger'; -import { _matchToken } from './push'; -import { methodDeprecationLogger } from '../../lib/server/lib/deprecationWarningLogger'; - -type PushUpdateOptions = { - id?: string; - token: IPushToken['token']; - authToken: string; - appName: string; - userId: string | null; - metadata?: Record; -}; -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - 'raix:push-update'(options: PushUpdateOptions): Promise>; - 'raix:push-setuser'(options: { id: string; userId: string }): Promise; - } -} - -Meteor.methods({ - async 'raix:push-update'(options) { - methodDeprecationLogger.method('raix:push-update', '9.0.0', '/v1/push.token'); - logger.debug({ msg: 'Got push token from app', options }); - - check(options, { - id: Match.Optional(String), - token: _matchToken, - authToken: String, - appName: String, - userId: Match.OneOf(String, null), - metadata: Match.Optional(Object), - }); - - // The if user id is set then user id should match on client and connection - if (!this.userId || (options.userId && options.userId !== this.userId)) { - throw new Meteor.Error(403, 'Forbidden access'); - } - - // Retain old behavior: if id is not specified but userId is explicitly set, then update the user's first token - if (!options.id && options.userId) { - const firstDoc = await PushToken.findFirstByUserId(options.userId, { projection: { _id: 1 } }); - if (firstDoc) { - options.id = firstDoc._id; - } - } - - const authToken = Accounts._hashLoginToken(options.authToken); - - return Push.registerPushToken({ - ...(options.id && { _id: options.id }), - token: options.token, - appName: options.appName, - authToken, - userId: this.userId, - ...(options.metadata && { metadata: options.metadata }), - }); - }, - // Deprecated - async 'raix:push-setuser'(id) { - check(id, String); - if (!this.userId) { - throw new Meteor.Error(403, 'Forbidden access'); - } - - logger.debug({ msg: 'Setting userId for app', userId: this.userId, appId: id }); - const found = await PushToken.updateOne({ _id: id }, { $set: { userId: this.userId } }); - - return !!found; - }, -}); diff --git a/apps/meteor/app/push/server/push.ts b/apps/meteor/app/push/server/push.ts deleted file mode 100644 index 63b33832c19ec..0000000000000 --- a/apps/meteor/app/push/server/push.ts +++ /dev/null @@ -1,514 +0,0 @@ -import type { IPushToken, RequiredField, Optional, IPushNotificationConfig } from '@rocket.chat/core-typings'; -import { PushToken } from '@rocket.chat/models'; -import { ajv } from '@rocket.chat/rest-typings'; -import type { ExtendedFetchOptions } from '@rocket.chat/server-fetch'; -import { serverFetch as fetch } from '@rocket.chat/server-fetch'; -import { pick, truncateString } from '@rocket.chat/tools'; -import { JWT } from 'google-auth-library'; -import { Match, check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { initAPN, sendAPN } from './apn'; -import type { PushOptions, PendingPushNotification } from './definition'; -import { sendFCM } from './fcm'; -import { logger } from './logger'; -import { settings } from '../../settings/server'; - -export const _matchToken = Match.OneOf({ apn: String }, { gcm: String }); - -const PUSH_TITLE_LIMIT = 65; -const PUSH_MESSAGE_BODY_LIMIT = 240; -const PUSH_GATEWAY_MAX_RETRIES = 5; - -type FCMCredentials = { - type: string; - project_id: string; - private_key_id: string; - private_key: string; - client_email: string; - client_id: string; - auth_uri: string; - token_uri: string; - auth_provider_x509_cert_url: string; - client_x509_cert_url: string; - universe_domain: string; -}; - -export const FCMCredentialsValidationSchema = { - type: 'object', - properties: { - type: { - type: 'string', - }, - project_id: { - type: 'string', - }, - private_key_id: { - type: 'string', - }, - private_key: { - type: 'string', - }, - client_email: { - type: 'string', - }, - client_id: { - type: 'string', - }, - auth_uri: { - type: 'string', - }, - token_uri: { - type: 'string', - }, - auth_provider_x509_cert_url: { - type: 'string', - }, - client_x509_cert_url: { - type: 'string', - }, - universe_domain: { - type: 'string', - }, - }, - required: ['client_email', 'project_id', 'private_key_id', 'private_key'], -}; - -export const isFCMCredentials = ajv.compile(FCMCredentialsValidationSchema); - -// This type must match the type defined in the push gateway -type GatewayNotification = { - uniqueId: string; - from?: string; - title?: string; - text?: string; - badge?: number; - sound?: string; - notId?: number; - contentAvailable?: 1 | 0; - forceStart?: number; - topic?: string; - apn?: { - from?: string; - title?: string; - text?: string; - badge?: number; - sound?: string; - notId?: number; - category?: string; - expirationSeconds?: number; - }; - gcm?: { - from?: string; - title?: string; - text?: string; - image?: string; - style?: string; - summaryText?: string; - picture?: string; - badge?: number; - sound?: string; - notId?: number; - actions?: any[]; - }; - query?: { - userId: any; - }; - token?: IPushToken['token']; - tokens?: IPushToken['token'][]; - payload?: Record; - delayUntil?: Date; - createdAt: Date; - createdBy?: string; -}; - -export type NativeNotificationParameters = { - userTokens: string | string[]; - notification: PendingPushNotification; - _removeToken: (token: string) => void; - options: RequiredField; -}; - -class PushClass { - options: PushOptions = { - uniqueId: '', - }; - - isConfigured = false; - - public configure(options: PushOptions): void { - this.options = { - sendTimeout: 60000, // Timeout period for notification send - ...options, - }; - // https://npmjs.org/package/apn - - // After requesting the certificate from Apple, export your private key as - // a .p12 file anddownload the .cer file from the iOS Provisioning Portal. - - // gateway.push.apple.com, port 2195 - // gateway.sandbox.push.apple.com, port 2195 - - // Now, in the directory containing cert.cer and key.p12 execute the - // following commands to generate your .pem files: - // $ openssl x509 -in cert.cer -inform DER -outform PEM -out cert.pem - // $ openssl pkcs12 -in key.p12 -out key.pem -nodes - - // Block multiple calls - if (this.isConfigured) { - throw new Error('Configure should not be called more than once!'); - } - - this.isConfigured = true; - - logger.debug({ msg: 'Configure', options: this.options }); - - if (this.options.apn) { - initAPN({ options: this.options as RequiredField, absoluteUrl: Meteor.absoluteUrl() }); - } - } - - private removeToken(token: string): void { - void PushToken.removeOrUnsetByTokenString(token).catch((err) => { - logger.error({ msg: 'Failed to remove push token', err }); - }); - } - - private shouldUseGateway(): boolean { - return Boolean(!!this.options.gateways && settings.get('Register_Server') && settings.get('Cloud_Service_Agree_PrivacyTerms')); - } - - private async sendNotificationNative( - app: IPushToken, - notification: PendingPushNotification, - countApn: string[], - countGcm: string[], - ): Promise { - logger.debug({ msg: 'send to token', token: app.token }); - - if ('apn' in app.token && app.token.apn) { - const userToken = notification.useVoipToken ? app.voipToken : app.token.apn; - const topic = notification.useVoipToken ? `${app.appName}.voip` : app.appName; - - // Send to APN - if (this.options.apn && userToken) { - countApn.push(app._id); - sendAPN({ userToken, notification: { topic, ...notification }, _removeToken: this.removeToken }); - } - } else if ('gcm' in app.token && app.token.gcm) { - countGcm.push(app._id); - - // override this.options.gcm.apiKey with the oauth2 token - const { projectId, token } = await this.getNativeNotificationAuthorizationCredentials(); - const sendGCMOptions = { - ...this.options, - gcm: { - ...this.options.gcm, - apiKey: token, - projectNumber: projectId, - }, - }; - - sendFCM({ - userTokens: app.token.gcm, - notification, - _removeToken: this.removeToken, - options: sendGCMOptions as RequiredField, - }); - } else { - throw new Error('send got a faulty query'); - } - } - - private async getNativeNotificationAuthorizationCredentials(): Promise<{ token: string; projectId: string }> { - const credentialsString = settings.get('Push_google_api_credentials'); - if (!credentialsString.trim()) { - throw new Error('Push_google_api_credentials is not set'); - } - - try { - const credentials = JSON.parse(credentialsString); - if (!isFCMCredentials(credentials)) { - throw new Error('Push_google_api_credentials is not in the correct format'); - } - - const client = new JWT({ - email: credentials.client_email, - key: credentials.private_key, - keyId: credentials.private_key_id, - scopes: 'https://www.googleapis.com/auth/firebase.messaging', - }); - - await client.authorize(); - - return { - token: client.credentials.access_token as string, - projectId: credentials.project_id, - }; - } catch (error) { - logger.error({ msg: 'Error getting FCM token', err: error }); - throw new Error('Error getting FCM token'); - } - } - - private async sendGatewayPush( - gateway: string, - service: 'apn' | 'gcm', - token: string, - notification: Optional, - retryOptions: { tries: number; maxRetries: number } = { tries: 0, maxRetries: PUSH_GATEWAY_MAX_RETRIES }, - ): Promise { - notification.uniqueId = this.options.uniqueId; - - const options = { - // SECURITY: the URL is a default hardcoded value or an envvar/setting set by an admin. It's safe to disable this check. - ignoreSsrfValidation: true, - method: 'POST', - body: { - token, - options: notification, - }, - ...(token && this.options.getAuthorization && { headers: { Authorization: await this.options.getAuthorization() } }), - } as ExtendedFetchOptions; - - const result = await fetch(`${gateway}/push/${service}/send`, options); - const response = await result.text(); - - if (result.status === 406) { - logger.info({ msg: 'removing push token', token }); - this.removeToken(token); - return; - } - - if (result.status === 422) { - logger.info({ msg: 'gateway rejected push notification. not retrying.', response }); - return; - } - - if (result.status === 401) { - logger.warn({ msg: 'authorization failed when sending push to gateway. not retrying.', response }); - return; - } - - if (result.ok) { - return; - } - - const { tries, maxRetries } = retryOptions; - - logger.error({ msg: 'Error sending push to gateway', tries, err: response }); - - if (tries < maxRetries) { - // [1, 2, 4, 8, 16] minutes (total 31) - const ms = 60000 * Math.pow(2, tries); - - logger.log({ msg: 'Retrying push to gateway', tries: tries + 1, in: ms }); - - setTimeout(() => this.sendGatewayPush(gateway, service, token, notification, { tries: tries + 1, maxRetries }), ms); - } - } - - private getGatewayNotificationData(notification: PendingPushNotification): Omit { - // Gateway currently accepts every attribute from the PendingPushNotification type, except for the priority and useVoipToken - // If new attributes are added to the PendingPushNotification type, they'll need to be removed here as well. - const { priority: _priority, useVoipToken: _useVoipToken, ...notifData } = notification; - - return { - ...notifData, - }; - } - - private async sendNotificationGateway( - app: IPushToken, - notification: PendingPushNotification, - countApn: string[], - countGcm: string[], - ): Promise { - if (!this.options.gateways) { - return; - } - - const gatewayNotification = this.getGatewayNotificationData(notification); - const retryOptions = { - tries: 0, - maxRetries: notification.useVoipToken ? 0 : PUSH_GATEWAY_MAX_RETRIES, - }; - - for (const gateway of this.options.gateways) { - logger.debug({ msg: 'send to token', token: app.token }); - - if ('apn' in app.token && app.token.apn) { - const token = notification.useVoipToken ? app.voipToken : app.token.apn; - const topic = notification.useVoipToken ? `${app.appName}.voip` : app.appName; - - if (token) { - countApn.push(app._id); - return this.sendGatewayPush(gateway, 'apn', token, { topic, ...gatewayNotification }, retryOptions); - } - } - - if ('gcm' in app.token && app.token.gcm) { - countGcm.push(app._id); - return this.sendGatewayPush(gateway, 'gcm', app.token.gcm, gatewayNotification, retryOptions); - } - } - } - - private async sendNotification( - notification: PendingPushNotification, - options: { skipTokenId?: IPushToken['_id'] } = {}, - ): Promise<{ apn: string[]; gcm: string[] }> { - logger.debug({ msg: 'Sending notification', notification }); - - const countApn: string[] = []; - const countGcm: string[] = []; - - if (notification.from && notification.from !== String(notification.from)) { - throw new Error('Push.send: option "from" not a string'); - } - if (notification.title && notification.title !== String(notification.title)) { - throw new Error('Push.send: option "title" not a string'); - } - if (notification.text && notification.text !== String(notification.text)) { - throw new Error('Push.send: option "text" not a string'); - } - - logger.debug({ - msg: 'send message to userId', - title: notification.title, - userId: notification.userId, - }); - - const appTokens = options.skipTokenId - ? PushToken.findTokensByUserIdExceptId(notification.userId, options.skipTokenId) - : PushToken.findAllTokensByUserId(notification.userId); - - for await (const app of appTokens) { - logger.debug({ msg: 'send to token', token: app.token }); - - if (this.shouldUseGateway()) { - await this.sendNotificationGateway(app, notification, countApn, countGcm); - continue; - } - - await this.sendNotificationNative(app, notification, countApn, countGcm); - } - - if (settings.get('Log_Level') === '2') { - logger.debug({ - msg: 'Sent message to apps', - title: notification.title, - iosApps: countApn.length, - androidApps: countGcm.length, - }); - - // Add some verbosity about the send result, making sure the developer - // understands what just happened. - if (!countApn.length && !countGcm.length) { - if ((await PushToken.estimatedDocumentCount()) === 0) { - logger.debug('GUIDE: The "AppsTokens" is empty - No clients have registered on the server yet...'); - } - } else if (!countApn.length) { - if ((await PushToken.countApnTokens()) === 0) { - logger.debug('GUIDE: The "AppsTokens" - No APN clients have registered on the server yet...'); - } - } else if (!countGcm.length) { - if ((await PushToken.countGcmTokens()) === 0) { - logger.debug('GUIDE: The "AppsTokens" - No GCM clients have registered on the server yet...'); - } - } - } - - return { - apn: countApn, - gcm: countGcm, - }; - } - - // This is a general function to validate that the data added to notifications - // is in the correct format. If not this function will throw errors - private _validateDocument(notification: PendingPushNotification): void { - // Check the general notification - check(notification, { - from: Match.Optional(String), - title: Match.Optional(String), - text: Match.Optional(String), - sent: Match.Optional(Boolean), - sending: Match.Optional(Match.Integer), - badge: Match.Optional(Match.Integer), - sound: Match.Optional(String), - notId: Match.Optional(Match.Integer), - contentAvailable: Match.Optional(Match.Integer), - apn: Match.Optional({ - category: Match.Optional(String), - expirationSeconds: Match.Optional(Match.Integer), - }), - gcm: Match.Optional({ - image: Match.Optional(String), - style: Match.Optional(String), - }), - userId: String, - payload: Match.Optional(Object), - createdAt: Date, - createdBy: Match.OneOf(String, null), - priority: Match.Optional(Match.Integer), - useVoipToken: Match.Optional(Boolean), - }); - - if (!notification.userId) { - throw new Error('No userId found'); - } - } - - private hasApnOptions(options: IPushNotificationConfig): options is RequiredField { - return Match.test(options.apn, Object); - } - - private hasGcmOptions(options: IPushNotificationConfig): options is RequiredField { - return Match.test(options.gcm, Object); - } - - public async send(options: IPushNotificationConfig) { - const notification: PendingPushNotification = { - createdAt: new Date(), - // createdBy is no longer used, but the gateway still expects it - createdBy: '', - sent: false, - sending: 0, - ...(options.title && { title: truncateString(options.title, PUSH_TITLE_LIMIT) }), - ...(options.text && { text: truncateString(options.text, PUSH_MESSAGE_BODY_LIMIT) }), - - ...pick(options, 'from', 'userId', 'payload', 'badge', 'sound', 'notId', 'priority', 'useVoipToken'), - - ...(this.hasApnOptions(options) - ? { - apn: { - ...pick(options.apn, 'category', 'expirationSeconds'), - }, - } - : {}), - ...(this.hasGcmOptions(options) - ? { - gcm: { - ...pick(options.gcm, 'image', 'style'), - }, - } - : {}), - }; - - // Validate the notification - this._validateDocument(notification); - - try { - await this.sendNotification(notification, { skipTokenId: options.skipTokenId }); - } catch (error: any) { - logger.debug({ - msg: 'Could not send notification to user', - userId: notification.userId, - err: error, - }); - } - } -} - -export const Push = new PushClass(); diff --git a/apps/meteor/app/reactions/server/index.ts b/apps/meteor/app/reactions/server/index.ts deleted file mode 100644 index 8c5644023dbc8..0000000000000 --- a/apps/meteor/app/reactions/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './setReaction'; diff --git a/apps/meteor/app/retention-policy/README.md b/apps/meteor/app/retention-policy/README.md deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/apps/meteor/app/search/server/events/index.ts b/apps/meteor/app/search/server/events/index.ts deleted file mode 100644 index 30ad122312772..0000000000000 --- a/apps/meteor/app/search/server/events/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { IMessage } from '@rocket.chat/core-typings'; - -import { callbacks } from '../../../../server/lib/callbacks'; -import { settings } from '../../../settings/server'; -import { searchProviderService } from '../service'; -import { EventService } from './EventService'; - -export const searchEventService = new EventService(); - -/** - * Listen to message changes via Hooks - */ -function afterSaveMessage(m: IMessage) { - searchEventService.promoteEvent('message.save', m._id, m); - return m; -} - -function afterDeleteMessage(m: IMessage) { - searchEventService.promoteEvent('message.delete', m._id); - return m; -} - -settings.watch('Search.Provider', () => { - if (searchProviderService.activeProvider?.on) { - callbacks.add('afterSaveMessage', afterSaveMessage, callbacks.priority.MEDIUM, 'search-events'); - callbacks.add('afterDeleteMessage', afterDeleteMessage, callbacks.priority.MEDIUM, 'search-events-delete'); - return; - } - - callbacks.remove('afterSaveMessage', 'search-events'); - callbacks.remove('afterDeleteMessage', 'search-events-delete'); -}); diff --git a/apps/meteor/app/search/server/index.ts b/apps/meteor/app/search/server/index.ts deleted file mode 100644 index 762dc8ab112b2..0000000000000 --- a/apps/meteor/app/search/server/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import './model/SearchProvider'; -import './events'; -import './search.internalService'; -import './register'; -import './startup'; -import './service'; -import './methods'; diff --git a/apps/meteor/app/search/server/methods.ts b/apps/meteor/app/search/server/methods.ts deleted file mode 100644 index ad8c9641f5238..0000000000000 --- a/apps/meteor/app/search/server/methods.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type { IMessageSearchProvider, IMessageSearchSuggestion, IRoom, IUser } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Meteor } from 'meteor/meteor'; - -import { SearchLogger } from './logger/logger'; -import type { IRawSearchResult, ISearchResult } from './model/ISearchResult'; -import { searchProviderService, validationService } from './service'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - 'rocketchatSearch.getProvider'(): IMessageSearchProvider | undefined; - 'rocketchatSearch.search'(text: string, context: { uid?: IUser['_id']; rid: IRoom['_id'] }, payload: unknown): Promise; - 'rocketchatSearch.suggest'( - text: string, - context: { uid?: IUser['_id']; rid: IRoom['_id'] }, - payload: unknown, - ): Promise; - } -} - -Meteor.methods({ - /** - * Get the current provider with key, description, resultTemplate, suggestionItemTemplate and settings (as Map) - */ - 'rocketchatSearch.getProvider'() { - const provider = searchProviderService.activeProvider; - if (!provider) { - return undefined; - } - - return { - key: provider.key, - description: provider.i18nDescription, - icon: provider.iconName, - resultTemplate: provider.resultTemplate, - supportsSuggestions: provider.supportsSuggestions, - suggestionItemTemplate: provider.suggestionItemTemplate, - settings: Object.fromEntries(Object.values(provider.settingsAsMap).map((setting) => [setting.key, setting.value] as const)), - }; - }, - /** - * Search using the current search provider and check if results are valid for the user. The search result has - * the format `{messages:{start:0,numFound:1,docs:[{...}]},users:{...},rooms:{...}}` - * @param text the search text - * @param context the context (uid, rid) - * @param payload custom payload (e.g. for paging) - */ - async 'rocketchatSearch.search'(text, context, payload) { - payload = payload !== null ? payload : undefined; // TODO is this cleanup necessary? - - if (!searchProviderService.activeProvider) { - throw new Error('Provider currently not active'); - } - - SearchLogger.debug({ msg: 'search', text, context, payload }); - - const userId = Meteor.userId(); - if (!userId) { - throw new Error('User not logged in'); - } - - return new Promise((resolve, reject) => { - void searchProviderService.activeProvider?.search(userId, text, context, payload, (error, data) => { - if (error) { - return reject(error); - } - - return resolve(data); - }); - }).then((result) => validationService.validateSearchResult(result)); - }, - - async 'rocketchatSearch.suggest'(text, context, payload) { - payload ??= undefined; // TODO is this cleanup necessary? - - if (!searchProviderService.activeProvider) { - throw new Error('Provider currently not active'); - } - - SearchLogger.debug({ msg: 'suggest', text, context, payload }); - - return new Promise((resolve, reject) => { - searchProviderService.activeProvider?.suggest(text, context, payload, (error, data) => { - if (error) { - reject(error); - return; - } - - resolve(data); - }); - }); - }, -}); diff --git a/apps/meteor/app/settings/server/index.ts b/apps/meteor/app/settings/server/index.ts deleted file mode 100644 index 30a8c9fd6ba27..0000000000000 --- a/apps/meteor/app/settings/server/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* eslint-disable react-hooks/rules-of-hooks */ -import { Settings } from '@rocket.chat/models'; - -import { use } from './Middleware'; -import { SettingsRegistry } from './SettingsRegistry'; -import { settings } from './cached'; -import { initializeSettings } from './startup'; -import './applyMiddlewares'; - -export { SettingsEvents } from './SettingsRegistry'; - -export { settings }; - -export const settingsRegistry = new SettingsRegistry({ store: settings, model: Settings }); - -settingsRegistry.add = use(settingsRegistry.add, async (context, next) => { - return next(...context) as any; -}); - -settingsRegistry.addGroup = use(settingsRegistry.addGroup, async (context, next) => { - return next(...context) as any; -}); - -await initializeSettings({ model: Settings, settings }); diff --git a/apps/meteor/app/settings/server/startup.ts b/apps/meteor/app/settings/server/startup.ts deleted file mode 100644 index 5c0f4cdee5fe6..0000000000000 --- a/apps/meteor/app/settings/server/startup.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { ISetting } from '@rocket.chat/core-typings'; -import type { Settings } from '@rocket.chat/models'; - -import type { ICachedSettings } from './CachedSettings'; - -// eslint-disable-next-line @typescript-eslint/naming-convention -export async function initializeSettings({ model, settings }: { model: typeof Settings; settings: ICachedSettings }): Promise { - await model.find().forEach((record: ISetting) => { - settings.set(record); - }); - - settings.initialized(); -} diff --git a/apps/meteor/app/slashcommand-asciiarts/client/gimme.ts b/apps/meteor/app/slashcommand-asciiarts/client/gimme.ts index 7cd5edb6bb879..e91ce830cfb88 100644 --- a/apps/meteor/app/slashcommand-asciiarts/client/gimme.ts +++ b/apps/meteor/app/slashcommand-asciiarts/client/gimme.ts @@ -8,7 +8,7 @@ import { slashCommands } from '../../utils/client/slashCommand'; */ async function Gimme({ message, params }: SlashCommandCallbackParams<'gimme'>): Promise { const msg = message; - await sdk.call('sendMessage', { ...msg, msg: `༼ つ ◕_◕ ༽つ ${params}` }); + await sdk.rest.post('/v1/chat.sendMessage', { message: { ...msg, msg: `༼ つ ◕_◕ ༽つ ${params}` } }); } slashCommands.add({ diff --git a/apps/meteor/app/slashcommand-asciiarts/client/lenny.ts b/apps/meteor/app/slashcommand-asciiarts/client/lenny.ts index 0e3cc55f6b867..4fb47b6941e78 100644 --- a/apps/meteor/app/slashcommand-asciiarts/client/lenny.ts +++ b/apps/meteor/app/slashcommand-asciiarts/client/lenny.ts @@ -9,7 +9,7 @@ import { slashCommands } from '../../utils/client/slashCommand'; async function LennyFace({ message, params }: SlashCommandCallbackParams<'lenny'>): Promise { const msg = message; - await sdk.call('sendMessage', { ...msg, msg: `${params} ( ͡° ͜ʖ ͡°)` }); + await sdk.rest.post('/v1/chat.sendMessage', { message: { ...msg, msg: `${params} ( ͡° ͜ʖ ͡°)` } }); } slashCommands.add({ diff --git a/apps/meteor/app/slashcommand-asciiarts/client/shrug.ts b/apps/meteor/app/slashcommand-asciiarts/client/shrug.ts index c4bdec8f1a8cf..8ad22a0fd380f 100644 --- a/apps/meteor/app/slashcommand-asciiarts/client/shrug.ts +++ b/apps/meteor/app/slashcommand-asciiarts/client/shrug.ts @@ -11,7 +11,7 @@ slashCommands.add({ command: 'shrug', callback: async ({ message, params }: SlashCommandCallbackParams<'shrug'>): Promise => { const msg = message; - await sdk.call('sendMessage', { ...msg, msg: `${params} ¯\\\\_(ツ)_/¯` }); + await sdk.rest.post('/v1/chat.sendMessage', { message: { ...msg, msg: `${params} ¯\\\\_(ツ)_/¯` } }); }, options: { description: 'Slash_Shrug_Description', diff --git a/apps/meteor/app/slashcommand-asciiarts/client/tableflip.ts b/apps/meteor/app/slashcommand-asciiarts/client/tableflip.ts index 8820b81f7c4ae..f5383214c4bd2 100644 --- a/apps/meteor/app/slashcommand-asciiarts/client/tableflip.ts +++ b/apps/meteor/app/slashcommand-asciiarts/client/tableflip.ts @@ -11,7 +11,7 @@ slashCommands.add({ command: 'tableflip', callback: async ({ message, params }: SlashCommandCallbackParams<'tableflip'>): Promise => { const msg = message; - await sdk.call('sendMessage', { ...msg, msg: `${params} (╯°□°)╯︵ ┻━┻` }); + await sdk.rest.post('/v1/chat.sendMessage', { message: { ...msg, msg: `${params} (╯°□°)╯︵ ┻━┻` } }); }, options: { description: 'Slash_Tableflip_Description', diff --git a/apps/meteor/app/slashcommand-asciiarts/client/unflip.ts b/apps/meteor/app/slashcommand-asciiarts/client/unflip.ts index 6c02fa196052c..eaf478ac79b39 100644 --- a/apps/meteor/app/slashcommand-asciiarts/client/unflip.ts +++ b/apps/meteor/app/slashcommand-asciiarts/client/unflip.ts @@ -11,7 +11,7 @@ slashCommands.add({ command: 'unflip', callback: async ({ message, params }: SlashCommandCallbackParams<'unflip'>): Promise => { const msg = message; - await sdk.call('sendMessage', { ...msg, msg: `${params} ┬─┬ ノ( ゜-゜ノ)` }); + await sdk.rest.post('/v1/chat.sendMessage', { message: { ...msg, msg: `${params} ┬─┬ ノ( ゜-゜ノ)` } }); }, options: { description: 'Slash_TableUnflip_Description', diff --git a/apps/meteor/app/slashcommands-archiveroom/server/server.ts b/apps/meteor/app/slashcommands-archiveroom/server/server.ts deleted file mode 100644 index f1b33c1022bb6..0000000000000 --- a/apps/meteor/app/slashcommands-archiveroom/server/server.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { isRegisterUser } from '@rocket.chat/core-typings'; -import { Users, Rooms } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { RoomMemberActions } from '../../../definition/IRoomTypeConfig'; -import { i18n } from '../../../server/lib/i18n'; -import { roomCoordinator } from '../../../server/lib/rooms/roomCoordinator'; -import { hasPermissionAsync } from '../../authorization/server/functions/hasPermission'; -import { archiveRoom } from '../../lib/server/functions/archiveRoom'; -import { settings } from '../../settings/server'; -import { slashCommands } from '../../utils/server/slashCommand'; - -slashCommands.add({ - command: 'archive', - callback: async function Archive({ params, message, userId }: SlashCommandCallbackParams<'archive'>): Promise { - let channel = params.trim(); - - let room; - - if (channel === '') { - room = await Rooms.findOneById(message.rid); - if (room?.name) { - channel = room.name; - } - } else { - channel = channel.replace('#', ''); - room = await Rooms.findOneByName(channel); - } - - if (!userId) { - return; - } - - const user = await Users.findOneById(userId, { projection: { username: 1, name: 1 } }); - if (!user || !isRegisterUser(user)) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'archiveRoom' }); - } - - if (!room) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Channel_doesnt_exist', { - postProcess: 'sprintf', - sprintf: [channel], - lng: settings.get('Language') || 'en', - }), - }); - return; - } - - if (!(await roomCoordinator.getRoomDirectives(room.t).allowMemberAction(room, RoomMemberActions.ARCHIVE, userId))) { - throw new Meteor.Error('error-room-type-not-archivable', `Room type: ${room.t} can not be archived`); - } - - if (!(await hasPermissionAsync(userId, 'archive-room', room._id))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized'); - } - - if (room.archived) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Duplicate_archived_channel_name', { - postProcess: 'sprintf', - sprintf: [channel], - lng: settings.get('Language') || 'en', - }), - }); - return; - } - - await archiveRoom(room._id, user); - - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Channel_Archived', { - postProcess: 'sprintf', - sprintf: [channel], - lng: settings.get('Language') || 'en', - }), - }); - }, - options: { - description: 'Archive', - params: '#channel', - permission: 'archive-room', - }, -}); diff --git a/apps/meteor/app/slashcommands-ban/server/ban.ts b/apps/meteor/app/slashcommands-ban/server/ban.ts deleted file mode 100644 index 3ca43a3b5f4db..0000000000000 --- a/apps/meteor/app/slashcommands-ban/server/ban.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; - -import { banUserFromRoomMethod } from '../../../server/lib/banUserFromRoom'; -import { i18n } from '../../../server/lib/i18n'; -import { sanitizeUsername } from '../../lib/server/methods/addUsersToRoom'; -import { settings } from '../../settings/server'; -import { slashCommands } from '../../utils/server/slashCommand'; - -slashCommands.add({ - command: 'ban', - callback: async ({ params, message, userId }: SlashCommandCallbackParams<'ban'>): Promise => { - const username = sanitizeUsername(params.trim()); - - if (!username) { - return; - } - - const user = await Users.findOneByUsernameIgnoringCase(username); - if (!user) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Username_doesnt_exist', { - postProcess: 'sprintf', - sprintf: [username], - lng: settings.get('Language') || 'en', - }), - }); - return; - } - - await banUserFromRoomMethod(userId, { rid: message.rid, username }); - }, - options: { - description: 'Ban_user_from_room', - params: '@username', - permission: 'ban-user', - }, -}); diff --git a/apps/meteor/app/slashcommands-ban/server/unban.ts b/apps/meteor/app/slashcommands-ban/server/unban.ts deleted file mode 100644 index 4cb52047b651f..0000000000000 --- a/apps/meteor/app/slashcommands-ban/server/unban.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; - -import { i18n } from '../../../server/lib/i18n'; -import { unbanUserFromRoom } from '../../../server/lib/unbanUserFromRoom'; -import { sanitizeUsername } from '../../lib/server/methods/addUsersToRoom'; -import { settings } from '../../settings/server'; -import { slashCommands } from '../../utils/server/slashCommand'; - -slashCommands.add({ - command: 'unban', - callback: async ({ params, message, userId }: SlashCommandCallbackParams<'unban'>): Promise => { - const username = sanitizeUsername(params.trim()); - - if (!username) { - return; - } - - const user = await Users.findOneByUsernameIgnoringCase(username); - if (!user) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Username_doesnt_exist', { - postProcess: 'sprintf', - sprintf: [username], - lng: settings.get('Language') || 'en', - }), - }); - return; - } - - await unbanUserFromRoom(userId, { rid: message.rid, username }); - }, - options: { - description: 'Unban_user_from_room', - params: '@username', - permission: 'ban-user', - }, -}); diff --git a/apps/meteor/app/slashcommands-create/server/server.ts b/apps/meteor/app/slashcommands-create/server/server.ts deleted file mode 100644 index 6abee71c56fdd..0000000000000 --- a/apps/meteor/app/slashcommands-create/server/server.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { Rooms, Users } from '@rocket.chat/models'; - -import { i18n } from '../../../server/lib/i18n'; -import { createChannelMethod } from '../../lib/server/methods/createChannel'; -import { createPrivateGroupMethod } from '../../lib/server/methods/createPrivateGroup'; -import { settings } from '../../settings/server'; -import { slashCommands } from '../../utils/server/slashCommand'; - -slashCommands.add({ - command: 'create', - callback: async function Create({ params, message, userId }: SlashCommandCallbackParams<'create'>): Promise { - function getParams(str: string): string[] { - const regex = /(--(\w+))+/g; - const result = []; - let m; - while ((m = regex.exec(str)) !== null) { - if (m.index === regex.lastIndex) { - regex.lastIndex++; - } - result.push(m[2]); - } - return result; - } - - const regexp = new RegExp(settings.get('UTF8_Channel_Names_Validation') as string); - - const channel = regexp.exec(params.trim()); - - if (!channel) { - return; - } - - const channelStr: string = channel ? channel[0] : ''; - if (channelStr === '') { - return; - } - - const room = await Rooms.findOneByName(channelStr); - if (room != null) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Channel_already_exist', { - postProcess: 'sprintf', - sprintf: [channelStr], - lng: settings.get('Language') || 'en', - }), - }); - return; - } - - if (getParams(params).indexOf('private') > -1) { - const user = await Users.findOneById(userId); - if (!user) { - return; - } - await createPrivateGroupMethod(user, channelStr, []); - return; - } - - await createChannelMethod(userId, channelStr, []); - }, - options: { - description: 'Create_A_New_Channel', - params: '#channel', - permission: ['create-c', 'create-p'], - }, -}); diff --git a/apps/meteor/app/slashcommands-help/server/server.ts b/apps/meteor/app/slashcommands-help/server/server.ts deleted file mode 100644 index 4d826996b43f6..0000000000000 --- a/apps/meteor/app/slashcommands-help/server/server.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; - -import { i18n } from '../../../server/lib/i18n'; -import { settings } from '../../settings/server'; -import { slashCommands } from '../../utils/server/slashCommand'; - -/* - * Help is a named function that will replace /help commands - * @param {Object} message - The message object - */ - -interface IHelpCommand { - key: string; - command: string; -} - -slashCommands.add({ - command: 'help', - callback: async function Help({ message, userId }: SlashCommandCallbackParams<'help'>): Promise { - const user = await Users.findOneById(userId); - - const keys: IHelpCommand[] = [ - { - key: 'Open_channel_user_search', - command: 'Command (or Ctrl) + p OR Command (or Ctrl) + k', - }, - { - key: 'Mark_all_as_read', - command: 'Shift (or Ctrl) + ESC', - }, - { - key: 'Edit_previous_message', - command: 'Up Arrow', - }, - { - key: 'Move_beginning_message', - command: 'Command (or Alt) + Left Arrow', - }, - { - key: 'Move_beginning_message', - command: 'Command (or Alt) + Up Arrow', - }, - { - key: 'Move_end_message', - command: 'Command (or Alt) + Right Arrow', - }, - { - key: 'Move_end_message', - command: 'Command (or Alt) + Down Arrow', - }, - { - key: 'New_line_message_compose_input', - command: 'Shift + Enter', - }, - ]; - let msg = ''; - keys.forEach((key) => { - msg = `${msg}\n${i18n.t(key.key, { - postProcess: 'sprintf', - sprintf: [key.command], - lng: user?.language || settings.get('language') || 'en', - })}`; - }); - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg, - ...(message.tmid && { tmid: message.tmid }), - }); - }, - options: { - description: 'Show_the_keyboard_shortcut_list', - }, -}); diff --git a/apps/meteor/app/slashcommands-invite/server/server.ts b/apps/meteor/app/slashcommands-invite/server/server.ts deleted file mode 100644 index 9fd22b7b54ce5..0000000000000 --- a/apps/meteor/app/slashcommands-invite/server/server.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { api, FederationMatrix, isMeteorError } from '@rocket.chat/core-services'; -import type { IUser, SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { isBannedSubscription } from '@rocket.chat/core-typings'; -import { validateFederatedUsername } from '@rocket.chat/federation-matrix'; -import { Subscriptions, Users, Rooms } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { i18n } from '../../../server/lib/i18n'; -import { FederationActions } from '../../../server/services/room/hooks/BeforeFederationActions'; -import { addUsersToRoomMethod, sanitizeUsername } from '../../lib/server/methods/addUsersToRoom'; -import { settings } from '../../settings/server'; -import { slashCommands } from '../../utils/server/slashCommand'; - -// Type guards for the error -function isStringError(error: unknown): error is { error: string } { - return typeof (error as any)?.error === 'string'; -} - -/* - * Invite is a named function that will replace /invite commands - * @param {Object} message - The message object - */ -slashCommands.add({ - command: 'invite', - callback: async ({ params, message, userId }: SlashCommandCallbackParams<'invite'>): Promise => { - let usernames = params - .split(/[\s,]/) - .map((username) => sanitizeUsername(username)) - .filter((a) => a !== ''); - if (usernames.length === 0) { - return; - } - - // Get room information for federation check - const room = await Rooms.findOneById(message.rid); - if (!room) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('error-invalid-room', { lng: settings.get('Language') || 'en' }), - }); - return; - } - - // Ensure federated users exist locally before looking them up - const federatedUsernames = usernames.filter((u) => validateFederatedUsername(u)) as string[]; - if (federatedUsernames.length > 0) { - if (FederationActions.shouldPerformFederationAction(room)) { - await FederationMatrix.ensureFederatedUsersExistLocally(federatedUsernames); - } else { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('You_cannot_add_external_users_to_non_federated_room', { lng: settings.get('Language') || 'en' }), - }); - // These federated users shouldn't be invited and we already broadcasted the error message - usernames = usernames.filter((username) => { - return !federatedUsernames.includes(username); - }); - if (usernames.length === 0) { - return; - } - } - } - - const users = await Users.findByUsernames(usernames).toArray(); - if (users.length === 0) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('User_doesnt_exist', { - postProcess: 'sprintf', - sprintf: [usernames.join(' @')], - lng: settings.get('Language') || 'en', - }), - }); - return; - } - - const usersFiltered: IUser[] = []; - - for await (const user of users) { - const subscription = await Subscriptions.findOneByRoomIdAndUserId(message.rid, user._id, { - projection: { _id: 1, status: 1 }, - }); - if (subscription == null || isBannedSubscription(subscription)) { - usersFiltered.push(user); - continue; - } - const usernameStr = user.username as string; - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Username_is_already_in_here', { - postProcess: 'sprintf', - sprintf: [usernameStr], - lng: settings.get('Language') || 'en', - }), - }); - } - - const inviter = await Users.findOneById(userId); - - if (!inviter) { - throw new Meteor.Error('error-user-not-found', 'Inviter not found', { - method: 'slashcommand-invite', - }); - } - - await Promise.all( - usersFiltered.map(async (user) => { - try { - // TODO: Refactor this to return an error if some user fails to be added - return await addUsersToRoomMethod( - userId, - { - rid: message.rid, - users: [user.username || ''], - }, - inviter, - ); - } catch (e: unknown) { - if (isMeteorError(e)) { - if (e.error === 'error-only-compliant-users-can-be-added-to-abac-rooms') { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t(e.error, { lng: settings.get('Language') || 'en' }), - }); - } else { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t(e.message, { lng: settings.get('Language') || 'en' }), - }); - } - return; - } - - if (isStringError(e)) { - const { error } = e; - if (error === 'error-federated-users-in-non-federated-rooms') { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('You_cannot_add_external_users_to_non_federated_room', { lng: settings.get('Language') || 'en' }), - }); - } else if (error === 'cant-invite-for-direct-room') { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Cannot_invite_users_to_direct_rooms', { lng: settings.get('Language') || 'en' }), - }); - } else { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t(error, { lng: settings.get('Language') || 'en' }), - }); - } - } - } - }), - ); - }, - options: { - description: 'Invite_user_to_join_channel', - params: '@username', - permission: 'add-user-to-joined-room', - }, -}); diff --git a/apps/meteor/app/slashcommands-inviteall/server/server.ts b/apps/meteor/app/slashcommands-inviteall/server/server.ts deleted file mode 100644 index 0ad7cebe6ecfb..0000000000000 --- a/apps/meteor/app/slashcommands-inviteall/server/server.ts +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Invite is a named function that will replace /invite commands - * @param {Object} message - The message object - */ - -import { api } from '@rocket.chat/core-services'; -import type { ISubscription, SlashCommand, SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { Rooms, Subscriptions, Users } from '@rocket.chat/models'; -import { isTruthy } from '@rocket.chat/tools'; -import { Meteor } from 'meteor/meteor'; - -import { i18n } from '../../../server/lib/i18n'; -import { canAccessRoomAsync } from '../../authorization/server'; -import { addUsersToRoomMethod } from '../../lib/server/methods/addUsersToRoom'; -import { createChannelMethod } from '../../lib/server/methods/createChannel'; -import { createPrivateGroupMethod } from '../../lib/server/methods/createPrivateGroup'; -import { settings } from '../../settings/server'; -import { slashCommands } from '../../utils/server/slashCommand'; - -function inviteAll(type: T): SlashCommand['callback'] { - return async function inviteAll({ command, params, message, userId }: SlashCommandCallbackParams): Promise { - if (!/invite\-all-(to|from)/.test(command)) { - return; - } - - let channel = params.trim(); - if (channel === '') { - return; - } - - channel = channel.replace('#', ''); - - if (!channel) { - return; - } - if (!userId) { - return; - } - - const user = await Users.findOneById(userId); - if (!user) { - return; - } - const lng = user?.language || settings.get('Language') || 'en'; - - const baseChannel = type === 'to' ? await Rooms.findOneById(message.rid) : await Rooms.findOneByName(channel); - const targetChannel = type === 'from' ? await Rooms.findOneById(message.rid) : await Rooms.findOneByName(channel); - - if (!baseChannel) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Channel_doesnt_exist', { - postProcess: 'sprintf', - sprintf: [channel], - lng, - }), - }); - return; - } - - if (!(await canAccessRoomAsync(baseChannel, user))) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Room_not_exist_or_not_permission', { lng }), - }); - return; - } - - try { - const APIsettings = settings.get('API_User_Limit'); - if (!APIsettings) { - return; - } - if ((await Subscriptions.countByRoomIdWhenUsernameExists(baseChannel._id)) > APIsettings) { - throw new Meteor.Error('error-user-limit-exceeded', 'User Limit Exceeded', { - method: 'addAllToRoom', - }); - } - - const cursor = Subscriptions.findByRoomIdWhenUsernameExists(baseChannel._id, { - projection: { 'u.username': 1 }, - }); - const users = (await cursor.toArray()).map((s: ISubscription) => s.u.username).filter(isTruthy); - - if (!targetChannel && ['c', 'p'].indexOf(baseChannel.t) > -1) { - baseChannel.t === 'c' ? await createChannelMethod(userId, channel, users) : await createPrivateGroupMethod(user, channel, users); - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Channel_created', { - postProcess: 'sprintf', - sprintf: [channel], - lng, - }), - }); - } else { - await addUsersToRoomMethod(userId, { - rid: targetChannel?._id ?? '', - users, - }); - } - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Users_added', { lng }), - }); - } catch (e: any) { - const msg = e.error === 'cant-invite-for-direct-room' ? 'Cannot_invite_users_to_direct_rooms' : e.error; - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t(msg, { lng }), - }); - } - }; -} - -slashCommands.add({ - command: 'invite-all-to', - callback: inviteAll('to'), - options: { - description: 'Invite_user_to_join_channel_all_to', - params: '#room', - permission: ['add-user-to-joined-room', 'add-user-to-any-c-room', 'add-user-to-any-p-room'], - }, -}); -slashCommands.add({ - command: 'invite-all-from', - callback: inviteAll('from'), - options: { - description: 'Invite_user_to_join_channel_all_from', - params: '#room', - permission: 'add-user-to-joined-room', - }, -}); -module.exports = inviteAll; diff --git a/apps/meteor/app/slashcommands-join/server/server.ts b/apps/meteor/app/slashcommands-join/server/server.ts deleted file mode 100644 index 4d7b3fe001f7b..0000000000000 --- a/apps/meteor/app/slashcommands-join/server/server.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { api, Room } from '@rocket.chat/core-services'; -import type { SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { Rooms, Subscriptions, Users } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { i18n } from '../../../server/lib/i18n'; -import { settings } from '../../settings/server'; -import { slashCommands } from '../../utils/server/slashCommand'; - -slashCommands.add({ - command: 'join', - callback: async ({ params, message, userId }: SlashCommandCallbackParams<'join'>): Promise => { - let channel = params.trim(); - if (channel === '') { - return; - } - - if (!userId) { - return; - } - - channel = channel.replace('#', ''); - - const room = await Rooms.findOneByNameAndType(channel, 'c'); - if (!room) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Channel_doesnt_exist', { - postProcess: 'sprintf', - sprintf: [channel], - lng: settings.get('Language') || 'en', - }), - }); - return; - } - - const subscription = await Subscriptions.findOneByRoomIdAndUserId(room._id, userId, { - projection: { _id: 1 }, - }); - - if (subscription) { - throw new Meteor.Error('error-user-already-in-room', 'You are already in the channel', { - method: 'slashCommands', - }); - } - - const user = await Users.findOneById(userId); - if (!user) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'slashCommands', - }); - } - await Room.join({ room, user }); - }, - options: { - description: 'Join_the_given_channel', - params: '#channel', - permission: 'view-c-room', - }, -}); diff --git a/apps/meteor/app/slashcommands-kick/server/server.ts b/apps/meteor/app/slashcommands-kick/server/server.ts deleted file mode 100644 index f29a65a764e7c..0000000000000 --- a/apps/meteor/app/slashcommands-kick/server/server.ts +++ /dev/null @@ -1,44 +0,0 @@ -// Kick is a named function that will replace /kick commands -import { api } from '@rocket.chat/core-services'; -import type { SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; - -import { i18n } from '../../../server/lib/i18n'; -import { removeUserFromRoomMethod } from '../../../server/methods/removeUserFromRoom'; -import { sanitizeUsername } from '../../lib/server/methods/addUsersToRoom'; -import { settings } from '../../settings/server'; -import { slashCommands } from '../../utils/server/slashCommand'; - -slashCommands.add({ - command: 'kick', - callback: async ({ params, message, userId }: SlashCommandCallbackParams<'kick'>): Promise => { - const username = sanitizeUsername(params.trim()); - if (username === '') { - return; - } - const user = await Users.findOneById(userId); - const lng = user?.language || settings.get('Language') || 'en'; - - const kickedUser = await Users.findOneByUsernameIgnoringCase(username); - - if (kickedUser == null) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Username_doesnt_exist', { - postProcess: 'sprintf', - sprintf: [username], - lng, - }), - }); - return; - } - - const { rid } = message; - - await removeUserFromRoomMethod(userId, { rid, username }); - }, - options: { - description: 'Remove_someone_from_room', - params: '@username', - permission: 'remove-user', - }, -}); diff --git a/apps/meteor/app/slashcommands-msg/server/server.ts b/apps/meteor/app/slashcommands-msg/server/server.ts deleted file mode 100644 index e757938106eb4..0000000000000 --- a/apps/meteor/app/slashcommands-msg/server/server.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; -import { Random } from '@rocket.chat/random'; - -import { i18n } from '../../../server/lib/i18n'; -import { createDirectMessage } from '../../../server/methods/createDirectMessage'; -import { executeSendMessage } from '../../lib/server/methods/sendMessage'; -import { settings } from '../../settings/server'; -import { slashCommands } from '../../utils/server/slashCommand'; - -/* - * Msg is a named function that will replace /msg commands - */ - -slashCommands.add({ - command: 'msg', - callback: async function Msg({ params, message: item, userId }: SlashCommandCallbackParams<'msg'>): Promise { - const trimmedParams = params.trim(); - const separator = trimmedParams.indexOf(' '); - if (separator === -1) { - void api.broadcast('notify.ephemeralMessage', userId, item.rid, { - msg: i18n.t('Username_and_message_must_not_be_empty', { lng: settings.get('Language') || 'en' }), - }); - return; - } - const message = trimmedParams.slice(separator + 1); - const targetUsernameOrig = trimmedParams.slice(0, separator); - const targetUsername = targetUsernameOrig.replace('@', ''); - const targetUser = await Users.findOneByUsernameIgnoringCase(targetUsername); - if (targetUser == null) { - const user = await Users.findOneById(userId, { projection: { language: 1 } }); - void api.broadcast('notify.ephemeralMessage', userId, item.rid, { - msg: i18n.t('Username_doesnt_exist', { - postProcess: 'sprintf', - sprintf: [targetUsernameOrig], - lng: user?.language || settings.get('Language') || 'en', - }), - }); - return; - } - const { rid } = await createDirectMessage([targetUsername], userId); - const msgObject = { - _id: Random.id(), - rid, - msg: message, - }; - await executeSendMessage(userId, msgObject); - }, - options: { - description: 'Direct_message_someone', - params: '@username ', - permission: 'create-d', - }, -}); diff --git a/apps/meteor/app/slashcommands-topic/server/topic.ts b/apps/meteor/app/slashcommands-topic/server/topic.ts deleted file mode 100644 index c1fa6ea283b78..0000000000000 --- a/apps/meteor/app/slashcommands-topic/server/topic.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { SlashCommandCallbackParams } from '@rocket.chat/core-typings'; - -import { hasPermissionAsync } from '../../authorization/server/functions/hasPermission'; -import { saveRoomSettings } from '../../channel-settings/server/methods/saveRoomSettings'; -import { slashCommands } from '../../utils/server/slashCommand'; - -slashCommands.add({ - command: 'topic', - callback: async ({ params, message, userId }: SlashCommandCallbackParams<'topic'>): Promise => { - if (userId && (await hasPermissionAsync(userId, 'edit-room', message.rid))) { - await saveRoomSettings(userId, message.rid, 'roomTopic', params); - } - }, - options: { - description: 'Slash_Topic_Description', - params: 'Slash_Topic_Params', - permission: 'edit-room', - }, -}); diff --git a/apps/meteor/app/slashcommands-unarchiveroom/server/server.ts b/apps/meteor/app/slashcommands-unarchiveroom/server/server.ts deleted file mode 100644 index 4c0c44269d2fa..0000000000000 --- a/apps/meteor/app/slashcommands-unarchiveroom/server/server.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import { isRegisterUser } from '@rocket.chat/core-typings'; -import type { SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { Users, Rooms } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { RoomMemberActions } from '../../../definition/IRoomTypeConfig'; -import { i18n } from '../../../server/lib/i18n'; -import { roomCoordinator } from '../../../server/lib/rooms/roomCoordinator'; -import { hasPermissionAsync } from '../../authorization/server/functions/hasPermission'; -import { unarchiveRoom } from '../../lib/server/functions/unarchiveRoom'; -import { settings } from '../../settings/server'; -import { slashCommands } from '../../utils/server/slashCommand'; - -slashCommands.add({ - command: 'unarchive', - callback: async function Unarchive({ params, message, userId }: SlashCommandCallbackParams<'unarchive'>): Promise { - let channel = params.trim(); - let room; - - if (channel === '') { - room = await Rooms.findOneById(message.rid); - if (room?.name) { - channel = room.name; - } - } else { - channel = channel.replace('#', ''); - room = await Rooms.findOneByName(channel); - } - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'archiveRoom' }); - } - - const user = await Users.findOneById(userId, { projection: { username: 1, name: 1 } }); - if (!user || !isRegisterUser(user)) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'archiveRoom' }); - } - - if (!room) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Channel_doesnt_exist', { - postProcess: 'sprintf', - sprintf: [channel], - lng: settings.get('Language') || 'en', - }), - }); - return; - } - - if (!(await roomCoordinator.getRoomDirectives(room.t).allowMemberAction(room, RoomMemberActions.ARCHIVE, userId))) { - throw new Meteor.Error('error-room-type-not-unarchivable', `Room type: ${room.t} can not be unarchived`); - } - - if (!(await hasPermissionAsync(userId, 'unarchive-room', room._id))) { - throw new Meteor.Error('error-not-authorized', 'Not authorized'); - } - - if (!room.archived) { - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Channel_already_Unarchived', { - postProcess: 'sprintf', - sprintf: [channel], - lng: settings.get('Language') || 'en', - }), - }); - return; - } - - await unarchiveRoom(room._id, user); - - void api.broadcast('notify.ephemeralMessage', userId, message.rid, { - msg: i18n.t('Channel_Unarchived', { - postProcess: 'sprintf', - sprintf: [channel], - lng: settings.get('Language') || 'en', - }), - }); - }, - options: { - description: 'Unarchive', - params: '#channel', - permission: 'unarchive-room', - }, -}); diff --git a/apps/meteor/app/smarsh-connector/server/startup.ts b/apps/meteor/app/smarsh-connector/server/startup.ts deleted file mode 100644 index edd4be4570824..0000000000000 --- a/apps/meteor/app/smarsh-connector/server/startup.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { cronJobs } from '@rocket.chat/cron'; - -import { generateEml } from './functions/generateEml'; -import { smarshIntervalValuesToCronMap } from '../../../server/settings/smarsh'; -import { settings } from '../../settings/server'; - -const smarshJobName = 'Smarsh EML Connector'; - -settings.watchMultiple( - ['Smarsh_Enabled', 'Smarsh_Email', 'From_Email', 'Smarsh_Interval'], - async function __addSmarshSyncedCronJobDebounced() { - if (await cronJobs.has(smarshJobName)) { - await cronJobs.remove(smarshJobName); - } - - if (settings.get('Smarsh_Enabled') && settings.get('Smarsh_Email') !== '' && settings.get('From_Email') !== '') { - const cronInterval = smarshIntervalValuesToCronMap[settings.get('Smarsh_Interval')]; - await cronJobs.add(smarshJobName, cronInterval, async () => generateEml()); - } - }, -); diff --git a/apps/meteor/app/statistics/server/functions/getStatistics.ts b/apps/meteor/app/statistics/server/functions/getStatistics.ts deleted file mode 100644 index 58e3f0ca84741..0000000000000 --- a/apps/meteor/app/statistics/server/functions/getStatistics.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { IStats } from '@rocket.chat/core-typings'; -import { Statistics } from '@rocket.chat/models'; -import type { FindOptions, SchemaMember } from 'mongodb'; - -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; - -type GetStatisticsParams = { - userId: string; - query?: Record; - pagination: { - offset: number; - count?: number; - sort?: FindOptions['sort']; - fields?: SchemaMember; - }; -}; - -type GetStatisticsReturn = { statistics: IStats[]; count: number; offset: number; total: number }; - -export async function getStatistics({ - userId, - query = {}, - pagination: { offset, count, sort, fields }, -}: GetStatisticsParams): Promise { - if (!(await hasPermissionAsync(userId, 'view-statistics'))) { - throw new Error('error-not-allowed'); - } - - const { cursor, totalCount } = Statistics.findPaginated(query, { - sort: sort || { name: 1 }, - skip: offset, - limit: count, - projection: fields, - }); - - const [statistics, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - statistics, - count: statistics.length, - offset, - total, - }; -} diff --git a/apps/meteor/app/statistics/server/index.ts b/apps/meteor/app/statistics/server/index.ts deleted file mode 100644 index 15020aea451a6..0000000000000 --- a/apps/meteor/app/statistics/server/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import './methods/getStatistics'; -import './startup/monitor'; -import './functions/slashCommandsStats'; - -export { statistics } from './lib/statistics'; -export { getLastStatistics } from './functions/getLastStatistics'; -export { getStatistics } from './functions/getStatistics'; -export { updateCounter } from './functions/updateStatsCounter'; diff --git a/apps/meteor/app/statistics/server/lib/statistics.ts b/apps/meteor/app/statistics/server/lib/statistics.ts deleted file mode 100644 index 8c810acaad70b..0000000000000 --- a/apps/meteor/app/statistics/server/lib/statistics.ts +++ /dev/null @@ -1,604 +0,0 @@ -import { log } from 'console'; -import os from 'node:os'; - -import { Analytics, Team, VideoConf, Presence } from '@rocket.chat/core-services'; -import type { IRoom, IStats, ISetting } from '@rocket.chat/core-typings'; -import { UserStatus } from '@rocket.chat/core-typings'; -import { License } from '@rocket.chat/license'; -import { - NotificationQueue, - Rooms, - Statistics, - Sessions, - Integrations, - Invites, - Uploads, - LivechatDepartment, - LivechatVisitors, - EmailInbox, - LivechatBusinessHours, - Messages, - Roles as RolesRaw, - InstanceStatus, - Settings, - LivechatTrigger, - LivechatCustomField, - Subscriptions, - Users, - LivechatRooms, - AbacAttributes, -} from '@rocket.chat/models'; -import { MongoInternals } from 'meteor/mongo'; -import moment from 'moment'; - -import { getAppsStatistics } from './getAppsStatistics'; -import { getContactVerificationStatistics } from './getContactVerificationStatistics'; -import { getStatistics as getEnterpriseStatistics } from './getEEStatistics'; -import { getImporterStatistics } from './getImporterStatistics'; -import { getServicesStatistics } from './getServicesStatistics'; -import { readSecondaryPreferred } from '../../../../server/database/readSecondaryPreferred'; -import { isRunningMs } from '../../../../server/lib/isRunningMs'; -import { getControl } from '../../../../server/lib/migrations'; -import { getSettingsStatistics } from '../../../../server/lib/statistics/getSettingsStatistics'; -import { getMatrixFederationStatistics } from '../../../../server/services/federation/infrastructure/rocket-chat/adapters/Statistics'; -import { settings } from '../../../settings/server'; -import { Info } from '../../../utils/rocketchat.info'; -import { getMongoInfo } from '../../../utils/server/functions/getMongoInfo'; - -const getUserLanguages = async (totalUsers: number): Promise<{ [key: string]: number }> => { - const result = await Users.getUserLanguages(); - - const languages: { [key: string]: number } = { - none: totalUsers, - }; - - result.forEach(({ _id, total }: { _id: string; total: number }) => { - if (!_id) { - return; - } - languages[_id] = total; - languages.none -= total; - }); - - return languages; -}; - -const { db } = MongoInternals.defaultRemoteCollectionDriver().mongo; - -export const statistics = { - get: async (): Promise => { - const readPreference = readSecondaryPreferred(db); - - const statistics = {} as IStats; - const statsPms = []; - - // Setup Wizard - const [organizationType, industry, size, country, language, serverType, registerServer] = await Promise.all([ - settings.get('Organization_Type'), - settings.get('Industry'), - settings.get('Size'), - settings.get('Country'), - settings.get('Language'), - settings.get('Server_Type'), - settings.get('Register_Server'), - ]); - - statistics.wizard = { - organizationType, - industry, - size, - country, - language, - serverType, - registerServer, - }; - - // Version - const uniqueID = await Settings.findOne>('uniqueID', { projection: { createdAt: 1 } }); - statistics.uniqueId = settings.get('uniqueID'); - if (uniqueID) { - statistics.installedAt = uniqueID.createdAt.toISOString(); - } - - statistics.deploymentFingerprintHash = settings.get('Deployment_FingerPrint_Hash'); - statistics.deploymentFingerprintVerified = settings.get('Deployment_FingerPrint_Verified'); - - if (Info) { - statistics.version = Info.version; - statistics.tag = Info.tag; - statistics.branch = Info.branch; - } - - // User statistics - statistics.totalUsers = await Users.estimatedDocumentCount(); - statistics.activeUsers = await Users.getActiveLocalUserCount(); - statistics.activeGuests = await Users.getActiveLocalGuestCount(); - statistics.nonActiveUsers = await Users.countDocuments({ active: false }); - statistics.appUsers = await Users.countDocuments({ type: 'app' }); - statistics.onlineUsers = await Users.countDocuments({ status: UserStatus.ONLINE }); - statistics.awayUsers = await Users.countDocuments({ status: UserStatus.AWAY }); - statistics.busyUsers = await Users.countDocuments({ status: UserStatus.BUSY }); - statistics.totalConnectedUsers = statistics.onlineUsers + statistics.awayUsers; - statistics.offlineUsers = statistics.totalUsers - statistics.onlineUsers - statistics.awayUsers - statistics.busyUsers; - statsPms.push( - getUserLanguages(statistics.totalUsers).then((total) => { - statistics.userLanguages = total; - }), - ); - - // Room statistics - statistics.totalRooms = await Rooms.estimatedDocumentCount(); - statistics.totalChannels = await Rooms.countByType('c'); - statistics.totalPrivateGroups = await Rooms.countByType('p'); - statistics.totalDirect = await Rooms.countByType('d'); - statistics.totalLivechat = await Rooms.countByType('l'); - statistics.totalDiscussions = await Rooms.countDiscussions(); - statistics.totalThreads = await Messages.countThreads(); - - // livechat visitors - statistics.totalLivechatVisitors = await LivechatVisitors.estimatedDocumentCount(); - - // livechat agents - statistics.totalLivechatAgents = await Users.countAgents(); - statistics.totalLivechatManagers = await Users.countDocuments({ roles: 'livechat-manager' }); - - // livechat enabled - statistics.livechatEnabled = settings.get('Livechat_enabled'); - - // Count and types of omnichannel rooms - statsPms.push( - Rooms.allRoomSourcesCount() - .toArray() - .then((roomSources) => { - statistics.omnichannelSources = roomSources.map(({ _id: { id, alias, type }, count }) => ({ - id, - alias, - type, - count, - })); - }), - ); - - // Number of livechat rooms with department - statsPms.push( - LivechatRooms.countLivechatRoomsWithDepartment().then((count) => { - statistics.totalLivechatRoomsWithDepartment = count; - }), - ); - - // Number of departments - statsPms.push( - LivechatDepartment.estimatedDocumentCount().then((count) => { - statistics.departments = count; - }), - ); - - // Number of archived departments - statsPms.push( - LivechatDepartment.countArchived().then((count) => { - statistics.archivedDepartments = count; - }), - ); - - // Workspace allows dpeartment removal - statistics.isDepartmentRemovalEnabled = settings.get('Omnichannel_enable_department_removal'); - - // Number of triggers - statsPms.push( - LivechatTrigger.estimatedDocumentCount().then((count) => { - statistics.totalTriggers = count; - }), - ); - - // Number of custom fields - statsPms.push((statistics.totalCustomFields = await LivechatCustomField.estimatedDocumentCount())); - - // Number of public custom fields - statsPms.push((statistics.totalLivechatPublicCustomFields = await LivechatCustomField.countDocuments({ public: true }))); - - // Livechat Automatic forwarding feature enabled - statistics.livechatAutomaticForwardingUnansweredChats = settings.get('Livechat_auto_transfer_chat_timeout') !== 0; - - // Type of routing algorithm used on omnichannel - statistics.routingAlgorithm = settings.get('Livechat_Routing_Method') || ''; - - // is on-hold active - statistics.onHoldEnabled = settings.get('Livechat_allow_manual_on_hold'); - - // Number of Email Inboxes - statsPms.push( - EmailInbox.estimatedDocumentCount().then((count) => { - statistics.emailInboxes = count; - }), - ); - - statsPms.push( - LivechatBusinessHours.estimatedDocumentCount().then((count) => { - statistics.BusinessHours = { - // Number of Business Hours - total: count, - // Business Hours strategy - strategy: settings.get('Livechat_enable_business_hours') || '', - }; - }), - ); - - // Type of routing algorithm used on omnichannel - statistics.routingAlgorithm = settings.get('Livechat_Routing_Method'); - - // is on-hold active - statistics.onHoldEnabled = settings.get('Livechat_allow_manual_on_hold'); - - // Last-Chatted Agent Preferred (enabled/disabled) - statistics.lastChattedAgentPreferred = settings.get('Livechat_last_chatted_agent_routing'); - - // Assign new conversations to the contact manager (enabled/disabled) - statistics.assignNewConversationsToContactManager = settings.get('Omnichannel_contact_manager_routing'); - - // How to handle Visitor Abandonment setting - statistics.visitorAbandonment = settings.get('Livechat_abandoned_rooms_action'); - - // Amount of chats placed on hold - statsPms.push( - Messages.countRoomsWithMessageType('omnichannel_placed_chat_on_hold', { readPreference }).then((total) => { - statistics.chatsOnHold = total; - }), - ); - - const defaultValue = { contactsCount: 0, conversationsCount: 0, sources: [] }; - const billablePeriod = moment.utc().format('YYYY-MM'); - statsPms.push( - LivechatRooms.getMACStatisticsForPeriod(billablePeriod).then(([result]) => { - statistics.omnichannelContactsBySource = result || defaultValue; - }), - ); - - const monthAgo = moment.utc().subtract(30, 'days').toDate(); - const today = moment.utc().toDate(); - statsPms.push( - LivechatRooms.getMACStatisticsBetweenDates(monthAgo, today).then(([result]) => { - statistics.uniqueContactsOfLastMonth = result || defaultValue; - }), - ); - - const weekAgo = moment.utc().subtract(7, 'days').toDate(); - statsPms.push( - LivechatRooms.getMACStatisticsBetweenDates(weekAgo, today).then(([result]) => { - statistics.uniqueContactsOfLastWeek = result || defaultValue; - }), - ); - - const yesterday = moment.utc().subtract(1, 'days').toDate(); - statsPms.push( - LivechatRooms.getMACStatisticsBetweenDates(yesterday, today).then(([result]) => { - statistics.uniqueContactsOfYesterday = result || defaultValue; - }), - ); - - // Message statistics - const channels = await Rooms.findByType('c', { projection: { msgs: 1, prid: 1 } }).toArray(); - const totalChannelDiscussionsMessages = channels.reduce(function _countChannelDiscussionsMessages(num: number, room: IRoom) { - return num + (room.prid ? room.msgs : 0); - }, 0); - statistics.totalChannelMessages = - channels.reduce(function _countChannelMessages(num: number, room: IRoom) { - return num + room.msgs; - }, 0) - totalChannelDiscussionsMessages; - - const privateGroups = await Rooms.findByType('p', { projection: { msgs: 1, prid: 1 } }).toArray(); - const totalPrivateGroupsDiscussionsMessages = privateGroups.reduce(function _countPrivateGroupsDiscussionsMessages( - num: number, - room: IRoom, - ) { - return num + (room.prid ? room.msgs : 0); - }, 0); - statistics.totalPrivateGroupMessages = - privateGroups.reduce(function _countPrivateGroupMessages(num: number, room: IRoom) { - return num + room.msgs; - }, 0) - totalPrivateGroupsDiscussionsMessages; - - statistics.totalDiscussionsMessages = totalPrivateGroupsDiscussionsMessages + totalChannelDiscussionsMessages; - - statistics.totalDirectMessages = (await Rooms.findByType('d', { projection: { msgs: 1 } }).toArray()).reduce( - function _countDirectMessages(num: number, room: IRoom) { - return num + room.msgs; - }, - 0, - ); - statistics.totalLivechatMessages = (await Rooms.findByType('l', { projection: { msgs: 1 } }).toArray()).reduce( - function _countLivechatMessages(num: number, room: IRoom) { - return num + room.msgs; - }, - 0, - ); - statistics.totalMessages = - statistics.totalChannelMessages + - statistics.totalPrivateGroupMessages + - statistics.totalDiscussionsMessages + - statistics.totalDirectMessages + - statistics.totalLivechatMessages; - - statistics.lastLogin = (await Users.getLastLogin())?.toString() || ''; - statistics.lastMessageSentAt = await Messages.getLastTimestamp(); - statistics.lastSeenSubscription = (await Subscriptions.getLastSeen())?.toString() || ''; - - statistics.os = { - type: os.type(), - platform: os.platform(), - arch: os.arch(), - release: os.release(), - uptime: os.uptime(), - loadavg: os.loadavg(), - totalmem: os.totalmem(), - freemem: os.freemem(), - cpus: os.cpus(), - }; - - statistics.process = { - nodeVersion: process.version, - pid: process.pid, - uptime: process.uptime(), - }; - - statistics.deploy = { - method: process.env.DEPLOY_METHOD || 'tar', - platform: process.env.DEPLOY_PLATFORM || 'selfinstall', - }; - - statistics.readReceiptsEnabled = settings.get('Message_Read_Receipt_Enabled'); - statistics.readReceiptsDetailed = settings.get('Message_Read_Receipt_Store_Users'); - - statistics.enterpriseReady = true; - statsPms.push( - Uploads.estimatedDocumentCount().then((count) => { - statistics.uploadsTotal = count; - }), - ); - statsPms.push( - Uploads.col - .aggregate( - [ - { - $group: { _id: 'total', total: { $sum: '$size' } }, - }, - ], - { readPreference }, - ) - .toArray() - .then((agg) => { - const [result] = agg; - statistics.uploadsTotalSize = result ? (result as any).total : 0; - }), - ); - - statistics.fileStoreType = settings.get('FileUpload_Storage_Type'); - - statistics.migration = await getControl(); - statsPms.push( - InstanceStatus.countDocuments({ _updatedAt: { $gt: new Date(Date.now() - process.uptime() * 1000 - 2000) } }).then((count) => { - statistics.instanceCount = count; - }), - ); - - const { mongoVersion, mongoStorageEngine } = await getMongoInfo(); - statistics.msEnabled = isRunningMs(); - statistics.oplogEnabled = false; - statistics.mongoVersion = mongoVersion; - statistics.mongoStorageEngine = mongoStorageEngine || ''; - - statsPms.push( - Sessions.getUniqueUsersOfYesterday().then((result) => { - statistics.uniqueUsersOfYesterday = result; - }), - ); - statsPms.push( - Sessions.getUniqueUsersOfLastWeek().then((result) => { - statistics.uniqueUsersOfLastWeek = result; - }), - ); - statsPms.push( - Sessions.getUniqueUsersOfLastMonth().then((result) => { - statistics.uniqueUsersOfLastMonth = result; - }), - ); - statsPms.push( - Sessions.getUniqueDevicesOfYesterday().then((result) => { - statistics.uniqueDevicesOfYesterday = result; - }), - ); - statsPms.push( - Sessions.getUniqueDevicesOfLastWeek().then((result) => { - statistics.uniqueDevicesOfLastWeek = result; - }), - ); - statsPms.push( - Sessions.getUniqueDevicesOfLastMonth().then((result) => { - statistics.uniqueDevicesOfLastMonth = result; - }), - ); - statsPms.push( - Sessions.getUniqueOSOfYesterday().then((result) => { - statistics.uniqueOSOfYesterday = result; - }), - ); - statsPms.push( - Sessions.getUniqueOSOfLastWeek().then((result) => { - statistics.uniqueOSOfLastWeek = result; - }), - ); - statsPms.push( - Sessions.getUniqueOSOfLastMonth().then((result) => { - statistics.uniqueOSOfLastMonth = result; - }), - ); - - statistics.apps = await getAppsStatistics(); - statistics.services = await getServicesStatistics(); - statistics.importer = getImporterStatistics(); - statistics.videoConf = await VideoConf.getStatistics(); - statistics.contactVerification = await getContactVerificationStatistics(); - - // If getSettingsStatistics() returns an error, save as empty object. - statsPms.push( - getSettingsStatistics().then((res) => { - const settingsStatisticsObject = res || {}; - statistics.settings = settingsStatisticsObject; - }), - ); - - statsPms.push( - Integrations.find( - {}, - { - projection: { - _id: 0, - type: 1, - enabled: 1, - scriptEnabled: 1, - }, - readPreference, - }, - ) - .toArray() - .then((found) => { - const integrations = found; - - statistics.integrations = { - totalIntegrations: integrations.length, - totalIncoming: integrations.filter((integration) => integration.type === 'webhook-incoming').length, - totalIncomingActive: integrations.filter( - (integration) => integration.enabled === true && integration.type === 'webhook-incoming', - ).length, - totalOutgoing: integrations.filter((integration) => integration.type === 'webhook-outgoing').length, - totalOutgoingActive: integrations.filter( - (integration) => integration.enabled === true && integration.type === 'webhook-outgoing', - ).length, - totalWithScriptEnabled: integrations.filter((integration) => integration.scriptEnabled === true).length, - }; - }), - ); - - statsPms.push( - NotificationQueue.estimatedDocumentCount().then((count) => { - statistics.pushQueue = count; - }), - ); - - statsPms.push( - getEnterpriseStatistics().then((result) => { - statistics.enterprise = result; - }), - ); - - statsPms.push( - Team.getStatistics().then((result) => { - statistics.teams = result; - }), - ); - - statsPms.push(Analytics.resetSeatRequestCount()); - - // TODO: Is that the best way to do this? maybe we should use a promise.all() - - statistics.dashboardCount = settings.get('Engagement_Dashboard_Load_Count'); - statistics.messageAuditApply = settings.get('Message_Auditing_Apply_Count'); - statistics.messageAuditLoad = settings.get('Message_Auditing_Panel_Load_Count'); - statistics.joinJitsiButton = settings.get('Jitsi_Click_To_Join_Count'); - statistics.slashCommandsJitsi = settings.get('Jitsi_Start_SlashCommands_Count'); - statistics.totalBroadcastRooms = await Rooms.countByBroadcast({ readPreference }); - statistics.totalTriggeredEmails = settings.get('Triggered_Emails_Count'); - statistics.totalRoomsWithStarred = await Messages.countRoomsWithStarredMessages({ readPreference }); - statistics.totalRoomsWithPinned = await Messages.countRoomsWithPinnedMessages({ readPreference }); - statistics.totalUserTOTP = await Users.countActiveUsersTOTPEnable({ readPreference }); - statistics.totalUserEmail2fa = await Users.countActiveUsersEmail2faEnable({ readPreference }); - statistics.totalPinned = await Messages.countPinned({ readPreference }); - statistics.totalStarred = await Messages.countStarred({ readPreference }); - statistics.totalLinkInvitation = await Invites.estimatedDocumentCount(); - statistics.totalLinkInvitationUses = await Invites.countUses(); - statistics.totalEmailInvitation = settings.get('Invitation_Email_Count'); - statistics.totalE2ERooms = await Rooms.countByE2E({ readPreference }); - statistics.logoChange = Object.keys(settings.get('Assets_logo') || {}).includes('url'); - statistics.showHomeButton = settings.get('Layout_Show_Home_Button'); - statistics.totalEncryptedMessages = await Messages.countByType('e2e', { readPreference }); - statistics.totalManuallyAddedUsers = settings.get('Manual_Entry_User_Count'); - statistics.totalSubscriptionRoles = await RolesRaw.countByScope('Subscriptions', { readPreference }); - statistics.totalUserRoles = await RolesRaw.countByScope('Users', { readPreference }); - statistics.totalCustomRoles = await RolesRaw.countCustomRoles({ readPreference }); - statistics.totalWebRTCCalls = settings.get('WebRTC_Calls_Count'); - statistics.uncaughtExceptionsCount = settings.get('Uncaught_Exceptions_Count'); - - const defaultGateway = (await Settings.findOneById('Push_gateway', { projection: { packageValue: 1 } }))?.packageValue; - - // Push notification stats - // one bit for each of the following: - const pushEnabled = settings.get('Push_enable') ? 1 : 0; - const pushGatewayEnabled = settings.get('Push_enable_gateway') ? 2 : 0; - const pushGatewayChanged = settings.get('Push_gateway') !== defaultGateway ? 4 : 0; - - statistics.push = pushEnabled | pushGatewayEnabled | pushGatewayChanged; - statistics.pushSecured = settings.get('Push_request_content_from_server'); - - const defaultHomeTitle = (await Settings.findOneById('Layout_Home_Title'))?.packageValue; - statistics.homeTitleChanged = settings.get('Layout_Home_Title') !== defaultHomeTitle; - - const defaultHomeBody = (await Settings.findOneById('Layout_Home_Body'))?.packageValue; - statistics.homeBodyChanged = settings.get('Layout_Home_Body') !== defaultHomeBody; - - const defaultCustomCSS = (await Settings.findOneById('theme-custom-css'))?.packageValue; - statistics.customCSSChanged = settings.get('theme-custom-css') !== defaultCustomCSS; - - const defaultOnLogoutCustomScript = (await Settings.findOneById('Custom_Script_On_Logout'))?.packageValue; - statistics.onLogoutCustomScriptChanged = settings.get('Custom_Script_On_Logout') !== defaultOnLogoutCustomScript; - - const defaultLoggedOutCustomScript = (await Settings.findOneById('Custom_Script_Logged_Out'))?.packageValue; - statistics.loggedOutCustomScriptChanged = settings.get('Custom_Script_Logged_Out') !== defaultLoggedOutCustomScript; - - const defaultLoggedInCustomScript = (await Settings.findOneById('Custom_Script_Logged_In'))?.packageValue; - statistics.loggedInCustomScriptChanged = settings.get('Custom_Script_Logged_In') !== defaultLoggedInCustomScript; - - try { - statistics.dailyPeakConnections = await Presence.getPeakConnections(true); - } catch { - statistics.dailyPeakConnections = 0; - } - - const peak = await Statistics.findMonthlyPeakConnections(); - statistics.maxMonthlyPeakConnections = Math.max(statistics.dailyPeakConnections, peak?.dailyPeakConnections || 0); - - statistics.matrixFederation = await getMatrixFederationStatistics(); - - // ABAC stats - if (License.hasModule('abac')) { - statistics.abacEnabled = settings.get('ABAC_Enabled'); - statsPms.push( - AbacAttributes.estimatedDocumentCount().then((result) => { - statistics.abacTotalAttributes = result; - }), - ); - statsPms.push( - AbacAttributes.countTotalValues().then((result) => { - statistics.abacTotalAttributeValues = result; - }), - ); - statsPms.push( - Rooms.countAbacEnabled().then((result) => { - statistics.abacRoomsEnrolled = result; - }), - ); - } - - statistics.allowUnsafeQueryAndFieldsApiParamsEnabled = process.env.ALLOW_UNSAFE_QUERY_AND_FIELDS_API_PARAMS?.toUpperCase() === 'TRUE'; - - await Promise.all(statsPms).catch(log); - - return statistics; - }, - async save(): Promise { - const rcStatistics = await statistics.get(); - rcStatistics.createdAt = new Date(); - const { insertedId } = await Statistics.insertOne(rcStatistics); - rcStatistics._id = insertedId; - - return rcStatistics; - }, -}; diff --git a/apps/meteor/app/statistics/server/methods/getStatistics.ts b/apps/meteor/app/statistics/server/methods/getStatistics.ts deleted file mode 100644 index 1b383bdc54536..0000000000000 --- a/apps/meteor/app/statistics/server/methods/getStatistics.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { IStats } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Meteor } from 'meteor/meteor'; - -import { methodDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; -import { getLastStatistics } from '../functions/getLastStatistics'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - getStatistics(refresh?: boolean): IStats; - } -} - -Meteor.methods({ - async getStatistics(refresh) { - methodDeprecationLogger.method('getStatistics', '9.0.0', '/v1/statistics'); - const uid = Meteor.userId(); - if (!uid) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'getStatistics' }); - } - return getLastStatistics({ - userId: uid, - refresh, - }); - }, -}); diff --git a/apps/meteor/app/theme/client/imports/components/emoji.css b/apps/meteor/app/theme/client/imports/components/emoji.css index 58668075584d0..626203ef4e019 100644 --- a/apps/meteor/app/theme/client/imports/components/emoji.css +++ b/apps/meteor/app/theme/client/imports/components/emoji.css @@ -1,17 +1,67 @@ +/* Wrapper for Segoe UI Emoji correcting its metrics: it paints its ink low +relative to its metric midpoint (so vertical-align: middle sits glyphs ~2px +below the text center) and ~15% larger than the other platform emoji fonts. +Only exists on Windows, so other platforms skip it in the fallback list. */ +@font-face { + font-family: rc-emoji-segoe; + src: local('Segoe UI Emoji'); + ascent-override: 90%; + descent-override: 25%; + size-adjust: 85%; +} + +/* Global emoji styles */ .emoji { - position: relative; - display: inline-block; - overflow: hidden; - width: 1.375rem; - height: 1.375rem; - margin: 0 0.15em; + font-family: 'Apple Color Emoji', rc-emoji-segoe, 'Noto Color Emoji', 'Twemoji Mozilla', 'Android Emoji', sans-serif; + font-size: 1.375rem; + + /* Must exceed the emoji fonts' ink height — ~1.13em on Noto Color Emoji and on + size-adjusted Segoe UI Emoji (rc-emoji-segoe) — otherwise the glyph paints outside + the line box and gets cut by overflow: hidden ancestors (message body, announcement + banner). */ + line-height: 1.2; vertical-align: middle; - white-space: nowrap; - text-indent: 100%; - background-repeat: no-repeat; - background-position: center; - background-size: contain; - font-size: inherit; - line-height: normal; - image-rendering: auto; + + /* custom emojis */ + &--custom { + height: 1.375rem; + width: 1.375rem; + overflow: hidden; + position: relative; + white-space: nowrap; + text-indent: 100%; + vertical-align: bottom; + display: inline-block; + margin: 0 .15em; + background-position: 50%; + background-repeat: no-repeat; + background-size: contain; + } +} + +/* emoji picker */ +.rcx-button .emoji { + font-size: 1.375rem; + line-height: 1.5rem; +} + +.rcx-message { + /* emojis on messages */ + &__emoji { + font-family: 'Apple Color Emoji', rc-emoji-segoe, 'Noto Color Emoji', 'Twemoji Mozilla', 'Android Emoji', sans-serif; + + /* Fuselage fixes this box at 1.5rem inline-block, sized for image emojis. Native + glyphs on Segoe UI Emoji/Noto Color Emoji paint taller and wider than that box, and + the overhang gets clipped by the message body's overflow: hidden — so let the box + grow to the glyph. inline-block also aligns by geometric box while the announcement + banner's .emoji span (plain inline) aligns by font metrics; Segoe UI Emoji's + asymmetric metrics make those disagree by ~2px, leaving message glyphs off-center. + Use the same inline model everywhere. */ + &:not(&--custom) { + display: inline; + width: auto; + height: auto; + line-height: 1.2; + } + } } diff --git a/apps/meteor/app/theme/server/server.ts b/apps/meteor/app/theme/server/server.ts deleted file mode 100644 index 34b71e38a303d..0000000000000 --- a/apps/meteor/app/theme/server/server.ts +++ /dev/null @@ -1,43 +0,0 @@ -import crypto from 'node:crypto'; - -import { Settings } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; -import { WebApp } from 'meteor/webapp'; - -import { settings } from '../../settings/server'; -import { addStyle } from '../../ui-master/server/inject'; - -settings.watch('theme-custom-css', (value) => { - if (!value || typeof value !== 'string') { - addStyle('css-theme', ''); - return; - } - addStyle('css-theme', value); -}); - -// TODO: Add a migration to remove this setting from the database -Meteor.startup(async () => { - await Settings.deleteMany({ _id: /theme-color/ }); - await Settings.deleteOne({ _id: /theme-font/ }); - await Settings.deleteOne({ _id: 'css' }); -}); - -WebApp.rawConnectHandlers.use((req, res, next) => { - const path = req.url?.split('?')[0]; - const prefix = __meteor_runtime_config__.ROOT_URL_PATH_PREFIX || ''; - - if (path !== `${prefix}/theme.css`) { - next(); - return; - } - - const style = settings.get('theme-custom-css'); - if (typeof style !== 'string') { - throw new Error('Invalid theme-custom-css setting'); - } - - res.setHeader('Content-Type', 'text/css; charset=UTF-8'); - res.setHeader('Content-Length', style.length); - res.setHeader('ETag', `"${crypto.createHash('sha1').update(style).digest('hex')}"`); - res.end(style, 'utf-8'); -}); diff --git a/apps/meteor/app/threads/server/functions.ts b/apps/meteor/app/threads/server/functions.ts deleted file mode 100644 index 4c5db1ddf70b5..0000000000000 --- a/apps/meteor/app/threads/server/functions.ts +++ /dev/null @@ -1,100 +0,0 @@ -import type { IMessage, IRoom, IUser } from '@rocket.chat/core-typings'; -import { isEditedMessage } from '@rocket.chat/core-typings'; -import { Messages, Subscriptions, NotificationQueue } from '@rocket.chat/models'; - -import { callbacks } from '../../../server/lib/callbacks'; -import { - notifyOnSubscriptionChangedByRoomIdAndUserIds, - notifyOnSubscriptionChangedByRoomIdAndUserId, -} from '../../lib/server/lib/notifyListener'; -import { getMentions, getUserIdsFromHighlights } from '../../lib/server/lib/notifyUsersOnMessage'; - -export async function reply({ tmid }: { tmid?: string }, message: IMessage, parentMessage: IMessage, followers: string[]) { - if (!tmid || isEditedMessage(message)) { - return false; - } - - const { rid, ts, u } = message; - - const { toAll, toHere, mentionIds } = await getMentions(message); - - const addToReplies = [ - ...new Set([ - ...followers, - ...mentionIds, - ...(Array.isArray(parentMessage.replies) && parentMessage.replies.length ? [u._id] : [parentMessage.u._id, u._id]), - ]), - ]; - - await Messages.updateRepliesByThreadId(tmid, addToReplies, ts); - - const [highlightsUids, threadFollowers] = await Promise.all([ - getUserIdsFromHighlights(rid, message), - Messages.getThreadFollowsByThreadId(tmid), - ]); - - const threadFollowersUids = threadFollowers?.filter((userId) => userId !== u._id && !mentionIds.includes(userId)) || []; - - // Notify everyone involved in the thread - const notifyOptions = toAll || toHere ? { groupMention: true } : {}; - - // Notify message mentioned users and highlights - const mentionedUsers = [...new Set([...mentionIds, ...highlightsUids])]; - - const promises = [Subscriptions.addUnreadThreadByRoomIdAndUserIds(rid, threadFollowersUids, tmid, notifyOptions)]; - - if (mentionedUsers.length) { - promises.push(Subscriptions.addUnreadThreadByRoomIdAndUserIds(rid, mentionedUsers, tmid, { userMention: true })); - } - - if (highlightsUids.length) { - promises.push( - Subscriptions.setAlertForRoomIdAndUserIds(rid, highlightsUids), - Subscriptions.setOpenForRoomIdAndUserIds(rid, highlightsUids), - ); - } - - await Promise.allSettled(promises); - - void notifyOnSubscriptionChangedByRoomIdAndUserIds(rid, [...threadFollowersUids, ...mentionedUsers, ...highlightsUids]); -} - -export async function follow({ tmid, uid }: { tmid: string; uid: string }) { - if (!tmid || !uid) { - return false; - } - - await Messages.addThreadFollowerByThreadId(tmid, uid); -} - -export async function unfollow({ tmid, rid, uid }: { tmid: string; rid: string; uid: string }) { - if (!tmid || !uid) { - return false; - } - - const removeUnreadThreadResponse = await Subscriptions.removeUnreadThreadByRoomIdAndUserId(rid, uid, tmid); - if (removeUnreadThreadResponse.modifiedCount) { - void notifyOnSubscriptionChangedByRoomIdAndUserId(rid, uid); - } - - await Messages.removeThreadFollowerByThreadId(tmid, uid); -} - -export const readThread = async ({ user, room, tmid }: { user: IUser; room: IRoom; tmid: string }) => { - const sub = await Subscriptions.findOneByRoomIdAndUserId(room._id, user._id, { projection: { tunread: 1 } }); - if (!sub) { - return; - } - - // if the thread being marked as read is the last one unread also clear the unread subscription flag - const clearAlert = sub.tunread && sub.tunread?.length <= 1 && sub.tunread.includes(tmid); - - const removeUnreadThreadResponse = await Subscriptions.removeUnreadThreadByRoomIdAndUserId(room._id, user._id, tmid, clearAlert); - if (removeUnreadThreadResponse.modifiedCount) { - void notifyOnSubscriptionChangedByRoomIdAndUserId(room._id, user._id); - } - - await NotificationQueue.clearQueueByUserId(user._id); - - callbacks.runAsync('afterReadMessages', room, { uid: user._id, tmid }); -}; diff --git a/apps/meteor/app/threads/server/hooks/aftersavemessage.ts b/apps/meteor/app/threads/server/hooks/aftersavemessage.ts deleted file mode 100644 index fd63a30d64c69..0000000000000 --- a/apps/meteor/app/threads/server/hooks/aftersavemessage.ts +++ /dev/null @@ -1,90 +0,0 @@ -import type { IMessage, IRoom, IUser } from '@rocket.chat/core-typings'; -import { isEditedMessage } from '@rocket.chat/core-typings'; -import { Messages } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { callbacks } from '../../../../server/lib/callbacks'; -import type { SendMessageOptions } from '../../../lib/server/functions/sendMessage'; -import { notifyOnMessageChange } from '../../../lib/server/lib/notifyListener'; -import { updateThreadUsersSubscriptions, getMentions } from '../../../lib/server/lib/notifyUsersOnMessage'; -import { sendMessageNotifications } from '../../../lib/server/lib/sendNotificationsOnMessage'; -import { settings } from '../../../settings/server'; -import { reply } from '../functions'; - -async function notifyUsersOnReply(message: IMessage, replies: IUser['_id'][]) { - // skips this callback if the message was edited - if (isEditedMessage(message)) { - return message; - } - - await updateThreadUsersSubscriptions(message, replies); - - return message; -} - -async function metaData(message: IMessage, parentMessage: IMessage, followers: string[]) { - await reply({ tmid: message.tmid }, message, parentMessage, followers); - - return message; -} - -const notification = async (message: IMessage, room: IRoom, replies: string[]) => { - // skips this callback if the message was edited - if (isEditedMessage(message)) { - return message; - } - - // will send a notification to everyone who replied/followed the thread except the owner of the message - await sendMessageNotifications(message, room, replies); - - return message; -}; - -export async function processThreads(message: IMessage, room: IRoom, options?: SendMessageOptions) { - if (!message.tmid) { - return message; - } - - const parentMessage = await Messages.findOneById(message.tmid); - if (!parentMessage) { - return message; - } - - const { mentionIds } = await getMentions(message); - - const replies = [ - ...new Set([ - ...((!parentMessage.tcount ? [parentMessage.u._id] : parentMessage.replies) || []), - ...(!parentMessage.tcount && room.t === 'd' && room.uids ? room.uids : []), - ...mentionIds, - ]), - ].filter((userId) => userId !== message.u._id); - - await notifyUsersOnReply(message, replies); - await metaData(message, parentMessage, replies); - if (!options?.skipNotifications) { - await notification(message, room, replies); - } - void notifyOnMessageChange({ - id: message.tmid, - }); - - return message; -} - -Meteor.startup(() => { - settings.watch('Threads_enabled', (value) => { - if (!value) { - callbacks.remove('afterSaveMessage', 'threads-after-save-message'); - return; - } - callbacks.add( - 'afterSaveMessage', - async (message, { room, options }) => { - return processThreads(message, room, options); - }, - callbacks.priority.LOW, - 'threads-after-save-message', - ); - }); -}); diff --git a/apps/meteor/app/threads/server/hooks/index.ts b/apps/meteor/app/threads/server/hooks/index.ts deleted file mode 100644 index b1be2eb6f38af..0000000000000 --- a/apps/meteor/app/threads/server/hooks/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './aftersavemessage'; diff --git a/apps/meteor/app/threads/server/index.ts b/apps/meteor/app/threads/server/index.ts deleted file mode 100644 index 214190032e0d4..0000000000000 --- a/apps/meteor/app/threads/server/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import './hooks'; -import './methods'; diff --git a/apps/meteor/app/threads/server/methods/index.ts b/apps/meteor/app/threads/server/methods/index.ts deleted file mode 100644 index 4e6ed3003b11f..0000000000000 --- a/apps/meteor/app/threads/server/methods/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import './followMessage'; -import './getThreadMessages'; -import './getThreadsList'; -import './unfollowMessage'; diff --git a/apps/meteor/app/token-login/server/index.ts b/apps/meteor/app/token-login/server/index.ts deleted file mode 100644 index 3cb9f1aac0b55..0000000000000 --- a/apps/meteor/app/token-login/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './login_token_server'; diff --git a/apps/meteor/app/ui-master/server/index.ts b/apps/meteor/app/ui-master/server/index.ts deleted file mode 100644 index 24a673b3b9b85..0000000000000 --- a/apps/meteor/app/ui-master/server/index.ts +++ /dev/null @@ -1,170 +0,0 @@ -import type { ISettingColor } from '@rocket.chat/core-typings'; -import { Settings } from '@rocket.chat/models'; -import { escapeHTML } from '@rocket.chat/string-helpers'; -import { Meteor } from 'meteor/meteor'; -import { Inject } from 'meteor/meteorhacks:inject-initial'; -import { Tracker } from 'meteor/tracker'; - -import { applyHeadInjections, headInjections, injectIntoBody, injectIntoHead } from './inject'; -import { getMessageMaxParseLength } from '../../../lib/getMessageMaxParseLength'; -import { withDebouncing } from '../../../lib/utils/highOrderFunctions'; -import { settings } from '../../settings/server'; -import { getURL } from '../../utils/server/getURL'; - -import './scripts'; - -export * from './inject'; - -Meteor.startup(() => { - Tracker.autorun(() => { - const injections = Object.values(headInjections.all()).filter((injection): injection is NonNullable => !!injection); - Inject.rawModHtml('headInjections', applyHeadInjections(injections)); - }); - - settings.watch('Default_Referrer_Policy', (value) => { - if (!value) { - return injectIntoHead('noreferrer', ''); - } - - injectIntoHead('noreferrer', ``); - }); - - settings.watch('Use_RC_SDK', (value) => { - injectIntoHead('Use_RC_SDK', ``); - }); - - if (process.env.DISABLE_ANIMATION) { - injectIntoHead( - 'disable-animation', - ` - - `, - ); - } - - settings.watch('Assets_SvgFavicon_Enable', (value) => { - const standardFavicons = ` - - `; - - if (value) { - injectIntoHead( - 'Assets_SvgFavicon_Enable', - `${standardFavicons} - `, - ); - } else { - injectIntoHead('Assets_SvgFavicon_Enable', standardFavicons); - } - }); - - settings.watch('theme-color-sidebar-background', (value) => { - const escapedValue = escapeHTML(value); - injectIntoHead( - 'theme-color-sidebar-background', - ``, - ); - }); - - settings.watch('Site_Name', (value = 'Rocket.Chat') => { - const escapedValue = escapeHTML(value); - injectIntoHead( - 'Site_Name', - `${escapedValue}` + - `` + - ``, - ); - }); - - settings.watch('Meta_language', (value = '') => { - const escapedValue = escapeHTML(value); - injectIntoHead( - 'Meta_language', - ``, - ); - }); - - settings.watch('Meta_robots', (value = '') => { - const escapedValue = escapeHTML(value); - injectIntoHead('Meta_robots', ``); - }); - - settings.watch('Meta_msvalidate01', (value = '') => { - const escapedValue = escapeHTML(value); - injectIntoHead('Meta_msvalidate01', ``); - }); - - settings.watch('Meta_google-site-verification', (value = '') => { - const escapedValue = escapeHTML(value); - injectIntoHead('Meta_google-site-verification', ``); - }); - - settings.watch('Meta_fb_app_id', (value = '') => { - const escapedValue = escapeHTML(value); - injectIntoHead('Meta_fb_app_id', ``); - }); - - settings.watch('Meta_custom', (value = '') => { - injectIntoHead('Meta_custom', value); - }); - - const baseUrl = ((prefix) => { - if (!prefix) { - return '/'; - } - - prefix = prefix.trim(); - - if (!prefix) { - return '/'; - } - - return /\/$/.test(prefix) ? prefix : `${prefix}/`; - })(__meteor_runtime_config__.ROOT_URL_PATH_PREFIX); - - injectIntoHead('base', ``); - - const escapedMessageMaxParseLength = escapeHTML(String(getMessageMaxParseLength())); - injectIntoHead('MESSAGE_MAX_PARSE_LENGTH', ``); -}); - -const renderDynamicCssList = withDebouncing({ wait: 500 })(async () => { - // const variables = RocketChat.models.Settings.findOne({_id:'theme-custom-variables'}, {fields: { value: 1}}); - const colors = await Settings.find({ _id: /theme-color-rc/i }, { projection: { value: 1, editor: 1 } }).toArray(); - const css = colors - .filter((color): color is ISettingColor => !!color?.value) - .map(({ _id, value, editor }) => { - if (editor === 'expression') { - return `--${_id.replace('theme-color-', '')}: var(--${value});`; - } - return `--${_id.replace('theme-color-', '')}: ${value};`; - }) - .join('\n'); - injectIntoBody('dynamic-variables', ``); -}); - -await renderDynamicCssList(); - -settings.watchByRegex(/theme-color-rc/i, renderDynamicCssList); - -injectIntoBody( - 'react-root', - ` - -
- -
-`, -); diff --git a/apps/meteor/app/ui-message/client/messageBox/AddLinkComposerActionModal.tsx b/apps/meteor/app/ui-message/client/messageBox/AddLinkComposerActionModal.tsx index 58edd971d1e1c..963580143aca8 100644 --- a/apps/meteor/app/ui-message/client/messageBox/AddLinkComposerActionModal.tsx +++ b/apps/meteor/app/ui-message/client/messageBox/AddLinkComposerActionModal.tsx @@ -6,7 +6,7 @@ import { useTranslation } from 'react-i18next'; import { isValidLink } from '../../../../client/views/room/MessageList/lib/isValidLink'; -type AddLinkComposerActionModalProps = { +export type AddLinkComposerActionModalProps = { selectedText?: string; onConfirm: (url: string, text: string) => void; onClose: () => void; diff --git a/apps/meteor/app/ui-message/client/messageBox/createComposerAPI.spec.ts b/apps/meteor/app/ui-message/client/messageBox/createComposerAPI.spec.ts new file mode 100644 index 0000000000000..ccb42a88a94a7 --- /dev/null +++ b/apps/meteor/app/ui-message/client/messageBox/createComposerAPI.spec.ts @@ -0,0 +1,61 @@ +import { createComposerAPI } from './createComposerAPI'; + +jest.mock('../../../../client/lib/chats/uploads', () => ({ + createUploadsAPI: () => ({}), +})); + +const setupComposer = (initialValue: string, cursor: { start: number; end: number }) => { + const input = document.createElement('textarea'); + document.body.appendChild(input); + + const composer = createComposerAPI(input, jest.fn(), '', Number.MAX_SAFE_INTEGER, { current: null }, { rid: 'GENERAL' }); + + input.value = initialValue; + input.setSelectionRange(cursor.start, cursor.end); + + return { composer, input }; +}; + +describe('ChatMessages Composer API - replaceText', () => { + afterEach(() => { + document.body.innerHTML = ''; + }); + + it('should place the cursor right after the mention when inserting at the start of the message', () => { + const { composer, input } = setupComposer('@jhello', { start: 2, end: 2 }); + + composer.replaceText('@john ', { start: 0, end: 2 }); + + expect(input.value).toBe('@john hello'); + expect(input.selectionStart).toBe('@john '.length); + expect(input.selectionEnd).toBe('@john '.length); + }); + + it('should place the cursor right after the mention when inserting in the middle of the message', () => { + const { composer, input } = setupComposer('hi @jthere', { start: 5, end: 5 }); + + composer.replaceText('@john ', { start: 3, end: 5 }); + + expect(input.value).toBe('hi @john there'); + expect(input.selectionStart).toBe('hi @john '.length); + expect(input.selectionEnd).toBe('hi @john '.length); + }); + + it('should place the cursor right after the mention when inserting at the end of the message', () => { + const { composer, input } = setupComposer('hello @j', { start: 8, end: 8 }); + + composer.replaceText('@john ', { start: 6, end: 8 }); + + expect(input.value).toBe('hello @john '); + expect(input.selectionStart).toBe('hello @john '.length); + expect(input.selectionEnd).toBe('hello @john '.length); + }); + + it('should keep the cursor collapsed right after the inserted text', () => { + const { composer, input } = setupComposer('@jhello', { start: 2, end: 2 }); + + composer.replaceText('@john ', { start: 0, end: 2 }); + + expect(input.selectionStart).toBe(input.selectionEnd); + }); +}); diff --git a/apps/meteor/app/ui-message/client/messageBox/createComposerAPI.ts b/apps/meteor/app/ui-message/client/messageBox/createComposerAPI.ts index 2018abfa5fa91..b54885d2d6c47 100644 --- a/apps/meteor/app/ui-message/client/messageBox/createComposerAPI.ts +++ b/apps/meteor/app/ui-message/client/messageBox/createComposerAPI.ts @@ -288,8 +288,6 @@ export const createComposerAPI = ( // Gets the text that is connected to the cursor and replaces it with the given text const replaceText = (text: string, selection: { readonly start: number; readonly end: number }): void => { - const { selectionStart, selectionEnd } = input; - // Selects the text that is connected to the cursor input.setSelectionRange(selection.start ?? 0, selection.end ?? text.length); const textAreaTxt = input.value; @@ -298,11 +296,9 @@ export const createComposerAPI = ( input.value = textAreaTxt.substring(0, selection.start) + text + textAreaTxt.substring(selection.end); } - input.selectionStart = selectionStart + text.length; - input.selectionEnd = selectionStart + text.length; - if (selectionStart !== selectionEnd) { - input.selectionStart = selectionStart; - } + const cursorPosition = (selection.start ?? 0) + text.length; + input.selectionStart = cursorPosition; + input.selectionEnd = cursorPosition; triggerEvent(input, 'input'); triggerEvent(input, 'change'); diff --git a/apps/meteor/app/ui-utils/server/index.ts b/apps/meteor/app/ui-utils/server/index.ts deleted file mode 100644 index f2d89d22fcc40..0000000000000 --- a/apps/meteor/app/ui-utils/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Message } from './Message'; diff --git a/apps/meteor/app/ui/client/lib/ChatMessages.ts b/apps/meteor/app/ui/client/lib/ChatMessages.ts index a6febf3fdfef9..5bf8cf8693eb6 100644 --- a/apps/meteor/app/ui/client/lib/ChatMessages.ts +++ b/apps/meteor/app/ui/client/lib/ChatMessages.ts @@ -1,4 +1,4 @@ -import type { IMessage, IRoom, IUser } from '@rocket.chat/core-typings'; +import type { DeepWritable, IMessage, IRoom, IUser } from '@rocket.chat/core-typings'; import { isVideoConfMessage } from '@rocket.chat/core-typings'; import type { IActionManager } from '@rocket.chat/ui-contexts'; @@ -18,12 +18,6 @@ import { uploadFiles } from '../../../../client/lib/chats/flows/uploadFiles'; import { ReadStateManager } from '../../../../client/lib/chats/readStateManager'; import { setHighlightMessage } from '../../../../client/views/room/MessageList/providers/messageHighlightSubscription'; -type DeepWritable = T extends (...args: any) => any - ? T - : { - -readonly [P in keyof T]: DeepWritable; - }; - export class ChatMessages implements ChatAPI { public uid: string | undefined; diff --git a/apps/meteor/app/user-status/server/index.ts b/apps/meteor/app/user-status/server/index.ts deleted file mode 100644 index b1622098fa0a0..0000000000000 --- a/apps/meteor/app/user-status/server/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import './methods/deleteCustomUserStatus'; -import './methods/insertOrUpdateUserStatus'; -import './methods/listCustomUserStatus'; -import './methods/setUserStatus'; -import './methods/getUserStatusText'; diff --git a/apps/meteor/app/utils/client/getURL.ts b/apps/meteor/app/utils/client/getURL.ts index 0a292e6009589..2c50225e0da53 100644 --- a/apps/meteor/app/utils/client/getURL.ts +++ b/apps/meteor/app/utils/client/getURL.ts @@ -3,7 +3,7 @@ import { getURLWithoutSettings } from '../lib/getURL'; import { Info } from '../rocketchat.info'; export const getURL = function ( - path: string, // eslint-disable-next-line @typescript-eslint/naming-convention + path: string, params: { cdn?: boolean; full?: boolean; diff --git a/apps/meteor/app/utils/client/lib/RestApiClient.ts b/apps/meteor/app/utils/client/lib/RestApiClient.ts index 7cdb81beb7835..2498ff07f4688 100644 --- a/apps/meteor/app/utils/client/lib/RestApiClient.ts +++ b/apps/meteor/app/utils/client/lib/RestApiClient.ts @@ -3,6 +3,7 @@ import { RestClient } from '@rocket.chat/api-client'; import { invokeTwoFactorModal } from '../../../../client/lib/2fa/process2faReturn'; import { baseURI } from '../../../../client/lib/baseURI'; +import { clearStoredCredentials } from '../../../../client/lib/sdk/ddpSdk'; import { STORAGE_KEYS, getStoredItem } from '../../../../client/lib/sdk/storage'; class RestApiClient extends RestClient { @@ -37,11 +38,31 @@ APIClient.handleTwoFactorChallenge(invokeTwoFactorModal); * This middleware will throw the error object instead. * */ +/** + * A 401 means the request reached an authRequired route without a session the server recognizes. + * That is only evidence of an expired session when the request was an action the user just took: + * boot-time reads (OmnichannelProvider's livechat/config/routing, custom-sounds.list) fire before + * the session is established and answer 401 with the same message, and clearing on those logs out + * a session that is coming up. Restricting the wipe to mutations mirrors the DDP path this replaced + * — ddpOverREST only clears credentials for method calls, never for background fetches — so a + * session that dies while idle is noticed on the user's next write, exactly as before. + */ +const isMutation = (method: string): boolean => method === 'POST' || method === 'PUT' || method === 'DELETE'; + APIClient.use(async (request, next) => { + const [, method] = request; + const tokenAtSend = getStoredItem(STORAGE_KEYS.LOGIN_TOKEN); + try { return await next(...request); } catch (error) { if (error instanceof Response) { + // Never 403 (authenticated but lacking permission) — that must not log the user out. + // The token comparison keeps a request that was in flight across a re-login from + // evicting the session it does not belong to. + if (error.status === 401 && isMutation(method) && tokenAtSend && tokenAtSend === getStoredItem(STORAGE_KEYS.LOGIN_TOKEN)) { + clearStoredCredentials(); + } const e = await error.json(); throw e; } diff --git a/apps/meteor/app/utils/lib/getURL.ts b/apps/meteor/app/utils/lib/getURL.ts index ed510767311da..5cbf9f2d670ca 100644 --- a/apps/meteor/app/utils/lib/getURL.ts +++ b/apps/meteor/app/utils/lib/getURL.ts @@ -37,7 +37,7 @@ function getCloudUrl( export const _getURL = ( path: string, - // eslint-disable-next-line @typescript-eslint/naming-convention + { cdn, full, cloud, cloud_route, cloud_params, _cdn_prefix, _root_url_path_prefix, _site_url }: Record, deeplinkUrl?: string, ): string => { @@ -76,7 +76,7 @@ export const _getURL = ( export const getURLWithoutSettings = ( path: string, - // eslint-disable-next-line @typescript-eslint/naming-convention + { cdn = true, full = false, diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 359dd82244b27..daeddd14cccff 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "8.6.1" + "version": "9.0.0-develop" } diff --git a/apps/meteor/app/utils/server/getURL.ts b/apps/meteor/app/utils/server/getURL.ts deleted file mode 100644 index 4703569736add..0000000000000 --- a/apps/meteor/app/utils/server/getURL.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { settings } from '../../settings/server'; -import { getURLWithoutSettings } from '../lib/getURL'; - -export const getURL = function ( - path: string, // eslint-disable-next-line @typescript-eslint/naming-convention - params: { - cdn?: boolean; - full?: boolean; - cloud?: boolean; - cloud_route?: string; - cloud_params?: Record; - } = {}, - cloudDeepLinkUrl?: string, -): string { - const cdnPrefix = settings.get('CDN_PREFIX') || ''; - const siteUrl = settings.get('Site_Url') || ''; - - return getURLWithoutSettings(path, params, cdnPrefix, siteUrl, cloudDeepLinkUrl); -}; diff --git a/apps/meteor/app/utils/server/restrictions.ts b/apps/meteor/app/utils/server/restrictions.ts deleted file mode 100644 index 6eb1c9a655d4a..0000000000000 --- a/apps/meteor/app/utils/server/restrictions.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { settings } from '../../settings/server'; -import { fileUploadIsValidContentTypeFromSettings } from '../lib/restrictions'; - -export const fileUploadIsValidContentType = function (type: string | undefined, customWhiteList?: string): boolean { - const blackList = settings.get('FileUpload_MediaTypeBlackList'); - const whiteList = customWhiteList || settings.get('FileUpload_MediaTypeWhiteList'); - - return fileUploadIsValidContentTypeFromSettings(type, whiteList, blackList); -}; diff --git a/apps/meteor/app/version-check/server/index.ts b/apps/meteor/app/version-check/server/index.ts deleted file mode 100644 index 45e9c5197c305..0000000000000 --- a/apps/meteor/app/version-check/server/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { cronJobs } from '@rocket.chat/cron'; -import { Meteor } from 'meteor/meteor'; - -import { checkVersionUpdate } from './functions/checkVersionUpdate'; -import { settings } from '../../settings/server'; -import './methods/banner_dismiss'; - -const jobName = 'version_check'; - -if (await cronJobs.has(jobName)) { - await cronJobs.remove(jobName); -} - -const addVersionCheckJob = async () => { - await cronJobs.add(jobName, '0 2 * * *', async () => checkVersionUpdate()); -}; - -Meteor.startup(() => { - setImmediate(() => { - if (settings.get('Update_EnableChecker')) { - void checkVersionUpdate(); - } - }); -}); - -settings.watch('Update_EnableChecker', async () => { - const checkForUpdates = settings.get('Update_EnableChecker'); - - if (checkForUpdates && (await cronJobs.has(jobName))) { - return; - } - - if (checkForUpdates) { - await addVersionCheckJob(); - return; - } - - await cronJobs.remove(jobName); -}); diff --git a/apps/meteor/app/webdav/README.md b/apps/meteor/app/webdav/README.md deleted file mode 100644 index 9200308057830..0000000000000 --- a/apps/meteor/app/webdav/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# RocketChat WebDAV - -Package for RocketChat users to interact with WebDAV servers (Tested with ownCloud and Nextcloud). diff --git a/apps/meteor/app/webdav/server/index.ts b/apps/meteor/app/webdav/server/index.ts deleted file mode 100644 index 36bdfcae93324..0000000000000 --- a/apps/meteor/app/webdav/server/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import './methods/addWebdavAccount'; -import './methods/getWebdavFileList'; -import './methods/getWebdavFilePreview'; -import './methods/getFileFromWebdav'; -import './methods/uploadFileToWebdav'; diff --git a/apps/meteor/app/webdav/server/lib/getWebdavCredentials.ts b/apps/meteor/app/webdav/server/lib/getWebdavCredentials.ts deleted file mode 100644 index 5c12c5b676f17..0000000000000 --- a/apps/meteor/app/webdav/server/lib/getWebdavCredentials.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { WebDAVClientOptions } from 'webdav'; - -export function getWebdavCredentials(account: WebDAVClientOptions): WebDAVClientOptions { - const cred = account.token - ? { token: account.token } - : { - username: account.username, - password: account.password, - }; - return cred; -} diff --git a/apps/meteor/app/webdav/server/lib/uploadFileToWebdav.ts b/apps/meteor/app/webdav/server/lib/uploadFileToWebdav.ts deleted file mode 100644 index e7dc0df2cc632..0000000000000 --- a/apps/meteor/app/webdav/server/lib/uploadFileToWebdav.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { IWebdavAccount } from '@rocket.chat/core-typings'; -import { WebdavAccounts } from '@rocket.chat/models'; - -import { getWebdavCredentials } from './getWebdavCredentials'; -import { WebdavClientAdapter } from './webdavClientAdapter'; - -export const uploadFileToWebdav = async (accountId: IWebdavAccount['_id'], fileData: string | Buffer, name: string): Promise => { - const account = await WebdavAccounts.findOneById(accountId); - if (!account) { - throw new Error('error-invalid-account'); - } - - const uploadFolder = 'Rocket.Chat Uploads/'; - const buffer = Buffer.isBuffer(fileData) ? fileData : Buffer.from(fileData); - - const cred = getWebdavCredentials(account); - const client = new WebdavClientAdapter(account.serverURL, cred); - // eslint-disable-next-line @typescript-eslint/no-empty-function - await client.createDirectory(uploadFolder).catch(() => {}); - await client.putFileContents(`${uploadFolder}/${name}`, buffer, { overwrite: false }); -}; diff --git a/apps/meteor/app/webdav/server/lib/webdavClientAdapter.ts b/apps/meteor/app/webdav/server/lib/webdavClientAdapter.ts deleted file mode 100644 index c3d7df2330509..0000000000000 --- a/apps/meteor/app/webdav/server/lib/webdavClientAdapter.ts +++ /dev/null @@ -1,91 +0,0 @@ -import stream from 'node:stream'; -import type { Readable, Writable } from 'node:stream'; - -import type { WebDAVClient, FileStat, ResponseDataDetailed, WebDAVClientOptions } from 'webdav'; -import { createClient } from 'webdav'; - -export class WebdavClientAdapter { - _client: WebDAVClient; - - constructor(serverConfig: string, cred: WebDAVClientOptions) { - if (cred.token) { - this._client = createClient(serverConfig, { token: cred.token }); - } else { - this._client = createClient(serverConfig, { - username: cred.username, - password: cred.password, - }); - } - } - - async stat(path: string): Promise> { - try { - return await this._client.stat(path); - } catch (error: any) { - throw new Error(error.response?.statusText ? error.response.statusText : 'Error checking if directory exists on webdav'); - } - } - - async createDirectory(path: string): Promise { - try { - return await this._client.createDirectory(path); - } catch (error: any) { - throw new Error(error.response?.statusText ? error.response.statusText : 'Error creating directory on webdav'); - } - } - - async deleteFile(path: string): Promise { - try { - return await this._client.deleteFile(path); - } catch (error: any) { - throw new Error(error.response?.statusText ? error.response.statusText : 'Error deleting file on webdav'); - } - } - - async getFileContents(filename: string): Promise { - try { - return (await this._client.getFileContents(filename)) as Buffer; - } catch (error: any) { - throw new Error(error.response?.statusText ? error.response.statusText : 'Error getting file contents webdav'); - } - } - - async getDirectoryContents(path: string): Promise> { - try { - return await this._client.getDirectoryContents(path); - } catch (error: any) { - throw new Error(error.response?.statusText ? error.response.statusText : 'Error getting directory contents webdav'); - } - } - - async putFileContents(path: string, data: Buffer, options: Record = {}): Promise { - try { - return await this._client.putFileContents(path, data, options); - } catch (error: any) { - throw new Error(error.response?.statusText ?? 'Error updating file contents.'); - } - } - - createReadStream(path: string, options?: Record): Readable { - return this._client.createReadStream(path, options); - } - - createWriteStream(path: string, fileSize: number): Writable { - const ws = new stream.PassThrough(); - - this._client - .customRequest(path, { - method: 'PUT', - headers: { - ...(fileSize ? { 'Content-Length': String(fileSize) } : {}), - }, - data: ws, - maxRedirects: 0, - }) - .catch((err) => { - ws.emit('error', err); - }); - - return ws; - } -} diff --git a/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts b/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts deleted file mode 100644 index 2c39736490913..0000000000000 --- a/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import type { IWebdavAccountPayload } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { WebdavAccounts } from '@rocket.chat/models'; -import { Match, check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { settings } from '../../../settings/server'; -import { WebdavClientAdapter } from '../lib/webdavClientAdapter'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - addWebdavAccount(formData: IWebdavAccountPayload): boolean; - addWebdavAccountByToken(data: IWebdavAccountPayload): boolean; - } -} - -export const addWebdavAccountByToken = async (userId: string, data: IWebdavAccountPayload): Promise => { - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid User', { method: 'addWebdavAccount' }); - } - - if (!settings.get('Webdav_Integration_Enabled')) { - throw new Meteor.Error('error-not-allowed', 'WebDAV Integration Not Allowed', { - method: 'addWebdavAccount', - }); - } - - check( - data, - Match.ObjectIncluding({ - serverURL: String, - token: Match.ObjectIncluding({ - access_token: String, - token_type: String, - refresh_token: Match.Optional(String), - }), - name: Match.Maybe(String), - }), - ); - - try { - const client = new WebdavClientAdapter(data.serverURL, { token: data.token }); - - const accountData = { - userId, - serverURL: data.serverURL, - token: data.token, - name: data.name ?? '', - }; - - await client.stat('/'); - await WebdavAccounts.updateOne( - { - userId, - serverURL: data.serverURL, - name: data.name ?? '', - }, - { - $set: accountData, - }, - { - upsert: true, - }, - ); - void api.broadcast('notify.webdav', userId, { - type: 'changed', - account: accountData, - }); - } catch (error) { - throw new Meteor.Error('could-not-access-webdav', 'Could not access webdav', { - method: 'addWebdavAccount', - }); - } - - return true; -}; - -Meteor.methods({ - async addWebdavAccount(formData) { - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid User', { method: 'addWebdavAccount' }); - } - - if (!settings.get('Webdav_Integration_Enabled')) { - throw new Meteor.Error('error-not-allowed', 'WebDAV Integration Not Allowed', { - method: 'addWebdavAccount', - }); - } - - check( - formData, - Match.ObjectIncluding({ - serverURL: String, - username: String, - password: String, - name: Match.Maybe(String), - }), - ); - - const duplicateAccount = await WebdavAccounts.findOneByUserIdServerUrlAndUsername( - { userId, serverURL: formData.serverURL, username: formData.username }, - {}, - ); - - if (duplicateAccount !== null) { - throw new Meteor.Error('duplicated-account', 'Account not found', { - method: 'addWebdavAccount', - }); - } - - try { - const client = new WebdavClientAdapter(formData.serverURL, { - username: formData.username, - password: formData.password, - }); - - const accountData = { - userId, - serverURL: formData.serverURL, - username: formData.username, - password: formData.password, - name: formData.name ?? '', - }; - - await client.stat('/'); - await WebdavAccounts.insertOne(accountData); - - void api.broadcast('notify.webdav', userId, { - type: 'changed', - account: accountData, - }); - } catch (error) { - throw new Meteor.Error('could-not-access-webdav', 'Could not access webdav', { - method: 'addWebdavAccount', - }); - } - return true; - }, - - async addWebdavAccountByToken(data) { - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid User', { method: 'addWebdavAccount' }); - } - - return addWebdavAccountByToken(userId, data); - }, -}); diff --git a/apps/meteor/app/webdav/server/methods/getFileFromWebdav.ts b/apps/meteor/app/webdav/server/methods/getFileFromWebdav.ts deleted file mode 100644 index f8a2281586e44..0000000000000 --- a/apps/meteor/app/webdav/server/methods/getFileFromWebdav.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { IWebdavAccount, IWebdavNode } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { WebdavAccounts } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { settings } from '../../../settings/server'; -import { getWebdavCredentials } from '../lib/getWebdavCredentials'; -import { WebdavClientAdapter } from '../lib/webdavClientAdapter'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - getFileFromWebdav(accountId: IWebdavAccount['_id'], file: IWebdavNode): Promise<{ success: boolean; data: Uint8Array }>; - } -} - -Meteor.methods({ - async getFileFromWebdav(accountId, file) { - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid User', { method: 'getFileFromWebdav' }); - } - if (!settings.get('Webdav_Integration_Enabled')) { - throw new Meteor.Error('error-not-allowed', 'WebDAV Integration Not Allowed', { - method: 'getFileFromWebdav', - }); - } - - const account = await WebdavAccounts.findOneByIdAndUserId(accountId, userId, {}); - if (!account) { - throw new Meteor.Error('error-invalid-account', 'Invalid WebDAV Account', { - method: 'getFileFromWebdav', - }); - } - - try { - const cred = getWebdavCredentials(account); - const client = new WebdavClientAdapter(account.serverURL, cred); - const fileContent = await client.getFileContents(file.filename); - const data = new Uint8Array(fileContent); - return { success: true, data }; - } catch (error) { - throw new Meteor.Error('unable-to-get-file', 'Unable to get file', { - method: 'getFileFromWebdav', - }); - } - }, -}); diff --git a/apps/meteor/app/webdav/server/methods/getWebdavFileList.ts b/apps/meteor/app/webdav/server/methods/getWebdavFileList.ts deleted file mode 100644 index 66e924b719a2a..0000000000000 --- a/apps/meteor/app/webdav/server/methods/getWebdavFileList.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { IWebdavAccount, IWebdavNode } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { WebdavAccounts } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { settings } from '../../../settings/server'; -import { getWebdavCredentials } from '../lib/getWebdavCredentials'; -import { WebdavClientAdapter } from '../lib/webdavClientAdapter'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - getWebdavFileList(accountId: IWebdavAccount['_id'], path: string): { success: boolean; data: IWebdavNode[] }; - } -} - -Meteor.methods({ - async getWebdavFileList(accountId, path) { - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid User', { method: 'getWebdavFileList' }); - } - - if (!settings.get('Webdav_Integration_Enabled')) { - throw new Meteor.Error('error-not-allowed', 'WebDAV Integration Not Allowed', { - method: 'getWebdavFileList', - }); - } - - const account = await WebdavAccounts.findOneByIdAndUserId(accountId, userId, {}); - if (!account) { - throw new Meteor.Error('error-invalid-account', 'Invalid WebDAV Account', { - method: 'getWebdavFileList', - }); - } - - try { - const cred = getWebdavCredentials(account); - const client = new WebdavClientAdapter(account.serverURL, cred); - const data = (await client.getDirectoryContents(path)) as IWebdavNode[]; - return { success: true, data }; - } catch (error) { - throw new Meteor.Error('could-not-access-webdav', 'Could not access webdav', { - method: 'getWebdavFileList', - }); - } - }, -}); diff --git a/apps/meteor/app/webdav/server/methods/getWebdavFilePreview.ts b/apps/meteor/app/webdav/server/methods/getWebdavFilePreview.ts deleted file mode 100644 index 34077babf276c..0000000000000 --- a/apps/meteor/app/webdav/server/methods/getWebdavFilePreview.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { IWebdavAccount } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { WebdavAccounts } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; -import { createClient } from 'webdav'; - -import { settings } from '../../../settings/server'; -import { getWebdavCredentials } from '../lib/getWebdavCredentials'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - getWebdavFilePreview(accountId: IWebdavAccount['_id'], path: string): { success: true; data: ArrayBuffer } | undefined; - } -} - -Meteor.methods({ - async getWebdavFilePreview(accountId, path) { - const userId = Meteor.userId(); - - if (!userId) { - throw new Meteor.Error('error-invalid-user', 'Invalid User', { - method: 'getWebdavFilePreview', - }); - } - - if (!settings.get('Webdav_Integration_Enabled') || !settings.get('Accounts_OAuth_Nextcloud_URL')) { - throw new Meteor.Error('error-not-allowed', 'WebDAV Integration Not Allowed', { - method: 'getWebdavFilePreview', - }); - } - - const account = await WebdavAccounts.findOneByIdAndUserId(accountId, userId, {}); - if (!account) { - throw new Meteor.Error('error-invalid-account', 'Invalid WebDAV Account', { - method: 'getWebdavFilePreview', - }); - } - - try { - const cred = getWebdavCredentials(account); - const client = createClient(account.serverURL, cred); - const serverURL = settings.get('Accounts_OAuth_Nextcloud_URL'); - const res = await client.customRequest(`${serverURL}/index.php/core/preview.png?file=${path}&x=64&y=64`, { - method: 'GET', - responseType: 'arraybuffer', - }); - return { success: true, data: res.data as ArrayBuffer }; - } catch (error) { - // ignore error - } - }, -}); diff --git a/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts b/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts deleted file mode 100644 index 6d66031aa4173..0000000000000 --- a/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { MeteorError } from '@rocket.chat/core-services'; -import type { IWebdavAccount } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Logger } from '@rocket.chat/logger'; -import type { TranslationKey } from '@rocket.chat/ui-contexts'; -import { Meteor } from 'meteor/meteor'; - -import { settings } from '../../../settings/server'; -import { uploadFileToWebdav } from '../lib/uploadFileToWebdav'; - -const logger = new Logger('WebDAV_Upload'); - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - uploadFileToWebdav( - accountId: IWebdavAccount['_id'], - fileData: string | Buffer | ArrayBuffer, - name: string, - ): { success: boolean; message?: TranslationKey }; - } -} - -Meteor.methods({ - async uploadFileToWebdav(accountId, fileData, name) { - if (!Meteor.userId()) { - throw new MeteorError('error-invalid-user', 'Invalid User', { - method: 'uploadFileToWebdav', - }); - } - - if (!settings.get('Webdav_Integration_Enabled')) { - throw new MeteorError('error-not-allowed', 'WebDAV Integration Not Allowed', { - method: 'uploadFileToWebdav', - }); - } - - try { - await uploadFileToWebdav(accountId, fileData instanceof ArrayBuffer ? Buffer.from(fileData) : fileData, name); - return { success: true }; - } catch (err: any) { - if (typeof err === 'object' && err instanceof Error && err.name === 'error-invalid-account') { - throw new MeteorError(err.name, 'Invalid WebDAV Account', { - method: 'uploadFileToWebdav', - }); - } - - logger.error({ err }); - - if (err.response) { - const { status } = err.response; - if (status === 404) { - return { success: false, message: 'webdav-server-not-found' }; - } - if (status === 401) { - return { success: false, message: 'error-invalid-account' }; - } - if (status === 412) { - return { success: false, message: 'Duplicate_file_name_found' }; - } - } - return { success: false, message: 'FileUpload_Error' }; - } - }, -}); diff --git a/apps/meteor/app/wordpress/server/index.ts b/apps/meteor/app/wordpress/server/index.ts deleted file mode 100644 index cf327e4971bb2..0000000000000 --- a/apps/meteor/app/wordpress/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './lib'; diff --git a/apps/meteor/app/wordpress/server/lib.ts b/apps/meteor/app/wordpress/server/lib.ts deleted file mode 100644 index 7777ea1382215..0000000000000 --- a/apps/meteor/app/wordpress/server/lib.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type { OauthConfig } from '@rocket.chat/core-typings'; -import { Meteor } from 'meteor/meteor'; -import { ServiceConfiguration } from 'meteor/service-configuration'; -import _ from 'underscore'; - -import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; -import { settings } from '../../settings/server'; - -const config: OauthConfig = { - serverURL: '', - identityPath: '/oauth/me', - - addAutopublishFields: { - forLoggedInUser: ['services.wordpress'], - forOtherUsers: ['services.wordpress.user_login'], - }, - accessTokenParam: 'access_token', -}; - -const WordPress = new CustomOAuth('wordpress', config); - -const fillSettings = _.debounce(async (): Promise => { - config.serverURL = settings.get('API_Wordpress_URL'); - if (!config.serverURL) { - if (config.serverURL === undefined) { - return fillSettings(); - } - return; - } - - delete config.identityPath; - delete config.identityTokenSentVia; - delete config.authorizePath; - delete config.tokenPath; - delete config.scope; - - const serverType = settings.get('Accounts_OAuth_Wordpress_server_type'); - switch (serverType) { - case 'custom': - if (settings.get('Accounts_OAuth_Wordpress_identity_path')) { - config.identityPath = settings.get('Accounts_OAuth_Wordpress_identity_path'); - } - - if (settings.get('Accounts_OAuth_Wordpress_identity_token_sent_via')) { - config.identityTokenSentVia = settings.get('Accounts_OAuth_Wordpress_identity_token_sent_via'); - } - - if (settings.get('Accounts_OAuth_Wordpress_token_path')) { - config.tokenPath = settings.get('Accounts_OAuth_Wordpress_token_path'); - } - - if (settings.get('Accounts_OAuth_Wordpress_authorize_path')) { - config.authorizePath = settings.get('Accounts_OAuth_Wordpress_authorize_path'); - } - - if (settings.get('Accounts_OAuth_Wordpress_scope')) { - config.scope = settings.get('Accounts_OAuth_Wordpress_scope'); - } - break; - case 'wordpress-com': - config.identityPath = 'https://public-api.wordpress.com/rest/v1/me'; - config.identityTokenSentVia = 'header'; - config.authorizePath = 'https://public-api.wordpress.com/oauth2/authorize'; - config.tokenPath = 'https://public-api.wordpress.com/oauth2/token'; - config.scope = 'auth'; - break; - default: - config.identityPath = '/oauth/me'; - break; - } - - const result = WordPress.configure(config); - const enabled = settings.get('Accounts_OAuth_Wordpress'); - if (enabled) { - await ServiceConfiguration.configurations.upsertAsync( - { - service: 'wordpress', - }, - { - $set: config, - }, - ); - } else { - await ServiceConfiguration.configurations.removeAsync({ - service: 'wordpress', - }); - } - - return result; -}, 1000); - -Meteor.startup(() => { - return settings.watchByRegex(/(API\_Wordpress\_URL)?(Accounts\_OAuth\_Wordpress\_)?/, () => fillSettings()); -}); diff --git a/apps/meteor/client/apps/gameCenter/GameCenterContainer.tsx b/apps/meteor/client/apps/gameCenter/GameCenterContainer.tsx index c6b9b95ffe120..5c2467482af1e 100644 --- a/apps/meteor/client/apps/gameCenter/GameCenterContainer.tsx +++ b/apps/meteor/client/apps/gameCenter/GameCenterContainer.tsx @@ -29,7 +29,7 @@ const GameCenterContainer = ({ handleClose, handleBack, game }: IGameCenterConta {handleClose && } - + ', + }; + + const spotifyOembedResponse = { + html: '', + iframe_url: 'https://open.spotify.com/embed/track/4cOdK2wGLETKBW3PvgPWqT?utm_source=oembed', + width: 456, + height: 152, + version: '1.0', + provider_name: 'Spotify', + provider_url: 'https://spotify.com', + type: 'rich', + title: 'Never Gonna Give You Up', + thumbnail_url: 'https://image-cdn-ak.spotifycdn.com/image/ab67616d00001e0215ebbedaacef61af244262a8', + thumbnail_width: 300, + thumbnail_height: 300, + }; + let ytEmbedMsgId: IMessage['_id']; let imgUrlMsgId: IMessage['_id']; + before(async () => { + const healthy = await mockServerHealthy(); + expect(healthy, 'mock-server is not reachable — ensure it is running').to.be.true; + await mockServerReset(); + }); + + // programmed responses queue per key and an infinite (times: 0) entry never expires, so each test starts from a clean mock + afterEach(() => mockServerReset()); + before(() => Promise.all([ updateSetting('API_EmbedIgnoredHosts', ''), - updateSetting('API_EmbedSafePorts', '80, 443, 3000'), - updateSetting('SSRF_Allowlist', '127.0.0.1:3000'), + updateSetting('API_EmbedSafePorts', '80, 443, 3000, 8080'), + updateSetting('SSRF_Allowlist', '127.0.0.1:3000, mock-server.dev'), ]), ); @@ -1282,10 +1298,11 @@ describe('[Chat]', () => { ); before(async () => { + await mockServerSet(mockOembedEndpoint.method, mockOembedEndpoint.path, youtubeOembedResponse); const ytEmbedMsgPayload = { _id: `id-${Date.now()}`, rid: testChannel._id, - msg: 'https://www.youtube.com/watch?v=T2v29gK8fP4', + msg: mockVideoUrl('embed-max-width'), emoji: ':smirk:', }; const ytPostResponse = await request.post(api('chat.sendMessage')).set(credentials).send({ message: ytEmbedMsgPayload }); @@ -1360,7 +1377,7 @@ describe('[Chat]', () => { .send({ message: { rid: testChannel._id, - msg: 'https://www.youtube.com/watch?v=T2v29gK8fP4', + msg: mockVideoUrl('empty-preview-urls'), }, previewUrls: [], }) @@ -1389,6 +1406,9 @@ describe('[Chat]', () => { }); it('should generate previews of chosen URL when the previewUrls array is provided', async () => { + const chosenUrl = mockPageUrl('chosen-preview'); + await mockServerSet('GET', '/page/chosen-preview', 'Chosen Preview Page'); + let msgId; await request .post(api('chat.sendMessage')) @@ -1396,9 +1416,9 @@ describe('[Chat]', () => { .send({ message: { rid: testChannel._id, - msg: 'https://www.youtube.com/watch?v=T2v29gK8fP4 https://www.rocket.chat/', + msg: `${mockVideoUrl('not-chosen-preview')} ${chosenUrl}`, }, - previewUrls: ['https://www.rocket.chat/'], + previewUrls: [chosenUrl], }) .expect('Content-Type', 'application/json') .expect(200) @@ -1410,8 +1430,7 @@ describe('[Chat]', () => { msgId = res.body.message._id; }); - // process is async now so wait for a sec - await sleep(1000); + await sleep(oembedProcessingMs); await request .get(api('chat.getMessage')) @@ -1425,19 +1444,19 @@ describe('[Chat]', () => { expect(res.body).to.have.property('message').to.have.property('urls').to.be.an('array').that.has.lengthOf(2); expect(res.body.message.urls[0]).to.have.property('meta').that.is.an('object').that.is.empty; - expect(res.body.message.urls[1]).to.have.property('meta').that.is.an('object').that.is.not.empty; + expect(res.body.message.urls[1]).to.have.property('meta').to.have.property('pageTitle', 'Chosen Preview Page'); }); }); it('should not generate previews if the message contains more than five external URL', async () => { let msgId; const urls = [ - 'https://www.youtube.com/watch?v=no050HN4ojo', - 'https://www.youtube.com/watch?v=9iaSd13mqXA', - 'https://www.youtube.com/watch?v=MW_qsbgt1KQ', - 'https://www.youtube.com/watch?v=hLF1XwH5rd4', - 'https://www.youtube.com/watch?v=Eo-F9hRBbTk', - 'https://www.youtube.com/watch?v=08ms3W7adFI', + mockVideoUrl('over-limit-1'), + mockVideoUrl('over-limit-2'), + mockVideoUrl('over-limit-3'), + mockVideoUrl('over-limit-4'), + mockVideoUrl('over-limit-5'), + mockVideoUrl('over-limit-6'), ]; await request .post(api('chat.sendMessage')) @@ -1474,6 +1493,116 @@ describe('[Chat]', () => { }); }); }); + + it('should embed the metadata of a rich oembed provider response', async () => { + await mockServerSet(mockOembedEndpoint.method, mockOembedEndpoint.path, spotifyOembedResponse); + const msg = mockVideoUrl('rich-provider'); + + let msgId; + await request + .post(api('chat.sendMessage')) + .set(credentials) + .send({ message: { rid: testChannel._id, msg } }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + msgId = res.body.message._id; + }); + + await sleep(oembedProcessingMs); + + await request + .get(api('chat.getMessage')) + .set(credentials) + .query({ + msgId, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('message').to.have.property('urls').to.be.an('array').that.has.lengthOf(1); + + const { meta } = res.body.message.urls[0]; + expect(meta).to.have.property('oembedUrl', msg); + expect(meta).to.have.property('oembedTitle', 'Never Gonna Give You Up'); + expect(meta).to.have.property('oembedType', 'rich'); + expect(meta).to.have.property('oembedProviderName', 'Spotify'); + expect(meta).to.have.property('oembedThumbnailUrl', spotifyOembedResponse.thumbnail_url); + expect(meta).to.have.property('oembedHtml').to.have.string('